Commit b994af10c7c710c427c0711738519f2a7f7287d9

Authored by guzijian
1 parent db35f26f

fix: 新增执行日志

ruoyi-admin/src/main/java/com/ruoyi/common/ConstEquipmentProperties.java
@@ -5,6 +5,9 @@ package com.ruoyi.common; @@ -5,6 +5,9 @@ package com.ruoyi.common;
5 * @author 20412 5 * @author 20412
6 */ 6 */
7 public interface ConstEquipmentProperties { 7 public interface ConstEquipmentProperties {
  8 + /**
  9 + * 设备健康
  10 + */
8 Integer EQUIPMENT_STATUS_HEALTH = 1; 11 Integer EQUIPMENT_STATUS_HEALTH = 1;
9 /** 12 /**
10 * 设备异常 13 * 设备异常
@@ -19,7 +22,7 @@ public interface ConstEquipmentProperties { @@ -19,7 +22,7 @@ public interface ConstEquipmentProperties {
19 */ 22 */
20 Integer EQUIPMENT_PROCESS_FLOW_ACTIVE = 3; 23 Integer EQUIPMENT_PROCESS_FLOW_ACTIVE = 3;
21 /** 24 /**
22 - * 处理王城 25 + * 处理完成
23 */ 26 */
24 Integer EQUIPMENT_PROCESS_FLOW_COMPLETE = 3; 27 Integer EQUIPMENT_PROCESS_FLOW_COMPLETE = 3;
25 } 28 }
ruoyi-admin/src/main/java/com/ruoyi/common/ConstSignInConstSignInProperties.java
@@ -6,6 +6,18 @@ package com.ruoyi.common; @@ -6,6 +6,18 @@ package com.ruoyi.common;
6 */ 6 */
7 public interface ConstSignInConstSignInProperties { 7 public interface ConstSignInConstSignInProperties {
8 /** 8 /**
  9 + * 未完成人脸注册
  10 + */
  11 + Integer SIGN_FACE_ACTIVE = 2;
  12 + /**
  13 + * 人脸过期更新中
  14 + */
  15 + Integer SIGN_FACE_TIMEOUT = 1;
  16 + /**
  17 + * 已完成人脸注册
  18 + */
  19 + Integer SIGN_FACE_SUCCESS = 0;
  20 + /**
9 * 导出图片 21 * 导出图片
10 */ 22 */
11 Integer EXPORT = 1; 23 Integer EXPORT = 1;
ruoyi-admin/src/main/java/com/ruoyi/driver/service/impl/DriverServiceImpl.java
@@ -44,6 +44,7 @@ import javax.servlet.http.HttpServletRequest; @@ -44,6 +44,7 @@ import javax.servlet.http.HttpServletRequest;
44 import javax.servlet.http.HttpServletResponse; 44 import javax.servlet.http.HttpServletResponse;
45 45
46 import static com.ruoyi.common.ApiProperties.PERSONNEL_API_KEY; 46 import static com.ruoyi.common.ApiProperties.PERSONNEL_API_KEY;
  47 +import static com.ruoyi.common.ConstSignInConstSignInProperties.SIGN_FACE_ACTIVE;
47 import static com.ruoyi.common.global.ResultCode.CODE_207; 48 import static com.ruoyi.common.global.ResultCode.CODE_207;
48 import static com.ruoyi.common.redispre.GlobalRedisPreName.DRIVER_SCHEDULING_PRE; 49 import static com.ruoyi.common.redispre.GlobalRedisPreName.DRIVER_SCHEDULING_PRE;
49 50
@@ -120,6 +121,7 @@ public class DriverServiceImpl implements IDriverService { @@ -120,6 +121,7 @@ public class DriverServiceImpl implements IDriverService {
120 */ 121 */
121 @Override 122 @Override
122 public int insertDriver(Driver driver) { 123 public int insertDriver(Driver driver) {
  124 + driver.setUpdateTime(new Date());
123 return driverMapper.insertDriver(driver); 125 return driverMapper.insertDriver(driver);
124 } 126 }
125 127
@@ -285,15 +287,7 @@ public class DriverServiceImpl implements IDriverService { @@ -285,15 +287,7 @@ public class DriverServiceImpl implements IDriverService {
285 // 查询当前人员信息库是否存在对应员工数据 287 // 查询当前人员信息库是否存在对应员工数据
286 List<String> jobCodes = vo.getFaceDataList().stream().map(FaceUpdateReqVo.FaceData::getJobCode).collect(Collectors.toList()); 288 List<String> jobCodes = vo.getFaceDataList().stream().map(FaceUpdateReqVo.FaceData::getJobCode).collect(Collectors.toList());
287 Map<String, String> existsSet = driverMapper.queryJobCodesIsExists(jobCodes).stream().collect(Collectors.toMap(item -> item, s -> s)); 289 Map<String, String> existsSet = driverMapper.queryJobCodesIsExists(jobCodes).stream().collect(Collectors.toMap(item -> item, s -> s));
288 - // 更新失败人员工号列表  
289 - List<String> insertDriverJobCodeList = new ArrayList<>();  
290 - for (String jobCode : jobCodes) {  
291 - if (Objects.isNull(existsSet.get(jobCode))) {  
292 - insertDriverJobCodeList.add(jobCode);  
293 - }  
294 - }  
295 jobCodes = new ArrayList<>(existsSet.values()); 290 jobCodes = new ArrayList<>(existsSet.values());
296 -  
297 List<Driver> updateDrivers = getDriversByJobCode(vo, date, existsSet, true); 291 List<Driver> updateDrivers = getDriversByJobCode(vo, date, existsSet, true);
298 List<Driver> insertDrivers = getDriversByJobCode(vo, date, existsSet, false); 292 List<Driver> insertDrivers = getDriversByJobCode(vo, date, existsSet, false);
299 List<List<Driver>> lists = ListUtils.splitList(updateDrivers, 400); 293 List<List<Driver>> lists = ListUtils.splitList(updateDrivers, 400);
@@ -338,6 +332,7 @@ public class DriverServiceImpl implements IDriverService { @@ -338,6 +332,7 @@ public class DriverServiceImpl implements IDriverService {
338 driver.setJobCode(item.getJobCode()); 332 driver.setJobCode(item.getJobCode());
339 driver.setFleetName(item.getFleetName()); 333 driver.setFleetName(item.getFleetName());
340 driver.setLineName(item.getLineName()); 334 driver.setLineName(item.getLineName());
  335 + driver.setFaceSignIn(SIGN_FACE_ACTIVE);
341 try { 336 try {
342 driver.setImage(getNewImageUrl(item.getJobCode(), item.getImageUrl())); 337 driver.setImage(getNewImageUrl(item.getJobCode(), item.getImageUrl()));
343 } catch (IOException e) { 338 } catch (IOException e) {
ruoyi-admin/src/main/java/com/ruoyi/in/service/impl/SignInServiceImpl.java
@@ -180,6 +180,7 @@ public class SignInServiceImpl implements ISignInService { @@ -180,6 +180,7 @@ public class SignInServiceImpl implements ISignInService {
180 SignInResponseVo vo = getSignInResponseVo(signIn, equipment); 180 SignInResponseVo vo = getSignInResponseVo(signIn, equipment);
181 signIn.setCreateTime(new Date()); 181 signIn.setCreateTime(new Date());
182 signIn.setRemark(""); 182 signIn.setRemark("");
  183 + // 测试用户特殊处理
183 if (signIn.getJobCode().equals("700002") || signIn.getJobCode().equals("700001")) { 184 if (signIn.getJobCode().equals("700002") || signIn.getJobCode().equals("700001")) {
184 return AjaxResult.success(SIGN_IN_SUCCESS_STRING, vo); 185 return AjaxResult.success(SIGN_IN_SUCCESS_STRING, vo);
185 } 186 }
@@ -297,17 +298,21 @@ public class SignInServiceImpl implements ISignInService { @@ -297,17 +298,21 @@ public class SignInServiceImpl implements ISignInService {
297 } 298 }
298 299
299 private static boolean driverCheckTimeOut(SignIn signIn, List<ResponseScheduling> driver) { 300 private static boolean driverCheckTimeOut(SignIn signIn, List<ResponseScheduling> driver) {
300 - LocalDateTime startTime = ConstDateUtil.getLocalDateTimeByLongTime(driver.get(0).getFcsjT());  
301 - LocalDateTime endTime = ConstDateUtil.getLocalDateTimeByLongTime(driver.get(driver.size() - 1).getZdsjT());  
302 - LocalDateTime signTime = ConstDateUtil.getLocalDateTimeByLongTime(signIn.getCreateTime().getTime());  
303 - long morningBetween = ChronoUnit.MINUTES.between(startTime, signTime);  
304 - long afternoonBetween = ChronoUnit.MINUTES.between(endTime, signTime);  
305 - // 签到范围一小时内  
306 - if (Math.abs(morningBetween) <= 60 || Math.abs(afternoonBetween) <= 60) { 301 + try {
  302 + LocalDateTime startTime = ConstDateUtil.getLocalDateTimeByLongTime(driver.get(0).getFcsjT());
  303 + LocalDateTime endTime = ConstDateUtil.getLocalDateTimeByLongTime(driver.get(driver.size() - 1).getZdsjT());
  304 + LocalDateTime signTime = ConstDateUtil.getLocalDateTimeByLongTime(signIn.getCreateTime().getTime());
  305 + long morningBetween = ChronoUnit.MINUTES.between(startTime, signTime);
  306 + long afternoonBetween = ChronoUnit.MINUTES.between(endTime, signTime);
  307 + // 签到范围一小时内 TODO 不合理后续会更改
  308 + if (Math.abs(morningBetween) <= 60 || Math.abs(afternoonBetween) <= 60) {
  309 + return true;
  310 + } else {
  311 + signIn.setRemark(signIn.getRemark() + SIGN_IN_TIMEOUT);
  312 + return false;
  313 + }
  314 + } catch (Exception e) {
307 return true; 315 return true;
308 - } else {  
309 - signIn.setRemark(signIn.getRemark() + SIGN_IN_TIMEOUT);  
310 - return false;  
311 } 316 }
312 } 317 }
313 318
ruoyi-admin/src/main/java/com/ruoyi/job/DriverJob.java
@@ -92,15 +92,18 @@ public class DriverJob implements InitializingBean { @@ -92,15 +92,18 @@ public class DriverJob implements InitializingBean {
92 92
93 /** 93 /**
94 * 通过该定时任务获取驾驶员信息 并保存到数据库 94 * 通过该定时任务获取驾驶员信息 并保存到数据库
95 - * 排班信息映射 不低于2小时更新一次  
96 */ 95 */
97 public void getDriverInfo(String params) throws Exception { 96 public void getDriverInfo(String params) throws Exception {
98 try { 97 try {
99 // String getDriverInfoUrl = String.format(GET_DRIVER_INFO_URL, params); 98 // String getDriverInfoUrl = String.format(GET_DRIVER_INFO_URL, params);
100 //获取token 99 //获取token
  100 + log.info("开始获取人事接口token");
101 TokenResponseVo tokenVo = getToken(TOKEN_URL); 101 TokenResponseVo tokenVo = getToken(TOKEN_URL);
  102 + log.info("获取人事接口token完毕");
102 // 获取驾驶员信息 103 // 获取驾驶员信息
  104 + log.info("开始获取驾驶员信息");
103 getDrivers(tokenVo.getAccessToken()); 105 getDrivers(tokenVo.getAccessToken());
  106 + log.info("获取驾驶员信息结束");
104 107
105 } catch (Exception e) { 108 } catch (Exception e) {
106 log.info("执行失败:" + e.getMessage()); 109 log.info("执行失败:" + e.getMessage());
@@ -161,16 +164,21 @@ public class DriverJob implements InitializingBean { @@ -161,16 +164,21 @@ public class DriverJob implements InitializingBean {
161 * 24小时执行一次 164 * 24小时执行一次
162 */ 165 */
163 public void getSchedulingInfo() { 166 public void getSchedulingInfo() {
164 - // 获取排班请求  
165 long timestamp = System.currentTimeMillis(); 167 long timestamp = System.currentTimeMillis();
  168 + log.info("获取排班任务触发时间:{}",timestamp);
  169 + // 获取排班请求
166 String getSchedulingInfoUrl = null; 170 String getSchedulingInfoUrl = null;
  171 + String formatDate = ConstDateUtil.formatDate(timestamp);
  172 + log.info("开始获取{}的排班数据",formatDate);
167 try { 173 try {
168 - getSchedulingInfoUrl = String.format(GET_SCHEDULING_INFO_URL, "99", ConstDateUtil.formatDate("yyyyMMdd"), timestamp, NONCE, PASSWORD, getSHA1(getStringStringMap(String.valueOf(timestamp)))); 174 + getSchedulingInfoUrl = String.format(GET_SCHEDULING_INFO_URL, "99", formatDate, timestamp, NONCE, PASSWORD, getSHA1(getStringStringMap(String.valueOf(timestamp))));
169 } catch (Exception e) { 175 } catch (Exception e) {
170 throw new RuntimeException(e); 176 throw new RuntimeException(e);
171 } 177 }
172 // 获取排班信息并存入redis 178 // 获取排班信息并存入redis
173 - saveSchedulingToRedis(getSchedulingInfoUrl, ConstDateUtil.formatDate("yyyyMMdd")); 179 + saveSchedulingToRedis(getSchedulingInfoUrl, formatDate);
  180 +
  181 + log.info("获取{}的排班数据完毕",formatDate);
174 } 182 }
175 183
176 /** 184 /**
@@ -202,9 +210,9 @@ public class DriverJob implements InitializingBean { @@ -202,9 +210,9 @@ public class DriverJob implements InitializingBean {
202 String jobCode = item.getJsy().split("/")[0]; 210 String jobCode = item.getJsy().split("/")[0];
203 item.setJobCode(jobCode); 211 item.setJobCode(jobCode);
204 if (Objects.isNull(driverSchedulingMap.get(jobCode))) { 212 if (Objects.isNull(driverSchedulingMap.get(jobCode))) {
205 - List<ResponseScheduling> oneDriverSchedulings = new ArrayList<>();  
206 - oneDriverSchedulings.add(item);  
207 - driverSchedulingMap.put(jobCode, oneDriverSchedulings); 213 + List<ResponseScheduling> oneDriverScheduling = new ArrayList<>();
  214 + oneDriverScheduling.add(item);
  215 + driverSchedulingMap.put(jobCode, oneDriverScheduling);
208 } else { 216 } else {
209 driverSchedulingMap.get(jobCode).add(item); 217 driverSchedulingMap.get(jobCode).add(item);
210 } 218 }
@@ -239,7 +247,9 @@ public class DriverJob implements InitializingBean { @@ -239,7 +247,9 @@ public class DriverJob implements InitializingBean {
239 } 247 }
240 248
241 private static void updateDrivers(List<Driver> drivers) { 249 private static void updateDrivers(List<Driver> drivers) {
  250 + log.info("开始更新人脸注册状态");
242 DRIVER_SERVICE.updateDrivers(drivers); 251 DRIVER_SERVICE.updateDrivers(drivers);
  252 + log.info("更新人脸注册状态完毕");
243 } 253 }
244 254
245 private static List<Driver> getDrivers(Date date, PersonnelResultResponseVo vo) { 255 private static List<Driver> getDrivers(Date date, PersonnelResultResponseVo vo) {
ruoyi-admin/src/main/java/com/ruoyi/service/ThreadJobService.java
@@ -122,7 +122,7 @@ public class ThreadJobService { @@ -122,7 +122,7 @@ public class ThreadJobService {
122 } 122 }
123 123
124 private void insertDriverInfo(String token, Driver driver) { 124 private void insertDriverInfo(String token, Driver driver) {
125 - String headImageUrl = new String(driver.getImage()); 125 + String headImageUrl = driver.getImage();
126 // 生成文件路径 126 // 生成文件路径
127 String fileName = driver.getJobCode() + ".png"; 127 String fileName = driver.getJobCode() + ".png";
128 String filePath = RuoYiConfig.getUploadPath() + headImagePre + "/" + fileName; 128 String filePath = RuoYiConfig.getUploadPath() + headImagePre + "/" + fileName;
ruoyi-admin/src/main/java/com/ruoyi/utils/ConstDateUtil.java
@@ -11,6 +11,15 @@ public class ConstDateUtil { @@ -11,6 +11,15 @@ public class ConstDateUtil {
11 SimpleDateFormat simpleDateFormat = new SimpleDateFormat(str); 11 SimpleDateFormat simpleDateFormat = new SimpleDateFormat(str);
12 return simpleDateFormat.format(new Date()); 12 return simpleDateFormat.format(new Date());
13 } 13 }
  14 + public static String formatDate(long time){
  15 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
  16 + return simpleDateFormat.format(new Date(time));
  17 + }
  18 + public static String formatDate(Date date){
  19 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
  20 + return simpleDateFormat.format(date);
  21 + }
  22 +
14 23
15 public static LocalDateTime getLocalDateTimeByLongTime(long time){ 24 public static LocalDateTime getLocalDateTimeByLongTime(long time){
16 Instant instant = Instant.ofEpochMilli(time); 25 Instant instant = Instant.ofEpochMilli(time);
ruoyi-admin/src/main/resources/application-druid-dev.yml
@@ -153,4 +153,6 @@ api: @@ -153,4 +153,6 @@ api:
153 appKey: dingsclwvxui5zilg1xk 153 appKey: dingsclwvxui5zilg1xk
154 appSecret: ckV20k3jMKJpUkfXXSGhLk077rQQjsSaAusiSVY-nm4glwweCmb_SMJ62Cpf4YQ5 154 appSecret: ckV20k3jMKJpUkfXXSGhLk077rQQjsSaAusiSVY-nm4glwweCmb_SMJ62Cpf4YQ5
155 people: 155 people:
156 - url: https://api.dingtalk.com/v1.0/yida/forms/instances/search  
157 \ No newline at end of file 156 \ No newline at end of file
  157 + url: https://api.dingtalk.com/v1.0/yida/forms/instances/search
  158 +log:
  159 + path: D:/ruoyi/logs
ruoyi-admin/src/main/resources/application-druid-prd.yml
@@ -177,4 +177,6 @@ api: @@ -177,4 +177,6 @@ api:
177 appKey: dingsclwvxui5zilg1xk 177 appKey: dingsclwvxui5zilg1xk
178 appSecret: ckV20k3jMKJpUkfXXSGhLk077rQQjsSaAusiSVY-nm4glwweCmb_SMJ62Cpf4YQ5 178 appSecret: ckV20k3jMKJpUkfXXSGhLk077rQQjsSaAusiSVY-nm4glwweCmb_SMJ62Cpf4YQ5
179 people: 179 people:
180 - url: https://api.dingtalk.com/v1.0/yida/forms/instances/search  
181 \ No newline at end of file 180 \ No newline at end of file
  181 + url: https://api.dingtalk.com/v1.0/yida/forms/instances/search
  182 +log:
  183 + path: E:/ruoyi/logs
182 \ No newline at end of file 184 \ No newline at end of file
ruoyi-admin/src/main/resources/application-druid-uat.yml
@@ -173,4 +173,6 @@ api: @@ -173,4 +173,6 @@ api:
173 appKey: dingsclwvxui5zilg1xk 173 appKey: dingsclwvxui5zilg1xk
174 appSecret: ckV20k3jMKJpUkfXXSGhLk077rQQjsSaAusiSVY-nm4glwweCmb_SMJ62Cpf4YQ5 174 appSecret: ckV20k3jMKJpUkfXXSGhLk077rQQjsSaAusiSVY-nm4glwweCmb_SMJ62Cpf4YQ5
175 people: 175 people:
176 - url: https://api.dingtalk.com/v1.0/yida/forms/instances/search  
177 \ No newline at end of file 176 \ No newline at end of file
  177 + url: https://api.dingtalk.com/v1.0/yida/forms/instances/search
  178 +log:
  179 + path: /home/ruoyi/logs
178 \ No newline at end of file 180 \ No newline at end of file
ruoyi-admin/src/main/resources/logback.xml
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 <!-- 日志存放路径 --> 3 <!-- 日志存放路径 -->
4 <!-- <property name="log.path" value="E:/ruoyi/logs" />--> 4 <!-- <property name="log.path" value="E:/ruoyi/logs" />-->
5 <!-- <property name="log.path" value="D:/ruoyi/logs" />--> 5 <!-- <property name="log.path" value="D:/ruoyi/logs" />-->
6 - <property name="log.path" value="/home/ruoyi/logs" /> 6 + <springProperty scope="context" name="log.path" source="log.path"/>
7 <!-- 日志输出格式 --> 7 <!-- 日志输出格式 -->
8 <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /> 8 <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
9 9