haungxing
11 months ago
6 changed files with 196 additions and 9 deletions
@ -1,4 +1,14 @@
|
||||
package com.hnac.hzims.operational.maintenance.service; |
||||
|
||||
import com.hnac.hzims.operational.maintenance.vo.MaintenanceTaskQueryVO; |
||||
|
||||
import javax.servlet.http.HttpServletResponse; |
||||
import java.util.List; |
||||
|
||||
public interface IMaintenanceTaskQueryService { |
||||
|
||||
List<MaintenanceTaskQueryVO> getMaintenanceTaskQuery(String month,Long deptId); |
||||
|
||||
void exportMaintenanceTaskQuery(String month, Long deptId, HttpServletResponse response); |
||||
|
||||
} |
||||
|
@ -1,14 +1,145 @@
|
||||
package com.hnac.hzims.operational.maintenance.service.impl; |
||||
|
||||
import com.alibaba.excel.EasyExcel; |
||||
import com.alibaba.excel.ExcelWriter; |
||||
import com.alibaba.excel.converters.longconverter.LongStringConverter; |
||||
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.SimpleColumnWidthStyleStrategy; |
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
||||
import com.google.common.collect.Lists; |
||||
import com.hnac.hzims.equipment.entity.EmInfoEntity; |
||||
import com.hnac.hzims.equipment.feign.IEmInfoClient; |
||||
import com.hnac.hzims.operational.maintenance.entity.OperMaintenanceTaskEntity; |
||||
import com.hnac.hzims.operational.maintenance.service.IMaintenanceTaskQueryService; |
||||
import com.hnac.hzims.operational.maintenance.service.IOperMaintenanceTaskService; |
||||
import com.hnac.hzims.operational.maintenance.vo.MaintenanceTaskQueryVO; |
||||
import com.hnac.hzims.operational.util.ObjectUtils; |
||||
import com.hnac.hzims.spare.entity.WtSpBasicEntity; |
||||
import lombok.AllArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.apache.poi.ss.usermodel.BorderStyle; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springblade.core.tool.utils.CollectionUtil; |
||||
import org.springblade.core.tool.utils.DateUtil; |
||||
import org.springblade.core.tool.utils.Func; |
||||
import org.springblade.core.tool.utils.StringUtil; |
||||
import org.springblade.system.cache.DictCache; |
||||
import org.springblade.system.entity.Dept; |
||||
import org.springblade.system.feign.ISysClient; |
||||
import org.springblade.system.user.cache.UserCache; |
||||
import org.springblade.system.user.entity.User; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import javax.servlet.http.HttpServletResponse; |
||||
import java.io.IOException; |
||||
import java.io.UnsupportedEncodingException; |
||||
import java.net.URLEncoder; |
||||
import java.time.LocalDateTime; |
||||
import java.util.ArrayList; |
||||
import java.util.Arrays; |
||||
import java.util.List; |
||||
import java.util.Optional; |
||||
import java.util.function.Function; |
||||
import java.util.function.IntFunction; |
||||
import java.util.function.IntUnaryOperator; |
||||
import java.util.stream.Collectors; |
||||
import java.util.stream.IntStream; |
||||
|
||||
@Service |
||||
@AllArgsConstructor |
||||
@Slf4j |
||||
public class MaintenanceTaskQueryServiceImpl implements IMaintenanceTaskQueryService { |
||||
|
||||
private final IOperMaintenanceTaskService operMaintenanceTaskService; |
||||
private final IOperMaintenanceTaskService maintenanceTaskService; |
||||
private final ISysClient sysClient; |
||||
private final IEmInfoClient emInfoClient; |
||||
|
||||
|
||||
@Override |
||||
public List<MaintenanceTaskQueryVO> getMaintenanceTaskQuery(String month,Long deptId) { |
||||
LambdaQueryWrapper<OperMaintenanceTaskEntity> wq = Wrappers.<OperMaintenanceTaskEntity>lambdaQuery() |
||||
.like(OperMaintenanceTaskEntity::getDisposeTime, month) |
||||
.like(Func.isNotEmpty(deptId),OperMaintenanceTaskEntity::getCreateDept,deptId) |
||||
.orderByAsc(OperMaintenanceTaskEntity::getDisposeTime); |
||||
List<OperMaintenanceTaskEntity> taskList = maintenanceTaskService.list(wq); |
||||
if(CollectionUtil.isEmpty(taskList)) { |
||||
return Lists.newArrayList(); |
||||
} |
||||
return this.fillTaskQuery(taskList); |
||||
} |
||||
|
||||
@Override |
||||
public void exportMaintenanceTaskQuery(String month, Long deptId, HttpServletResponse response) { |
||||
List<MaintenanceTaskQueryVO> maintenanceTaskQuery = this.getMaintenanceTaskQuery(month, deptId); |
||||
// 设置响应头
|
||||
// URLEncoder.encode防止中文乱码
|
||||
String fileName; |
||||
try { |
||||
fileName = URLEncoder.encode("日常维护执行情况报表", "UTF-8"); |
||||
} catch (UnsupportedEncodingException e) { |
||||
throw new RuntimeException(e); |
||||
} |
||||
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); |
||||
response.setContentType("application/vnd.ms-excel"); |
||||
response.setCharacterEncoding("UTF-8"); |
||||
WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); |
||||
contentWriteCellStyle.setBorderLeft(BorderStyle.THIN); |
||||
contentWriteCellStyle.setBorderTop(BorderStyle.THIN); |
||||
contentWriteCellStyle.setBorderRight(BorderStyle.THIN); |
||||
contentWriteCellStyle.setBorderBottom(BorderStyle.THIN); |
||||
contentWriteCellStyle.setWrapped(true); |
||||
try { |
||||
EasyExcel.write(response.getOutputStream(), MaintenanceTaskQueryVO.class) |
||||
.registerWriteHandler(new HorizontalCellStyleStrategy(new WriteCellStyle(), contentWriteCellStyle)) |
||||
.autoCloseStream(Boolean.FALSE).sheet("日常维护执行情况报表") |
||||
.doWrite(maintenanceTaskQuery); |
||||
} catch (IOException e) { |
||||
throw new RuntimeException(e); |
||||
} |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 填充查询结果 |
||||
* @param taskList 任务列表 |
||||
* @return 填充任务结果 |
||||
*/ |
||||
private List<MaintenanceTaskQueryVO> fillTaskQuery(List<OperMaintenanceTaskEntity> taskList) { |
||||
R<List<Dept>> deptListR = sysClient.getDeptList(); |
||||
List<Dept> deptList = deptListR.isSuccess() ? deptListR.getData() : Lists.newArrayList(); |
||||
List<EmInfoEntity> emList = emInfoClient.list(); |
||||
IntFunction<MaintenanceTaskQueryVO> convert = index -> { |
||||
OperMaintenanceTaskEntity task = taskList.get(index); |
||||
MaintenanceTaskQueryVO result = new MaintenanceTaskQueryVO(); |
||||
result.setIndex(index + 1); |
||||
// 获取机构名称
|
||||
result.setDeptName(deptList.stream().filter( |
||||
dept -> dept.getId().equals(task.getCreateDept()) |
||||
).findFirst().map(Dept::getDeptName).orElse("")); |
||||
// 获取维护类型
|
||||
result.setTypeName(DictCache.getValue("typeCode",task.getTypeCode())); |
||||
// 获取维护设备
|
||||
result.setEmName(emList.stream().filter( |
||||
em -> em.getNumber().equals(task.getEmCode()) |
||||
).findFirst().map(EmInfoEntity::getName).orElse("")); |
||||
// 获取执行时间
|
||||
result.setPlanDisposeTime(DateUtil.formatDateTime(task.getDisposeTime())); |
||||
result.setDisposeTime(Optional.ofNullable(task.getExecuteTime()).map(DateUtil::formatDateTime).orElse("")); |
||||
// 获取执行人
|
||||
String disposerName = Optional.ofNullable(task.getDisposer()).map(ObjectUtils::getUserNameByUserIds).orElse(""); |
||||
result.setDisposerName(disposerName); |
||||
// 获取维护内容
|
||||
result.setContent(task.getContent()); |
||||
// 获取延期状态
|
||||
result.setDelayStatus(task.getIsDelay() ? "逾期" : "未逾期"); |
||||
// 获取状态
|
||||
result.setStatus("结束".equals(task.getFlowTaskName()) ? "已完成" : "进行中"); |
||||
return result; |
||||
}; |
||||
List<MaintenanceTaskQueryVO> result = IntStream.iterate(0,index -> index+1).limit(taskList.size()).mapToObj(convert).collect(Collectors.toList()); |
||||
return result; |
||||
} |
||||
} |
||||
|
@ -1 +1,2 @@
|
||||
alter table hzims_oper_maintenance_plan add column station_code varchar(60) comment '站点编码' |
||||
alter table hzims_oper_maintenance_plan add column station_code varchar(60) comment '站点编码'; |
||||
alter table `hzims_oper_maintenance_task` add column `is_delay` tinyint(2) DEFAULT 0 COMMENT '是否逾期'; |
Loading…
Reference in new issue