刘小明
2024-08-21 14b0417bca9050a11792248f5c5c7e7c86e4744f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package com.dy.pmsProduct.schedule;
 
import com.alibaba.excel.converters.Converter;
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.pojoPr.PrSchedule;
import com.dy.pmsGlobal.util.QrCodeUtil;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
 
/**
 * 排班
 */
@Slf4j
@RestController
@RequestMapping(path="schedule")
public class ScheduleCtrl {
    private static final String fileName = "排班信息" ;
    private static final String sheetName = "排班信息" ;
    private ScheduleSv sv;
    @Autowired
    public void setScheduleSv(ScheduleSv scheduleSv) {
        this.sv = scheduleSv;
    }
 
    @PostMapping(path="save")
    @SsoPowerAop(power = "-1")
    @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 = "-1")
    @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 = "-1")
    @Log("查询任务计划列表")
    public BaseResponse<List<Map<String,Object>>> selectPlan(@RequestBody QueryVo vo){
        List<Map<String,Object>> list = sv.selectPlan(vo) ;
        return BaseResponseUtils.buildSuccess(list);
    }
    /**
     * 根据ID查询
     * @return
     */
    @GetMapping(path="one")
    @SsoPowerAop(power = "-1")
    @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 = "-1")
    @Log("分页查询排班")
    public BaseResponse<QueryResultVo<List<PrSchedule>>> some(@RequestBody com.dy.pmsProduct.schedule.QueryVo vo){
        QueryResultVo<List<PrSchedule>> list = sv.selectSome(vo) ;
        return BaseResponseUtils.buildSuccess(list);
    }
 
 
    @PostMapping(path="export")
    @SsoPowerAop(power = "-1")
    @Log("导出排班")
    public void exportSchedule(@RequestBody QueryVo queryVo, HttpServletResponse response){
        List<Converter> list = new ArrayList<>() ;
 
        List<PrSchedule> schList = sv.selectAll(queryVo);
        // 使用并行流提高性能
        schList.parallelStream().forEach(sch -> {
            sch.relList.forEach(rel -> {
                ExcelVo vo = new ExcelVo();
                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);
            });
        });
        QrCodeUtil.downloadExcel(response, fileName,sheetName,list);
    }
}