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