SignInController.java
5.9 KB
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
package com.ruoyi.in.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.file.FileUploadException;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.in.domain.SignIn;
import com.ruoyi.in.service.ISignInService;
import com.ruoyi.in.service.SignInServiceV1;
import com.ruoyi.pojo.response.SignInResponseVo;
import com.ruoyi.utils.ConstDateUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
import static com.ruoyi.common.redispre.GlobalRedisPreName.REDIS_SIGN_IN_DRIVER_ALCOHOL_OVERFLOW;
/**
* 签到Controller
*
* @author guzijian
* @date 2023-07-05
*/
@Slf4j
@RestController
@RequestMapping("/in/in")
@Api(tags = "签到管理")
public class SignInController extends BaseController {
@Autowired
private ISignInService signInService;
@Autowired
private SignInServiceV1 signInServiceV1;
@Autowired
private RedisCache redisCache;
/**
* 查询签到列表
*/
// @PreAuthorize("@ss.hasPermi('in:in:list')")
@GetMapping("/list")
@ApiOperation("查询签到列表")
public TableDataInfo list(SignInResponseVo signIn) {
startPage();
List<SignInResponseVo> list = signInService.selectSignInList(signIn);
return getDataTable(list);
}
/**
* 导出签到列表
*/
// @PreAuthorize("@ss.hasPermi('in:in:export')")
// @Log(title = "签到", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ApiOperation("导出签到列表")
public void export(HttpServletResponse response, SignInResponseVo signIn) {
List<SignInResponseVo> list = signInService.selectSignInList(signIn);
ExcelUtil<SignInResponseVo> util = new ExcelUtil<SignInResponseVo>(SignInResponseVo.class);
util.exportExcel(response, list, "签到数据");
}
/**
* 获取签到详细信息
*/
// @PreAuthorize("@ss.hasPermi('in:in:query')")
@GetMapping(value = "/{id}")
@ApiOperation("获取签到详细信息")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(signInService.selectSignInById(id));
}
/**
* 补签
*/
// @PreAuthorize("@ss.hasPermi('in:in:signature')")
@Log(title = "补签", businessType = BusinessType.INSERT)
@PutMapping("/supplementarySignature")
@ApiOperation("补签(通过后台管理页面)")
public AjaxResult supplementarySignature(@ApiParam @RequestBody SignIn signIn) {
return signInService.supplementarySignature(signIn);
}
/**
* 新增签到
*
* @param signIn
* @return
* @throws FileUploadException
*/
@PostMapping("/newAdd")
@ApiOperation("新增签到(设备传入)")
public AjaxResult addSignIn(@ApiParam @RequestBody @Validated SignIn signIn) throws FileUploadException, IOException {
String key = MessageFormat.format("sign:assignment:{0}", signIn.getJobCode());
if (redisCache.hasKey(key)) {
log.info(" sing method old sign :[{}]", signIn);
return signInService.addSignIn(signIn);
}
Integer num = RandomUtils.nextInt(0, 9);
if (num < 5) {
redisCache.setCacheObject(key, num, 5, TimeUnit.MINUTES);
log.info("[{}] sing method 走新的签到方式 :[{}] ", num, signIn);
try {
return signInServiceV1.addsignInV1(signIn);
} catch (Exception e) {
key = StringUtils.join(REDIS_SIGN_IN_DRIVER_ALCOHOL_OVERFLOW, ConstDateUtil.FAST_YYYY_MM_DD.format(new Date()), ":", signIn.getJobCode());
if (redisCache.hasKey(key)) {
redisCache.setCacheObject(key, 0, 1, TimeUnit.DAYS);
}
log.error("[{}] sing method 走新的签到方式,签到失败 :[{}]", num, signIn, e);
return AjaxResult.error("签到失败,请再测试一次");
}
} else {
log.info("[{}] sing method old sign :[{}]", num, signIn);
return signInService.addSignIn(signIn);
}
}
// /**
// * 修改签到
// */
//// @PreAuthorize("@ss.hasPermi('in:in:edit')")
// @Log(title = "签到", businessType = BusinessType.UPDATE)
// @PutMapping
// @ApiOperation("修改签到")
// public AjaxResult edit(@RequestBody SignIn signIn) {
// return toAjax(signInService.updateSignIn(signIn));
// }
/**
* 删除签到
*/
// @PreAuthorize("@ss.hasPermi('in:in:remove')")
// @Log(title = "签到", businessType = BusinessType.DELETE)
// @DeleteMapping("/{ids}")
// @ApiOperation("删除签到")
// public AjaxResult remove(@PathVariable Long[] ids) {
// return toAjax(signInService.deleteSignInByIds(ids));
// }
@GetMapping("/repair")
public AjaxResult repairSignRecord(HttpServletRequest request) {
return AjaxResult.success(signInService.repairSignRecord(request));
}
@GetMapping("/repairAll/{date}")
public AjaxResult repairAllSignRecord(HttpServletRequest request, @PathVariable("date") String date) {
return AjaxResult.success(signInService.repairAllSignRecord(request, date));
}
}