haungxing
11 months ago
6 changed files with 196 additions and 9 deletions
@ -1,4 +1,14 @@ |
|||||||
package com.hnac.hzims.operational.maintenance.service; |
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 { |
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; |
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.IMaintenanceTaskQueryService; |
||||||
import com.hnac.hzims.operational.maintenance.service.IOperMaintenanceTaskService; |
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.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 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 |
@Service |
||||||
@AllArgsConstructor |
@AllArgsConstructor |
||||||
|
@Slf4j |
||||||
public class MaintenanceTaskQueryServiceImpl implements IMaintenanceTaskQueryService { |
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