diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 224e480e9c..0000000000 --- a/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -# Created by .ignore support plugin (hsz.mobi) -### Java template -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* -.idea/ -*.iml -target/ - diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueProjectCategoryDictDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueProjectCategoryDictDTO.java index 83920372a1..b89917e0d7 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueProjectCategoryDictDTO.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueProjectCategoryDictDTO.java @@ -17,9 +17,10 @@ package com.epmet.dto; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -67,7 +68,7 @@ public class IssueProjectCategoryDictDTO implements Serializable { * 分类名称 */ private String categoryName; - + private String parentCategoryName; /** * 分类类别1,2,3,4.... */ diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java index 8a0233b46f..5ebed6c49e 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java @@ -4,9 +4,6 @@ import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; -import com.epmet.dto.IssueApplicationDTO; -import com.epmet.dto.IssueDTO; -import com.epmet.dto.IssueSuggestionDTO; import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; @@ -25,10 +22,7 @@ import com.epmet.resi.mine.dto.from.MyShiftIssueTopicsFormDTO; import com.epmet.resi.mine.dto.result.MyShiftIssueTopicsResultDTO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @@ -372,4 +366,14 @@ public interface GovIssueOpenFeignClient { **/ @PostMapping(value = "/gov/issue/issueprojectcategorydict/getcategorylist") Result> getCategoryList(@RequestBody IssueProjectCategoryDictListFormDTO formDTO); + + /** + * 获取项目分类名 + * @Param customerId + * @Return {@link Result< Map< String, String>>} + * @Author zhaoqifeng + * @Date 2022/1/5 10:16 + */ + @PostMapping("/gov/issue/issueprojectcategorydict/categoryMap/{customerId}") + Result> getCategoryMap(@PathVariable("customerId") String customerId); } diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java index 5e59dc20fe..ae87c2cd6b 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java @@ -305,4 +305,18 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient public Result> getCategoryList(IssueProjectCategoryDictListFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getCategoryList", formDTO); } + + /** + * 获取项目分类名 + * + * @param customerId + * @Param customerId + * @Return {@link Result< Map< String, String>>} + * @Author zhaoqifeng + * @Date 2022/1/5 10:16 + */ + @Override + public Result> getCategoryMap(String customerId) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getCategoryMap", customerId); + } } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java index f77f9ce9d9..51b04c93f3 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java @@ -33,7 +33,6 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.IssueProjectCategoryDictDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; -import com.epmet.entity.IssueProjectCategoryDictEntity; import com.epmet.excel.IssueProjectCategoryDictExcel; import com.epmet.project.dto.CustomerCategoryDTO; import com.epmet.project.dto.result.ProjectCategoryDictResultDTO; @@ -288,5 +287,17 @@ public class IssueProjectCategoryDictController { return new Result>().ok(issueProjectCategoryDictService.selectCategoryOneLevelListByCustomerId(tokenDto.getCustomerId())); } + /** + * 获取项目分类名 + * @Param customerId + * @Return {@link Result< Map< String, String>>} + * @Author zhaoqifeng + * @Date 2022/1/5 10:16 + */ + @PostMapping("categoryMap/{customerId}") + public Result> getCategoryMap(@PathVariable("customerId") String customerId) { + return new Result>().ok(issueProjectCategoryDictService.getCategoryMap(customerId)); + } + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java index 50a93b4bef..4259265dac 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java @@ -192,4 +192,13 @@ public interface IssueProjectCategoryDictDao extends BaseDao selectCategoryOneLevelListByCustomerId(@Param("customerId")String customerId); + /** + * @Description 获取客户下分类 + * @Param customerId + * @Return {@link List< IssueProjectCategoryDictDTO>} + * @Author zhaoqifeng + * @Date 2022/1/5 10:45 + */ + List getCategoryByCustomer(@Param("customerId") String customerId); + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java index 292e6449d8..204fba3743 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java @@ -25,7 +25,6 @@ import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.IssueProjectCategoryDictEntity; import com.epmet.project.dto.result.ProjectCategoryDictResultDTO; -import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Map; @@ -230,4 +229,6 @@ public interface IssueProjectCategoryDictService extends BaseService selectCategoryOneLevelListByCustomerId(String customerId); + Map getCategoryMap(String customerId); + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java index 28a7192afb..08adcb5860 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java @@ -22,6 +22,7 @@ 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.constant.StrConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; @@ -507,6 +508,20 @@ public class IssueProjectCategoryDictServiceImpl extends BaseServiceImpl getCategoryMap(String customerId) { + List list = baseDao.getCategoryByCustomer(customerId); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyMap(); + } + list.forEach(item -> { + if(StringUtils.isNotBlank(item.getParentCategoryName())) { + item.setCategoryName(item.getParentCategoryName().concat(StrConstant.HYPHEN).concat(item.getCategoryName())); + } + }); + return list.stream().collect(Collectors.toMap(IssueProjectCategoryDictDTO::getCategoryCode, IssueProjectCategoryDictDTO::getCategoryName)); + } + /** * @Description 项目分类处理 * @Param list diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml index 06c1fc0000..6c38707498 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml @@ -41,7 +41,7 @@ ORDER BY sort ASC - SELECT ID, PID, @@ -292,4 +292,20 @@ WHERE customer_id = #{customerId} AND id = #{id} AND DEL_FLAG = '0' + + diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ApprovaledListFromDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ApprovaledListFromDTO.java new file mode 100644 index 0000000000..1e0977ee0d --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ApprovaledListFromDTO.java @@ -0,0 +1,27 @@ +package com.epmet.dto.form; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/1/4 14:49 + */ +@NoArgsConstructor +@Data +public class ApprovaledListFromDTO implements Serializable { + + private static final long serialVersionUID = 5700160700676332579L; + private String customerId; + @NotBlank(message = "组织id不能为空") + private String agencyId; + private String startTime; + private String endTime; + private String staffId; + private Integer pageSize = 1; + private Integer pageNo = 20; +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ApprovaledListResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ApprovaledListResultDTO.java new file mode 100644 index 0000000000..97f2efd601 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ApprovaledListResultDTO.java @@ -0,0 +1,28 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/1/4 14:58 + */ +@NoArgsConstructor +@Data +public class ApprovaledListResultDTO implements Serializable { + + private static final long serialVersionUID = 5118030421632653558L; + private String projectId; + private String title; + private String projectCategory; + private String locateAddress; + private String happenTime; + private String staffId; + private String staffName; + private String gridId; + private String gridName; + private String createdTime; +} diff --git a/epmet-module/gov-project/gov-project-server/pom.xml b/epmet-module/gov-project/gov-project-server/pom.xml index c04583b7d5..4acd534d5b 100644 --- a/epmet-module/gov-project/gov-project-server/pom.xml +++ b/epmet-module/gov-project/gov-project-server/pom.xml @@ -65,6 +65,25 @@ 4.3 compile + + com.alibaba + easyexcel + 3.0.3 + + + poi + org.apache.poi + + + poi-ooxml + org.apache.poi + + + poi-ooxml-schemas + org.apache.poi + + + io.github.openfeign diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java index f40e6c3de8..66074acfa2 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java @@ -3,6 +3,7 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.enums.RequirePermissionEnum; +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.ValidatorUtils; @@ -18,6 +19,7 @@ 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.List; /** @@ -380,5 +382,37 @@ public class ProjectTraceController { ValidatorUtils.validateEntity(formDTO,EventToProjectFormDTO.ApprovalCategory.class,EventToProjectFormDTO.AddUserInternalGroup.class); return new Result().ok(projectTraceService.eventToProject(formDTO)); } + + /** + * 【网格员工作统计】项目列表 + * + * @Param formDTO + * @Return {@link Result< PageData< ApprovaledListResultDTO>>} + * @Author zhaoqifeng + * @Date 2022/1/4 15:32 + */ + @PostMapping("pcwork/approvaled-list") + public Result> approvaledList(@LoginUser TokenDto tokenDto, @RequestBody ApprovaledListFromDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + formDTO.setCustomerId(tokenDto.getCustomerId()); + PageData result = projectTraceService.approvaledList(formDTO); + return new Result>().ok(result); + } + + /** + * 【网格员工作统计】项目列表 导出 + * + * @Param tokenDto + * @Param formDTO + * @Return + * @Author zhaoqifeng + * @Date 2022/1/5 14:58 + */ + @PostMapping("pcwork/approvaled-list/export") + public void approvaledListExport(HttpServletResponse response, @LoginUser TokenDto tokenDto, @RequestBody ApprovaledListFromDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + formDTO.setCustomerId(tokenDto.getCustomerId()); + projectTraceService.approvaledListExport(response, formDTO); + } } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java index 0f91019b54..673acf371e 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java @@ -267,4 +267,15 @@ public interface ProjectDao extends BaseDao { */ List selectProjectCountByOrg(List orgIds,@Param("startDate")String startDate,@Param("endDate")String endDate); + /** + * 网格员立项 + * @Param agencyId + * @Param staffId + * @Param startTime + * @Param endTime + * @Return {@link List< ApprovaledListResultDTO>} + * @Author zhaoqifeng + * @Date 2022/1/4 16:45 + */ + List getGridMemberProjectList(@Param("agencyId") String agencyId, @Param("staffId") String staffId, @Param("startTime") String startTime, @Param("endTime") String endTime); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/ApprovaledListExcel.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/ApprovaledListExcel.java new file mode 100644 index 0000000000..ef08b3cc39 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/ApprovaledListExcel.java @@ -0,0 +1,29 @@ +package com.epmet.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/1/5 15:00 + */ +@Getter +@Setter +@EqualsAndHashCode +public class ApprovaledListExcel { + @ExcelProperty("项目事件标题") + private String title; + @ExcelProperty("项目事件类别") + private String projectCategory; + @ExcelProperty("发生地点") + private String locateAddress; + @ExcelProperty("发生日期") + private String happenTime; + @ExcelProperty("网格员") + private String staffName; + @ExcelProperty("提交日期") + private String createdTime; +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectCategoryService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectCategoryService.java index 4d66d39dd0..9ae8a7fdee 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectCategoryService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectCategoryService.java @@ -28,6 +28,7 @@ import com.epmet.entity.ProjectCategoryEntity; import java.util.List; import java.util.Map; +import java.util.Set; /** * 项目所属分类表 @@ -126,4 +127,13 @@ public interface ProjectCategoryService extends BaseService getProjectCategoryService(String projectId); + + /** + * @Description 获取项目分类列表 + * @Param projectIds + * @Return {@link Map< String, Set< String>>} + * @Author zhaoqifeng + * @Date 2022/1/5 9:50 + */ + Map> getProjectCategoryMap(List projectIds); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java index dff8e9d30e..920234017b 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java @@ -357,4 +357,14 @@ public interface ProjectService extends BaseService { * @return */ TopicResearchAnalysisResDTO topicResearchAnalysis(TopicResearchAnalysisFormDTO formDTO); + + /** + * 【网格员工作统计】项目列表 + * + * @Param formDTO + * @Return {@link PageData< ApprovaledListResultDTO>} + * @Author zhaoqifeng + * @Date 2022/1/4 16:27 + */ + PageData approvaledList(ApprovaledListFromDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java index 620f9577fc..133711aea9 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java @@ -1,9 +1,11 @@ package com.epmet.service; +import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -183,4 +185,24 @@ public interface ProjectTraceService { * @date 2021/8/5 15:38 */ EventToProjectResultDTO eventToProject(EventToProjectFormDTO formDTO); + + /** + * 【网格员工作统计】项目列表 + * + * @Param formDTO + * @Return {@link PageData< ApprovaledListResultDTO>} + * @Author zhaoqifeng + * @Date 2022/1/4 15:33 + */ + PageData approvaledList(ApprovaledListFromDTO formDTO); + + /** + * 【网格员工作统计】项目列表导出 + * + * @Param formDTO + * @Return {@link PageData< ApprovaledListResultDTO>} + * @Author zhaoqifeng + * @Date 2022/1/4 15:33 + */ + void approvaledListExport(HttpServletResponse response, ApprovaledListFromDTO formDTO); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectCategoryServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectCategoryServiceImpl.java index ac0a279fb9..91d609d8e2 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectCategoryServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectCategoryServiceImpl.java @@ -17,6 +17,7 @@ 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; @@ -39,15 +40,14 @@ import com.epmet.entity.ProjectEntity; import com.epmet.feign.GovIssueOpenFeignClient; import com.epmet.redis.ProjectCategoryRedis; import com.epmet.service.ProjectCategoryService; +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; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 项目所属分类表 @@ -225,4 +225,23 @@ public class ProjectCategoryServiceImpl extends BaseServiceImpl>} + * @Author zhaoqifeng + * @Date 2022/1/5 9:50 + */ + @Override + public Map> getProjectCategoryMap(List projectIds) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(ProjectCategoryEntity::getProjectId, projectIds); + List list = baseDao.selectList(wrapper); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyMap(); + } + return list.stream().collect(Collectors.groupingBy(ProjectCategoryEntity::getProjectId, Collectors.mapping(ProjectCategoryEntity::getCategoryCode, Collectors.toSet()))); + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java index 7c72732c7c..6d43baee54 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java @@ -3045,6 +3045,24 @@ public class ProjectServiceImpl extends BaseServiceImpl} + * @Author zhaoqifeng + * @Date 2022/1/4 16:27 + */ + @Override + public PageData approvaledList(ApprovaledListFromDTO formDTO) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = baseDao.getGridMemberProjectList(formDTO.getAgencyId(), formDTO.getStaffId(), + formDTO.getStartTime(), formDTO.getEndTime()); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); + } + /** * @Description 区间项目分类数量处理 * 查询的是时间段内的分类项目数,查询的时间 是传入一个日期,拼上时间,在进行比较大小 diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java index 1150ecc9f5..d9cffa07c0 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java @@ -1,23 +1,28 @@ package com.epmet.service.impl; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.enums.OrgTypeEnum; 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.exception.RenException; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.scan.param.TextScanParamDTO; import com.epmet.commons.tools.scan.param.TextTaskDTO; import com.epmet.commons.tools.scan.result.SyncScanResult; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.IpUtils; -import com.epmet.commons.tools.utils.Result; -import com.epmet.commons.tools.utils.ScanContentUtils; +import com.epmet.commons.tools.utils.*; import com.epmet.constant.*; import com.epmet.dao.ProjectOrgRelationDao; import com.epmet.dao.ProjectProcessAttachmentDao; @@ -29,22 +34,24 @@ import com.epmet.dto.ProjectStaffDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.*; +import com.epmet.excel.ApprovaledListExcel; import com.epmet.feign.*; import com.epmet.send.SendMqMsgUtil; import com.epmet.service.*; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.stream.Collectors; @@ -882,6 +889,85 @@ public class ProjectTraceServiceImpl implements ProjectTraceS return resultDTO; } + /** + * 【网格员工作统计】项目列表 + * + * @param formDTO + * @Param formDTO + * @Return {@link PageData < ApprovaledListResultDTO>} + * @Author zhaoqifeng + * @Date 2022/1/4 15:33 + */ + @Override + public PageData approvaledList(ApprovaledListFromDTO formDTO) { + //获取项目列表 + PageData result = projectService.approvaledList(formDTO); + //获取项目分类 + Result> categoryMapResult = govIssueOpenFeignClient.getCategoryMap(formDTO.getCustomerId()); + if (!categoryMapResult.success()) { + throw new EpmetException(categoryMapResult.getCode(),categoryMapResult.getMsg()); + } + Map categoryMap = categoryMapResult.getData(); + if(CollectionUtils.isNotEmpty(result.getList())) { + List projectIds = result.getList().stream().map(ApprovaledListResultDTO::getProjectId).collect(Collectors.toList()); + Map> projectCategory = projectCategoryService.getProjectCategoryMap(projectIds); + result.getList().forEach(item -> { + //工作人员姓名 + CustomerStaffInfoCacheResult staff = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), item.getStaffId()); + item.setStaffName(staff.getRealName()); + //项目分类 + Set categoryList = projectCategory.get(item.getProjectId()); + if (null != categoryList) { + List categoryNames = new ArrayList<>(); + categoryList.forEach(category -> { + if (StringUtils.isNotBlank(categoryMap.get(category))) { + categoryNames.add(categoryMap.get(category)); + } + } ); + item.setProjectCategory(StringUtils.join(categoryNames.toArray(), StrConstant.SEMICOLON)); + } + }); + + } + return result; + } + + /** + * 【网格员工作统计】项目列表导出 + * + * @param formDTO + * @Param formDTO + * @Return {@link PageData< ApprovaledListResultDTO>} + * @Author zhaoqifeng + * @Date 2022/1/4 15:33 + */ + @Override + public void approvaledListExport(HttpServletResponse response, ApprovaledListFromDTO formDTO) { + formDTO.setPageNo(NumConstant.ONE); + formDTO.setPageSize(NumConstant.ONE_THOUSAND); + ExcelWriter excelWriter = null; + try { + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("直接立项记录.xlsx", response)).build(); + WriteSheet writeSheet = EasyExcel.writerSheet().build(); + writeSheet.setClazz(ApprovaledListExcel.class); + Integer num; + //一千条一循环分批写入 + do { + List list = approvaledList(formDTO).getList(); + List data = ConvertUtils.sourceToTarget(list, ApprovaledListExcel.class); + excelWriter.write(data, writeSheet); + num = data.size(); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + } while (num > NumConstant.ZERO && num.compareTo(formDTO.getPageSize()) == NumConstant.ZERO); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + private List queryStaffListRes(List staffList,String currentUserId) { List staffIdList = staffList.stream().map(TickStaffFormDTO::getStaffId).collect(Collectors.toList()); staffIdList.add(currentUserId); diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml index a43a05d0b8..f0d6166741 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml @@ -483,4 +483,29 @@ AND DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') #{endDate} + \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcWorkListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcWorkListResultDTO.java index afc01d60c2..13e8562e2e 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcWorkListResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcWorkListResultDTO.java @@ -49,6 +49,8 @@ public class PcWorkListResultDTO implements Serializable { */ private String isNormal; + private String workTypeNames; + /** * 发生地点 */ diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcworkRecordListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcworkRecordListResultDTO.java index a7ff4f318d..88a9661478 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcworkRecordListResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcworkRecordListResultDTO.java @@ -1,9 +1,12 @@ package com.epmet.dto.result; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -33,11 +36,15 @@ public class PcworkRecordListResultDTO implements Serializable { //状态(中文) private String statusName; //巡查开始时间 返回返回格式化字符串,yyyy-MM-dd HH:mm:ss - private String patrolStartTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date patrolStartTime; //巡查结束时间 返回返回格式化字符串,yyyy-MM-dd HH:mm:ss - private String patrolEndTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date patrolEndTime; //巡查时长 xx小时xx分钟 private String totalTime; + @JsonIgnore + private Integer totalTimeNum; } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/PatrolRoutineWorkController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/PatrolRoutineWorkController.java index 5de2ecde8b..5297d84c2a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/PatrolRoutineWorkController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/PatrolRoutineWorkController.java @@ -1,6 +1,10 @@ package com.epmet.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; import com.epmet.commons.tools.aop.NoRepeatSubmit; +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.PatrolRoutineWorkFormDTO; @@ -8,16 +12,21 @@ import com.epmet.dto.form.PcWorkListFormDTO; import com.epmet.dto.form.patrol.PatrolQueryFormDTO; import com.epmet.dto.result.PatrolRoutineWorkResult; import com.epmet.dto.result.PcWorkListResultDTO; +import com.epmet.excel.PcWorkListExport; import com.epmet.service.PatrolRoutineWorkService; import com.github.pagehelper.Page; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; 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.List; +import static io.netty.handler.codec.smtp.SmtpRequests.data; + /** * 例行工作 * @@ -70,4 +79,10 @@ public class PatrolRoutineWorkController { return new Result().ok(gridUserWorkService.pcWorkList(formDTO)); } + @PostMapping("pcwork/list/export") + public void pcWorkListExport(@RequestBody PcWorkListFormDTO formDTO, HttpServletResponse response) throws Exception { + ValidatorUtils.validateEntity(formDTO, PcWorkListFormDTO.PcWorkListForm.class); + gridUserWorkService.pcWorkListExport(formDTO,response); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java index 8d92257c74..e8f37f0a2e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java @@ -1,23 +1,37 @@ package com.epmet.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.fill.FillWrapper; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.enums.RequirePermissionEnum; 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.*; import com.epmet.dto.form.patrol.PcworkRecordListFormDTO; import com.epmet.dto.result.*; +import com.epmet.excel.StaffPatrolRecordExcel; import com.epmet.service.StaffPatrolDetailService; import com.epmet.service.StaffPatrolRecordService; +import com.epmet.util.TestFileUtil; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; import java.util.List; /** @@ -167,4 +181,15 @@ public class StaffPatrolController { return new Result().ok(staffPatrolRecordService.pcworkRecordList(formDTO)); } + /** + * @Author sun + * @Description 【网格员工作统计】巡查记录列表导出 + **/ + @NoRepeatSubmit + @PostMapping("pcwork/record-list/export") + public void pcworkRecordListExport(HttpServletResponse response, @RequestBody PcworkRecordListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, PcworkRecordListFormDTO.Staff.class); + staffPatrolRecordService.pcworkRecordListExport(response, formDTO); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/PcWorkListExport.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/PcWorkListExport.java new file mode 100644 index 0000000000..12199212a6 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/PcWorkListExport.java @@ -0,0 +1,71 @@ +package com.epmet.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +/** + * @Author zxc + * @DateTime 2022/1/5 10:00 上午 + * @DESC + */ +@Getter +@Setter +@EqualsAndHashCode +public class PcWorkListExport { + + @ExcelProperty("事项名称") + @ColumnWidth(20) + private String title; + + @ExcelProperty("事项类型码") + @ColumnWidth(20) + @ExcelIgnore + private String workTypeCode; + + @ExcelProperty("事项类型名称") + @ColumnWidth(40) + private String workTypeNames; + + @ExcelProperty("有无异常") + private String isNormal; + + @ExcelProperty("发生地点") + @ColumnWidth(20) + private String happenAddress; + + @ExcelProperty("发生时间") + @ColumnWidth(20) + private String happenTime; + + @ExcelProperty("人员ID") + @ExcelIgnore + private String staffId; + + @ExcelProperty("人员姓名") + @ColumnWidth(20) + private String staffName; + + @ExcelProperty("网格ID") + @ExcelIgnore + private String gridId; + + @ExcelProperty("网格名字") + @ColumnWidth(20) + private String gridName; + + @ExcelProperty("提交日期") + @ColumnWidth(30) + private String createdTime; + + @ExcelProperty("工作内容") + @ColumnWidth(60) + private String workContent; +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/StaffPatrolRecordExcel.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/StaffPatrolRecordExcel.java new file mode 100644 index 0000000000..1542e379be --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/StaffPatrolRecordExcel.java @@ -0,0 +1,83 @@ +/** + * 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.excel; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +/** + * @Description 【网格员工作统计】巡查记录列表导出 + * @Author sun + */ +@Getter +@Setter +@EqualsAndHashCode +public class StaffPatrolRecordExcel { + + @ExcelProperty("人员ID") + @ExcelIgnore + private String staffId; + + @ExcelProperty("人员名称") + @ColumnWidth(15) + private String staffName; + + @ExcelProperty("网格ID") + @ExcelIgnore + private String gridId; + + @ExcelProperty("网格名称") + @ColumnWidth(20) + private String gridName; + + @ExcelProperty("状态(英文key)") + @ExcelIgnore + private String status; + + @ExcelProperty("状态") + @ColumnWidth(18) + private String statusName; + + @DateTimeFormat("yyyy年MM月dd日") + @ExcelProperty("巡查开始时间") + @ColumnWidth(20) + private Date patrolStartTime; + + @DateTimeFormat("yyyy年MM月dd日") + @ExcelProperty("巡查结束时间") + @ColumnWidth(20) + private Date patrolEndTime; + + @ExcelProperty("巡查时长") + @ColumnWidth(20) + private String totalTime; + + @ExcelIgnore + private Integer totalTimeNum;; + + + + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/PatrolRoutineWorkService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/PatrolRoutineWorkService.java index 0eabbc8997..5af4a1300a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/PatrolRoutineWorkService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/PatrolRoutineWorkService.java @@ -26,6 +26,7 @@ import com.epmet.dto.result.PcWorkListResultDTO; import com.epmet.entity.PatrolRoutineWorkEntity; import com.github.pagehelper.Page; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -56,4 +57,5 @@ public interface PatrolRoutineWorkService extends BaseService dtos = pcWorkList(formDTO).getList(); + dtos.forEach(d -> { + d.setWorkTypeNames(d.getWorkTypeName().toString()); + }); + List data = ConvertUtils.sourceToTarget(dtos, PcWorkListExport.class); + num = data.size(); + excelWriter.write(data, writeSheet); + pageNo++; + }while (num > NumConstant.ZERO && num.compareTo(pageSize) == NumConstant.ZERO); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + + public String getFileName(PcWorkListFormDTO formDTO){ + StringBuilder name = new StringBuilder(); + if (formDTO.getOrgType().equals(OrgTypeEnum.GRID.getCode())){ + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(formDTO.getOrgId()); + if (null == gridInfo){ + throw new EpmetException("查询网格信息失败..."); + } + name.append(gridInfo.getGridName()); + }else { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(formDTO.getOrgId()); + if (null == agencyInfo){ + throw new EpmetException("查询组织信息失败..."); + } + name.append(agencyInfo.getOrganizationName()); + } + name.append("例行工作列表"); + if (StringUtils.isNotBlank(formDTO.getStartTime())){ + name.append(formDTO.getStartTime()).append("-").append(formDTO.getEndTime()).append("区间新增值"); + }else { + name.append(formDTO.getEndTime()).append("截止累计值"); + } + name.append(".xlsx"); + return name.toString(); + }; + /** * @Description 处理 workTypeName * @param workTypeList @@ -206,7 +276,7 @@ public class PatrolRoutineWorkServiceImpl extends BaseServiceImpl { w1.getChildren().forEach(w2 -> { if (c.equals(w2.getId())){ - result.add(w1.getName() + "-" + w2.getName()); + result.add(w1.getName() + StrConstant.HYPHEN + w2.getName()); } }); }); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffPatrolRecordServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffPatrolRecordServiceImpl.java index bcb27c0410..51e56157ba 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffPatrolRecordServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffPatrolRecordServiceImpl.java @@ -1,6 +1,9 @@ package com.epmet.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; @@ -13,7 +16,9 @@ import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.PatrolConstant; import com.epmet.constant.SystemMessageType; @@ -29,6 +34,7 @@ import com.epmet.dto.result.*; import com.epmet.entity.StaffPatrolDetailEntity; import com.epmet.entity.StaffPatrolRecordEntity; import com.epmet.entity.StatsStaffPatrolRecordDailyEntity; +import com.epmet.excel.StaffPatrolRecordExcel; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.GovProjectOpenFeignClient; @@ -46,6 +52,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.util.*; import java.util.stream.Collectors; @@ -497,10 +506,50 @@ public class StaffPatrolRecordServiceImpl extends BaseServiceImpl 0 ? minutes / 60 + "小时" : "") + (minutes % 60 > 0 ? minutes % 60 + "分钟" : "0分钟"); + r.setTotalTime(patrolDuration); + } //3.封装数据并返回 resultDTO.setTotal((int)result.getTotal()); resultDTO.setList(result.getList()); return resultDTO; } + + /** + * @Author sun + * @Description 【网格员工作统计】巡查记录列表导出 + **/ + @Override + public void pcworkRecordListExport(HttpServletResponse response, PcworkRecordListFormDTO formDTO) { + formDTO.setPageNo(NumConstant.ONE); + formDTO.setPageSize(NumConstant.ONE_THOUSAND); + ExcelWriter excelWriter = null; + try { + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("网格员巡查记录.xlsx", response)).build(); + /*WriteSheet writeSheet = EasyExcel.writerSheet("sheet").build(); + writeSheet.setClazz(StaffPatrolRecordExcel.class);*/ + int num = NumConstant.ZERO; + //一千条一个sheet页,循环分批写入 + do { + PcworkRecordListResultDTO dto = pcworkRecordList(formDTO); + List data = ConvertUtils.sourceToTarget(dto.getList(), StaffPatrolRecordExcel.class); + WriteSheet writeSheet = EasyExcel.writerSheet(formDTO.getPageNo(), "sheet" + formDTO.getPageNo()).build(); + writeSheet.setClazz(StaffPatrolRecordExcel.class); + excelWriter.write(data, writeSheet); + num = data.size(); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + } while (num == formDTO.getPageSize()); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/StaffPatrolRecordDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/StaffPatrolRecordDao.xml index b446fb23b2..fc1364a397 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/StaffPatrolRecordDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/StaffPatrolRecordDao.xml @@ -84,7 +84,7 @@ if(spr.`status`='patrolling', '巡查中', if(spr.is_hand_end=0, '结束巡查(系统自动)', '结束巡查'))statusName, spr.patrol_start_time patrolStartTime, spr.patrol_end_time patrolEndTime, - spr.total_time totalTime + spr.total_time totalTimeNum FROM staff_patrol_record spr LEFT JOIN customer_staff cs ON spr.staff_id = cs.user_id