package com.dy.pmsProduct.schedule; 
 | 
  
 | 
import cn.hutool.json.JSONObject; 
 | 
import com.alibaba.excel.EasyExcel; 
 | 
import com.dy.common.aop.SsoPowerAop; 
 | 
import com.dy.common.webUtil.BaseResponse; 
 | 
import com.dy.common.webUtil.BaseResponseUtils; 
 | 
import com.dy.common.webUtil.QueryResultVo; 
 | 
import com.dy.pmsGlobal.aop.Log; 
 | 
import com.dy.pmsGlobal.pojoBa.BaUser; 
 | 
import com.dy.pmsGlobal.pojoPr.PrSchedule; 
 | 
import jakarta.servlet.http.HttpServletResponse; 
 | 
import jakarta.validation.Valid; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.apache.commons.collections4.CollectionUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.web.bind.annotation.*; 
 | 
  
 | 
import java.io.IOException; 
 | 
import java.net.URLEncoder; 
 | 
import java.nio.charset.StandardCharsets; 
 | 
import java.util.ArrayList; 
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * 排班 
 | 
 */ 
 | 
@Slf4j 
 | 
@RestController 
 | 
@RequestMapping(path="schedule") 
 | 
public class ScheduleCtrl { 
 | 
    private String fileName = "排班信息" ; 
 | 
    private String sheetName = "排班信息" ; 
 | 
    private ScheduleSv sv; 
 | 
    @Autowired 
 | 
    public void setScheduleSv(ScheduleSv scheduleSv) { 
 | 
        this.sv = scheduleSv; 
 | 
    } 
 | 
  
 | 
    @PostMapping(path="save") 
 | 
    @SsoPowerAop(power = "10200009") 
 | 
    @Log("保存排班") 
 | 
    public BaseResponse<Boolean> save(@RequestBody @Valid PrSchedule schedule){ 
 | 
        int count = sv.save(schedule); 
 | 
        if (count <= 0) { 
 | 
            return BaseResponseUtils.buildFail("数据库存储失败"); 
 | 
        } else { 
 | 
            return BaseResponseUtils.buildSuccess(true); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 更新 
 | 
     * @param schedule 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping(path="update") 
 | 
    @SsoPowerAop(power = "10200009") 
 | 
    @Log("更新排班") 
 | 
    public BaseResponse<Boolean> update(@RequestBody @Valid PrSchedule schedule){ 
 | 
        int count = sv.update(schedule); 
 | 
        if (count <= 0) { 
 | 
            return BaseResponseUtils.buildFail("数据库存储失败"); 
 | 
        } else { 
 | 
            return BaseResponseUtils.buildSuccess(true); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询任务计划列表 
 | 
     * @param vo 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping(path="selectPlan") 
 | 
    @SsoPowerAop(power = "10200008") 
 | 
    @Log("查询任务计划列表") 
 | 
    public BaseResponse<List<JSONObject>> selectPlan(@RequestBody QueryVo vo){ 
 | 
        List<JSONObject> array = sv.selectPlan(vo) ; 
 | 
        return BaseResponseUtils.buildSuccess(array); 
 | 
    } 
 | 
    /** 
 | 
     * 根据ID查询 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path="one") 
 | 
    @SsoPowerAop(power = "10200008") 
 | 
    @Log("根据ID查询排班") 
 | 
    public BaseResponse<PrSchedule> one(Long id){ 
 | 
        PrSchedule schedule=sv.selectById(id); 
 | 
        return BaseResponseUtils.buildSuccess(schedule); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 分页查询 
 | 
     * @param vo 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping(path="some") 
 | 
    @SsoPowerAop(power = "10200008") 
 | 
    @Log("分页查询排班") 
 | 
    public BaseResponse<QueryResultVo<List<PrSchedule>>> some(@RequestBody QueryVo vo){ 
 | 
        QueryResultVo<List<PrSchedule>> list = sv.selectSome(vo) ; 
 | 
        return BaseResponseUtils.buildSuccess(list); 
 | 
    } 
 | 
    /** 
 | 
     * 根据ID查询 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path="getUserList") 
 | 
    @SsoPowerAop(power = "10200008") 
 | 
    @Log("查询系统中操作人员信息") 
 | 
    public BaseResponse<List<BaUser>> getUserList(){ 
 | 
        List<BaUser> userList = sv.selectById(); 
 | 
        return BaseResponseUtils.buildSuccess(userList); 
 | 
    } 
 | 
  
 | 
  
 | 
    @PostMapping(path="export") 
 | 
    @SsoPowerAop(power = "10200009") 
 | 
    @Log("导出排班") 
 | 
    public void exportSchedule(@RequestBody QueryVo queryVo, HttpServletResponse response) throws IOException { 
 | 
        List<ExcelVo> list = new ArrayList<>(); 
 | 
  
 | 
        List<PrSchedule> schList = sv.selectAll(queryVo); 
 | 
        if (CollectionUtils.isNotEmpty(schList)) { 
 | 
            schList.forEach(sch -> { 
 | 
                if (CollectionUtils.isNotEmpty(sch.relList)) { 
 | 
                    sch.relList.forEach(rel -> { 
 | 
                        ExcelVo vo = new ExcelVo(); 
 | 
                        vo.id = sch.id.toString(); 
 | 
                        vo.userName = sch.userName; 
 | 
                        vo.scheduleDate = sch.scheduleDate; 
 | 
                        vo.dt = sch.dt; 
 | 
                        vo.planName = rel.planName; 
 | 
                        vo.nodeName = rel.nodeName; 
 | 
                        vo.stationName = rel.stationName; 
 | 
                        vo.workDetails = rel.workDetails; 
 | 
                        list.add(vo); 
 | 
                    }); 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
  
 | 
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 
 | 
        response.setCharacterEncoding("utf-8"); 
 | 
        fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8).replaceAll("\\+", "%20"); 
 | 
        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); 
 | 
        EasyExcel.write(response.getOutputStream(), list.get(0).getClass()).sheet(sheetName) 
 | 
                .registerWriteHandler(new CustomCellWriteHandler()).doWrite(list); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询所有,触屏端使用不验证token 
 | 
     * @param queryVo 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping(path="selectAll") 
 | 
    public BaseResponse<List<PrSchedule>> selectAll(@RequestBody QueryVo queryVo) { 
 | 
        return BaseResponseUtils.buildSuccess(sv.selectAll(queryVo)); 
 | 
    } 
 | 
} 
 |