package cn.iocoder.yudao.module.mes.controller.admin.pro.maintenancecalendar; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.mes.controller.admin.pro.maintenancecalendar.vo.MesProMaintenanceCalendarImportExcelVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.maintenancecalendar.vo.MesProMaintenanceCalendarImportRespVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.maintenancecalendar.vo.MesProMaintenanceCalendarPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.maintenancecalendar.vo.MesProMaintenanceCalendarRespVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.maintenancecalendar.vo.MesProMaintenanceCalendarSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.maintenancecalendar.MesProMaintenanceCalendarDO; import cn.iocoder.yudao.module.mes.service.pro.maintenancecalendar.MesProMaintenanceCalendarService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.Collections; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - MES 电力运维日历") @RestController @RequestMapping("/mes/pro/maintenance-calendar") @Validated public class MesProMaintenanceCalendarController { @Resource private MesProMaintenanceCalendarService calendarService; @PostMapping("/create") @Operation(summary = "创建电力运维日历") @PreAuthorize("@ss.hasPermission('mes:pro-maintenance-calendar:create')") public CommonResult createCalendar(@Valid @RequestBody MesProMaintenanceCalendarSaveReqVO createReqVO) { return success(calendarService.createCalendar(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新电力运维日历") @PreAuthorize("@ss.hasPermission('mes:pro-maintenance-calendar:update')") public CommonResult updateCalendar(@Valid @RequestBody MesProMaintenanceCalendarSaveReqVO updateReqVO) { calendarService.updateCalendar(updateReqVO); return success(true); } @DeleteMapping("/delete") @Operation(summary = "删除电力运维日历") @Parameter(name = "ids", description = "编号数组", required = true) @PreAuthorize("@ss.hasPermission('mes:pro-maintenance-calendar:delete')") public CommonResult deleteCalendar(@RequestParam("ids") List ids) { calendarService.deleteCalendar(ids); return success(true); } @GetMapping("/get") @Operation(summary = "获得电力运维日历") @Parameter(name = "id", description = "编号", required = true, example = "1024") public CommonResult getCalendar(@RequestParam("id") Long id) { MesProMaintenanceCalendarDO calendar = calendarService.getCalendar(id); return success(calendar != null ? BeanUtils.toBean(calendar, MesProMaintenanceCalendarRespVO.class) : null); } @GetMapping("/page") @Operation(summary = "获得电力运维日历分页") public CommonResult> getCalendarPage(@Valid MesProMaintenanceCalendarPageReqVO pageReqVO) { PageResult pageResult = calendarService.getCalendarPage(pageReqVO); if (CollUtil.isEmpty(pageResult.getList())) { return success(PageResult.empty(pageResult.getTotal())); } return success(BeanUtils.toBean(pageResult, MesProMaintenanceCalendarRespVO.class)); } @PutMapping("/publish") @Operation(summary = "发布电力运维日历") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('mes:pro-maintenance-calendar:update')") public CommonResult publishCalendar(@RequestParam("id") Long id) { calendarService.publishCalendar(id); return success(true); } @GetMapping("/get-import-template") @Operation(summary = "获得电力运维日历导入模板") public void importTemplate(HttpServletResponse response) throws IOException { List list = Collections.singletonList( MesProMaintenanceCalendarImportExcelVO.builder() .name("8月变电运维排班").workDate(java.time.LocalDate.of(2026, 8, 20)).shift(1).workType(1) .region("110kV 城区线").teamName("变电运维一班").personnel("张三,李四").remark("").build() ); ExcelUtils.writeTemplate(response, "电力运维日历导入模板.xls", "电力运维日历列表", MesProMaintenanceCalendarImportExcelVO.class, list); } @PostMapping("/import") @Operation(summary = "导入电力运维日历") @Parameters({ @Parameter(name = "file", description = "Excel 文件", required = true), @Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true") }) @PreAuthorize("@ss.hasPermission('mes:pro-maintenance-calendar:import')") public CommonResult importExcel(@RequestParam("file") MultipartFile file, @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception { List list = ExcelUtils.read(file, MesProMaintenanceCalendarImportExcelVO.class); return success(calendarService.importCalendarList(list, updateSupport)); } }