Commit 51a1f0c5c2b9dfadcd4c4462c734a95021ab644f
1 parent
6bc04725
添加对接报表
Showing
29 changed files
with
1080 additions
and
36 deletions
Bsth-admin/sql/DDL.sql
| 1 | -ALTER TABLE equipment_exception ADD sign_id INT NULL COMMENT '打卡表ID'; | ||
| 2 | - | ||
| 3 | - | ||
| 4 | -ALTER TABLE equipment_exception_report ADD sign_in varchar(100) NULL COMMENT '签到类型 1 人脸 2 刷卡 3 其他 4 酒精;104 线下酒测'; | ||
| 5 | - | ||
| 6 | - | ||
| 7 | -ALTER TABLE sign_in ADD exception_Id BIGINT NULL COMMENT '异常ID复测签到'; | ||
| 8 | - | ||
| 9 | - | 1 | +CREATE TABLE lingang_all_in_one.sign_report_day_summary ( |
| 2 | + id INT auto_increment NOT NULL COMMENT 'ID', | ||
| 3 | + dateStr varchar(30) NOT NULL COMMENT '日期 格式为:yyyy-MM-dd', | ||
| 4 | + alcohol_Num INT DEFAULT 0 NULL COMMENT '酒驾人数', | ||
| 5 | + early_Signing INT DEFAULT 0 NULL COMMENT '早签人数', | ||
| 6 | + late_Signing INT DEFAULT 0 NULL COMMENT '晚签人数', | ||
| 7 | + normal_Signing INT DEFAULT 0 NULL COMMENT '正常签到人数', | ||
| 8 | + CONSTRAINT sign_report_day_summary_pk PRIMARY KEY (id), | ||
| 9 | + CONSTRAINT sign_report_day_summary_unique UNIQUE KEY (dateStr) | ||
| 10 | +) | ||
| 11 | +ENGINE=InnoDB | ||
| 12 | +DEFAULT CHARSET=utf8mb4 | ||
| 13 | +COLLATE=utf8mb4_0900_ai_ci; | ||
| 10 | 14 |
Bsth-admin/src/main/java/com/ruoyi/controller/RefreshController.java
| @@ -6,13 +6,17 @@ import com.ruoyi.common.utils.sign.Base64; | @@ -6,13 +6,17 @@ import com.ruoyi.common.utils.sign.Base64; | ||
| 6 | import com.ruoyi.controller.dss.DssFaceController; | 6 | import com.ruoyi.controller.dss.DssFaceController; |
| 7 | import com.ruoyi.domain.driver.NewDriver; | 7 | import com.ruoyi.domain.driver.NewDriver; |
| 8 | import com.ruoyi.domain.driver.dss.syn.res.dto.FaceRegisterDTO; | 8 | import com.ruoyi.domain.driver.dss.syn.res.dto.FaceRegisterDTO; |
| 9 | +import com.ruoyi.domain.dss.app.vo.SignReportGroupByVo; | ||
| 9 | import com.ruoyi.domain.scheduling.LinggangScheduling; | 10 | import com.ruoyi.domain.scheduling.LinggangScheduling; |
| 11 | +import com.ruoyi.domain.sign.in.summary.SignReportDaySummary; | ||
| 10 | import com.ruoyi.equipment.domain.Equipment; | 12 | import com.ruoyi.equipment.domain.Equipment; |
| 11 | import com.ruoyi.equipment.service.IEquipmentService; | 13 | import com.ruoyi.equipment.service.IEquipmentService; |
| 12 | import com.ruoyi.job.DriverJob; | 14 | import com.ruoyi.job.DriverJob; |
| 15 | +import com.ruoyi.service.SignReportServer; | ||
| 13 | import com.ruoyi.service.driver.NewDriverService; | 16 | import com.ruoyi.service.driver.NewDriverService; |
| 14 | import com.ruoyi.service.key.location.LinggangKeyWorkLocationService; | 17 | import com.ruoyi.service.key.location.LinggangKeyWorkLocationService; |
| 15 | import com.ruoyi.service.scheduling.LinggangSchedulingService; | 18 | import com.ruoyi.service.scheduling.LinggangSchedulingService; |
| 19 | +import com.ruoyi.service.sign.in.summary.SignReportDaySummaryService; | ||
| 16 | import com.ruoyi.utils.DateUtil; | 20 | import com.ruoyi.utils.DateUtil; |
| 17 | import io.swagger.annotations.ApiOperation; | 21 | import io.swagger.annotations.ApiOperation; |
| 18 | import lombok.extern.slf4j.Slf4j; | 22 | import lombok.extern.slf4j.Slf4j; |
| @@ -21,6 +25,7 @@ import org.apache.commons.io.FileUtils; | @@ -21,6 +25,7 @@ import org.apache.commons.io.FileUtils; | ||
| 21 | import org.apache.commons.lang3.ArrayUtils; | 25 | import org.apache.commons.lang3.ArrayUtils; |
| 22 | import org.apache.commons.lang3.StringUtils; | 26 | import org.apache.commons.lang3.StringUtils; |
| 23 | import org.apache.commons.lang3.time.DateUtils; | 27 | import org.apache.commons.lang3.time.DateUtils; |
| 28 | +import org.springframework.beans.BeanUtils; | ||
| 24 | import org.springframework.beans.factory.annotation.Autowired; | 29 | import org.springframework.beans.factory.annotation.Autowired; |
| 25 | import org.springframework.security.access.prepost.PreAuthorize; | 30 | import org.springframework.security.access.prepost.PreAuthorize; |
| 26 | import org.springframework.web.bind.annotation.*; | 31 | import org.springframework.web.bind.annotation.*; |
| @@ -51,6 +56,11 @@ public class RefreshController { | @@ -51,6 +56,11 @@ public class RefreshController { | ||
| 51 | private DssFaceController dssFaceController; | 56 | private DssFaceController dssFaceController; |
| 52 | @Autowired | 57 | @Autowired |
| 53 | private IEquipmentService equipmentService; | 58 | private IEquipmentService equipmentService; |
| 59 | + @Autowired | ||
| 60 | + private SignReportDaySummaryService signReportDaySummaryService; | ||
| 61 | + @Autowired | ||
| 62 | + private SignReportServer signReportServer; | ||
| 63 | + | ||
| 54 | 64 | ||
| 55 | @GetMapping(value = "/scheduling") | 65 | @GetMapping(value = "/scheduling") |
| 56 | @ApiOperation("scheduling") | 66 | @ApiOperation("scheduling") |
| @@ -68,7 +78,7 @@ public class RefreshController { | @@ -68,7 +78,7 @@ public class RefreshController { | ||
| 68 | @GetMapping(value = "/scheduling/{dateStr}") | 78 | @GetMapping(value = "/scheduling/{dateStr}") |
| 69 | @ApiOperation("scheduling") | 79 | @ApiOperation("scheduling") |
| 70 | // @PreAuthorize("@ss.hasPermi('refresh:scheduling')") | 80 | // @PreAuthorize("@ss.hasPermi('refresh:scheduling')") |
| 71 | - public ResponseResult<Boolean> scheduling(@PathVariable String dateStr) throws ParseException { | 81 | + public ResponseResult<Boolean> scheduling(@PathVariable String dateStr) throws ParseException { |
| 72 | Date date = DateUtil.YYYY_MM_DD_LINK_HH_MM_SS.parse(dateStr); | 82 | Date date = DateUtil.YYYY_MM_DD_LINK_HH_MM_SS.parse(dateStr); |
| 73 | driverJob.runScheduling(date.getTime()); | 83 | driverJob.runScheduling(date.getTime()); |
| 74 | 84 | ||
| @@ -108,7 +118,7 @@ public class RefreshController { | @@ -108,7 +118,7 @@ public class RefreshController { | ||
| 108 | 118 | ||
| 109 | @PostMapping(value = "/driver/init/image") | 119 | @PostMapping(value = "/driver/init/image") |
| 110 | @ApiOperation("driver/init/image") | 120 | @ApiOperation("driver/init/image") |
| 111 | - // @PreAuthorize("@ss.hasPermi('refresh:driver:init:image')") | 121 | + // @PreAuthorize("@ss.hasPermi('refresh:driver:init:image')") |
| 112 | public ResponseResult<Boolean> insertDriverInitImage(@RequestParam("imagePath") String imagePath, @RequestParam("device") String device) { | 122 | public ResponseResult<Boolean> insertDriverInitImage(@RequestParam("imagePath") String imagePath, @RequestParam("device") String device) { |
| 113 | if (StringUtils.isEmpty(device)) { | 123 | if (StringUtils.isEmpty(device)) { |
| 114 | return ResponseResult.error("注册设备号不能为空"); | 124 | return ResponseResult.error("注册设备号不能为空"); |
| @@ -179,7 +189,7 @@ public class RefreshController { | @@ -179,7 +189,7 @@ public class RefreshController { | ||
| 179 | 189 | ||
| 180 | @PostMapping(value = "/driver/init/image/name") | 190 | @PostMapping(value = "/driver/init/image/name") |
| 181 | @ApiOperation("driver/init/image/name") | 191 | @ApiOperation("driver/init/image/name") |
| 182 | - // @PreAuthorize("@ss.hasPermi('refresh:driver:init:image:name')") | 192 | + // @PreAuthorize("@ss.hasPermi('refresh:driver:init:image:name')") |
| 183 | public ResponseResult<Object> insertDriverInitImageOfName(@RequestParam("imagePath") String imagePath, @RequestParam("device") String device) { | 193 | public ResponseResult<Object> insertDriverInitImageOfName(@RequestParam("imagePath") String imagePath, @RequestParam("device") String device) { |
| 184 | if (StringUtils.isEmpty(device)) { | 194 | if (StringUtils.isEmpty(device)) { |
| 185 | return ResponseResult.error("注册设备号不能为空"); | 195 | return ResponseResult.error("注册设备号不能为空"); |
| @@ -269,4 +279,56 @@ public class RefreshController { | @@ -269,4 +279,56 @@ public class RefreshController { | ||
| 269 | return responseResult; | 279 | return responseResult; |
| 270 | } | 280 | } |
| 271 | 281 | ||
| 282 | + @GetMapping(value = "/sign/report/summary/{startMonth}") | ||
| 283 | + @ApiOperation("/sign/report/summary") | ||
| 284 | + public ResponseResult<String> signReportSummary(@PathVariable("startMonth") String startMonth) throws ParseException { | ||
| 285 | + Date now = DateUtil.shortDate(new Date()); | ||
| 286 | + String dateStr = startMonth + "-01"; | ||
| 287 | + Date startDate = DateUtil.YYYY_MM_DD_LINK.parse(dateStr); | ||
| 288 | + int index = -1; | ||
| 289 | + boolean flag = false; | ||
| 290 | + while (true) { | ||
| 291 | + index++; | ||
| 292 | + Date startDate1 = DateUtils.addMonths(startDate,index); | ||
| 293 | + dateStr = DateUtil.YYYY_MM_LINK.format(startDate1); | ||
| 294 | + List<SignReportGroupByVo> signReportGroupByVos = signReportServer.querySignReportGroupByDateStrVo(dateStr); | ||
| 295 | + | ||
| 296 | + if (CollectionUtils.isNotEmpty(signReportGroupByVos)) { | ||
| 297 | + for (SignReportGroupByVo byVo : signReportGroupByVos) { | ||
| 298 | + Date date = DateUtil.YYYY_MM_DD_LINK.parse(byVo.getDateStr()); | ||
| 299 | + if (DateUtils.isSameDay(now, date)) { | ||
| 300 | + flag = true; | ||
| 301 | + break; | ||
| 302 | + }else if(date.getTime()>=now.getTime()){ | ||
| 303 | + flag = true; | ||
| 304 | + break; | ||
| 305 | + } | ||
| 306 | + SignReportDaySummary summary = new SignReportDaySummary(); | ||
| 307 | + summary.setDatestr(byVo.getDateStr()); | ||
| 308 | + | ||
| 309 | + List<SignReportDaySummary> summaries = signReportDaySummaryService.list(summary); | ||
| 310 | + if (CollectionUtils.isNotEmpty(summaries)) { | ||
| 311 | + Set<Integer> ids = summaries.stream().map(SignReportDaySummary::getId).collect(Collectors.toSet()); | ||
| 312 | + signReportDaySummaryService.removeByIds(ids); | ||
| 313 | + } | ||
| 314 | + | ||
| 315 | + BeanUtils.copyProperties(byVo, summary); | ||
| 316 | + try { | ||
| 317 | + signReportDaySummaryService.save(summary); | ||
| 318 | + } catch (Exception e) { | ||
| 319 | + log.error("保存签到汇总异常:[{}]", dateStr, e); | ||
| 320 | + } | ||
| 321 | + | ||
| 322 | + } | ||
| 323 | + } | ||
| 324 | + | ||
| 325 | + if (flag) { | ||
| 326 | + break; | ||
| 327 | + } | ||
| 328 | + | ||
| 329 | + } | ||
| 330 | + | ||
| 331 | + return ResponseResult.success(); | ||
| 332 | + } | ||
| 333 | + | ||
| 272 | } | 334 | } |
Bsth-admin/src/main/java/com/ruoyi/controller/ReportController.java
| 1 | package com.ruoyi.controller; | 1 | package com.ruoyi.controller; |
| 2 | 2 | ||
| 3 | import com.ruoyi.common.core.domain.AjaxResult; | 3 | import com.ruoyi.common.core.domain.AjaxResult; |
| 4 | +import com.ruoyi.common.core.domain.ResponseResult; | ||
| 4 | import com.ruoyi.common.global.Result; | 5 | import com.ruoyi.common.global.Result; |
| 5 | import com.ruoyi.common.utils.poi.ExcelUtil; | 6 | import com.ruoyi.common.utils.poi.ExcelUtil; |
| 6 | import com.ruoyi.pojo.request.ReportViewRequestVo; | 7 | import com.ruoyi.pojo.request.ReportViewRequestVo; |
| @@ -10,9 +11,7 @@ import com.ruoyi.pojo.response.ReportErrorResponseVo; | @@ -10,9 +11,7 @@ import com.ruoyi.pojo.response.ReportErrorResponseVo; | ||
| 10 | import com.ruoyi.pojo.vo.PersonSignDataResponseVo; | 11 | import com.ruoyi.pojo.vo.PersonSignDataResponseVo; |
| 11 | import com.ruoyi.service.ReportService; | 12 | import com.ruoyi.service.ReportService; |
| 12 | import com.ruoyi.system.domain.SysNotice; | 13 | import com.ruoyi.system.domain.SysNotice; |
| 13 | -import io.swagger.annotations.Api; | ||
| 14 | -import io.swagger.annotations.ApiOperation; | ||
| 15 | -import io.swagger.annotations.ApiParam; | 14 | +import io.swagger.annotations.*; |
| 16 | import org.springframework.security.access.prepost.PreAuthorize; | 15 | import org.springframework.security.access.prepost.PreAuthorize; |
| 17 | import org.springframework.validation.annotation.Validated; | 16 | import org.springframework.validation.annotation.Validated; |
| 18 | import org.springframework.web.bind.annotation.*; | 17 | import org.springframework.web.bind.annotation.*; |
| @@ -90,6 +89,12 @@ public class ReportController { | @@ -90,6 +89,12 @@ public class ReportController { | ||
| 90 | return AjaxResult.success(reportService.getErrorReportList(request)); | 89 | return AjaxResult.success(reportService.getErrorReportList(request)); |
| 91 | } | 90 | } |
| 92 | 91 | ||
| 92 | + @ApiOperation("异常报表集合查询") | ||
| 93 | + @GetMapping("/error/list/report") | ||
| 94 | + public ResponseResult<List<ReportErrorResponseVo>> getErrorListReport(@ApiParam @ModelAttribute ReportErrorRequestVo request) { | ||
| 95 | + return ResponseResult.success(reportService.getErrorReportList(request)); | ||
| 96 | + } | ||
| 97 | + | ||
| 93 | @ApiOperation("签到报表导出") | 98 | @ApiOperation("签到报表导出") |
| 94 | @PostMapping("/export") | 99 | @PostMapping("/export") |
| 95 | public void exportReport(@ApiParam ReportViewRequestVo requestVo, HttpServletResponse response) { | 100 | public void exportReport(@ApiParam ReportViewRequestVo requestVo, HttpServletResponse response) { |
Bsth-admin/src/main/java/com/ruoyi/controller/app/SignReportController.java
| @@ -2,19 +2,27 @@ package com.ruoyi.controller.app; | @@ -2,19 +2,27 @@ package com.ruoyi.controller.app; | ||
| 2 | 2 | ||
| 3 | import com.ruoyi.common.core.controller.BaseController; | 3 | import com.ruoyi.common.core.controller.BaseController; |
| 4 | import com.ruoyi.common.core.domain.ResponseResult; | 4 | import com.ruoyi.common.core.domain.ResponseResult; |
| 5 | +import com.ruoyi.domain.dss.app.vo.SignReportGroupByVo; | ||
| 5 | import com.ruoyi.domain.dss.app.vo.SignReportVo; | 6 | import com.ruoyi.domain.dss.app.vo.SignReportVo; |
| 6 | import com.ruoyi.service.SignReportServer; | 7 | import com.ruoyi.service.SignReportServer; |
| 8 | +import com.ruoyi.utils.DateUtil; | ||
| 7 | import io.swagger.annotations.Api; | 9 | import io.swagger.annotations.Api; |
| 8 | import io.swagger.annotations.ApiOperation; | 10 | import io.swagger.annotations.ApiOperation; |
| 9 | import io.swagger.annotations.ApiParam; | 11 | import io.swagger.annotations.ApiParam; |
| 10 | import lombok.extern.slf4j.Slf4j; | 12 | import lombok.extern.slf4j.Slf4j; |
| 13 | +import org.apache.commons.lang3.StringUtils; | ||
| 14 | +import org.apache.commons.lang3.time.DateUtils; | ||
| 11 | import org.springframework.beans.factory.annotation.Autowired; | 15 | import org.springframework.beans.factory.annotation.Autowired; |
| 12 | import org.springframework.web.bind.annotation.GetMapping; | 16 | import org.springframework.web.bind.annotation.GetMapping; |
| 13 | import org.springframework.web.bind.annotation.PathVariable; | 17 | import org.springframework.web.bind.annotation.PathVariable; |
| 14 | import org.springframework.web.bind.annotation.RequestMapping; | 18 | import org.springframework.web.bind.annotation.RequestMapping; |
| 15 | import org.springframework.web.bind.annotation.RestController; | 19 | import org.springframework.web.bind.annotation.RestController; |
| 16 | 20 | ||
| 21 | +import java.text.ParseException; | ||
| 22 | +import java.util.Date; | ||
| 23 | +import java.util.HashSet; | ||
| 17 | import java.util.List; | 24 | import java.util.List; |
| 25 | +import java.util.Set; | ||
| 18 | 26 | ||
| 19 | @Slf4j | 27 | @Slf4j |
| 20 | @RestController | 28 | @RestController |
| @@ -25,10 +33,54 @@ public class SignReportController extends BaseController { | @@ -25,10 +33,54 @@ public class SignReportController extends BaseController { | ||
| 25 | private SignReportServer signReportServer; | 33 | private SignReportServer signReportServer; |
| 26 | 34 | ||
| 27 | @ApiOperation("签到数据统计(设备状态、检查人数、异常人数、酒驾人数);(dateStr格式为yyyy-MM-dd)") | 35 | @ApiOperation("签到数据统计(设备状态、检查人数、异常人数、酒驾人数);(dateStr格式为yyyy-MM-dd)") |
| 28 | - @ApiParam(name = "dateStr", value = "查询日期(格式为yyyy-MM-dd)", required = true,example="2024-12-11") | 36 | + @ApiParam(name = "dateStr", value = "查询日期(格式为yyyy-MM-dd)", required = true, example = "2024-12-11") |
| 29 | @GetMapping("/equipment/people/num/{dateStr}") | 37 | @GetMapping("/equipment/people/num/{dateStr}") |
| 30 | public ResponseResult<SignReportVo> equipmentAndPeopleNumStatistics(@PathVariable String dateStr) { | 38 | public ResponseResult<SignReportVo> equipmentAndPeopleNumStatistics(@PathVariable String dateStr) { |
| 31 | SignReportVo vo = signReportServer.querySignReportVo(dateStr); | 39 | SignReportVo vo = signReportServer.querySignReportVo(dateStr); |
| 32 | return ResponseResult.success(vo); | 40 | return ResponseResult.success(vo); |
| 33 | } | 41 | } |
| 42 | + | ||
| 43 | + | ||
| 44 | + @ApiOperation("签到每天数据统计(酒驾人数、早签人数、晚签人数、正常签到人数、日期(格式为yyyy-MM-dd));(dateStr格式为yyyy-MM,如2024-03)") | ||
| 45 | + @ApiParam(name = "dateStr", value = "查询日期(格式为yyyy-MM)", required = true, example = "2024-12") | ||
| 46 | + @GetMapping("/sign/report/group/{dateStr}") | ||
| 47 | + public ResponseResult<List<SignReportGroupByVo>> signReportGroupByDateStr(@PathVariable String dateStr) { | ||
| 48 | + List<SignReportGroupByVo> vos = null; | ||
| 49 | + try { | ||
| 50 | + vos = signReportServer.querySignReportGroupByDateStrVo(dateStr); | ||
| 51 | + return ResponseResult.success(vos); | ||
| 52 | + } catch (ParseException e) { | ||
| 53 | + log.error("获取每天签到数据异常", e); | ||
| 54 | + return ResponseResult.error(); | ||
| 55 | + } | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + @ApiOperation("签到每月数据统计(酒驾人数、早签人数、晚签人数、正常签到人数、日期(格式为yyyy-MM-dd));(startDateStr和endDateStr格式为yyyy-MM,如2024-03,没有时间请传0,传0后系统会获取当前时间作为endDateStr,向前推12个月作为startDateStr;startDateStr和endDateStr最多间隔1000个月)") | ||
| 59 | + @ApiParam(name = "dateStr", value = "查询日期(格式为yyyy-MM)", required = true, example = "2024-12") | ||
| 60 | + @GetMapping("/sign/report/group/month/{startDateStr}/{endDateStr}") | ||
| 61 | + public ResponseResult<List<SignReportGroupByVo>> signReportGroupMonthByDateStr(@PathVariable String startDateStr, @PathVariable String endDateStr) throws ParseException { | ||
| 62 | + if (StringUtils.equals("0", endDateStr)) { | ||
| 63 | + endDateStr = DateUtil.YYYY_MM_LINK.format(new Date()); | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + if (org.apache.commons.lang3.StringUtils.equals("0", startDateStr)) { | ||
| 67 | + startDateStr = DateUtil.YYYY_MM_LINK.format(DateUtils.addMonths(new Date(), -12)); | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + Set<String> dateStrs = new HashSet<>(); | ||
| 71 | + Date date = DateUtil.YYYY_MM_DD_LINK.parse(startDateStr + "-01"); | ||
| 72 | + for (int i = 0; i < 1000; i++) { | ||
| 73 | + String dateStr = DateUtil.YYYY_MM_LINK.format(DateUtils.addMonths(date, i)); | ||
| 74 | + dateStrs.add(dateStr); | ||
| 75 | + if (StringUtils.equals(dateStr, endDateStr)) { | ||
| 76 | + break; | ||
| 77 | + } | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + | ||
| 81 | + List<SignReportGroupByVo> vos = signReportServer.querySignReportGroupMonthByDateStr(dateStrs); | ||
| 82 | + return ResponseResult.success(vos); | ||
| 83 | + | ||
| 84 | + } | ||
| 85 | + | ||
| 34 | } | 86 | } |
Bsth-admin/src/main/java/com/ruoyi/controller/dss/DssCarInfoController.java
| @@ -37,7 +37,7 @@ public class DssCarInfoController { | @@ -37,7 +37,7 @@ public class DssCarInfoController { | ||
| 37 | 37 | ||
| 38 | @GetMapping(value = "/device/getPlates") | 38 | @GetMapping(value = "/device/getPlates") |
| 39 | @ApiOperation("模糊查询车辆车牌列表") | 39 | @ApiOperation("模糊查询车辆车牌列表") |
| 40 | - public ResponseResult<Set<String>> getPlates(@Valid @RequestBody GetPlatesDTO dto, BindingResult bindingResult) { | 40 | + public ResponseResult<Set<String>> getPlates(@Valid GetPlatesDTO dto, BindingResult bindingResult) { |
| 41 | if (bindingResult.hasErrors()) { | 41 | if (bindingResult.hasErrors()) { |
| 42 | return ResponseResult.error(bindingResult.getFieldError().getDefaultMessage()); | 42 | return ResponseResult.error(bindingResult.getFieldError().getDefaultMessage()); |
| 43 | } | 43 | } |
| @@ -49,21 +49,21 @@ public class DssCarInfoController { | @@ -49,21 +49,21 @@ public class DssCarInfoController { | ||
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | CarInfo carInfo = convertCarInfo(dto); | 51 | CarInfo carInfo = convertCarInfo(dto); |
| 52 | - if (StringUtils.isEmpty(carInfo.getPlateNum())) { | 52 | + if (StringUtils.isEmpty(carInfo.getNbbm())) { |
| 53 | return ResponseResult.success(); | 53 | return ResponseResult.success(); |
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | - List<CarInfo> carInfos = carInfoService.likePlateNumPlateNumTop30(carInfo); | 56 | + List<CarInfo> carInfos = carInfoService.listLikeNbbs(carInfo); |
| 57 | if (CollectionUtils.isEmpty(carInfos)) { | 57 | if (CollectionUtils.isEmpty(carInfos)) { |
| 58 | return ResponseResult.success(); | 58 | return ResponseResult.success(); |
| 59 | } | 59 | } |
| 60 | - Set<String> plateNums = carInfos.stream().map(CarInfo::getPlateNum).collect(Collectors.toSet()); | 60 | + Set<String> plateNums = carInfos.stream().map(CarInfo::getNbbm).collect(Collectors.toSet()); |
| 61 | return ResponseResult.success(plateNums); | 61 | return ResponseResult.success(plateNums); |
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | private CarInfo convertCarInfo(GetPlatesDTO dto) { | 64 | private CarInfo convertCarInfo(GetPlatesDTO dto) { |
| 65 | CarInfo carInfo = new CarInfo(); | 65 | CarInfo carInfo = new CarInfo(); |
| 66 | - carInfo.setPlateNum(dto.getPlate()); | 66 | + carInfo.setNbbm(dto.getPlate()); |
| 67 | 67 | ||
| 68 | return carInfo; | 68 | return carInfo; |
| 69 | } | 69 | } |
Bsth-admin/src/main/java/com/ruoyi/controller/dss/DssDriverController.java
| @@ -331,7 +331,7 @@ public class DssDriverController extends BaseController { | @@ -331,7 +331,7 @@ public class DssDriverController extends BaseController { | ||
| 331 | return ResponseResult.success(vos); | 331 | return ResponseResult.success(vos); |
| 332 | } | 332 | } |
| 333 | 333 | ||
| 334 | - @PostMapping(value = "Driver/UpLoadPicture") | 334 | + @PostMapping(value = "/Driver/UpLoadPicture") |
| 335 | @ApiOperation(value = "25.酒测照片上传") | 335 | @ApiOperation(value = "25.酒测照片上传") |
| 336 | public ResponseResult<Set<String>> UpLoadPicture(@Valid @RequestBody UpLoadPictureDTO dto, BindingResult bindingResult) { | 336 | public ResponseResult<Set<String>> UpLoadPicture(@Valid @RequestBody UpLoadPictureDTO dto, BindingResult bindingResult) { |
| 337 | if (bindingResult.hasErrors()) { | 337 | if (bindingResult.hasErrors()) { |
Bsth-admin/src/main/java/com/ruoyi/controller/dss/KeyBoxController.java
| @@ -125,7 +125,7 @@ public class KeyBoxController extends BaseController { | @@ -125,7 +125,7 @@ public class KeyBoxController extends BaseController { | ||
| 125 | if (Objects.isNull(scheduling)) { | 125 | if (Objects.isNull(scheduling)) { |
| 126 | return ResponseResult.error(TipEnum.TIP_3.getCode(), TipEnum.TIP_3.getMsg()); | 126 | return ResponseResult.error(TipEnum.TIP_3.getCode(), TipEnum.TIP_3.getMsg()); |
| 127 | } | 127 | } |
| 128 | - LinggangKeyWorkLocation workLocation = queryKeyWorkLocation1(scheduling, dto); | 128 | + LinggangKeyWorkLocation workLocation = queryKeyWorkLocation2(scheduling, dto); |
| 129 | 129 | ||
| 130 | CarInfo carInfo = queryCarInfo(scheduling.getNbbm()); | 130 | CarInfo carInfo = queryCarInfo(scheduling.getNbbm()); |
| 131 | if (Objects.isNull(carInfo)) { | 131 | if (Objects.isNull(carInfo)) { |
| @@ -684,6 +684,53 @@ public class KeyBoxController extends BaseController { | @@ -684,6 +684,53 @@ public class KeyBoxController extends BaseController { | ||
| 684 | // return linggangKeyWorkLocationService.getOne(workLocation); | 684 | // return linggangKeyWorkLocationService.getOne(workLocation); |
| 685 | } | 685 | } |
| 686 | 686 | ||
| 687 | + /*** | ||
| 688 | + * 根据排班时间和钥匙ID查询钥匙 | ||
| 689 | + * @author liujun | ||
| 690 | + * @date 2024/7/16 17:05 | ||
| 691 | + * @param dto | ||
| 692 | + * @return com.ruoyi.domain.key.location.LinggangKeyWorkLocation | ||
| 693 | + */ | ||
| 694 | + private LinggangKeyWorkLocation queryKeyWorkLocation2(LinggangScheduling scheduling, WorkPlateV2DTO dto) { | ||
| 695 | + CarInfo carInfo = carInfoService.getOneByNbbm(scheduling.getNbbm()); | ||
| 696 | + if (Objects.isNull(carInfo)) { | ||
| 697 | + return null; | ||
| 698 | + } | ||
| 699 | + | ||
| 700 | + List<KeyInfo> keyInfos = keyInfoService.listPlateNum(carInfo.getPlateNum()); | ||
| 701 | + if (CollectionUtils.isEmpty(keyInfos)) { | ||
| 702 | + return null; | ||
| 703 | + } | ||
| 704 | + | ||
| 705 | + LinggangKeyWorkLocation workLocation = new LinggangKeyWorkLocation(); | ||
| 706 | + workLocation.setKeyInfoId(keyInfos.get(0).getId()); | ||
| 707 | + workLocation.setMaxCreateDate(dto.getTime()); | ||
| 708 | + | ||
| 709 | + List<LinggangKeyWorkLocation> lists = linggangKeyWorkLocationService.getTenByKeyIdAndTime(workLocation); | ||
| 710 | + int size = CollectionUtils.size(lists); | ||
| 711 | + if (0 == size) { | ||
| 712 | + return null; | ||
| 713 | + } else if (1 == size) { | ||
| 714 | + LinggangKeyWorkLocation keyWorkLocation = lists.get(0); | ||
| 715 | + return Objects.equals(keyWorkLocation.getType1(), 1) ? keyWorkLocation : null; | ||
| 716 | + } | ||
| 717 | + LinggangKeyWorkLocation keyWorkLocation2 = null; | ||
| 718 | + for (int i = 0; i < size; i++) { | ||
| 719 | + if (Objects.equals(lists.get(i).getType1(), 1)) { | ||
| 720 | + return lists.get(i); | ||
| 721 | + } else if (Objects.equals(lists.get(i).getType1(), 0)) { | ||
| 722 | + //钥匙没有归还,返回空 | ||
| 723 | + return null; | ||
| 724 | + } | ||
| 725 | + } | ||
| 726 | + | ||
| 727 | + | ||
| 728 | + LinggangKeyWorkLocation keyWorkLocation = lists.get(0); | ||
| 729 | + return Objects.equals(keyWorkLocation.getType1(), 1) ? keyWorkLocation : null; | ||
| 730 | +// workLocation.setSchedulingId(scheduling.getId()); | ||
| 731 | +// return linggangKeyWorkLocationService.getOne(workLocation); | ||
| 732 | + } | ||
| 733 | + | ||
| 687 | 734 | ||
| 688 | private LinggangKeyWorkLocation queryKeyWorkLocation1(LinggangScheduling scheduling, WorkPlateV2DTO dto) { | 735 | private LinggangKeyWorkLocation queryKeyWorkLocation1(LinggangScheduling scheduling, WorkPlateV2DTO dto) { |
| 689 | CarInfo carInfo = carInfoService.getOneByNbbm(scheduling.getNbbm()); | 736 | CarInfo carInfo = carInfoService.getOneByNbbm(scheduling.getNbbm()); |
| @@ -784,20 +831,22 @@ public class KeyBoxController extends BaseController { | @@ -784,20 +831,22 @@ public class KeyBoxController extends BaseController { | ||
| 784 | private WorkPlateV2Vo convertWorkPlateV2Vo(LinggangScheduling scheduling, LinggangKeyWorkLocation workLocation, KeyInfo keyInfo, CarInfo carInfo, | 831 | private WorkPlateV2Vo convertWorkPlateV2Vo(LinggangScheduling scheduling, LinggangKeyWorkLocation workLocation, KeyInfo keyInfo, CarInfo carInfo, |
| 785 | Equipment equipment, LinggangVenueInfo venueInfo) { | 832 | Equipment equipment, LinggangVenueInfo venueInfo) { |
| 786 | WorkPlateV2Vo vo = new WorkPlateV2Vo(); | 833 | WorkPlateV2Vo vo = new WorkPlateV2Vo(); |
| 834 | + | ||
| 787 | if (Objects.nonNull(venueInfo)) { | 835 | if (Objects.nonNull(venueInfo)) { |
| 788 | vo.setYardId(Convert.toStr(venueInfo.getId())); | 836 | vo.setYardId(Convert.toStr(venueInfo.getId())); |
| 789 | vo.setYardName(venueInfo.getName()); | 837 | vo.setYardName(venueInfo.getName()); |
| 790 | } | 838 | } |
| 791 | 839 | ||
| 792 | - if (Objects.nonNull(equipment)) { | ||
| 793 | - vo.setDeviceName(equipment.getName()); | ||
| 794 | - vo.setDevice(equipment.getDeviceId()); | ||
| 795 | - } | 840 | + |
| 796 | // vo.setYardName(keyInfo.getY) | 841 | // vo.setYardName(keyInfo.getY) |
| 797 | 842 | ||
| 798 | if (Objects.nonNull(workLocation)) { | 843 | if (Objects.nonNull(workLocation)) { |
| 799 | vo.setDevice(workLocation.getDevice()); | 844 | vo.setDevice(workLocation.getDevice()); |
| 800 | vo.setCabinetNo(workLocation.getCabinetNo()); | 845 | vo.setCabinetNo(workLocation.getCabinetNo()); |
| 846 | + | ||
| 847 | + if (Objects.nonNull(equipment)) { | ||
| 848 | + vo.setDeviceName(equipment.getName()); | ||
| 849 | + } | ||
| 801 | } | 850 | } |
| 802 | vo.setPlateNum(carInfo.getNbbm()); | 851 | vo.setPlateNum(carInfo.getNbbm()); |
| 803 | 852 |
Bsth-admin/src/main/java/com/ruoyi/controller/dss/LansiAppLogController.java
0 → 100644
| 1 | +package com.ruoyi.controller.dss; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 4 | +import com.ruoyi.common.core.domain.ResponseResult; | ||
| 5 | +import com.ruoyi.domain.dss2.log.EquipmengLogDTO; | ||
| 6 | +import com.ruoyi.equipment.domain.Equipment; | ||
| 7 | +import com.ruoyi.equipment.service.IEquipmentService; | ||
| 8 | +import io.swagger.annotations.Api; | ||
| 9 | +import io.swagger.annotations.ApiOperation; | ||
| 10 | +import lombok.extern.slf4j.Slf4j; | ||
| 11 | +import org.apache.commons.collections4.CollectionUtils; | ||
| 12 | +import org.apache.commons.lang3.StringUtils; | ||
| 13 | +import org.slf4j.Logger; | ||
| 14 | +import org.slf4j.LoggerFactory; | ||
| 15 | +import org.springframework.web.bind.annotation.PostMapping; | ||
| 16 | +import org.springframework.web.bind.annotation.RequestBody; | ||
| 17 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 18 | +import org.springframework.web.bind.annotation.RestController; | ||
| 19 | + | ||
| 20 | +import java.util.HashMap; | ||
| 21 | +import java.util.List; | ||
| 22 | +import java.util.Map; | ||
| 23 | +import java.util.Objects; | ||
| 24 | + | ||
| 25 | +@RestController | ||
| 26 | +@Slf4j | ||
| 27 | +@RequestMapping("/dss") | ||
| 28 | +@Api(tags = "【蓝斯二期】蓝斯设备日志") | ||
| 29 | +public class LansiAppLogController extends BaseController { | ||
| 30 | + | ||
| 31 | + private final static Map<String, Logger> LOGGER_MAP = new HashMap<>(); | ||
| 32 | + | ||
| 33 | + public LansiAppLogController(IEquipmentService equipmentService) { | ||
| 34 | + List<Equipment> equipmentList = equipmentService.list(); | ||
| 35 | + int size = CollectionUtils.size(equipmentList); | ||
| 36 | + for (int i = 0; i < size; i++) { | ||
| 37 | + String name = StringUtils.join("lansi:", equipmentList.get(i).getDeviceId()); | ||
| 38 | + LOGGER_MAP.put(equipmentList.get(i).getDeviceId(), LoggerFactory.getLogger(name)); | ||
| 39 | + } | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + @ApiOperation(value = "设备日志") | ||
| 43 | + @PostMapping("/equipment/log") | ||
| 44 | + public ResponseResult<Boolean> createLog(@RequestBody EquipmengLogDTO equipmengLogDTO) { | ||
| 45 | + | ||
| 46 | + Logger logger = LOGGER_MAP.get(equipmengLogDTO.getDevice()); | ||
| 47 | + if (Objects.isNull(logger)) { | ||
| 48 | + String name = StringUtils.join("lansi:", equipmengLogDTO.getDevice()); | ||
| 49 | + logger = LoggerFactory.getLogger(name); | ||
| 50 | + LOGGER_MAP.put(equipmengLogDTO.getDevice(), logger); | ||
| 51 | + | ||
| 52 | + } | ||
| 53 | + logger.info("[{}]", equipmengLogDTO); | ||
| 54 | + return ResponseResult.success(Boolean.TRUE); | ||
| 55 | + } | ||
| 56 | +} |
Bsth-admin/src/main/java/com/ruoyi/domain/dss/app/entity/SignReportGroupByDay.java
0 → 100644
| 1 | +package com.ruoyi.domain.dss.app.entity; | ||
| 2 | + | ||
| 3 | + | ||
| 4 | +import lombok.Data; | ||
| 5 | +import lombok.EqualsAndHashCode; | ||
| 6 | +import lombok.experimental.Accessors; | ||
| 7 | + | ||
| 8 | +@Data | ||
| 9 | +@Accessors(chain = true) | ||
| 10 | +@EqualsAndHashCode(callSuper = false) | ||
| 11 | +public class SignReportGroupByDay { | ||
| 12 | + private String jobCode; | ||
| 13 | + private String dateStr; | ||
| 14 | +} |
Bsth-admin/src/main/java/com/ruoyi/domain/dss/app/vo/SignReportGroupByVo.java
0 → 100644
| 1 | +package com.ruoyi.domain.dss.app.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.annotations.ApiModel; | ||
| 4 | +import io.swagger.annotations.ApiModelProperty; | ||
| 5 | +import lombok.AllArgsConstructor; | ||
| 6 | +import lombok.Data; | ||
| 7 | +import lombok.NoArgsConstructor; | ||
| 8 | +import lombok.experimental.Accessors; | ||
| 9 | + | ||
| 10 | +@Data | ||
| 11 | +@NoArgsConstructor | ||
| 12 | +@AllArgsConstructor | ||
| 13 | +@ApiModel(value = "App对接签到每天汇总信息") | ||
| 14 | +@Accessors(chain = true) | ||
| 15 | +public class SignReportGroupByVo implements java.io.Serializable { | ||
| 16 | + @ApiModelProperty(value = "酒驾人数") | ||
| 17 | + private Integer alcoholNum=0; | ||
| 18 | + @ApiModelProperty(value = "早签人数") | ||
| 19 | + private Integer earlySigning=0; | ||
| 20 | + @ApiModelProperty(value = "晚签人数") | ||
| 21 | + private Integer lateSigning=0; | ||
| 22 | + @ApiModelProperty(value = "正常签到人数") | ||
| 23 | + private Integer normalSigning=0; | ||
| 24 | + | ||
| 25 | + @ApiModelProperty(value = "日期") | ||
| 26 | + private String dateStr; | ||
| 27 | + | ||
| 28 | +} |
Bsth-admin/src/main/java/com/ruoyi/domain/sign/in/summary/SignReportDaySummary.java
0 → 100644
| 1 | +package com.ruoyi.domain.sign.in.summary; | ||
| 2 | + | ||
| 3 | +import lombok.Data; | ||
| 4 | +import com.baomidou.mybatisplus.annotation.IdType; | ||
| 5 | +import com.baomidou.mybatisplus.annotation.TableField; | ||
| 6 | +import com.baomidou.mybatisplus.annotation.TableId; | ||
| 7 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
| 8 | +import org.apache.commons.lang3.StringUtils; | ||
| 9 | +import lombok.EqualsAndHashCode; | ||
| 10 | +import lombok.experimental.Accessors; | ||
| 11 | +import lombok.extern.slf4j.Slf4j; | ||
| 12 | +import lombok.NoArgsConstructor; | ||
| 13 | +import lombok.AllArgsConstructor; | ||
| 14 | +import com.ruoyi.common.annotation.Excel; | ||
| 15 | + | ||
| 16 | + | ||
| 17 | +@Data | ||
| 18 | +@Slf4j | ||
| 19 | +@NoArgsConstructor | ||
| 20 | +@AllArgsConstructor | ||
| 21 | +@Accessors(chain = true) | ||
| 22 | +@EqualsAndHashCode(callSuper = false) | ||
| 23 | +@TableName("sign_report_day_summary") | ||
| 24 | +/**签到汇总表 实体*/ public class SignReportDaySummary { | ||
| 25 | + /***ID*/ | ||
| 26 | + @TableId(value = "id", type = IdType.AUTO) | ||
| 27 | + @Excel(name = "ID") | ||
| 28 | + private Integer id; | ||
| 29 | + | ||
| 30 | + | ||
| 31 | + /***日期 格式为:yyyy-MM-dd*/ | ||
| 32 | + @Excel(name = "日期 格式为:yyyy-MM-dd") | ||
| 33 | + private String datestr; | ||
| 34 | + | ||
| 35 | + | ||
| 36 | + /***酒驾人数*/ | ||
| 37 | + @Excel(name = "酒驾人数") | ||
| 38 | + private Integer alcoholNum; | ||
| 39 | + | ||
| 40 | + | ||
| 41 | + /***早签人数*/ | ||
| 42 | + @Excel(name = "早签人数") | ||
| 43 | + private Integer earlySigning; | ||
| 44 | + | ||
| 45 | + | ||
| 46 | + /***晚签人数*/ | ||
| 47 | + @Excel(name = "晚签人数") | ||
| 48 | + private Integer lateSigning; | ||
| 49 | + | ||
| 50 | + | ||
| 51 | + /***正常签到人数*/ | ||
| 52 | + @Excel(name = "正常签到人数") | ||
| 53 | + private Integer normalSigning; | ||
| 54 | + | ||
| 55 | + | ||
| 56 | + @Override | ||
| 57 | + public String toString() { | ||
| 58 | + return com.alibaba.fastjson2.JSON.toJSONString(this); | ||
| 59 | + } | ||
| 60 | +} | ||
| 0 | \ No newline at end of file | 61 | \ No newline at end of file |
Bsth-admin/src/main/java/com/ruoyi/domain/sign/in/summary/dto/SignReportDaySummaryAddDTO.java
0 → 100644
| 1 | +package com.ruoyi.domain.sign.in.summary.dto; | ||
| 2 | + | ||
| 3 | +import io.swagger.annotations.ApiModel; | ||
| 4 | +import io.swagger.annotations.ApiModelProperty; | ||
| 5 | +import lombok.Data; | ||
| 6 | +import lombok.EqualsAndHashCode; | ||
| 7 | +import lombok.experimental.Accessors; | ||
| 8 | + | ||
| 9 | +@Data | ||
| 10 | +@ApiModel(value = "签到汇总表的添加DTO") | ||
| 11 | +@Accessors(chain = true) | ||
| 12 | +@EqualsAndHashCode(callSuper = false) | ||
| 13 | +/**签到汇总表 DTO*/ | ||
| 14 | +public class SignReportDaySummaryAddDTO implements java.io.Serializable { | ||
| 15 | + private static final long serialVersionUID = 975898577L; | ||
| 16 | + | ||
| 17 | + /***ID*/ | ||
| 18 | + @ApiModelProperty(value = "ID", example = "1") | ||
| 19 | + private Integer id; | ||
| 20 | + /***日期 格式为:yyyy-MM-dd*/ | ||
| 21 | + @ApiModelProperty(value = "日期 格式为:yyyy-MM-dd") | ||
| 22 | + private String datestr; | ||
| 23 | + /***酒驾人数*/ | ||
| 24 | + @ApiModelProperty(value = "酒驾人数", example = "1") | ||
| 25 | + private Integer alcoholNum; | ||
| 26 | + /***早签人数*/ | ||
| 27 | + @ApiModelProperty(value = "早签人数", example = "1") | ||
| 28 | + private Integer earlySigning; | ||
| 29 | + /***晚签人数*/ | ||
| 30 | + @ApiModelProperty(value = "晚签人数", example = "1") | ||
| 31 | + private Integer lateSigning; | ||
| 32 | + /***正常签到人数*/ | ||
| 33 | + @ApiModelProperty(value = "正常签到人数", example = "1") | ||
| 34 | + private Integer normalSigning; | ||
| 35 | + /***操作人员*/ | ||
| 36 | + @ApiModelProperty(value = "操作人员") | ||
| 37 | + private String operator; | ||
| 38 | + | ||
| 39 | + | ||
| 40 | + public void clearStrEmpty() { | ||
| 41 | + if (org.apache.commons.lang3.StringUtils.isEmpty(this.datestr)) { | ||
| 42 | + this.datestr = null; | ||
| 43 | + } | ||
| 44 | + if (org.apache.commons.lang3.StringUtils.isEmpty(this.operator)) { | ||
| 45 | + this.operator = null; | ||
| 46 | + } | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + | ||
| 50 | + @Override | ||
| 51 | + public String toString() { | ||
| 52 | + return com.alibaba.fastjson2.JSON.toJSONString(this); | ||
| 53 | + } | ||
| 54 | +} | ||
| 0 | \ No newline at end of file | 55 | \ No newline at end of file |
Bsth-admin/src/main/java/com/ruoyi/domain/sign/in/summary/dto/SignReportDaySummaryQueryDTO.java
0 → 100644
| 1 | +package com.ruoyi.domain.sign.in.summary.dto; | ||
| 2 | + | ||
| 3 | +import io.swagger.annotations.ApiModel; | ||
| 4 | +import io.swagger.annotations.ApiModelProperty; | ||
| 5 | +import lombok.Data; | ||
| 6 | +import lombok.EqualsAndHashCode; | ||
| 7 | +import lombok.experimental.Accessors; | ||
| 8 | + | ||
| 9 | +@Data | ||
| 10 | +@ApiModel(value = "签到汇总表的查询DTO") | ||
| 11 | +@Accessors(chain = true) | ||
| 12 | +@EqualsAndHashCode(callSuper = false) | ||
| 13 | +/**签到汇总表 DTO*/ | ||
| 14 | +public class SignReportDaySummaryQueryDTO implements java.io.Serializable { | ||
| 15 | + private static final long serialVersionUID = 339131034L; | ||
| 16 | + | ||
| 17 | + /***ID*/ | ||
| 18 | + @ApiModelProperty(value = "ID", example = "1") | ||
| 19 | + private Integer id; | ||
| 20 | + /***日期 格式为:yyyy-MM-dd*/ | ||
| 21 | + @ApiModelProperty(value = "日期 格式为:yyyy-MM-dd") | ||
| 22 | + private String datestr; | ||
| 23 | + /***酒驾人数*/ | ||
| 24 | + @ApiModelProperty(value = "酒驾人数", example = "1") | ||
| 25 | + private Integer alcoholNum; | ||
| 26 | + /***早签人数*/ | ||
| 27 | + @ApiModelProperty(value = "早签人数", example = "1") | ||
| 28 | + private Integer earlySigning; | ||
| 29 | + /***晚签人数*/ | ||
| 30 | + @ApiModelProperty(value = "晚签人数", example = "1") | ||
| 31 | + private Integer lateSigning; | ||
| 32 | + /***正常签到人数*/ | ||
| 33 | + @ApiModelProperty(value = "正常签到人数", example = "1") | ||
| 34 | + private Integer normalSigning; | ||
| 35 | + | ||
| 36 | + | ||
| 37 | + public void clearStrEmpty() { | ||
| 38 | + if (org.apache.commons.lang3.StringUtils.isEmpty(this.datestr)) { | ||
| 39 | + this.datestr = null; | ||
| 40 | + } | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + | ||
| 44 | + @Override | ||
| 45 | + public String toString() { | ||
| 46 | + return com.alibaba.fastjson2.JSON.toJSONString(this); | ||
| 47 | + } | ||
| 48 | +} | ||
| 0 | \ No newline at end of file | 49 | \ No newline at end of file |
Bsth-admin/src/main/java/com/ruoyi/domain/sign/in/summary/dto/SignReportDaySummaryUpdateDTO.java
0 → 100644
| 1 | +package com.ruoyi.domain.sign.in.summary.dto; | ||
| 2 | + | ||
| 3 | +import io.swagger.annotations.ApiModel; | ||
| 4 | +import io.swagger.annotations.ApiModelProperty; | ||
| 5 | +import lombok.Data; | ||
| 6 | +import lombok.EqualsAndHashCode; | ||
| 7 | +import lombok.experimental.Accessors; | ||
| 8 | + | ||
| 9 | +@Data | ||
| 10 | +@ApiModel(value = "签到汇总表的修改DTO") | ||
| 11 | +@Accessors(chain = true) | ||
| 12 | +@EqualsAndHashCode(callSuper = false) | ||
| 13 | +/**签到汇总表 DTO*/ | ||
| 14 | +public class SignReportDaySummaryUpdateDTO implements java.io.Serializable { | ||
| 15 | + private static final long serialVersionUID = 390073400L; | ||
| 16 | + | ||
| 17 | + /***ID*/ | ||
| 18 | + @ApiModelProperty(value = "ID", example = "1") | ||
| 19 | + private Integer id; | ||
| 20 | + /***日期 格式为:yyyy-MM-dd*/ | ||
| 21 | + @ApiModelProperty(value = "日期 格式为:yyyy-MM-dd") | ||
| 22 | + private String datestr; | ||
| 23 | + /***酒驾人数*/ | ||
| 24 | + @ApiModelProperty(value = "酒驾人数", example = "1") | ||
| 25 | + private Integer alcoholNum; | ||
| 26 | + /***早签人数*/ | ||
| 27 | + @ApiModelProperty(value = "早签人数", example = "1") | ||
| 28 | + private Integer earlySigning; | ||
| 29 | + /***晚签人数*/ | ||
| 30 | + @ApiModelProperty(value = "晚签人数", example = "1") | ||
| 31 | + private Integer lateSigning; | ||
| 32 | + /***正常签到人数*/ | ||
| 33 | + @ApiModelProperty(value = "正常签到人数", example = "1") | ||
| 34 | + private Integer normalSigning; | ||
| 35 | + /***操作人员*/ | ||
| 36 | + @ApiModelProperty(value = "操作人员") | ||
| 37 | + private String operator; | ||
| 38 | + | ||
| 39 | + | ||
| 40 | + public void clearStrEmpty() { | ||
| 41 | + if (org.apache.commons.lang3.StringUtils.isEmpty(this.datestr)) { | ||
| 42 | + this.datestr = null; | ||
| 43 | + } | ||
| 44 | + if (org.apache.commons.lang3.StringUtils.isEmpty(this.operator)) { | ||
| 45 | + this.operator = null; | ||
| 46 | + } | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + | ||
| 50 | + @Override | ||
| 51 | + public String toString() { | ||
| 52 | + return com.alibaba.fastjson2.JSON.toJSONString(this); | ||
| 53 | + } | ||
| 54 | +} | ||
| 0 | \ No newline at end of file | 55 | \ No newline at end of file |
Bsth-admin/src/main/java/com/ruoyi/domain/sign/in/summary/vo/SignReportDaySummaryVO.java
0 → 100644
| 1 | +package com.ruoyi.domain.sign.in.summary.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.annotations.ApiModel; | ||
| 4 | +import io.swagger.annotations.ApiModelProperty; | ||
| 5 | + | ||
| 6 | +import lombok.Data; | ||
| 7 | +import lombok.EqualsAndHashCode; | ||
| 8 | +import lombok.experimental.Accessors; | ||
| 9 | +import lombok.NoArgsConstructor; | ||
| 10 | +import lombok.AllArgsConstructor; | ||
| 11 | + | ||
| 12 | +@Data | ||
| 13 | +@NoArgsConstructor | ||
| 14 | +@AllArgsConstructor | ||
| 15 | +@ApiModel(value = "签到汇总表的VO") | ||
| 16 | +@Accessors(chain = true) | ||
| 17 | +@EqualsAndHashCode(callSuper = false) | ||
| 18 | +/**签到汇总表 VO*/ | ||
| 19 | +public class SignReportDaySummaryVO implements java.io.Serializable { | ||
| 20 | + private static final long serialVersionUID = 298123219L; | ||
| 21 | + | ||
| 22 | + /***ID*/ | ||
| 23 | + @ApiModelProperty(value = "ID", example = "1") | ||
| 24 | + private Integer id; | ||
| 25 | + /***日期 格式为:yyyy-MM-dd*/ | ||
| 26 | + @ApiModelProperty(value = "日期 格式为:yyyy-MM-dd") | ||
| 27 | + private String datestr; | ||
| 28 | + /***酒驾人数*/ | ||
| 29 | + @ApiModelProperty(value = "酒驾人数", example = "1") | ||
| 30 | + private Integer alcoholNum; | ||
| 31 | + /***早签人数*/ | ||
| 32 | + @ApiModelProperty(value = "早签人数", example = "1") | ||
| 33 | + private Integer earlySigning; | ||
| 34 | + /***晚签人数*/ | ||
| 35 | + @ApiModelProperty(value = "晚签人数", example = "1") | ||
| 36 | + private Integer lateSigning; | ||
| 37 | + /***正常签到人数*/ | ||
| 38 | + @ApiModelProperty(value = "正常签到人数", example = "1") | ||
| 39 | + private Integer normalSigning; | ||
| 40 | + | ||
| 41 | + | ||
| 42 | + @Override | ||
| 43 | + public String toString() { | ||
| 44 | + return com.alibaba.fastjson2.JSON.toJSONString(this); | ||
| 45 | + } | ||
| 46 | +} | ||
| 0 | \ No newline at end of file | 47 | \ No newline at end of file |
Bsth-admin/src/main/java/com/ruoyi/job/SignReportSummerJob.java
0 → 100644
| 1 | +package com.ruoyi.job; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.domain.dss.app.vo.SignReportGroupByVo; | ||
| 4 | +import com.ruoyi.domain.sign.in.summary.SignReportDaySummary; | ||
| 5 | +import com.ruoyi.service.SignReportServer; | ||
| 6 | +import com.ruoyi.service.sign.in.summary.SignReportDaySummaryService; | ||
| 7 | +import com.ruoyi.utils.DateUtil; | ||
| 8 | +import lombok.extern.slf4j.Slf4j; | ||
| 9 | +import org.apache.commons.collections4.CollectionUtils; | ||
| 10 | +import org.apache.commons.lang3.StringUtils; | ||
| 11 | +import org.apache.commons.lang3.time.DateUtils; | ||
| 12 | +import org.springframework.beans.BeanUtils; | ||
| 13 | +import org.springframework.beans.factory.InitializingBean; | ||
| 14 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 15 | +import org.springframework.stereotype.Component; | ||
| 16 | + | ||
| 17 | +import java.text.ParseException; | ||
| 18 | +import java.util.Date; | ||
| 19 | +import java.util.List; | ||
| 20 | +import java.util.Set; | ||
| 21 | +import java.util.stream.Collectors; | ||
| 22 | + | ||
| 23 | +@Slf4j | ||
| 24 | +@Component("SignReportSummerJob") | ||
| 25 | +public class SignReportSummerJob implements InitializingBean { | ||
| 26 | + @Autowired | ||
| 27 | + private SignReportServer signReportServer; | ||
| 28 | + @Autowired | ||
| 29 | + private SignReportDaySummaryService signReportDaySummaryService; | ||
| 30 | + | ||
| 31 | + public void calSignReportSummary() throws ParseException { | ||
| 32 | + Date date = new Date(); | ||
| 33 | + String dateStr = DateUtil.YYYY_MM_LINK.format(DateUtils.addDays(date, -1)); | ||
| 34 | + List<SignReportGroupByVo> signReportGroupByVos = signReportServer.querySignReportGroupByDateStrVo(dateStr); | ||
| 35 | + | ||
| 36 | + if (CollectionUtils.isNotEmpty(signReportGroupByVos)) { | ||
| 37 | + List<SignReportGroupByVo> voList = signReportGroupByVos.stream().filter(s -> StringUtils.equals(s.getDateStr(), dateStr)).collect(Collectors.toList()); | ||
| 38 | + | ||
| 39 | + if (CollectionUtils.isNotEmpty(voList)) { | ||
| 40 | + SignReportDaySummary summary = new SignReportDaySummary(); | ||
| 41 | + summary.setDatestr(dateStr); | ||
| 42 | + | ||
| 43 | + List<SignReportDaySummary> summaries = signReportDaySummaryService.list(summary); | ||
| 44 | + if (CollectionUtils.isNotEmpty(summaries)) { | ||
| 45 | + Set<Integer> ids = summaries.stream().map(SignReportDaySummary::getId).collect(Collectors.toSet()); | ||
| 46 | + signReportDaySummaryService.removeByIds(ids); | ||
| 47 | + } | ||
| 48 | + for (SignReportGroupByVo vo : voList) { | ||
| 49 | + BeanUtils.copyProperties(vo, summary); | ||
| 50 | + try { | ||
| 51 | + signReportDaySummaryService.save(summary); | ||
| 52 | + } catch (Exception e) { | ||
| 53 | + log.error("保存签到汇总异常:[{}]", dateStr, e); | ||
| 54 | + } | ||
| 55 | + } | ||
| 56 | + } | ||
| 57 | + } | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + @Override | ||
| 61 | + public void afterPropertiesSet() throws Exception { | ||
| 62 | + | ||
| 63 | + } | ||
| 64 | +} |
Bsth-admin/src/main/java/com/ruoyi/mapper/SignReportMappper.java
| 1 | package com.ruoyi.mapper; | 1 | package com.ruoyi.mapper; |
| 2 | 2 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| 4 | +import com.ruoyi.domain.dss.app.entity.SignReportGroupByDay; | ||
| 5 | +import com.ruoyi.domain.dss.app.vo.SignReportGroupByVo; | ||
| 4 | import com.ruoyi.domain.dss.app.vo.SignReportVo; | 6 | import com.ruoyi.domain.dss.app.vo.SignReportVo; |
| 5 | import org.apache.ibatis.annotations.Mapper; | 7 | import org.apache.ibatis.annotations.Mapper; |
| 6 | import org.apache.ibatis.annotations.Param; | 8 | import org.apache.ibatis.annotations.Param; |
| 7 | 9 | ||
| 10 | +import java.util.Collection; | ||
| 11 | +import java.util.List; | ||
| 12 | + | ||
| 8 | @Mapper | 13 | @Mapper |
| 9 | public interface SignReportMappper extends BaseMapper<SignReportVo> { | 14 | public interface SignReportMappper extends BaseMapper<SignReportVo> { |
| 10 | SignReportVo querySignReport(@Param("dateStr") String dateStr); | 15 | SignReportVo querySignReport(@Param("dateStr") String dateStr); |
| 16 | + | ||
| 17 | + List<SignReportGroupByDay> querySignReportGroupByDayOfError(@Param("dateStr") String dateStr, @Param("startVal") Integer startVal, @Param("endVal") Integer endVal,@Param("alcoholVal") Integer alcoholVal); | ||
| 18 | + | ||
| 19 | + List<SignReportGroupByDay> querySignReportAlcoholGroupByDay(@Param("dateStr") String dateStr); | ||
| 20 | + | ||
| 21 | + List<SignReportGroupByVo> querySignReportAlcoholMonthGroupByDay(@Param("dateStrs") Collection<String> dateStrs); | ||
| 11 | } | 22 | } |
Bsth-admin/src/main/java/com/ruoyi/mapper/sign/in/summary/SignReportDaySummaryMapper.java
0 → 100644
| 1 | +package com.ruoyi.mapper.sign.in.summary; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.domain.sign.in.summary.SignReportDaySummary; | ||
| 4 | +import org.apache.ibatis.annotations.Mapper; | ||
| 5 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
| 6 | + | ||
| 7 | + | ||
| 8 | +@Mapper | ||
| 9 | +/**签到汇总表 Mapper接口*/ | ||
| 10 | +public interface SignReportDaySummaryMapper extends BaseMapper<SignReportDaySummary> { | ||
| 11 | + /** | ||
| 12 | + * 插入有值的列 | ||
| 13 | + */ | ||
| 14 | + int insertSelective(SignReportDaySummary name); | ||
| 15 | +} | ||
| 0 | \ No newline at end of file | 16 | \ No newline at end of file |
Bsth-admin/src/main/java/com/ruoyi/service/SignReportServer.java
| 1 | package com.ruoyi.service; | 1 | package com.ruoyi.service; |
| 2 | 2 | ||
| 3 | +import com.ruoyi.domain.dss.app.vo.SignReportGroupByVo; | ||
| 3 | import com.ruoyi.domain.dss.app.vo.SignReportVo; | 4 | import com.ruoyi.domain.dss.app.vo.SignReportVo; |
| 4 | 5 | ||
| 6 | +import java.text.ParseException; | ||
| 7 | +import java.util.Collection; | ||
| 8 | +import java.util.List; | ||
| 9 | + | ||
| 5 | public interface SignReportServer { | 10 | public interface SignReportServer { |
| 6 | 11 | ||
| 7 | SignReportVo querySignReportVo(String dateStr); | 12 | SignReportVo querySignReportVo(String dateStr); |
| 13 | + | ||
| 14 | + List<SignReportGroupByVo> querySignReportGroupByDateStrVo(String dateStr) throws ParseException; | ||
| 15 | + | ||
| 16 | + List<SignReportGroupByVo> querySignReportGroupMonthByDateStr(Collection<String> dateStrs); | ||
| 8 | } | 17 | } |
Bsth-admin/src/main/java/com/ruoyi/service/impl/SignReportServerImpl.java
| 1 | package com.ruoyi.service.impl; | 1 | package com.ruoyi.service.impl; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.convert.Convert; | ||
| 4 | +import com.ruoyi.domain.dss.app.entity.SignReportGroupByDay; | ||
| 3 | import com.ruoyi.domain.dss.app.vo.SignEquipmentVo; | 5 | import com.ruoyi.domain.dss.app.vo.SignEquipmentVo; |
| 6 | +import com.ruoyi.domain.dss.app.vo.SignReportGroupByVo; | ||
| 4 | import com.ruoyi.domain.dss.app.vo.SignReportVo; | 7 | import com.ruoyi.domain.dss.app.vo.SignReportVo; |
| 5 | import com.ruoyi.equipment.domain.Equipment; | 8 | import com.ruoyi.equipment.domain.Equipment; |
| 6 | import com.ruoyi.equipment.service.IEquipmentService; | 9 | import com.ruoyi.equipment.service.IEquipmentService; |
| 7 | import com.ruoyi.mapper.SignReportMappper; | 10 | import com.ruoyi.mapper.SignReportMappper; |
| 8 | import com.ruoyi.service.SignReportServer; | 11 | import com.ruoyi.service.SignReportServer; |
| 12 | +import com.ruoyi.utils.DateUtil; | ||
| 13 | +import org.apache.commons.lang3.StringUtils; | ||
| 9 | import org.springframework.stereotype.Service; | 14 | import org.springframework.stereotype.Service; |
| 10 | import org.apache.commons.collections4.CollectionUtils; | 15 | import org.apache.commons.collections4.CollectionUtils; |
| 11 | import org.springframework.beans.factory.annotation.Autowired; | 16 | import org.springframework.beans.factory.annotation.Autowired; |
| 12 | 17 | ||
| 13 | -import java.util.List; | 18 | +import java.text.ParseException; |
| 19 | +import java.util.*; | ||
| 14 | import java.util.stream.Collectors; | 20 | import java.util.stream.Collectors; |
| 15 | 21 | ||
| 16 | @Service | 22 | @Service |
| @@ -36,4 +42,99 @@ public class SignReportServerImpl implements SignReportServer { | @@ -36,4 +42,99 @@ public class SignReportServerImpl implements SignReportServer { | ||
| 36 | } | 42 | } |
| 37 | return reportVo; | 43 | return reportVo; |
| 38 | } | 44 | } |
| 45 | + | ||
| 46 | + @Override | ||
| 47 | + public List<SignReportGroupByVo> querySignReportGroupByDateStrVo(String dateStr) throws ParseException { | ||
| 48 | + //酒驾 | ||
| 49 | + List<SignReportGroupByDay> alcoholList = signReportMappper.querySignReportAlcoholGroupByDay(dateStr); | ||
| 50 | + List<SignReportGroupByDay> lateSigningList = signReportMappper.querySignReportGroupByDayOfError(dateStr, 30, 39, 33); | ||
| 51 | + List<SignReportGroupByDay> earlySigningList = signReportMappper.querySignReportGroupByDayOfError(dateStr, 20, 29, 23); | ||
| 52 | + List<SignReportGroupByDay> normalSigningList = signReportMappper.querySignReportGroupByDayOfError(dateStr, 0, 0, 3); | ||
| 53 | + | ||
| 54 | + int alcoholSize = CollectionUtils.size(alcoholList); | ||
| 55 | + int lastSignSize = CollectionUtils.size(lateSigningList); | ||
| 56 | + int earlySignSize = CollectionUtils.size(earlySigningList); | ||
| 57 | + int normalSignSize = CollectionUtils.size(normalSigningList); | ||
| 58 | + | ||
| 59 | + if (earlySignSize > 0) { | ||
| 60 | + earlySigningList = earlySigningList.stream().filter(l -> !equals(l, alcoholList, alcoholSize)).collect(Collectors.toList()); | ||
| 61 | + earlySignSize = CollectionUtils.size(earlySigningList); | ||
| 62 | + } | ||
| 63 | + | ||
| 64 | + int esSize = earlySignSize; | ||
| 65 | + List<SignReportGroupByDay> esList = earlySigningList; | ||
| 66 | + | ||
| 67 | + if (lastSignSize > 0) { | ||
| 68 | + lateSigningList = lateSigningList.stream().filter(l -> !equals(l, alcoholList, alcoholSize)).collect(Collectors.toList()); | ||
| 69 | + lateSigningList = lateSigningList.stream().filter(l -> !equals(l, esList, esSize)).collect(Collectors.toList()); | ||
| 70 | + lastSignSize = CollectionUtils.size(lateSigningList); | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + int lsSize = lastSignSize; | ||
| 74 | + List<SignReportGroupByDay> lsList = lateSigningList; | ||
| 75 | + if (normalSignSize > 0) { | ||
| 76 | + normalSigningList = normalSigningList.stream().filter(l -> !equals(l, alcoholList, alcoholSize)).collect(Collectors.toList()); | ||
| 77 | + normalSigningList = normalSigningList.stream().filter(l -> !equals(l, esList, esSize)).collect(Collectors.toList()); | ||
| 78 | + normalSigningList = normalSigningList.stream().filter(l -> !equals(l, lsList, lsSize)).collect(Collectors.toList()); | ||
| 79 | + | ||
| 80 | + normalSignSize = CollectionUtils.size(normalSigningList); | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + String dateStr1 = dateStr + "-01"; | ||
| 84 | + Date date = DateUtil.YYYY_MM_DD_LINK.parse(dateStr1); | ||
| 85 | + Calendar cal = Calendar.getInstance(); | ||
| 86 | + cal.setTime(date); | ||
| 87 | + int last = cal.getActualMaximum(Calendar.DAY_OF_MONTH); | ||
| 88 | + List<SignReportGroupByVo> signReportGroupByVos = new ArrayList<>(); | ||
| 89 | + for (int i = 1; i <= last; i++) { | ||
| 90 | + if (i < 10) { | ||
| 91 | + dateStr1 = StringUtils.join(dateStr, "-0", i); | ||
| 92 | + } else { | ||
| 93 | + dateStr1 = StringUtils.join(dateStr, "-", i); | ||
| 94 | + } | ||
| 95 | + | ||
| 96 | + SignReportGroupByVo vo = new SignReportGroupByVo(); | ||
| 97 | + vo.setDateStr(dateStr1); | ||
| 98 | + | ||
| 99 | + | ||
| 100 | + if (esSize > 0) { | ||
| 101 | + long count = esList.stream().filter(el -> Objects.equals(el.getDateStr(), vo.getDateStr())).count(); | ||
| 102 | + vo.setEarlySigning(Convert.toInt(count)); | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + if (lsSize > 0) { | ||
| 106 | + long count = lsList.stream().filter(ls -> Objects.equals(ls.getDateStr(), vo.getDateStr())).count(); | ||
| 107 | + vo.setLateSigning(Convert.toInt(count)); | ||
| 108 | + } | ||
| 109 | + | ||
| 110 | + if (alcoholSize > 0) { | ||
| 111 | + long count = alcoholList.stream().filter(al -> Objects.equals(al.getDateStr(), vo.getDateStr())).count(); | ||
| 112 | + vo.setAlcoholNum(Convert.toInt(count)); | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + if (normalSignSize > 0) { | ||
| 116 | + long count = normalSigningList.stream().filter(nl -> Objects.equals(nl.getDateStr(), vo.getDateStr())).count(); | ||
| 117 | + vo.setNormalSigning(Convert.toInt(count)); | ||
| 118 | + } | ||
| 119 | + signReportGroupByVos.add(vo); | ||
| 120 | + | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | + return signReportGroupByVos; | ||
| 124 | + } | ||
| 125 | + | ||
| 126 | + @Override | ||
| 127 | + public List<SignReportGroupByVo> querySignReportGroupMonthByDateStr(Collection<String> dateStrs) { | ||
| 128 | + if (CollectionUtils.isEmpty(dateStrs)) { | ||
| 129 | + return Collections.emptyList(); | ||
| 130 | + } | ||
| 131 | + return signReportMappper.querySignReportAlcoholMonthGroupByDay(dateStrs); | ||
| 132 | + } | ||
| 133 | + | ||
| 134 | + private boolean equals(SignReportGroupByDay srd, List<SignReportGroupByDay> list, int listSize) { | ||
| 135 | + if (0 == listSize) { | ||
| 136 | + return true; | ||
| 137 | + } | ||
| 138 | + return list.stream().anyMatch(l -> (Objects.equals(srd.getJobCode(), l.getJobCode()) && Objects.equals(srd.getDateStr(), l.getDateStr()))); | ||
| 139 | + } | ||
| 39 | } | 140 | } |
Bsth-admin/src/main/java/com/ruoyi/service/sign/in/summary/SignReportDaySummaryService.java
0 → 100644
| 1 | +package com.ruoyi.service.sign.in.summary; | ||
| 2 | + | ||
| 3 | +import com.baomidou.mybatisplus.extension.service.IService; | ||
| 4 | +import com.baomidou.mybatisplus.core.metadata.IPage; | ||
| 5 | + | ||
| 6 | +import java.util.List; | ||
| 7 | + | ||
| 8 | +import com.ruoyi.domain.OrderEntity; | ||
| 9 | +import com.ruoyi.domain.sign.in.summary.SignReportDaySummary; | ||
| 10 | + | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * 签到汇总表 Service接口 | ||
| 14 | + */ | ||
| 15 | +public interface SignReportDaySummaryService extends IService<SignReportDaySummary> { | ||
| 16 | + /** | ||
| 17 | + * 分页查询 | ||
| 18 | + */ | ||
| 19 | + IPage<SignReportDaySummary> pageList(com.baomidou.mybatisplus.extension.plugins.pagination.Page<SignReportDaySummary> page, SignReportDaySummary entity, OrderEntity orderEntity); | ||
| 20 | + | ||
| 21 | + /** | ||
| 22 | + * 带条件查询 | ||
| 23 | + */ | ||
| 24 | + List<SignReportDaySummary> list(SignReportDaySummary entity); | ||
| 25 | + | ||
| 26 | + // List<SignReportDaySummary> listOfIds(java.util.Collection<java.lang.Integer> ids); | ||
| 27 | + // /*** | ||
| 28 | + // *用于页面选择 | ||
| 29 | + // */ | ||
| 30 | + // List<SignReportDaySummary> listOfSelect(SignReportDaySummary entity); | ||
| 31 | + | ||
| 32 | + /** | ||
| 33 | + * 条件查询只返回一条数据的方法 | ||
| 34 | + */ | ||
| 35 | + SignReportDaySummary getOne(SignReportDaySummary entity); | ||
| 36 | + | ||
| 37 | + Integer countId(SignReportDaySummary entity); | ||
| 38 | + | ||
| 39 | + /** | ||
| 40 | + * 插入有值的列 | ||
| 41 | + */ | ||
| 42 | + int insertSelective(SignReportDaySummary entity); | ||
| 43 | + | ||
| 44 | + /***插入数据*/ | ||
| 45 | + boolean insert(SignReportDaySummary entity); | ||
| 46 | + | ||
| 47 | + /** | ||
| 48 | + * 根据主键修改数据 | ||
| 49 | + */ | ||
| 50 | + boolean updateByPrimaryKey(SignReportDaySummary entity); | ||
| 51 | + | ||
| 52 | + boolean deleteById(Integer id); | ||
| 53 | +} | ||
| 0 | \ No newline at end of file | 54 | \ No newline at end of file |
Bsth-admin/src/main/java/com/ruoyi/service/sign/in/summary/impl/SignReportDaySummaryServiceImpl.java
0 → 100644
| 1 | +package com.ruoyi.service.sign.in.summary.impl; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.service.sign.in.summary.SignReportDaySummaryService; | ||
| 4 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 5 | +import org.springframework.stereotype.Service; | ||
| 6 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
| 7 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||
| 8 | +import com.baomidou.mybatisplus.core.metadata.IPage; | ||
| 9 | +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||
| 10 | + | ||
| 11 | +import com.github.pagehelper.PageHelper; | ||
| 12 | +import lombok.extern.slf4j.Slf4j; | ||
| 13 | + | ||
| 14 | +import java.util.Collections; | ||
| 15 | +import java.util.List; | ||
| 16 | + | ||
| 17 | +import com.ruoyi.domain.OrderEntity; | ||
| 18 | + | ||
| 19 | +import com.ruoyi.mapper.sign.in.summary.SignReportDaySummaryMapper; | ||
| 20 | +import com.ruoyi.domain.sign.in.summary.SignReportDaySummary; | ||
| 21 | + | ||
| 22 | +@Slf4j | ||
| 23 | +@Service | ||
| 24 | +/**签到汇总表 Service实现类*/ | ||
| 25 | +public class SignReportDaySummaryServiceImpl extends ServiceImpl<SignReportDaySummaryMapper, SignReportDaySummary> implements SignReportDaySummaryService { | ||
| 26 | + @Autowired | ||
| 27 | + private SignReportDaySummaryMapper signReportDaySummaryMapper; | ||
| 28 | + | ||
| 29 | + /** | ||
| 30 | + * 分页查询 | ||
| 31 | + */ | ||
| 32 | + @Override | ||
| 33 | + public IPage<SignReportDaySummary> pageList(Page<SignReportDaySummary> page, SignReportDaySummary entity, OrderEntity orderEntity) { | ||
| 34 | + LambdaQueryWrapper<SignReportDaySummary> countWrapper = new LambdaQueryWrapper<>(entity); | ||
| 35 | + countWrapper.select(SignReportDaySummary::getId); | ||
| 36 | + int count = count(countWrapper); | ||
| 37 | + | ||
| 38 | + List<SignReportDaySummary> lists = Collections.emptyList(); | ||
| 39 | + if (count > 0) { | ||
| 40 | + PageHelper.startPage((int) page.getCurrent(), (int) page.getSize(), false); | ||
| 41 | + LambdaQueryWrapper<SignReportDaySummary> selectWrapper = new LambdaQueryWrapper<>(entity); | ||
| 42 | + orderColumn(selectWrapper, orderEntity); | ||
| 43 | + lists = list(selectWrapper); | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + IPage<SignReportDaySummary> returnPage = new Page<SignReportDaySummary>(); | ||
| 47 | + returnPage.setRecords(lists); | ||
| 48 | + returnPage.setPages(count % page.getSize() == 0 ? count / page.getSize() : count / page.getSize() + 1); | ||
| 49 | + returnPage.setCurrent(page.getCurrent()); | ||
| 50 | + returnPage.setSize(page.getSize()); | ||
| 51 | + returnPage.setTotal(count); | ||
| 52 | + | ||
| 53 | + return returnPage; | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + @Override | ||
| 57 | + public List<SignReportDaySummary> list(SignReportDaySummary entity) { | ||
| 58 | + return list(new LambdaQueryWrapper<>(entity)); | ||
| 59 | + } | ||
| 60 | + // @Override | ||
| 61 | + // public List<SignReportDaySummary> listOfSelect(SignReportDaySummary entity) { | ||
| 62 | + // LambdaQueryWrapper<SignReportDaySummary> wrapper = new LambdaQueryWrapper<>(entity); | ||
| 63 | + // wrapper.select(SignReportDaySummary::, SignReportDaySummary::); | ||
| 64 | + // return list(wrapper); | ||
| 65 | + // } | ||
| 66 | + | ||
| 67 | + // @Override | ||
| 68 | + // public List<SignReportDaySummary> listOfIds(java.util.Collection<java.lang.Integer> ids) { | ||
| 69 | + // if (org.springframework.util.CollectionUtils.isEmpty(ids)) { | ||
| 70 | + // return java.util.Collections.emptyList(); | ||
| 71 | + // } | ||
| 72 | + // LambdaQueryWrapper<SignReportDaySummary> wrapper = new LambdaQueryWrapper<>(); | ||
| 73 | + // wrapper.select(SignReportDaySummary::getId,SignReportDaySummary::); | ||
| 74 | + // wrapper.in(SignReportDaySummary::getId, ids); | ||
| 75 | + // return list(wrapper); | ||
| 76 | + // } | ||
| 77 | + | ||
| 78 | + @Override | ||
| 79 | + public SignReportDaySummary getOne(SignReportDaySummary entity) { | ||
| 80 | + return getOne(new LambdaQueryWrapper<>(entity)); | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + @Override | ||
| 84 | + public Integer countId(SignReportDaySummary entity) { | ||
| 85 | + LambdaQueryWrapper<SignReportDaySummary> wrapper = new LambdaQueryWrapper<>(entity); | ||
| 86 | + wrapper.select(SignReportDaySummary::getId); | ||
| 87 | + return count(wrapper); | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + | ||
| 91 | + /** | ||
| 92 | + * 插入有值的列 | ||
| 93 | + */ | ||
| 94 | + @Override | ||
| 95 | + public int insertSelective(SignReportDaySummary entity) { | ||
| 96 | + return signReportDaySummaryMapper.insertSelective(entity); | ||
| 97 | + } | ||
| 98 | + | ||
| 99 | + /** | ||
| 100 | + * 插入数据 | ||
| 101 | + */ | ||
| 102 | + @Override | ||
| 103 | + public boolean insert(SignReportDaySummary entity) { | ||
| 104 | + return save(entity); | ||
| 105 | + } | ||
| 106 | + | ||
| 107 | + /** | ||
| 108 | + * 根据主键修改数据 | ||
| 109 | + */ | ||
| 110 | + @Override | ||
| 111 | + public boolean updateByPrimaryKey(SignReportDaySummary entity) { | ||
| 112 | + return updateById(entity); | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + /***根据主键删除数据*/ | ||
| 116 | + @Override | ||
| 117 | + public boolean deleteById(Integer id) { | ||
| 118 | + return removeById(id); | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + | ||
| 122 | + public static void orderColumn(LambdaQueryWrapper<SignReportDaySummary> wrapper, OrderEntity orderEntity) { | ||
| 123 | + if (org.apache.commons.lang3.StringUtils.equals("ascending", orderEntity.getOrder())) { | ||
| 124 | + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "id")) { | ||
| 125 | + wrapper.orderByAsc(SignReportDaySummary::getId); | ||
| 126 | + } | ||
| 127 | + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "datestr")) { | ||
| 128 | + wrapper.orderByAsc(SignReportDaySummary::getDatestr); | ||
| 129 | + } | ||
| 130 | + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "alcoholNum")) { | ||
| 131 | + wrapper.orderByAsc(SignReportDaySummary::getAlcoholNum); | ||
| 132 | + } | ||
| 133 | + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "earlySigning")) { | ||
| 134 | + wrapper.orderByAsc(SignReportDaySummary::getEarlySigning); | ||
| 135 | + } | ||
| 136 | + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "lateSigning")) { | ||
| 137 | + wrapper.orderByAsc(SignReportDaySummary::getLateSigning); | ||
| 138 | + } | ||
| 139 | + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "normalSigning")) { | ||
| 140 | + wrapper.orderByAsc(SignReportDaySummary::getNormalSigning); | ||
| 141 | + } | ||
| 142 | + } else if (org.apache.commons.lang3.StringUtils.equals("descending", orderEntity.getOrder())) { | ||
| 143 | + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "id")) { | ||
| 144 | + wrapper.orderByDesc(SignReportDaySummary::getId); | ||
| 145 | + } | ||
| 146 | + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "datestr")) { | ||
| 147 | + wrapper.orderByDesc(SignReportDaySummary::getDatestr); | ||
| 148 | + } | ||
| 149 | + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "alcoholNum")) { | ||
| 150 | + wrapper.orderByDesc(SignReportDaySummary::getAlcoholNum); | ||
| 151 | + } | ||
| 152 | + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "earlySigning")) { | ||
| 153 | + wrapper.orderByDesc(SignReportDaySummary::getEarlySigning); | ||
| 154 | + } | ||
| 155 | + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "lateSigning")) { | ||
| 156 | + wrapper.orderByDesc(SignReportDaySummary::getLateSigning); | ||
| 157 | + } | ||
| 158 | + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "normalSigning")) { | ||
| 159 | + wrapper.orderByDesc(SignReportDaySummary::getNormalSigning); | ||
| 160 | + } | ||
| 161 | + } else { | ||
| 162 | + wrapper.orderByDesc(SignReportDaySummary::getId); | ||
| 163 | + } | ||
| 164 | + } | ||
| 165 | +} | ||
| 0 | \ No newline at end of file | 166 | \ No newline at end of file |
Bsth-admin/src/main/java/com/ruoyi/utils/DateUtil.java
| @@ -19,6 +19,7 @@ public class DateUtil { | @@ -19,6 +19,7 @@ public class DateUtil { | ||
| 19 | 19 | ||
| 20 | public static FastDateFormat YYYY_MM_DD_LINK_HH_MM = FastDateFormat.getInstance("yyyy-MM-dd HH:mm"); | 20 | public static FastDateFormat YYYY_MM_DD_LINK_HH_MM = FastDateFormat.getInstance("yyyy-MM-dd HH:mm"); |
| 21 | public static FastDateFormat YYYY_MM_DD_LINK = FastDateFormat.getInstance("yyyy-MM-dd"); | 21 | public static FastDateFormat YYYY_MM_DD_LINK = FastDateFormat.getInstance("yyyy-MM-dd"); |
| 22 | + public static FastDateFormat YYYY_MM_LINK = FastDateFormat.getInstance("yyyy-MM"); | ||
| 22 | public static FastDateFormat YYYY_MM_DD = FastDateFormat.getInstance("yyyyMMdd"); | 23 | public static FastDateFormat YYYY_MM_DD = FastDateFormat.getInstance("yyyyMMdd"); |
| 23 | public static FastDateFormat HH_MM_ss = FastDateFormat.getInstance("HH:mm:ss"); | 24 | public static FastDateFormat HH_MM_ss = FastDateFormat.getInstance("HH:mm:ss"); |
| 24 | public static DateTimeFormatter YYYY_MM_DD_LINK_HH_MM_SS_Local_Date = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); | 25 | public static DateTimeFormatter YYYY_MM_DD_LINK_HH_MM_SS_Local_Date = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
Bsth-admin/src/main/resources/application-druid-dev.yml
| @@ -225,6 +225,4 @@ bsth: | @@ -225,6 +225,4 @@ bsth: | ||
| 225 | process: | 225 | process: |
| 226 | sign: | 226 | sign: |
| 227 | url: http://127.0.0.1:9103/commonOpenDataApi/sendAppAndSmsNotice | 227 | url: http://127.0.0.1:9103/commonOpenDataApi/sendAppAndSmsNotice |
| 228 | - skip: | ||
| 229 | - url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/test/**;/login/no/code;/actuator/health;/upload/image/**; | ||
| 230 | 228 |
Bsth-admin/src/main/resources/application-druid-devTest.yml
| @@ -12,7 +12,7 @@ spring: | @@ -12,7 +12,7 @@ spring: | ||
| 12 | # 占用端口号 | 12 | # 占用端口号 |
| 13 | port: 465 | 13 | port: 465 |
| 14 | nickname: 酒精测试异常通知 | 14 | nickname: 酒精测试异常通知 |
| 15 | - form: m18980249160@163.com | 15 | + form: m18980249160@163.com湘AT3259 |
| 16 | protocol: smtp | 16 | protocol: smtp |
| 17 | properties: | 17 | properties: |
| 18 | mail: | 18 | mail: |
| @@ -218,5 +218,3 @@ bsth: | @@ -218,5 +218,3 @@ bsth: | ||
| 218 | process: | 218 | process: |
| 219 | sign: | 219 | sign: |
| 220 | url: http://127.0.0.1:9103/commonOpenDataApi/sendAppAndSmsNotice | 220 | url: http://127.0.0.1:9103/commonOpenDataApi/sendAppAndSmsNotice |
| 221 | - skip: | ||
| 222 | - url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/login/no/code;/uploadPath/**;/doc.html |
Bsth-admin/src/main/resources/application-druid-prd.yml
| @@ -234,5 +234,4 @@ bsth: | @@ -234,5 +234,4 @@ bsth: | ||
| 234 | process: | 234 | process: |
| 235 | sign: | 235 | sign: |
| 236 | url: http://127.0.0.1:9103/commonOpenDataApi/sendAppAndSmsNotice | 236 | url: http://127.0.0.1:9103/commonOpenDataApi/sendAppAndSmsNotice |
| 237 | - skip: | ||
| 238 | - url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/login/no/code | 237 | + |
Bsth-admin/src/main/resources/application.yml
| @@ -173,4 +173,7 @@ management: | @@ -173,4 +173,7 @@ management: | ||
| 173 | endpoints: | 173 | endpoints: |
| 174 | web: | 174 | web: |
| 175 | exposure: | 175 | exposure: |
| 176 | - include: "*" | ||
| 177 | \ No newline at end of file | 176 | \ No newline at end of file |
| 177 | + include: "*" | ||
| 178 | +bsth: | ||
| 179 | + skip: | ||
| 180 | + url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/login/no/code;/app/sign/report/equipment/people/num/**;/app/sign/report/equipment/people/num/*;/report/error/list/report;/app/sign/report/sign/report/group/** | ||
| 178 | \ No newline at end of file | 181 | \ No newline at end of file |
Bsth-admin/src/main/resources/mapper/SignReportMapper.xml
| @@ -17,4 +17,26 @@ | @@ -17,4 +17,26 @@ | ||
| 17 | select si.jobCode from sign_in si where si.create_time like CONCAT(#{dateStr},'%') and si.ex_type =3 GROUP by si.jobCode | 17 | select si.jobCode from sign_in si where si.create_time like CONCAT(#{dateStr},'%') and si.ex_type =3 GROUP by si.jobCode |
| 18 | )t1)alcoholNum | 18 | )t1)alcoholNum |
| 19 | </select> | 19 | </select> |
| 20 | + | ||
| 21 | + <select id="querySignReportGroupByDayOfError" resultType="com.ruoyi.domain.dss.app.entity.SignReportGroupByDay"> | ||
| 22 | + select jobCode ,dateStr from( | ||
| 23 | + select jobCode,DATE_FORMAT(si.create_time,'%Y-%m-%d') dateStr from sign_in si where si.create_time like CONCAT(#{dateStr},'%') AND si.ex_type1 BETWEEN #{startVal} and #{endVal} and si.ex_type1<![CDATA[ <> ]]>#{alcoholVal} | ||
| 24 | + )t group by dateStr,jobCode | ||
| 25 | + </select> | ||
| 26 | + | ||
| 27 | + <select id="querySignReportAlcoholGroupByDay" resultType="com.ruoyi.domain.dss.app.entity.SignReportGroupByDay"> | ||
| 28 | + select jobCode ,dateStr from( | ||
| 29 | + select jobCode,DATE_FORMAT(si.create_time,'%Y-%m-%d') dateStr from sign_in si where si.create_time like CONCAT(#{dateStr},'%') AND si.ex_type=3 | ||
| 30 | + )t group by dateStr,jobCode | ||
| 31 | + </select> | ||
| 32 | + <select id="querySignReportAlcoholMonthGroupByDay" resultType="com.ruoyi.domain.dss.app.vo.SignReportGroupByVo"> | ||
| 33 | + select dateStr,sum(alcohol_Num) alcoholNum,sum(early_Signing) earlySigning,sum(late_Signing) lateSigning,sum(normal_Signing) normalSigning from( | ||
| 34 | + select DATE_FORMAT(srds.dateStr,'%Y-%m')dateStr ,alcohol_Num,early_Signing,late_Signing,normal_Signing from sign_report_day_summary srds | ||
| 35 | + <where> | ||
| 36 | + <foreach collection="dateStrs" item="value" separator=" or " open="(" close=")"> | ||
| 37 | + srds.dateStr like CONCAT(#{value},'%') | ||
| 38 | + </foreach> | ||
| 39 | + </where> | ||
| 40 | + )myt group by dateStr order by dateStr | ||
| 41 | + </select> | ||
| 20 | </mapper> | 42 | </mapper> |
| 21 | \ No newline at end of file | 43 | \ No newline at end of file |
Bsth-admin/src/main/resources/mapper/sign/in/summary/SignReportDaySummaryMapper.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||
| 3 | +<mapper namespace="com.ruoyi.mapper.sign.in.summary.SignReportDaySummaryMapper"> | ||
| 4 | + <resultMap id="BaseResultMap" type="com.ruoyi.domain.sign.in.summary.SignReportDaySummary"> | ||
| 5 | + <id column="id" jdbcType="INTEGER" property="id"/> | ||
| 6 | + <result column="dateStr" jdbcType="VARCHAR" property="datestr"/> | ||
| 7 | + <result column="alcohol_Num" jdbcType="INTEGER" property="alcoholNum"/> | ||
| 8 | + <result column="early_Signing" jdbcType="INTEGER" property="earlySigning"/> | ||
| 9 | + <result column="late_Signing" jdbcType="INTEGER" property="lateSigning"/> | ||
| 10 | + <result column="normal_Signing" jdbcType="INTEGER" property="normalSigning"/> | ||
| 11 | + </resultMap> | ||
| 12 | + | ||
| 13 | + <insert id="insertSelective" keyColumn="id" keyProperty="id" useGeneratedKeys="true" | ||
| 14 | + parameterType="com.ruoyi.domain.sign.in.summary.SignReportDaySummary"> | ||
| 15 | + INSERT INTO sign_report_day_summary | ||
| 16 | + <include refid="insertSelectiveColumn"></include> | ||
| 17 | + <include refid="insertSelectiveValue"></include> | ||
| 18 | + </insert> | ||
| 19 | + | ||
| 20 | + <sql id="columns"> | ||
| 21 | + id , dateStr , alcohol_Num , early_Signing , late_Signing , normal_Signing | ||
| 22 | + </sql> | ||
| 23 | + | ||
| 24 | + <sql id="insert_columns"> | ||
| 25 | + id , dateStr , alcohol_Num , early_Signing , late_Signing , normal_Signing | ||
| 26 | + </sql> | ||
| 27 | + | ||
| 28 | + <sql id="insert_values"> | ||
| 29 | + #{id}, #{datestr}, #{alcoholNum}, #{earlySigning}, #{lateSigning}, #{normalSigning} | ||
| 30 | + </sql> | ||
| 31 | + | ||
| 32 | + <sql id="insertSelectiveColumn"> | ||
| 33 | + <trim prefix="(" suffix=")" suffixOverrides=","> | ||
| 34 | + <if test="null!=id">id,</if> | ||
| 35 | + <if test="null!=datestr">dateStr,</if> | ||
| 36 | + <if test="null!=alcoholNum">alcohol_Num,</if> | ||
| 37 | + <if test="null!=earlySigning">early_Signing,</if> | ||
| 38 | + <if test="null!=lateSigning">late_Signing,</if> | ||
| 39 | + <if test="null!=normalSigning">normal_Signing,</if> | ||
| 40 | + </trim> | ||
| 41 | + </sql> | ||
| 42 | + | ||
| 43 | + <sql id="insertSelectiveValue"> | ||
| 44 | + <trim prefix="values (" suffix=")" suffixOverrides=","> | ||
| 45 | + <if test="null!=id">#{id,jdbcType=INTEGER},</if> | ||
| 46 | + <if test="null!=datestr">#{datestr,jdbcType=VARCHAR},</if> | ||
| 47 | + <if test="null!=alcoholNum">#{alcoholNum,jdbcType=INTEGER},</if> | ||
| 48 | + <if test="null!=earlySigning">#{earlySigning,jdbcType=INTEGER},</if> | ||
| 49 | + <if test="null!=lateSigning">#{lateSigning,jdbcType=INTEGER},</if> | ||
| 50 | + <if test="null!=normalSigning">#{normalSigning,jdbcType=INTEGER},</if> | ||
| 51 | + </trim> | ||
| 52 | + </sql> | ||
| 53 | + | ||
| 54 | + <sql id="updateByPrimaryKeySelectiveSql"> | ||
| 55 | + <set> | ||
| 56 | + <if test="null!=id">id = #{id,jdbcType=INTEGER},</if> | ||
| 57 | + <if test="null!=datestr">dateStr = #{datestr,jdbcType=VARCHAR},</if> | ||
| 58 | + <if test="null!=alcoholNum">alcohol_Num = #{alcoholNum,jdbcType=INTEGER},</if> | ||
| 59 | + <if test="null!=earlySigning">early_Signing = #{earlySigning,jdbcType=INTEGER},</if> | ||
| 60 | + <if test="null!=lateSigning">late_Signing = #{lateSigning,jdbcType=INTEGER},</if> | ||
| 61 | + <if test="null!=normalSigning">normal_Signing = #{normalSigning,jdbcType=INTEGER},</if> | ||
| 62 | + </set> | ||
| 63 | + </sql> | ||
| 64 | + | ||
| 65 | + <sql id="where"> | ||
| 66 | + <if test="null!=id">AND id = #{id,jdbcType=INTEGER},</if> | ||
| 67 | + <if test="null!=datestr">AND dateStr = #{datestr,jdbcType=VARCHAR},</if> | ||
| 68 | + <if test="null!=alcoholNum">AND alcohol_Num = #{alcoholNum,jdbcType=INTEGER},</if> | ||
| 69 | + <if test="null!=earlySigning">AND early_Signing = #{earlySigning,jdbcType=INTEGER},</if> | ||
| 70 | + <if test="null!=lateSigning">AND late_Signing = #{lateSigning,jdbcType=INTEGER},</if> | ||
| 71 | + <if test="null!=normalSigning">AND normal_Signing = #{normalSigning,jdbcType=INTEGER},</if> | ||
| 72 | + </sql> | ||
| 73 | +</mapper> | ||
| 0 | \ No newline at end of file | 74 | \ No newline at end of file |