yang_shj
11 months ago
9 changed files with 356 additions and 27 deletions
@ -0,0 +1,64 @@
|
||||
package com.hnac.hzims.operational.maintenance.vo; |
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty; |
||||
import com.alibaba.excel.annotation.write.style.ColumnWidth; |
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
@Data |
||||
@EqualsAndHashCode |
||||
@ApiModel("日常维护任务查询导出对象") |
||||
public class MaintenanceTaskQueryVO implements Serializable { |
||||
|
||||
@ApiModelProperty(value = "序号") |
||||
@ExcelProperty("序号") |
||||
private Integer index; |
||||
|
||||
@ApiModelProperty(value = "创建机构名称") |
||||
@ExcelProperty("单位") |
||||
@ColumnWidth(20) |
||||
private String deptName; |
||||
|
||||
@ExcelProperty("维护类型") |
||||
@ApiModelProperty(value = "维护类型名称") |
||||
@ColumnWidth(15) |
||||
private String typeName; |
||||
|
||||
@ApiModelProperty(value = "维护设备") |
||||
@ExcelProperty("维护设备") |
||||
@ColumnWidth(25) |
||||
private String emName; |
||||
|
||||
@ApiModelProperty(value = "维护内容") |
||||
@ExcelProperty("维护内容") |
||||
@ColumnWidth(40) |
||||
private String content; |
||||
|
||||
@ApiModelProperty(value = "计划执行时间") |
||||
@ExcelProperty("计划执行时间") |
||||
@ColumnWidth(20) |
||||
private String planDisposeTime; |
||||
|
||||
@ApiModelProperty(value = "实际执行时间") |
||||
@ExcelProperty("实际执行时间") |
||||
@ColumnWidth(20) |
||||
private String disposeTime; |
||||
|
||||
@ApiModelProperty(value = "执行人") |
||||
@ExcelProperty("执行人") |
||||
@ColumnWidth(20) |
||||
private String disposerName; |
||||
|
||||
@ApiModelProperty(value = "逾期状态") |
||||
@ExcelProperty("逾期状态") |
||||
private String delayStatus; |
||||
|
||||
@ApiModelProperty(value = "状态") |
||||
@ExcelProperty("状态") |
||||
private String status; |
||||
|
||||
} |
@ -0,0 +1,48 @@
|
||||
package com.hnac.hzims.operational.maintenance.controller; |
||||
|
||||
import com.hnac.hzims.operational.maintenance.service.IMaintenanceTaskQueryService; |
||||
import com.hnac.hzims.operational.maintenance.vo.MaintenanceTaskQueryVO; |
||||
import io.swagger.annotations.*; |
||||
import lombok.AllArgsConstructor; |
||||
import org.springblade.core.boot.ctrl.BladeController; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springframework.web.bind.annotation.GetMapping; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.RequestParam; |
||||
import org.springframework.web.bind.annotation.RestController; |
||||
|
||||
import javax.servlet.http.HttpServletResponse; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @ClassName MaintenanceTaskQueryController |
||||
* @description: |
||||
* @author: hx |
||||
* @create: 2024-01-08 14:35 |
||||
* @Version 4.0 |
||||
**/ |
||||
@RestController |
||||
@RequestMapping("/maintenance/task/query") |
||||
@Api(value = "日常维护任务导出管理",tags = "日常维护任务导出管理") |
||||
@AllArgsConstructor |
||||
public class MaintenanceTaskQueryController extends BladeController { |
||||
|
||||
private final IMaintenanceTaskQueryService maintenanceTaskQueryService; |
||||
|
||||
@GetMapping("/getMaintenanceTaskQuery") |
||||
@ApiOperation("查询日常维护任务") |
||||
@ApiOperationSupport(order = 1) |
||||
public R<List<MaintenanceTaskQueryVO>> getMaintenanceTaskQuery(@RequestParam("month") @ApiParam(value = "查询月份",required = true) String month, |
||||
@RequestParam(value = "deptId",required = false) @ApiParam("查询机构") Long deptId) { |
||||
return R.data(maintenanceTaskQueryService.getMaintenanceTaskQuery(month, deptId)); |
||||
} |
||||
|
||||
@GetMapping("/exportMaintenanceTaskQuery") |
||||
@ApiOperation("导出日常维护任务") |
||||
@ApiOperationSupport(order = 1) |
||||
public void exportMaintenanceTaskQuery(@RequestParam("month") @ApiParam(value = "查询月份",required = true) String month, |
||||
@RequestParam(value = "deptId",required = false) @ApiParam("查询机构") Long deptId, HttpServletResponse response) { |
||||
maintenanceTaskQueryService.exportMaintenanceTaskQuery(month,deptId,response); |
||||
} |
||||
|
||||
} |
@ -0,0 +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); |
||||
|
||||
} |
@ -0,0 +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 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