diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/OrgProjectListFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/OrgProjectListFormDTO.java new file mode 100644 index 0000000000..cbc171d0a9 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/OrgProjectListFormDTO.java @@ -0,0 +1,73 @@ +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; +import java.util.List; + +@Data +public class OrgProjectListFormDTO extends PageFormDTO implements Serializable { + private static final long serialVersionUID = -3317804468566708838L; + + /** + * 组织/网格Id + */ + private String orgId; + /** + * 组织agency 网格grid + */ + private String orgType; + /** + * 上报渠道 【来源:议题issue 项目立项:agency 事件:resi_event 工作人员上报:work_event】 + */ + private String origin; + /** + * 上报人姓名 + */ + private String staffName; + /** + * 手机号 + */ + private String mobile; + //手机号对应工作人员Id集合 + private List staffIds; + /** + * 事件内容 + */ + private String backGround; + /** + * 事件类型 一类、二类Id集合 + */ + private List firstIdList; + private List secondIdList; + /** + * 事件状态 待处理 pending,结案closed + */ + private String status; + /** + * 起始上报时间 精确到秒 + */ + private String startTime; + /** + * 终止上报时间 精确到秒 + */ + private String endTime; + /** + * 处置选项 筛选自己参与的项目 有值就按staffId查 + */ + private String staffId; + + /** + * 分页参数 + */ + private Integer pageNo = 1; + private Integer pageSize = 20; + private Boolean isPage = true; + + //token中信息 + private String userId; + private String customerId; + +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/OrgProjectListResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/OrgProjectListResultDTO.java new file mode 100644 index 0000000000..aaece87f42 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/OrgProjectListResultDTO.java @@ -0,0 +1,100 @@ +package com.epmet.dto.result; + +import com.epmet.dto.form.FileDTO; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +@Data +public class OrgProjectListResultDTO implements Serializable { + + private static final long serialVersionUID = 2374701362057175388L; + + /** + * 项目ID + */ + private String projectId; + /** + * 所属组织ID + */ + private String agencyId; + /** + * 上报渠道 agency:网格上报 resi_event:居民上报 work_event:巡查上报 issue:议题上报 + */ + private String origin; + /** + * 一级分类 + */ + private String firstName; + private String firstId; + + /** + * 二级分类 + */ + private String secondName; + private String secondId; + + /** + * 事件标题 + */ + private String title; + + /** + * 所属网格 + */ + private String gridName; + private String gridId; + + /** + * 地址 + */ + private String address; + /** + * 报事人 + */ + private String staffName; + private String staffId; + /** + * 上报人电话 + */ + private String mobile; + /** + * 上报时间 + */ + private String createdTime; + /** + * 事件内容 + */ + private String backGround; + /** + * 结案说明 + */ + private String publicReply; + /** + * 办结时间 + */ + private String endTime; + /** + * 办结部门 + */ + private String departmentName; + + /** + * 处理建议[创建节点的公开答复] + */ + private String createPublicReply; + + /** + * 图片url集合 + */ + private List urlList; + private List imageList; + + /** + * 状态 待处理 pending,结案closed + */ + private String status; +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java index 03bb218bd1..466eb3d57f 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java @@ -17,11 +17,21 @@ package com.epmet.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.constant.NumConstant; +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.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.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; @@ -30,15 +40,20 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.ProjectDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.excel.OrgProjectListExcel; import com.epmet.excel.ProjectExcel; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; import com.epmet.service.ProjectService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.PrintWriter; +import java.util.Date; import java.util.List; import java.util.Map; @@ -51,6 +66,7 @@ import java.util.Map; */ @RestController @RequestMapping("project") +@Slf4j public class ProjectController { @Autowired @@ -379,4 +395,52 @@ public class ProjectController { ValidatorUtils.validateEntity(formDTO, SatisfactionEvaluationListFormDTO.SatisfactionEvaluationListForm.class); return new Result().ok(projectService.satisfactionEvaluationList(formDTO)); } + + /** + * Desc: 数字平台-项目管理列表 + */ + @PostMapping("orgprojectlist") + public Result> orgProjectList(@LoginUser TokenDto tokenDto, @RequestBody OrgProjectListFormDTO formDTO) { + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + return new Result>().ok(projectService.orgProjectList(formDTO)); + } + + @PostMapping("orgprojectexport") + public void orgProjectExport(@LoginUser TokenDto tokenDto, @RequestBody OrgProjectListFormDTO formDTO, HttpServletResponse response) throws IOException { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setStaffId(tokenDto.getUserId()); + formDTO.setIsPage(false); + ExcelWriter excelWriter = null; + formDTO.setPageNo(NumConstant.ONE); + formDTO.setPageSize(NumConstant.TEN_THOUSAND); + try { + String fileName = "项目管理导出表" + DateUtils.format(new Date()) + ".xlsx"; + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), OrgProjectListExcel.class).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + PageData data = null; + List list = null; + do { + data = projectService.orgProjectList(formDTO); + list = ConvertUtils.sourceToTarget(data.getList(), OrgProjectListExcel.class); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + excelWriter.write(list, writeSheet); + } while (CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize()); + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "application/json; charset=UTF-8"); + PrintWriter printWriter = response.getWriter(); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); + printWriter.write(JSON.toJSONString(result)); + printWriter.close(); + } catch (Exception e) { + log.error("export exception", e); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + } \ No newline at end of file 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 6c5e253e06..316fbc8de6 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 @@ -299,4 +299,5 @@ public interface ProjectDao extends BaseDao { List getProjectManageList(ProjectManageListFormDTO formDTO); + List orgProjectList(OrgProjectListFormDTO formDTO); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/OrgProjectListExcel.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/OrgProjectListExcel.java new file mode 100644 index 0000000000..4eb4cd5c71 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/OrgProjectListExcel.java @@ -0,0 +1,127 @@ +package com.epmet.excel; + +import cn.afterturn.easypoi.excel.annotation.ExcelCollection; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +import java.util.List; + +/** + * 事件管理表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-05-17 + */ +@Data +public class OrgProjectListExcel { + + private static final long serialVersionUID = 2374701362057175388L; + + /** + * 上报渠道 agency:网格上报 resi_event:居民上报 work_event:巡查上报 issue:议题上报 + */ + @ExcelProperty(value = "上报渠道") + @ColumnWidth(25) + private String origin; + /** + * 一级分类名称 + */ + @ExcelProperty(value = "一级分类") + @ColumnWidth(20) + private String firstName; + + /** + * 二级分类名称 + */ + @ExcelProperty(value = "二级分类") + @ColumnWidth(20) + private String secondName; + + /** + * 事件标题 + */ + @ExcelProperty(value = "事件标题") + @ColumnWidth(30) + private String title; + + /** + * 所属网格 + */ + @ExcelProperty(value = "所属网格") + @ColumnWidth(30) + private String gridName; + + /** + * 地址 + */ + @ExcelProperty(value = "地址") + @ColumnWidth(30) + private String address; + /** + * 报事人 + */ + @ExcelProperty(value = "报事人") + @ColumnWidth(20) + private String staffName; + /** + * 上报人电话 + */ + @ExcelProperty(value = "上报人电话") + @ColumnWidth(20) + private String mobile; + /** + * 上报时间 + */ + @ExcelProperty(value = "上报时间") + @ColumnWidth(25) + private String createdTime; + /** + * 事件内容 + */ + @ExcelProperty(value = "事件内容") + @ColumnWidth(40) + private String backGround; + /** + * 结案说明 + */ + @ExcelProperty(value = "结案说明") + @ColumnWidth(30) + private String publicReply; + /** + * 办结时间 + */ + @ExcelProperty(value = "办结时间") + @ColumnWidth(25) + private String endTime; + /** + * 办结部门 + */ + @ExcelProperty(value = "办结部门") + @ColumnWidth(30) + private String departmentName; + + /** + * 处理建议[创建节点的公开答复] + */ + @ExcelProperty(value = "处理建议") + @ColumnWidth(25) + private String createPublicReply; + + /** + * 图片url集合 + */ + @ExcelProperty(value = "图片") + @ColumnWidth(30) + @ExcelCollection(name = "图片") + private List imageList; + + /** + * 状态 处理中 pending,已结案 closed + */ + @ExcelProperty(value = "状态") + @ColumnWidth(20) + private String status; + + +} \ 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 82a88d3a5b..3e9125bbfd 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 @@ -395,4 +395,5 @@ public interface ProjectService extends BaseService { */ void projectListExport(HttpServletResponse response,ProjectManageListFormDTO formDTO) throws IOException; + PageData orgProjectList(OrgProjectListFormDTO formDTO); } \ 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 a9f4ca0093..08f457f764 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 @@ -51,7 +51,6 @@ import com.epmet.dto.result.*; import com.epmet.entity.*; import com.epmet.excel.ProjectListExportExcel; import com.epmet.feign.*; -import com.epmet.redis.ProjectRedis; import com.epmet.resi.group.constant.TopicConstant; import com.epmet.resi.group.dto.topic.ResiTopicDTO; import com.epmet.resi.group.dto.topic.form.TopicAttachmentFormDTO; @@ -3445,4 +3444,71 @@ public class ProjectServiceImpl extends BaseServiceImpl orgProjectList(OrgProjectListFormDTO formDTO) { + //1.整理查询条件 + if (StringUtils.isNoneBlank(formDTO.getMobile())) { + //有手机号筛选条件的选按手机号查找工作人员,在按staffId查项目 + GetByRealNamesFormDTO dto = new GetByRealNamesFormDTO(); + dto.setCustomerId(formDTO.getCustomerId()); + dto.setMobile(formDTO.getMobile()); + Result> staffResult = epmetUserOpenFeignClient.getByRealNames(dto); + if (!staffResult.success()) { + throw new RenException("获取工作人员基础信息失败......"); + } + if (null != staffResult.getData() && staffResult.getData().size() > NumConstant.ZERO) { + List staffIds = staffResult.getData().stream().map(CustomerStaffDTO::getUserId).collect(Collectors.toList()); + formDTO.setStaffIds(staffIds); + } + } + //2.按条件筛选数据 列表/导出查询 + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()); + List list = baseDao.orgProjectList(formDTO); + PageInfo pageInfo = new PageInfo<>(list); + if (list.size() < NumConstant.ONE) { + return new PageData<>(list, pageInfo.getTotal()); + } + //3.封装数据 + //3-1.查询分类信息 + /*IssueProjectCategoryDictListFormDTO dictFormDto = new IssueProjectCategoryDictListFormDTO(); + dictFormDto.setCustomerId(formDTO.getCustomerId()); + Result> categoryRes = govIssueOpenFeignClient.getCategoryList(dictFormDto); + if (!categoryRes.success() || org.springframework.util.CollectionUtils.isEmpty(categoryRes.getData())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取项目分类名称异常"); + } + Map categoryMap = categoryRes.getData().stream().collect(Collectors.toMap(IssueProjectCategoryDictDTO::getId, IssueProjectCategoryDictDTO::getCategoryName)); + *///3-2.封装数据 + for (OrgProjectListResultDTO dto : list) { + //分类名称 + /*dto.setFirstName(categoryMap.get(dto.getFirstId())); + dto.setSecondName(categoryMap.get(dto.getSecondId()));*/ + //工作人员基础信息 + /*CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), dto.getStaffId()); + if (null != staffInfo) { + dto.setStaffName(staffInfo.getRealName()); + dto.setMobile(staffInfo.getMobile()); + }*/ + //拼接网格名 + /*if (StringUtils.isNoneBlank(dto.getGridId())) { + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(dto.getGridId()); + if (null != gridInfo) { + dto.setGridName((StringUtils.isEmpty(gridInfo.getAllParentName()) ? "" : gridInfo.getAllParentName() + "-") + gridInfo.getGridNamePath()); + } + } else { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); + if (null != agencyInfo) { + dto.setGridName((StringUtils.isEmpty(agencyInfo.getAllParentName()) ? "" : agencyInfo.getAllParentName() + "-") + agencyInfo.getOrganizationName()); + } + }*/ + if (!org.springframework.util.CollectionUtils.isEmpty(dto.getUrlList())) { + List imageList = dto.getUrlList().stream().map(FileDTO::getUrl).collect(Collectors.toList()); + dto.setImageList(imageList); + } + + } + return new PageData<>(list, pageInfo.getTotal()); + } + + } 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 493f8bbf72..cf692ea226 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 @@ -620,4 +620,111 @@ GROUP BY t.PROJECT_ID ORDER BY p.CREATED_TIME DESC + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GetByRealNamesFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GetByRealNamesFormDTO.java index 80719e6737..ec555aaa14 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GetByRealNamesFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GetByRealNamesFormDTO.java @@ -23,4 +23,8 @@ public class GetByRealNamesFormDTO implements Serializable { * 工作人员姓名集合 */ private Set realNames; + /** + * 手机号模糊查询 + */ + private String mobile; } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml index 10965b93ce..089546469d 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml @@ -450,9 +450,14 @@ WHERE del_flag = '0' AND customer_id = #{customerId} - - #{name} - + + + #{name} + + + + AND mobile LIKE concat('%', #{mobile}, '%') +