Browse Source

【工作日志】完成导出;删除servicetype增加了对record的判断,有record了不能删除

master
wangxianzhang 3 years ago
parent
commit
9a57fe4754
  1. 23
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkdiaryServiceController.java
  2. 93
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/WorkdiaryServiceRecordExcel.java
  3. 7
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkdiaryServiceRecordService.java
  4. 2
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkdiaryServiceTypeService.java
  5. 57
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkdiaryServiceRecordServiceImpl.java
  6. 41
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkdiaryServiceTypeServiceImpl.java

23
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkdiaryServiceController.java

@ -2,6 +2,7 @@ package com.epmet.controller;
import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.dto.form.PageFormDTO; import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
@ -14,7 +15,6 @@ import com.epmet.dto.WorkdiaryServiceTypeDTO;
import com.epmet.dto.form.workdiaryservice.WorkdiaryServiceQueryFormDTO; import com.epmet.dto.form.workdiaryservice.WorkdiaryServiceQueryFormDTO;
import com.epmet.dto.result.WorkdiaryServiceRecordDTO; import com.epmet.dto.result.WorkdiaryServiceRecordDTO;
import com.epmet.entity.WorkdiaryServiceTypeExcel; import com.epmet.entity.WorkdiaryServiceTypeExcel;
import com.epmet.excel.WorkdiaryServiceRecordExcel;
import com.epmet.service.WorkdiaryServiceRecordService; import com.epmet.service.WorkdiaryServiceRecordService;
import com.epmet.service.WorkdiaryServiceTypeService; import com.epmet.service.WorkdiaryServiceTypeService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -116,10 +116,15 @@ public class WorkdiaryServiceController {
* 记录-导出 * 记录-导出
* @return * @return
*/ */
@GetMapping("/record/export") @PostMapping("/record/export")
public void recordExport(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { public void recordExport(@RequestBody WorkdiaryServiceQueryFormDTO query, HttpServletResponse response) throws Exception {
List<WorkdiaryServiceRecordDTO> list = workdiaryServiceRecordService.list(params); String gridId = query.getGridId();
ExcelUtils.exportExcelToTarget(response, null, list, WorkdiaryServiceRecordExcel.class); Short serviceType = query.getServiceType();
String applicantName = query.getApplicantName();
String applicantAddress = query.getApplicantAddress();
String serviceContent = query.getServiceContent();
String applicantMobile = query.getApplicantMobile();
workdiaryServiceRecordService.export(gridId, serviceType, applicantName, applicantAddress, serviceContent, applicantMobile, response);
} }
/** /**
@ -176,8 +181,12 @@ public class WorkdiaryServiceController {
public Result serviceTypeDelete(@RequestBody String[] ids){ public Result serviceTypeDelete(@RequestBody String[] ids){
//效验数据 //效验数据
AssertUtils.isArrayEmpty(ids, "id"); AssertUtils.isArrayEmpty(ids, "id");
workdiaryServiceTypeService.delete(ids); int failCount = workdiaryServiceTypeService.delete(ids);
return new Result(); if (failCount == 0) {
return new Result();
} else {
return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "部分条目已经被使用,未完全删除,失败条目:" + failCount);
}
} }
/** /**

93
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/WorkdiaryServiceRecordExcel.java

@ -1,12 +1,12 @@
package com.epmet.excel; package com.epmet.excel;
import cn.afterturn.easypoi.excel.annotation.Excel; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.epmet.dto.result.WorkdiaryServiceRecordDTO;
import lombok.Data; import lombok.Data;
import java.util.Date;
/** /**
* 工作日志(服务)-记录 * 工作日志(服务)-记录 excel
* *
* @author generator generator@elink-cn.com * @author generator generator@elink-cn.com
* @since v1.0.0 2022-08-23 * @since v1.0.0 2022-08-23
@ -14,65 +14,52 @@ import java.util.Date;
@Data @Data
public class WorkdiaryServiceRecordExcel { public class WorkdiaryServiceRecordExcel {
@Excel(name = "主键") @ColumnWidth(25)
private String id; @ExcelProperty(value = "所属网格")
private String gridName;
@Excel(name = "客户id")
private String customerId;
@Excel(name = "服务类型")
private String serviceType;
@Excel(name = "单位ID")
private String agencyId;
@Excel(name = "网格ID")
private String gridId;
@Excel(name = "组织ID path") @ColumnWidth(15)
private String orgIdPath; @ExcelProperty(value = "服务类型")
private String serviceTypeName;
@Excel(name = "申请人ID") @ColumnWidth(10)
private String applicantId; @ExcelProperty(value = "申请人")
@Excel(name = "申请人姓名")
private String applicantName; private String applicantName;
@Excel(name = "申请人住址") @ColumnWidth(25)
@ExcelProperty(value = "住址")
private String applicantAddress; private String applicantAddress;
@Excel(name = "申请人联系电话") @ColumnWidth(25)
private String applicantMobile; @ExcelProperty(value = "服务内容")
@Excel(name = "服务内容")
private String serviceContent; private String serviceContent;
@Excel(name = "服务时间") @ColumnWidth(15)
private Date serviceTime; @ExcelProperty(value = "联系电话")
private String applicantMobile;
@Excel(name = "负责人姓名")
private String principalName;
@Excel(name = "备注")
private String remark;
@Excel(name = "删除标识 0.未删除 1.已删除")
private Integer delFlag;
@Excel(name = "乐观锁")
private Integer revision;
@Excel(name = "创建人")
private String createdBy;
@Excel(name = "创建时间")
private Date createdTime;
@Excel(name = "更新人") @ColumnWidth(10)
private String updatedBy; @ExcelProperty(value = "负责人")
private String principal;
@Excel(name = "更新时间") @ColumnWidth(10)
private Date updatedTime; @ExcelProperty(value = "服务时间")
private String serviceTime;
@ColumnWidth(20)
@ExcelProperty(value = "备注")
private String remark;
public WorkdiaryServiceRecordExcel(WorkdiaryServiceRecordDTO dto) {
this.gridName = dto.getGridName();
this.serviceTypeName = dto.getServiceTypeName();
this.applicantName = dto.getApplicantName();
this.applicantAddress = dto.getApplicantAddress();
this.serviceContent = dto.getServiceContent();
this.serviceContent = dto.getServiceContent();
this.principal = dto.getPrincipalName();
this.principal = dto.getPrincipalName();
this.serviceTime = dto.getServiceTime();
this.remark = dto.getRemark();
}
} }

7
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkdiaryServiceRecordService.java

@ -2,9 +2,11 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.workdiaryservice.WorkdiaryServiceQueryFormDTO;
import com.epmet.dto.result.WorkdiaryServiceRecordDTO; import com.epmet.dto.result.WorkdiaryServiceRecordDTO;
import com.epmet.entity.WorkdiaryServiceRecordEntity; import com.epmet.entity.WorkdiaryServiceRecordEntity;
import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -78,4 +80,9 @@ public interface WorkdiaryServiceRecordService extends BaseService<WorkdiaryServ
* @date 2022-08-23 * @date 2022-08-23
*/ */
void delete(String[] ids); void delete(String[] ids);
void export(String gridId, Short serviceType, String applicantName, String applicantAddress,
String serviceContent, String applicantMobile, HttpServletResponse response);
Integer selectRecordCountOfType(Short serviceType);
} }

2
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkdiaryServiceTypeService.java

@ -75,5 +75,5 @@ public interface WorkdiaryServiceTypeService extends BaseService<WorkdiaryServic
* @author generator * @author generator
* @date 2022-08-23 * @date 2022-08-23
*/ */
void delete(String[] ids); int delete(String[] ids);
} }

57
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkdiaryServiceRecordServiceImpl.java

@ -1,18 +1,23 @@
package com.epmet.service.impl; package com.epmet.service.impl;
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.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode; 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.feign.ResultDataResolver; import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.utils.EpmetRequestHolder; import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.SpringContextUtils; import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.dao.WorkdiaryServiceRecordDao; import com.epmet.dao.WorkdiaryServiceRecordDao;
import com.epmet.dao.WorkdiaryServiceTypeDao; import com.epmet.dao.WorkdiaryServiceTypeDao;
@ -20,18 +25,21 @@ import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.WorkdiaryServiceTypeDTO; import com.epmet.dto.WorkdiaryServiceTypeDTO;
import com.epmet.dto.result.WorkdiaryServiceRecordDTO; import com.epmet.dto.result.WorkdiaryServiceRecordDTO;
import com.epmet.entity.WorkdiaryServiceRecordEntity; import com.epmet.entity.WorkdiaryServiceRecordEntity;
import com.epmet.entity.WorkdiaryServiceTypeEntity; import com.epmet.excel.WorkdiaryServiceRecordExcel;
import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.redis.WorkdiaryServiceRecordRedis; import com.epmet.redis.WorkdiaryServiceRecordRedis;
import com.epmet.service.WorkdiaryServiceRecordService; import com.epmet.service.WorkdiaryServiceRecordService;
import com.epmet.service.WorkdiaryServiceTypeService; import com.epmet.service.WorkdiaryServiceTypeService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -158,4 +166,47 @@ public class WorkdiaryServiceRecordServiceImpl extends BaseServiceImpl<Workdiary
return d; return d;
} }
@Override
public void export(String gridId, Short serviceType, String applicantName, String applicantAddress,
String serviceContent, String applicantMobile, HttpServletResponse response) {
ExcelWriter writer;
try {
writer = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("工作日志导出.xlsx", response)).build();
} catch (IOException e) {
logger.error("【工作日志-服务】导出-response设置失败:{}", ExceptionUtils.getErrorStackTrace(e));
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode());
}
WriteSheet sheet = EasyExcel.writerSheet("工作日志")
.head(WorkdiaryServiceRecordExcel.class)
.build();
try {
//一次500条,分批导出
int pageSize = 500;
for (int pageNo = 1; ; pageNo++) {
PageData<WorkdiaryServiceRecordDTO> page = this.page(gridId, serviceType, applicantName, applicantAddress, serviceContent, applicantMobile, pageNo, pageSize);
List<WorkdiaryServiceRecordDTO> list = page.getList();
if (CollectionUtils.isEmpty(list)) {
// 空的,导出结束
break;
}
List<WorkdiaryServiceRecordExcel> excelObjects = list.stream().map(e -> new WorkdiaryServiceRecordExcel(e)).collect(Collectors.toList());
writer.write(excelObjects, sheet);
}
} finally {
writer.finish();
}
}
@Override
public Integer selectRecordCountOfType(Short serviceType) {
LambdaQueryWrapper<WorkdiaryServiceRecordEntity> query = new LambdaQueryWrapper<>();
query.eq(WorkdiaryServiceRecordEntity::getCustomerId, EpmetRequestHolder.getLoginUserCustomerId());
query.eq(WorkdiaryServiceRecordEntity::getServiceType, serviceType);
return baseDao.selectCount(query);
}
} }

41
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkdiaryServiceTypeServiceImpl.java

@ -2,28 +2,31 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.utils.EpmetRequestHolder; import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.dao.WorkdiaryServiceTypeDao; import com.epmet.dao.WorkdiaryServiceTypeDao;
import com.epmet.dto.WorkdiaryServiceTypeDTO; import com.epmet.dto.WorkdiaryServiceTypeDTO;
import com.epmet.entity.WorkdiaryServiceTypeEntity; import com.epmet.entity.WorkdiaryServiceTypeEntity;
import com.epmet.redis.WorkdiaryServiceTypeRedis; import com.epmet.redis.WorkdiaryServiceTypeRedis;
import com.epmet.service.WorkdiaryServiceRecordService;
import com.epmet.service.WorkdiaryServiceTypeService; import com.epmet.service.WorkdiaryServiceTypeService;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Arrays; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -41,6 +44,8 @@ public class WorkdiaryServiceTypeServiceImpl extends BaseServiceImpl<WorkdiarySe
private WorkdiaryServiceTypeRedis workdiaryServiceTypeRedis; private WorkdiaryServiceTypeRedis workdiaryServiceTypeRedis;
@Autowired @Autowired
private RedisUtils redisUtils; private RedisUtils redisUtils;
@Autowired
private DistributedLock distributedLock;
@Override @Override
public PageData<WorkdiaryServiceTypeDTO> page(Integer pageNo, Integer pageSize) { public PageData<WorkdiaryServiceTypeDTO> page(Integer pageNo, Integer pageSize) {
@ -61,6 +66,7 @@ public class WorkdiaryServiceTypeServiceImpl extends BaseServiceImpl<WorkdiarySe
stQuery.eq(WorkdiaryServiceTypeEntity::getCustomerId, EpmetRequestHolder.getLoginUserCustomerId()); stQuery.eq(WorkdiaryServiceTypeEntity::getCustomerId, EpmetRequestHolder.getLoginUserCustomerId());
List<WorkdiaryServiceTypeDTO> ds = baseDao.selectList(stQuery).stream().map((e) -> { List<WorkdiaryServiceTypeDTO> ds = baseDao.selectList(stQuery).stream().map((e) -> {
WorkdiaryServiceTypeDTO d = new WorkdiaryServiceTypeDTO(); WorkdiaryServiceTypeDTO d = new WorkdiaryServiceTypeDTO();
d.setId(e.getId());
d.setServiceType(e.getServiceType()); d.setServiceType(e.getServiceType());
d.setServiceTypeName(e.getServiceTypeName()); d.setServiceTypeName(e.getServiceTypeName());
d.setEnabled(e.getEnabled()); d.setEnabled(e.getEnabled());
@ -115,9 +121,30 @@ public class WorkdiaryServiceTypeServiceImpl extends BaseServiceImpl<WorkdiarySe
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) { public int delete(@RequestBody String[] ids) {
// 逻辑删除(@TableLogic 注解) //String.format("");
baseDao.deleteBatchIds(Arrays.asList(ids)); //distributedLock.getLock(RedisKeys.getLockByMethodName());
// todo 此操作与日志记录的新增和修改动作之间需要互斥
List<String> canDeleteIds = new ArrayList<>();
int failCount = 0;
for (String id : ids) {
WorkdiaryServiceTypeEntity st = baseDao.selectById(id);
if (st == null) {
continue;
}
WorkdiaryServiceRecordService wsRecordService = SpringContextUtils.getBean(WorkdiaryServiceRecordService.class);
Integer recordCount = wsRecordService.selectRecordCountOfType(st.getServiceType());
if (recordCount > 0) {
failCount++;
} else {
canDeleteIds.add(id);
}
}
if (CollectionUtils.isNotEmpty(canDeleteIds)) {
baseDao.deleteBatchIds(canDeleteIds);
}
return failCount;
} }
} }
Loading…
Cancel
Save