From 7006d2e6e6c0281e4effc7fc70719af91b0c4982 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 30 九月 2024 12:23:46 +0800
Subject: [PATCH] 工单取图片优化
---
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 250 ++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 213 insertions(+), 37 deletions(-)
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index a946f0c..81e0698 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -1,5 +1,6 @@
package com.ycl.platform.service.impl;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -37,10 +38,8 @@
import com.ycl.utils.redis.RedisCache;
import com.ycl.utils.uuid.IdUtils;
import constant.Constants;
-import enumeration.general.NotifyTypeEnum;
-import enumeration.general.UrgentLevelEnum;
-import enumeration.general.WorkOrderDistributeWayEnum;
-import enumeration.general.WorkOrderStatusEnum;
+import constant.RedisConstant;
+import enumeration.general.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
@@ -50,12 +49,24 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
+import javax.imageio.ImageIO;
+import javax.swing.*;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
@@ -73,7 +84,6 @@
@RequiredArgsConstructor
public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService {
- private final WorkOrderMapper workOrderMapper;
private final YwPointService ywPointService;
private final WorkOrderAuditingRecordMapper workOrderAuditingRecordMapper;
private final WorkOrderAuditingRecordService workOrderAuditingRecordService;
@@ -82,10 +92,8 @@
private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper;
private final WorkOrderErrorTypeServiceImpl workOrderErrorTypeService;
private final SysConfigMapper configMapper;
- private final ServerConfig serverConfig;
private final ReportMapper reportMapper;
- private final SysDictDataMapper dictDataMapper;
-
+ private final WorkOrderCheckImgMapper workOrderCheckImgMapper;
@Value("${rtsp.server:http://127.0.0.1:7788}")
private String rtspServer;
@@ -143,7 +151,7 @@
continue;
} else {
for (String errorType : errorTypes) {
- if (! errorNameList.contains(errorType)) {
+ if (!errorNameList.contains(errorType)) {
// 閿欒绫诲瀷涓嶄竴鏍凤紝灏辨柊澧炰竴涓敊璇被鍨嬶紝骞朵笖閲嶇疆宸ュ崟鐘舵�佷负寰呭鐞�
WorkOrderErrorType workOrderErrorType = new WorkOrderErrorType();
workOrderErrorType.setWorkOrderNo(databaseWorkOrder.getWorkOrderNo());
@@ -201,13 +209,40 @@
SysConfig normal = configMapper.checkConfigKeyUnique("normal.wordkorder.alarm.time");
// 濡傛灉鍗冲皢鐢熸垚宸ュ崟锛屼絾鏄澶囧浗鏍囩爜鏌ヤ笉鍒扮偣浣嶏紝鍒欎笉娣诲姞锛�
List<WorkOrder> notAddList = new ArrayList<>();
+ //鏌edis浠婃棩宸ュ崟鏁伴噺
+ int workOrderNum = 0;
+ //UUID浣滀负value锛屼繚璇佷笂閿佺殑绾跨▼鑷繁瑙i攣
+ String requestId = IdUtils.fastSimpleUUID();
+ try {
+ for (int i = 0; i < 3; i++) {
+ boolean result = redisCache.acquireLock(RedisConstant.WORKORDER_NUM_LOCK, requestId, 10000);
+ if (result) {
+ //鏌ヤ粖鏃ュ伐鍗曢噺
+ Object redisNum = redisCache.getCacheObject(RedisConstant.WORKORDER_NUM);
+ workOrderNum = redisNum == null ? 0 : (Integer) redisNum;
+ break;
+ } else {
+ if (i == 2) {
+ log.error("閿佽鍗犵敤");
+ return Boolean.FALSE;
+ }
+ //绛夊緟涓�娈垫椂闂村悗缁х画
+ Thread.sleep(5000);
+ }
+ }
+ } catch (InterruptedException e) {
+ log.error("鑾峰彇閿佸紓甯�");
+ return Boolean.FALSE;
+ }
for (WorkOrder workOrder : waitAddList) {
YwPoint point = pointMapping.get(workOrder.getSerialNumber());
if (Objects.isNull(point)) {
notAddList.add(workOrder);
continue;
}
- workOrder.setWorkOrderNo(IdUtils.randomNO(now));
+ //鏁板瓧鍓嶉潰琛�0
+ workOrderNum++;
+ workOrder.setWorkOrderNo(IdUtils.workOrderNO(now, String.format("%05d", workOrderNum)));
if (Objects.nonNull(point.getUnitId())) {
workOrder.setUnitId(Math.toIntExact(point.getUnitId()));
}
@@ -230,9 +265,12 @@
if (CollectionUtils.isEmpty(waitAddList)) {
return Boolean.TRUE;
}
+ //璁板綍宸ュ崟鏁�
+ redisCache.setCacheObject(RedisConstant.WORKORDER_NUM, workOrderNum);
+ redisCache.releaseLock(RedisConstant.WORKORDER_NUM_LOCK, requestId);
// 淇濆瓨宸ュ崟鍜屾晠闅滅被鍨�
baseMapper.addMany(waitAddList);
- if (! CollectionUtils.isEmpty(waitAddErrorTypeList)) {
+ if (!CollectionUtils.isEmpty(waitAddErrorTypeList)) {
workOrderErrorTypeService.getBaseMapper().addMany(waitAddErrorTypeList);
}
// 濡傛灉鏄洿鎺ヤ笅鍙戯紝娣诲姞涓嬪彂璁板綍
@@ -258,22 +296,38 @@
/**
* 娣诲姞
+ *
* @param form
* @return
*/
@Override
public Result add(WorkOrderForm form) {
+ //鏌edis浠婃棩宸ュ崟鏁伴噺
+ int workOrderNum = 0;
+ //UUID浣滀负value锛屼繚璇佷笂閿佺殑绾跨▼鑷繁瑙i攣
+ String requestId = IdUtils.fastSimpleUUID();
+ boolean result = redisCache.acquireLock(RedisConstant.WORKORDER_NUM_LOCK, requestId, 10000);
+ if (result) {
+ //鏌ヤ粖鏃ュ伐鍗曢噺
+ Object redisNum = redisCache.getCacheObject(RedisConstant.WORKORDER_NUM);
+ workOrderNum = redisNum == null ? 0 : (Integer) redisNum;
+ workOrderNum++;
+ redisCache.setCacheObject(RedisConstant.WORKORDER_NUM, workOrderNum);
+ redisCache.releaseLock(RedisConstant.WORKORDER_NUM_LOCK, requestId);
+ } else {
+ return Result.error("宸ュ崟姝e湪娣诲姞锛岃绋嶅悗鍐嶈瘯");
+ }
WorkOrder entity = WorkOrderForm.getEntityByForm(form, null);
entity.setCreateTime(DateUtils.getNowDate());
entity.setStatus(WorkOrderStatusEnum.WAIT_DISTRIBUTE);
Date now = new Date();
entity.setCreateTime(now);
entity.setUpdateTime(now);
- entity.setWorkOrderNo(IdUtils.randomNO(now));
+ entity.setWorkOrderNo(IdUtils.workOrderNO(now, String.format("%05d", workOrderNum)));
entity.setErrorType(String.join(",", form.getErrorType()));
List<WorkOrderErrorType> workOrderErrorTypes = form.getErrorType().stream().map(errorType -> new WorkOrderErrorType(entity.getWorkOrderNo(), errorType)).toList();
workOrderErrorTypeService.getBaseMapper().insertWorkOrderErrorTypeList(workOrderErrorTypes);
- if(baseMapper.insert(entity) > 0) {
+ if (baseMapper.insert(entity) > 0) {
return Result.ok("娣诲姞鎴愬姛");
}
return Result.error("娣诲姞澶辫触");
@@ -281,6 +335,7 @@
/**
* 淇敼
+ *
* @param form
* @return
*/
@@ -402,7 +457,7 @@
List<WorkOrderYwConditionRecordVO> ywConditionList = workOrderYwConditionRecordMapper.selectYwConditionByYwId(workOrderNo);
ywConditionList.stream().forEach(item -> {
if (Objects.nonNull(item.getSysMsg()) && item.getSysMsg()) {
- item.setCommitUserName("绯荤粺娑堟伅");
+ item.setUnitName("绯荤粺娑堟伅");
}
});
return ywConditionList;
@@ -411,9 +466,9 @@
@Override
public List<WorkOrderAuditingRecord> selectYwAuditingListByYwId(String workOrderNo) {
return new LambdaQueryChainWrapper<>(workOrderAuditingRecordMapper)
- .eq(WorkOrderAuditingRecord::getWorkOrderNo, workOrderNo)
- .orderByAsc(WorkOrderAuditingRecord::getCreateTime)
- .list();
+ .eq(WorkOrderAuditingRecord::getWorkOrderNo, workOrderNo)
+ .orderByAsc(WorkOrderAuditingRecord::getCreateTime)
+ .list();
}
@Override
@@ -428,12 +483,13 @@
/**
* 鎵归噺鍒犻櫎
+ *
* @param ids
* @return
*/
@Override
public Result remove(List<String> ids) {
- if(baseMapper.deleteBatchIds(ids) > 0) {
+ if (baseMapper.deleteBatchIds(ids) > 0) {
return Result.ok("鍒犻櫎鎴愬姛");
}
return Result.error("鍒犻櫎澶辫触");
@@ -441,12 +497,13 @@
/**
* id鍒犻櫎
+ *
* @param id
* @return
*/
@Override
public Result removeById(String id) {
- if(baseMapper.deleteById(id) > 0) {
+ if (baseMapper.deleteById(id) > 0) {
return Result.ok("鍒犻櫎鎴愬姛");
}
return Result.error("鍒犻櫎澶辫触");
@@ -454,6 +511,7 @@
/**
* 鍒嗛〉鏌ヨ
+ *
* @param query
* @return
*/
@@ -461,8 +519,10 @@
public Result page(WorkOrderQuery query) {
IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class);
query.setUnitId(SecurityUtils.getUnitId());
+ query.setStart(DateUtils.getDayStart(query.getStart()));
+ query.setEnd(DateUtils.getDayEnd(query.getEnd()));
baseMapper.page(page, query);
- if (! CollectionUtils.isEmpty(page.getRecords())) {
+ if (!CollectionUtils.isEmpty(page.getRecords())) {
page.getRecords().stream().forEach(item -> {
if (StringUtils.hasText(item.getErrorType())) {
item.setErrorTypeList(List.of(item.getErrorType().split(",")));
@@ -493,14 +553,14 @@
data.setStart(now.minusHours(1));
break;
case LAST_TWO_HOUR:
- data.setStart(now.minusHours(2));
- break;
+ data.setStart(now.minusHours(2));
+ break;
case LAST_DAY:
data.setStart(now.minusDays(1));
break;
default:
break;
- }
+ }
if (Objects.isNull(data.getStart())) {
throw new RuntimeException("鏃犳硶鐢熸垚蹇�熶笅鍙戠殑鏃堕棿鑼冨洿锛岃閫夋嫨姝g‘鐨勫揩閫熶笅鍙戞柟寮�");
}
@@ -509,7 +569,7 @@
.select(WorkOrder::getSerialNumber, WorkOrder::getWorkOrderNo)
.eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
.eq(Objects.nonNull(data.getUnitId()), WorkOrder::getUnitId, data.getUnitId())
- .eq(WorkOrder::getErrorType, data.getErrorType())
+ .in(WorkOrder::getErrorType, data.getErrorType())
.between(WorkOrder::getCreateTime, data.getStart(), data.getEnd())
.orderByDesc(WorkOrder::getCreateTime)
.last("limit " + data.getFastNumLimit())
@@ -517,8 +577,12 @@
List<String> workOrderNoList = list.stream().map(WorkOrder::getWorkOrderNo).toList();
List<String> serialNumberList = list.stream().map(WorkOrder::getSerialNumber).toList();
- if (workOrderNoList.isEmpty()) { return Result.error("娌℃湁绗﹀悎鏉′欢鐨勫伐鍗�"); }
- if (!getDistributeLock()) { return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�"); }
+ if (workOrderNoList.isEmpty()) {
+ return Result.error("娌℃湁绗﹀悎鏉′欢鐨勫伐鍗�");
+ }
+ if (!getDistributeLock()) {
+ return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�");
+ }
try {
new LambdaUpdateChainWrapper<>(baseMapper)
.set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED)
@@ -539,7 +603,9 @@
@Transactional
public Result selectedIdsDistribute(DistributeWorkOrderQuery query) {
WorkOrderDistributeWayEnum distributeWayEnum = WorkOrderDistributeWayEnum.SELECTED_DISTRIBUTE;
- if (!getDistributeLock()) { return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�"); }
+ if (!getDistributeLock()) {
+ return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�");
+ }
try {
if (query.getWorkOrderNOList().isEmpty()) {
query.setWorkOrderNOList(new LambdaQueryChainWrapper<>(baseMapper)
@@ -552,7 +618,9 @@
.collect(Collectors.toList()));
distributeWayEnum = WorkOrderDistributeWayEnum.ALL_DISTRIBUTE;
}
- if (query.getWorkOrderNOList().isEmpty()) { return Result.error("娌℃湁宸ュ崟寰呬笅鍙�"); }
+ if (query.getWorkOrderNOList().isEmpty()) {
+ return Result.error("娌℃湁宸ュ崟寰呬笅鍙�");
+ }
new LambdaUpdateChainWrapper<>(baseMapper)
.set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED)
.in(WorkOrder::getWorkOrderNo, query.getWorkOrderNOList())
@@ -563,6 +631,7 @@
ywPointService.updateRecovery(serialNumberList, 1);
return Result.ok("鎴愬姛涓嬪彂" + query.getWorkOrderNOList().size() + "鏉″伐鍗�");
} catch (Exception e) {
+ System.out.println(e.getMessage());
return Result.error("鎿嶄綔澶辫触");
} finally {
distributeUnLock();
@@ -571,6 +640,7 @@
/**
* 鐢宠宸ュ崟涓嬪彂閿�
+ *
* @return 宸ュ崟涓嬪彂閿佺敵璇风粨鏋�
*/
public synchronized Boolean getDistributeLock() {
@@ -591,6 +661,7 @@
/**
* 娣诲姞宸ュ崟涓嬪彂璁板綍
+ *
* @param workOrderNoList 宸ュ崟id
*/
private void addDistributeRecord(List<String> workOrderNoList, WorkOrderDistributeWayEnum distributeWay) {
@@ -604,6 +675,7 @@
/**
* 鏍规嵁id鏌ユ壘
+ *
* @param id
* @return
*/
@@ -618,6 +690,7 @@
/**
* 鍒楄〃
+ *
* @return
*/
@Override
@@ -667,12 +740,79 @@
@Override
public List<WorkOrderRegionVO> workOrderRegion(DashboardQuery dashboardQuery) {
- return baseMapper.workOrderRegion(dashboardQuery);
+ //鍒濆鍖栨墍鏈夊尯鍩熸暟鎹�
+ List<WorkOrderRegionVO> vos = new ArrayList<>();
+ for (AreaDeptEnum value : AreaDeptEnum.values()) {
+ WorkOrderRegionVO vo = new WorkOrderRegionVO();
+ vo.setArea(value.getName());
+ vo.setDoneNum(0);
+ vo.setTodoNum(0);
+ vos.add(vo);
+ }
+ List<WorkOrderRegionVO> workOrderRegionVOS = baseMapper.workOrderRegion(dashboardQuery);
+ for (WorkOrderRegionVO vo : vos) {
+ for (WorkOrderRegionVO workOrder : workOrderRegionVOS) {
+ //璧嬪��
+ if (vo.getArea().equals(workOrder.getArea())) {
+ BeanUtils.copyProperties(workOrder, vo);
+ }
+ }
+ }
+ return vos;
}
@Override
- public String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) {
+ public synchronized String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) throws Exception {
+ String url = String.format(this.rtspServer + "/api/play/start/%s/%s", deviceId, channelId);
+ String result = HttpUtils.sendGet(url);
+ log.error("鎷垮埌鍙栨祦鍝嶅簲缁撴灉锛�" + result);
+ WVPResult wvpResult = JSON.parseObject(result, WVPResult.class);
+ String imgUrl = null;
+ if (0 == wvpResult.getCode()) {
+ log.error("璇锋眰鎴愬姛");
+ JSONObject data = (JSONObject) wvpResult.getData();
+ String rtspUrl = data.getString("rtsp"); // 鍙栧湴鍧�
+ log.error("鐩爣鍦板潃锛�" + rtspUrl);
+ FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(rtspUrl);
+ if (StringUtils.hasText(rtspUrl)) {
+ try {
+ grabber.setOption("rtsp_transport", "tcp"); // 浣跨敤tcp鐨勬柟寮忥紝涓嶇劧浼氫涪鍖呭緢涓ラ噸
+ grabber.setImageWidth(1920);
+ grabber.setImageHeight(1080);
+ grabber.setFrameRate(25);
+ grabber.start();
+
+ Frame frame = grabber.grabFrame();
+ if (frame != null) {
+ //杞崲鍥惧儚
+ Java2DFrameConverter converter = new Java2DFrameConverter();
+ BufferedImage srcImage = converter.getBufferedImage(frame);
+ if (srcImage != null) {
+ imgUrl = workOrderNo + "_" + IdUtils.fastSimpleUUID() + ".png";
+ // 鐢熸垚鍥剧墖璺緞
+ String imgPath = PlatformConfig.getProfile() + "/" + imgUrl;
+ System.out.println("鍥剧墖淇濆瓨鍦板潃锛�" + imgPath);
+ imgUrl = Constants.RESOURCE_PREFIX + "/" + imgUrl;
+ //鍒涘缓鏂囦欢
+ File file = new File(imgPath);
+ //杈撳嚭鏂囦欢
+ ImageIO.write(srcImage, "png", file);
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ grabber.stop(); // 鍋滄鎹曡幏
+ grabber.close(); // 閲婃斁璧勬簮
+ }
+ }
+ }
+ return imgUrl;
+ }
+
+ @Override
+ public void saveFrameImgByDevice (String deviceId, String channelId, String workOrderNo){
String url = String.format(this.rtspServer + "/api/play/start/%s/%s", deviceId, channelId);
String result = HttpUtils.sendGet(url);
WVPResult wvpResult = JSON.parseObject(result, WVPResult.class);
@@ -685,6 +825,8 @@
FFmpegFrameGrabber grabber = null;
try {
grabber = FFmpegFrameGrabber.createDefault(rtspUrl);
+ //璁剧疆10s瓒呮椂
+ grabber.setTimeout(10000);
grabber.start();
Frame frame = grabber.grabImage(); // 鐩存帴鎹曡幏涓�甯�
if (frame != null) {
@@ -721,17 +863,23 @@
System.out.println("璇锋眰澶辫触锛岄敊璇爜锛�" + wvpResult.getCode());
}
System.out.println("鍥剧墖URL锛�" + imgUrl);
- return imgUrl;
+ if (StringUtils.hasText(imgUrl)) {
+ WorkOrderCheckImg img = new WorkOrderCheckImg();
+ img.setWorkOrderNo(workOrderNo);
+ img.setImgUrl(imgUrl);
+ img.setCreateTime(new Date());
+ workOrderCheckImgMapper.insert(img);
+ }
}
@Override
- public List<DeviceInfoVO> hasErrorWorkOrderList(Date start, Date end) {
+ public List<DeviceInfoVO> hasErrorWorkOrderList (Date start, Date end){
List<DeviceInfoVO> list = baseMapper.hasErrorWorkOrderList(start, end);
return list;
}
@Override
- public void updateImgById(Integer workOrderId, String imgPath) {
+ public void updateImgById (Integer workOrderId, String imgPath){
new LambdaUpdateChainWrapper<>(baseMapper)
.eq(WorkOrder::getId, workOrderId)
.set(WorkOrder::getYwCheckResult, imgPath)
@@ -739,7 +887,7 @@
}
@Override
- public Result processImg(String workOrderNo) {
+ public Result processImg (String workOrderNo){
WorkOrder workOrder = new LambdaQueryChainWrapper<>(baseMapper)
.eq(WorkOrder::getWorkOrderNo, workOrderNo)
.one();
@@ -761,7 +909,7 @@
if (Objects.nonNull(beforeRecord)) {
if (now.before(beforeRecord.getBeginCreateTime())) {
process.setBeforeReportMsg("浜嬪墠鎶ュ宸插け鏁�");
- } else if (now.after(beforeRecord.getEndCreateTime())){
+ } else if (now.after(beforeRecord.getEndCreateTime())) {
process.setBeforeReportMsg("浜嬪墠鎶ュ鏈敓鏁�");
} else {
process.setBeforeReportMsg("宸蹭簨鍓嶆姤澶�");
@@ -770,7 +918,7 @@
if (Objects.nonNull(afterRecord)) {
if (now.before(afterRecord.getBeginCreateTime())) {
process.setAfterReportMsg("浜嬪悗鎶ュ宸插け鏁�");
- } else if (now.after(afterRecord.getEndCreateTime())){
+ } else if (now.after(afterRecord.getEndCreateTime())) {
process.setAfterReportMsg("浜嬪悗鎶ュ鏈敓鏁�");
} else {
process.setAfterReportMsg("宸蹭簨鍚庢姤澶�");
@@ -780,7 +928,7 @@
}
@Override
- public Result detailByNo(String workOrderNo) {
+ public Result detailByNo (String workOrderNo){
WorkOrderDetailVO workOrder = baseMapper.detailByNo(workOrderNo);
// 鏄惁鎶ュ
boolean hasReport = new LambdaQueryChainWrapper<>(reportMapper)
@@ -791,6 +939,34 @@
List<SysDictData> errorList = workOrderErrorTypeService.getBaseMapper().getErrorList(workOrder.getWorkOrderNo());
List<String> errList = errorList.stream().map(SysDictData::getDictLabel).collect(Collectors.toList());
workOrder.setErrorTypeList(errList);
+ // 妫�娴嬪浘鐗�
+ List<WorkOrderCheckImg> imgList = new LambdaQueryChainWrapper<>(workOrderCheckImgMapper)
+ .eq(WorkOrderCheckImg::getWorkOrderNo, workOrderNo)
+ .orderByDesc(WorkOrderCheckImg::getCreateTime)
+ .last("limit 20")
+ .list();
+ workOrder.setImgList(imgList);
return Result.ok().data(workOrder);
}
+
+ @Override
+ public List<WorkOrderVO> export (WorkOrderExportQuery query){
+ query.setUnitId(SecurityUtils.getUnitId());
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ if (query.getStart() == null) {
+ query.setStart(format.format(DateUtils.getDayStart(new Date())));
+ } else {
+ query.setStart(query.getStart() + " 00:00:00");
+ }
+ if (query.getEnd() == null) {
+ query.setStart(format.format(DateUtils.getDayEnd(new Date())));
+ } else {
+ query.setEnd(query.getEnd() + " 23:59:59");
+ }
+
+ List<WorkOrderVO> export = baseMapper.export(query);
+
+ System.out.println(export);
+ return export;
+ }
}
--
Gitblit v1.8.0