智慧农业后台管理
Administrator
2022-07-14 86ca03a40065388aecc60973a3359c177a9fbb4a
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
package org.springblade.modules.traceability.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.recovery.service.RecoveryService;
import org.springblade.modules.traceability.dto.TraceabilityDTO;
import org.springblade.modules.traceability.dto.TraceabilityDetailDTO;
import org.springblade.modules.traceability.entity.Traceability;
import org.springblade.modules.traceability.service.TraceabilityService;
import org.springblade.modules.traceability.vo.TraceabilityVO;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
 
/**
 * 溯源码表控制器
 * @since 2022-05-19
 * @author zhongrj
 */
@RestController
@AllArgsConstructor
@RequestMapping("/traceability")
public class TraceabilityController extends BladeController {
 
    private final TraceabilityService traceabilityService;
 
 
    private final RecoveryService recoveryService;
 
    /**
     * 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入traceability")
    public R<Traceability> detail(Traceability traceability) {
        Traceability detail = traceabilityService.getOne(Condition.getQueryWrapper(traceability));
        return R.data(detail);
    }
 
    /**
     * 分页
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入traceability")
    public R<IPage<Traceability>> list(Traceability traceability, Query query) {
        IPage<Traceability> pages = traceabilityService.page(Condition.getPage(query), Condition.getQueryWrapper(traceability));
        return R.data(pages);
    }
 
    /**
     * 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入traceability")
    public R<IPage<TraceabilityVO>> page(TraceabilityVO traceability, Query query) {
        IPage<TraceabilityVO> pages = traceabilityService.selectTraceabilityPage(Condition.getPage(query), traceability);
        return R.data(pages);
    }
 
    /**
     * 自定义查询,不分页
     * @param traceability
     * @return
     */
    @GetMapping("/getTraceabilityList")
    public R getTraceabilityList(TraceabilityVO traceability) {
        return R.data(traceabilityService.getTraceabilityList(traceability));
    }
 
    /**
     * 新增
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @Transactional(rollbackFor = Exception.class)
    public R save(@Valid @RequestBody Traceability traceability) {
        traceability.setCreateTime(new Date());
        //生成溯源码编号
        //去生成保安证编号
        String pre = getCodePre();
        //查询当前前缀下最大的编号
        int max = recoveryService.getCodePreCount(pre);
        String result = null;
        if (max == 0) {
            result = pre + "0000001";
        } else {
            //格式化
            DecimalFormat decimalFormat = new DecimalFormat("0000000");
            max++;
            result = pre + (decimalFormat.format(max));
        }
        traceability.setCode(result);
        //新增
        return R.status(traceabilityService.save(traceability));
    }
 
 
    /**
     * 编号前缀
     * @return
     */
    private String getCodePre() {
        String nowDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        return nowDate.substring(2,4)+nowDate.substring(5,7);
    }
 
    /**
     * 修改
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入traceability")
    @Transactional(rollbackFor = Exception.class)
    public R update(@Valid @RequestBody Traceability traceability) {
        //更新并返回
        return R.status(traceabilityService.updateById(traceability));
    }
 
    /**
     * 新增或修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入traceability")
    public R submit(@Valid @RequestBody Traceability traceability) {
        return R.status(traceabilityService.saveOrUpdate(traceability));
    }
 
 
    /**
     * 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(traceabilityService.removeByIds(Func.toLongList(ids)));
    }
 
    /**
     * 获取溯源简介信息
     * @param traceability
     * @return
     */
    @GetMapping("/getSimpleInfo")
    public R<TraceabilityDTO> getSimpleInfo(Traceability traceability) {
        TraceabilityDTO traceabilityDTO = traceabilityService.getSimpleInfo(traceability);
        return R.data(traceabilityDTO);
    }
 
    /**
     * 获取溯源详情信息(包含农产品信息,认证检测信息,产地(地块信息),农事记录,企业信息)
     * @param traceability
     * @return
     */
    @GetMapping("/getTraceabilityDetailInfo")
    public R<TraceabilityDetailDTO> getTraceabilityDetailInfo(Traceability traceability) {
        TraceabilityDetailDTO traceabilityDTO = traceabilityService.getTraceabilityDetailInfo(traceability);
        return R.data(traceabilityDTO);
    }
 
    /**
     * 获取溯源详情信息(包含农产品信息,认证检测信息,产地(地块信息),农事记录,企业信息)扫码
     * @param traceability
     * @return
     */
    @GetMapping("/getTraceabilityDetailInfos")
    public R<TraceabilityDetailDTO> getTraceabilityDetailInfos(Traceability traceability) {
        TraceabilityDetailDTO traceabilityDTO = traceabilityService.getTraceabilityDetailInfos(traceability);
        return R.data(traceabilityDTO);
    }
 
}