liurunyu
2024-10-08 dbe3ed318dfe013663271fd64c8b8b152005e0b6
pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ScheduleCtrl.java
New file
@@ -0,0 +1,161 @@
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));
    }
}