Browse Source

物业管理,导出+下载模板

master
yinzuomei 2 years ago
parent
commit
ad072ea729
  1. 28
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcPropertyManagementDTO.java
  2. 13
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcPropertyManagementFormDTO.java
  3. 114
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/PropertyManagementController.java
  4. 10
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodPropertyDao.java
  5. 17
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/PropertyManagementService.java
  6. 26
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/PropertyManagementServiceImpl.java
  7. BIN
      epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/ic_property_management_temp.xlsx
  8. 14
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodPropertyDao.xml

28
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcPropertyManagementDTO.java

@ -17,6 +17,10 @@
package com.epmet.dto;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
@ -37,58 +41,82 @@ public class IcPropertyManagementDTO implements Serializable {
/**
* 物业id
*/
@ExcelIgnore
private String id;
/**
* 物业名称
*/
@ExcelProperty(value = "物业名称")
@ColumnWidth(30)
private String name;
/**
* 客户id
*/
@ExcelIgnore
private String customerId;
/**
* 烟台需求物业联系人姓名
*/
@ExcelProperty(value = "物业联系人")
@ColumnWidth(30)
private String contactName;
/**
* 烟台需求物业联系人电话
*/
@ExcelProperty(value = "联系电话")
@ColumnWidth(30)
private String contactMobile;
/**
* 导出时候用
* 该物业关联的小区
*/
@JsonIgnore
@ExcelProperty(value = "关联小区")
@ColumnWidth(60)
private String neighborHoodNames;
/**
* 删除标识 0未删除1已删除
*/
@ExcelIgnore
private String delFlag;
/**
* 乐观锁
*/
@ExcelIgnore
private Integer revision;
/**
* 创建人
*/
@ExcelIgnore
private String createdBy;
/**
* 创建时间
*/
@ExcelIgnore
private Date createdTime;
/**
* 更新人
*/
@ExcelIgnore
private String updatedBy;
/**
* 更新时间
*/
@ExcelIgnore
private Date updatedTime;
/**
* 关联的小区数量
*/
@ExcelIgnore
private Integer totalNeighborHood;
}

13
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcPropertyManagementFormDTO.java

@ -17,17 +17,17 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Data
public class IcPropertyManagementFormDTO implements Serializable {
public class IcPropertyManagementFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ -40,8 +40,8 @@ public class IcPropertyManagementFormDTO implements Serializable {
public interface UpdateShowGroup extends CustomerClientShowGroup {
}
public interface PageGroup extends CustomerClientShowGroup {
}
// public interface PageGroup extends CustomerClientShowGroup {
// }
@NotBlank(message = "物业id不能为空", groups = {DeleteGroup.class, UpdateShowGroup.class})
private String id;
@ -66,9 +66,4 @@ public class IcPropertyManagementFormDTO implements Serializable {
private String customerId;
@NotNull(message = "pageNo不能为空", groups = PageGroup.class)
private Integer pageNo;
@NotNull(message = "pageSize不能为空", groups = PageGroup.class)
private Integer pageSize;
}

114
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/PropertyManagementController.java

@ -17,21 +17,44 @@
package com.epmet.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
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.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.ValidatorUtils;
import com.epmet.dto.IcPropertyManagementDTO;
import com.epmet.dto.form.IcPropertyManagementFormDTO;
import com.epmet.dto.result.IcPropertyManagementResultDTO;
import com.epmet.service.PropertyManagementService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.VerticalAlignment;
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 org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -43,6 +66,7 @@ import java.util.Map;
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-25
*/
@Slf4j
@RestController
@RequestMapping("propertymanagement")
public class PropertyManagementController {
@ -55,9 +79,8 @@ public class PropertyManagementController {
*/
@PostMapping("page")
public Result<PageData<IcPropertyManagementDTO>> page(@RequestBody IcPropertyManagementFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO,IcPropertyManagementFormDTO.PageGroup.class);
return new Result<PageData<IcPropertyManagementDTO>>().ok(propertyManagementService.page(formDTO.getPageNo(),formDTO.getPageSize(),formDTO.getName(),
formDTO.getContactName(),formDTO.getContactMobile()));
formDTO.getContactName(),formDTO.getContactMobile(),"page-query"));
}
/**
@ -112,4 +135,83 @@ public class PropertyManagementController {
return new Result();
}
/**
* 物业管理-下载导入模板
* @param response
* @throws IOException
*/
@RequestMapping(value = "download-tem", method = {RequestMethod.GET, RequestMethod.POST})
public void downloadTemplate(HttpServletResponse response) throws IOException {
response.setCharacterEncoding("UTF-8");
response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition");
//response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.ms-excel");
response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("物业管理导入模版", "UTF-8") + ".xlsx");
InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/ic_property_management_temp.xlsx");
try {
ServletOutputStream os = response.getOutputStream();
IOUtils.copy(is, os);
} finally {
if (is != null) {
is.close();
}
}
}
/**
* 物业管理-列表导出
*
* @param tokenDto
* @param formDTO
* @param response
* @return
* @throws IOException
*/
@PostMapping("export")
public void exportEnterprise(@LoginUser TokenDto tokenDto, @RequestBody IcPropertyManagementFormDTO formDTO, HttpServletResponse response) throws IOException {
formDTO.setCustomerId(tokenDto.getCustomerId());
ExcelWriter excelWriter = null;
formDTO.setPageNo(NumConstant.ONE);
formDTO.setPageSize(NumConstant.TEN_THOUSAND);
try {
String fileName = "物业管理" + DateUtils.format(new Date()) + ".xlsx";
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
FreezeAndFilter writeHandler = new FreezeAndFilter();
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), IcPropertyManagementDTO.class)
.registerWriteHandler(horizontalCellStyleStrategy)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.registerWriteHandler(writeHandler).build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
PageData<IcPropertyManagementDTO> data = null;
do {
data = propertyManagementService.page(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getName(), formDTO.getContactName(), formDTO.getContactMobile(),"export");
formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE);
excelWriter.write(data.getList(), writeSheet);
} while (CollectionUtils.isNotEmpty(data.getList()) && data.getList().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<Object> 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();
}
}
}
}

10
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodPropertyDao.java

@ -18,9 +18,12 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.entity.IcNeighborHoodPropertyEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 小区物业关系表
*
@ -29,5 +32,10 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface IcNeighborHoodPropertyDao extends BaseDao<IcNeighborHoodPropertyEntity> {
/**
* 查询物业下的小区名称
* @param propertyId 物业id
* @return
*/
List<IcNeighborHoodDTO> getNeighborHoodList(String propertyId);
}

17
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/PropertyManagementService.java

@ -39,5 +39,20 @@ public interface PropertyManagementService {
void update(IcPropertyManagementFormDTO formDTO);
void delete(IcPropertyManagementFormDTO formDTO);
PageData<IcPropertyManagementDTO> page(Integer pageNo, Integer pageSize, String name,String contactName,String contactMobile);
/**
* 物业管理-列表查询
* @param pageNo
* @param pageSize
* @param name 物业名称
* @param contactName 物业联系人
* @param contactMobile 联系电话
* @param queryType 列表查询page-query导出export
* @return
*/
PageData<IcPropertyManagementDTO> page(Integer pageNo,
Integer pageSize,
String name,
String contactName,
String contactMobile,
String queryType);
}

26
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/PropertyManagementServiceImpl.java

@ -2,6 +2,7 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
@ -9,6 +10,7 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.dao.IcNeighborHoodPropertyDao;
import com.epmet.dao.IcPropertyManagementDao;
import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.dto.IcPropertyManagementDTO;
import com.epmet.dto.form.IcPropertyManagementFormDTO;
import com.epmet.dto.result.IcPropertyManagementResultDTO;
@ -18,6 +20,8 @@ import com.epmet.service.PropertyManagementService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -25,6 +29,7 @@ import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
@ -113,16 +118,33 @@ public class PropertyManagementServiceImpl implements PropertyManagementService
/**
* 物业管理-列表查询
*
* @param pageNo
* @param pageSize
* @param name
* @param name 物业名称
* @param contactName 物业联系人
* @param contactMobile 联系电话
* @param queryType 列表查询page-query导出export
* @return
*/
@Override
public PageData<IcPropertyManagementDTO> page(Integer pageNo, Integer pageSize, String name,String contactName,String contactMobile) {
public PageData<IcPropertyManagementDTO> page(Integer pageNo, Integer pageSize, String name, String contactName, String contactMobile, String queryType) {
PageHelper.startPage(pageNo, pageSize);
List<IcPropertyManagementDTO> list = icPropertyManagementDao.queryList(EpmetRequestHolder.getLoginUserCustomerId(), name, contactName, contactMobile);
PageInfo<IcPropertyManagementDTO> pageInfo = new PageInfo<>(list);
// 导出时需要导出关联的小区名称
if ("export".equals(queryType)) {
pageInfo.getList().forEach(result -> {
List<IcNeighborHoodDTO> neighborHoodList = icNeighborHoodPropertyDao.getNeighborHoodList(result.getId());
List<String> neighborHoodNames = neighborHoodList.stream()
.map(IcNeighborHoodDTO::getNeighborHoodName)
.distinct().collect(Collectors.toList());
result.setNeighborHoodNames(CollectionUtils.isNotEmpty(neighborHoodList) ? StringUtils.join(neighborHoodNames, StrConstant.COMMA_ZH) : StrConstant.EPMETY_STR);
});
}
return new PageData<>(list, pageInfo.getTotal(), pageSize);
}
}

BIN
epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/ic_property_management_temp.xlsx

Binary file not shown.

14
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodPropertyDao.xml

@ -15,5 +15,17 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="getNeighborHoodList" parameterType="java.lang.String" resultType="com.epmet.dto.IcNeighborHoodDTO">
SELECT
p.NEIGHBOR_HOOD_ID,
h.NEIGHBOR_HOOD_NAME
FROM
ic_neighbor_hood_property p
INNER JOIN ic_neighbor_hood h ON ( p.NEIGHBOR_HOOD_ID = h.ID )
WHERE
p.PROPERTY_ID = #{propertyId}
AND p.DEL_FLAG = '0'
AND h.DEL_FLAG = '0'
order by h.CREATED_TIME asc
</select>
</mapper>
Loading…
Cancel
Save