From e9af9f5cfeddbe5c0b33a3060b8ea6364c51e744 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期五, 15 十一月 2024 11:37:10 +0800 Subject: [PATCH] 白名单故障类型 --- ycl-server/src/main/java/com/ycl/platform/controller/YwThresholdController.java | 75 ++++ ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java | 65 ---- ycl-server/src/main/resources/mapper/zgyw/WorkOrderWhiteMapper.xml | 32 ++ ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java | 39 -- ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java | 309 +++++++++++++++++++- ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderWhiteMapper.java | 10 ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderForm.java | 1 ycl-pojo/src/main/java/com/ycl/platform/domain/excel/WorkOrderWhiteExport.java | 27 + ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 235 +++++---------- ycl-server/src/main/java/com/ycl/platform/service/IYwThresholdService.java | 48 +++ ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java | 2 ycl-pojo/src/main/java/com/ycl/platform/domain/excel/ErrorExport.java | 16 + ycl-common/src/main/java/enumeration/ErrorType.java | 20 + 13 files changed, 604 insertions(+), 275 deletions(-) diff --git a/ycl-common/src/main/java/enumeration/ErrorType.java b/ycl-common/src/main/java/enumeration/ErrorType.java index c8d83da..88fed87 100644 --- a/ycl-common/src/main/java/enumeration/ErrorType.java +++ b/ycl-common/src/main/java/enumeration/ErrorType.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.EnumValue; import lombok.Getter; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -71,14 +72,29 @@ } // 鏍规嵁value鑾峰彇desc + public static List<String> getDescriptionList() { + List<String> list = new ArrayList<>(); + for (ErrorType errorType : ErrorType.values()) { + list.add(errorType.getDesc()); + } + return list; + } + // 鏍规嵁value鑾峰彇desc public static String getDescriptionByValue(String value) { for (ErrorType errorType : ErrorType.values()) { if (errorType.getValue().equals(value)) { return errorType.getDesc(); } } - // 濡傛灉娌℃湁鎵惧埌鍖归厤鐨剉alue锛岃繑鍥瀗ull鎴栬�呮姏鍑轰竴涓紓甯� - // 杩欓噷杩斿洖null + return null; + } + // 鏍规嵁desc鑾峰彇value + public static String getValueByDescription(String desc) { + for (ErrorType errorType : ErrorType.values()) { + if (errorType.getDesc().equals(desc)) { + return errorType.getValue(); + } + } return null; } } diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/ErrorExport.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/ErrorExport.java new file mode 100644 index 0000000..ce999b2 --- /dev/null +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/ErrorExport.java @@ -0,0 +1,16 @@ +package com.ycl.platform.domain.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +/** + * 鏁呴殰绫诲瀷椤� + */ +@Data +public class ErrorExport { + @ColumnWidth(30) + @ExcelProperty("鏁呴殰绫诲瀷") + private String error; + +} diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/WorkOrderWhiteExport.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/WorkOrderWhiteExport.java new file mode 100644 index 0000000..f2a6e8c --- /dev/null +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/WorkOrderWhiteExport.java @@ -0,0 +1,27 @@ +package com.ycl.platform.domain.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +/** + * 鐧藉悕鍗曞鍏ュ鍑� + */ +@Data +public class WorkOrderWhiteExport { + @ColumnWidth(30) + @ExcelProperty("鍥芥爣鐮�(涓嶅彲淇敼)") + private String serialNumber; + + @ColumnWidth(50) + @ExcelProperty("鐐逛綅鍚嶇О(涓嶅彲淇敼)") + private String pointName; + + @ColumnWidth(50) + @ExcelProperty("鏁呴殰绫诲瀷(鍙慨鏀�)") + private String errorType; + + @ColumnWidth(50) + @ExcelProperty("澶囨敞(鍙慨鏀�)") + private String remark; +} diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderForm.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderForm.java index ac0ff06..254b036 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderForm.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderForm.java @@ -73,6 +73,7 @@ entity = new WorkOrder(); } BeanUtils.copyProperties(form, entity); + entity.setErrorTypeList(form.getErrorType()); return entity; } diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java b/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java index 81d8c57..0be073f 100644 --- a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java +++ b/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java @@ -4,10 +4,7 @@ import com.ycl.platform.domain.entity.WorkOrderAuditingRecord; import com.ycl.platform.domain.entity.WorkOrderWhite; import com.ycl.platform.domain.form.*; -import com.ycl.platform.domain.query.DistributeWorkOrderQuery; -import com.ycl.platform.domain.query.WorkOrderExportQuery; -import com.ycl.platform.domain.query.WorkOrderQuery; -import com.ycl.platform.domain.query.WorkOrderWhiteQuery; +import com.ycl.platform.domain.query.*; import com.ycl.platform.domain.vo.DistributeWorkOrderVO; import com.ycl.platform.domain.vo.WorkOrderVO; import com.ycl.platform.domain.vo.WorkOrderYwConditionRecordVO; @@ -28,6 +25,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.List; /** @@ -198,64 +196,6 @@ List<WorkOrderAuditingRecord> data = workOrderService.selectYwAuditingListByYwId(workOrderNo); return Result.ok().data(data); } - - /** - * 宸ュ崟鐧藉悕鍗曞垪琛� - */ - @PostMapping("/white/page") - @ApiOperation(value = "宸ュ崟鐧藉悕鍗曞垪琛�", notes = "宸ュ崟鐧藉悕鍗曞垪琛�") - public Result whitePage(@RequestBody WorkOrderWhiteQuery workOrderWhiteQuery) - { - return workOrderService.selectWorkOrderWhiteList(workOrderWhiteQuery); - } - - /** - * 宸ュ崟鐧藉悕鍗曡鎯� - */ - @GetMapping("/white/{id}") - @ApiOperation(value = "宸ュ崟鐧藉悕鍗曡鎯�", notes = "宸ュ崟鐧藉悕鍗曡鎯�") - public Result whiteDetail(@PathVariable Integer id) - { - return workOrderService.selectWorkOrderWhiteDetail(id); - } - /** - * 娣诲姞宸ュ崟鐧藉悕鍗� - * - * @param workOrderWhite 鐧借壊宸ュ崟 - * @return {@link Result } - * @author - */ - @PostMapping("/white/add") - @ApiOperation(value = "鏂板宸ュ崟鐧藉悕鍗�", notes = "鏂板宸ュ崟鐧藉悕鍗�") - public Result addWorkOrderWhite(@RequestBody WorkOrderWhite workOrderWhite) { - return workOrderService.addWorkOrderWhite(workOrderWhite); - } - - /** - * 淇敼宸ュ崟鐧藉悕鍗� - * - * @param workOrderWhite 鐧借壊宸ュ崟 - * @return {@link Result } - * @author - */ - @PostMapping("/white/update") - @ApiOperation(value = "淇敼宸ュ崟鐧藉悕鍗�", notes = "淇敼宸ュ崟鐧藉悕鍗�") - public Result updateWorkOrderWhite(@RequestBody WorkOrderWhite workOrderWhite) { - return workOrderService.updateWorkOrderWhite(workOrderWhite); - } - /** - * 鎵归噺鍒犻櫎宸ュ崟鐧藉悕鍗� - * - * @param ids ids - * @return {@link Result } - * @author - */ - @DeleteMapping("/white/batchDelete") - @ApiOperation(value = "鎵归噺鍒犻櫎宸ュ崟鐧藉悕鍗�", notes = "鎵归噺鍒犻櫎宸ュ崟鐧藉悕鍗�") - public Result batchDeleteWorkOrderWhite(@RequestBody List<String> ids) { - return workOrderService.batchDeleteWorkOrderWhite(ids); - } - /** * 鎵归噺鍒犻櫎宸ュ崟 * @@ -268,4 +208,5 @@ public Result batchDeleteWorkOrder(@RequestBody List<String> workOrderNos) { return workOrderService.batchDeleteWorkOrder(workOrderNos); } + } diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/YwThresholdController.java b/ycl-server/src/main/java/com/ycl/platform/controller/YwThresholdController.java index a4de4ff..c1b2daa 100644 --- a/ycl-server/src/main/java/com/ycl/platform/controller/YwThresholdController.java +++ b/ycl-server/src/main/java/com/ycl/platform/controller/YwThresholdController.java @@ -1,7 +1,9 @@ package com.ycl.platform.controller; import annotation.Log; +import com.ycl.platform.domain.entity.WorkOrderWhite; import com.ycl.platform.domain.entity.YwThreshold; +import com.ycl.platform.domain.query.WorkOrderWhiteQuery; import com.ycl.platform.service.IYwThresholdService; import com.ycl.system.AjaxResult; import com.ycl.system.Result; @@ -91,17 +93,84 @@ { return toAjax(ywThresholdService.deleteYwThresholdByIds(ids)); } + /** + * 宸ュ崟鐧藉悕鍗曞垪琛� + */ + @PostMapping("/white/page") + @ApiOperation(value = "宸ュ崟鐧藉悕鍗曞垪琛�", notes = "宸ュ崟鐧藉悕鍗曞垪琛�") + public Result whitePage(@RequestBody WorkOrderWhiteQuery workOrderWhiteQuery) + { + return ywThresholdService.selectWorkOrderWhiteList(workOrderWhiteQuery); + } /** - * 瀵煎叆鏁版嵁 + * 宸ュ崟鐧藉悕鍗曡鎯� + */ + @GetMapping("/white/{id}") + @ApiOperation(value = "宸ュ崟鐧藉悕鍗曡鎯�", notes = "宸ュ崟鐧藉悕鍗曡鎯�") + public Result whiteDetail(@PathVariable Integer id) + { + return ywThresholdService.selectWorkOrderWhiteDetail(id); + } + /** + * 娣诲姞宸ュ崟鐧藉悕鍗� + * + * @param workOrderWhite 鐧借壊宸ュ崟 + * @return {@link Result } + * @author + */ + @PostMapping("/white/add") + @ApiOperation(value = "鏂板宸ュ崟鐧藉悕鍗�", notes = "鏂板宸ュ崟鐧藉悕鍗�") + public Result addWorkOrderWhite(@RequestBody WorkOrderWhite workOrderWhite) { + return ywThresholdService.addWorkOrderWhite(workOrderWhite); + } + + /** + * 淇敼宸ュ崟鐧藉悕鍗� + * + * @param workOrderWhite 鐧借壊宸ュ崟 + * @return {@link Result } + * @author + */ + @PostMapping("/white/update") + @ApiOperation(value = "淇敼宸ュ崟鐧藉悕鍗�", notes = "淇敼宸ュ崟鐧藉悕鍗�") + public Result updateWorkOrderWhite(@RequestBody WorkOrderWhite workOrderWhite) { + return ywThresholdService.updateWorkOrderWhite(workOrderWhite); + } + /** + * 鎵归噺鍒犻櫎宸ュ崟鐧藉悕鍗� + * + * @param ids ids + * @return {@link Result } + * @author + */ + @DeleteMapping("/white/batchDelete") + @ApiOperation(value = "鎵归噺鍒犻櫎宸ュ崟鐧藉悕鍗�", notes = "鎵归噺鍒犻櫎宸ュ崟鐧藉悕鍗�") + public Result batchDeleteWorkOrderWhite(@RequestBody List<String> ids) { + return ywThresholdService.batchDeleteWorkOrderWhite(ids); + } + + /** + * 瀵煎嚭鐧藉悕鍗� + * @param response + * @throws IOException + */ + @GetMapping("/white/export") + @ApiOperation(value = "瀵煎嚭鏁版嵁", notes = "瀵煎嚭鏁版嵁") + public void whiteExport(HttpServletResponse response) throws IOException { + ywThresholdService.whiteExport(response); + } + /** + * 瀵煎叆鐧藉悕鍗� * * @param file 鏂囦欢 * @return {@link Result } * @author */ @PostMapping("/import") - @ApiOperation(value = "瀵煎叆鏁版嵁", notes = "瀵煎叆鏁版嵁") + @ApiOperation(value = "瀵煎叆鐧藉悕鍗�", notes = "瀵煎叆鐧藉悕鍗�") public Result importData(MultipartFile file) throws IOException, ParseException, ExecutionException, InterruptedException { - return ywThresholdService.importData(file); + return ywThresholdService.importWhite(file); } + } diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java index 917c371..ddcdfab 100644 --- a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java +++ b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.platform.domain.entity.WorkOrder; +import com.ycl.platform.domain.excel.WorkOrderWhiteExport; import com.ycl.platform.domain.form.WorkOrderBatchAuditingForm; import com.ycl.platform.domain.query.*; import com.ycl.platform.domain.vo.DeviceInfoVO; @@ -113,4 +114,5 @@ List<WorkOrder> selectByNos(@Param("workOrderNos") List<String> workOrderNos); + } diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderWhiteMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderWhiteMapper.java index 3f02aaf..69b9b15 100644 --- a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderWhiteMapper.java +++ b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderWhiteMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.platform.domain.entity.WorkOrderWhite; +import com.ycl.platform.domain.excel.WorkOrderWhiteExport; import com.ycl.platform.domain.query.WorkOrderWhiteQuery; import org.apache.ibatis.annotations.Param; @@ -71,4 +72,13 @@ void updateBySerialNumber(WorkOrderWhite white); WorkOrderWhite getById(Integer id); + + List<WorkOrderWhiteExport> whiteExport(); + + void updateBatch(@Param("whiteList")List<WorkOrderWhite> dataList); + + void insertBatch(@Param("whiteList")List<WorkOrderWhite> addList); + + void deleteAll(); + } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/IYwThresholdService.java b/ycl-server/src/main/java/com/ycl/platform/service/IYwThresholdService.java index f4605f7..6eaa5f7 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/IYwThresholdService.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/IYwThresholdService.java @@ -1,14 +1,21 @@ package com.ycl.platform.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.ycl.platform.domain.entity.WorkOrderWhite; import com.ycl.platform.domain.entity.YwThreshold; +import com.ycl.platform.domain.excel.PointExport; +import com.ycl.platform.domain.query.WorkOrderWhiteQuery; import com.ycl.platform.domain.result.HK.FaceDeviceInspectionResult; import com.ycl.platform.domain.result.HK.VehicleDeviceInspectionResult; import com.ycl.system.Result; +import com.ycl.system.page.TableDataInfo; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.List; import java.util.Map; +import java.util.concurrent.ExecutionException; /** * 杩愮淮闃堝�糞ervice鎺ュ彛 @@ -86,12 +93,47 @@ */ public void errorTypeCheckUY(List list); + /** - * 瀵煎叆鏁版嵁 + * 宸ュ崟鐧藉悕鍗曞垪琛� * - * @param file 鏂囦欢 + * @param workOrderWhiteQuery 鐧借壊宸ュ崟鏌ヨ + * @return {@link TableDataInfo } + * @author + */ + Result selectWorkOrderWhiteList(WorkOrderWhiteQuery workOrderWhiteQuery); + + /** + * 娣诲姞宸ュ崟鐧藉悕鍗� + * + * @param workOrderWhite 鐧借壊宸ュ崟 * @return {@link Result } * @author */ - Result importData(MultipartFile file); + Result addWorkOrderWhite(WorkOrderWhite workOrderWhite); + + /** + * 鎵归噺鍒犻櫎宸ュ崟鐧藉悕鍗� + * + * @param ids ids + * @author + */ + Result batchDeleteWorkOrderWhite(List<String> ids); + + + Result selectWorkOrderWhiteDetail(Integer id); + + Result updateWorkOrderWhite(WorkOrderWhite workOrderWhite); + /** + * 瀵煎嚭鏁版嵁 + * + * @param response + */ + void whiteExport(HttpServletResponse response) throws IOException;; + /** + * 鎵归噺瀵煎叆宸ュ崟鐧藉悕鍗� + * + * @author + */ + Result importWhite(MultipartFile file) throws IOException; } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java index 42e27c0..b68349f 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java @@ -12,8 +12,10 @@ import com.ycl.platform.domain.vo.screen.WorkOrderTotalVO; import com.ycl.system.Result; import com.ycl.system.page.TableDataInfo; +import jakarta.servlet.http.HttpServletResponse; import org.bytedeco.javacv.FFmpegFrameGrabber; +import java.io.IOException; import java.util.Date; import java.util.List; import java.util.Map; @@ -238,40 +240,6 @@ List<WorkOrderVO> export(WorkOrderExportQuery query); /** - * 宸ュ崟鐧藉悕鍗曞垪琛� - * - * @param workOrderWhiteQuery 鐧借壊宸ュ崟鏌ヨ - * @return {@link TableDataInfo } - * @author - */ - Result selectWorkOrderWhiteList(WorkOrderWhiteQuery workOrderWhiteQuery); - - /** - * 娣诲姞宸ュ崟鐧藉悕鍗� - * - * @param workOrderWhite 鐧借壊宸ュ崟 - * @return {@link Result } - * @author - */ - Result addWorkOrderWhite(WorkOrderWhite workOrderWhite); - - /** - * 鎵归噺鍒犻櫎宸ュ崟鐧藉悕鍗� - * - * @param ids ids - * @author - */ - Result batchDeleteWorkOrderWhite(List<String> ids); - - /** - * 鎵归噺瀵煎叆宸ュ崟鐧藉悕鍗� - * - * @param dataList 鏁版嵁鍒楄〃 - * @author - */ - void batchImportWhite(List<PointExport> dataList); - - /** * 妫�娴嬫寜閽� * @param workOrderNo * @return @@ -282,8 +250,5 @@ Result errorAll(); - Result selectWorkOrderWhiteDetail(Integer id); - - Result updateWorkOrderWhite(WorkOrderWhite workOrderWhite); } 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 1657856..96e8e1b 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,8 @@ package com.ycl.platform.service.impl; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; @@ -12,7 +15,9 @@ import com.ycl.config.PlatformConfig; import com.ycl.exception.ServiceException; import com.ycl.platform.domain.entity.*; +import com.ycl.platform.domain.excel.ErrorExport; import com.ycl.platform.domain.excel.PointExport; +import com.ycl.platform.domain.excel.WorkOrderWhiteExport; import com.ycl.platform.domain.form.*; import com.ycl.platform.domain.query.*; import com.ycl.platform.domain.vo.*; @@ -40,6 +45,7 @@ import constant.RedisConstant; import enumeration.ErrorType; import enumeration.general.*; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; @@ -61,10 +67,13 @@ import org.springframework.util.StringUtils; import pojo.CascadeOption; +import java.io.IOException; +import java.io.OutputStream; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -86,10 +95,10 @@ private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper; private final WorkOrderErrorTypeServiceImpl workOrderErrorTypeService; private final WorkOrderErrorTypeMapper workOrderErrorTypeMapper; + private final WorkOrderWhiteMapper workOrderWhiteMapper; private final SysConfigMapper configMapper; private final ReportMapper reportMapper; private final WorkOrderCheckImgMapper workOrderCheckImgMapper; - private final WorkOrderWhiteMapper workOrderWhiteMapper; private final DeviceInfoMapper deviceInfoMapper; private final ApplicationContext applicationContext; @Value("${rtsp.server:http://127.0.0.1:7788}") @@ -109,19 +118,12 @@ } @Transactional(rollbackFor = Exception.class) - public Boolean batchAddWorkOrder(List<WorkOrder> workOrderList){ + public Boolean batchAddWorkOrder(List<WorkOrder> workOrderList) { int total = workOrderList.size(); - // 鏌ヨ鍑虹櫧鍚嶅崟鍒楄〃 - List<String> serialNumbers = workOrderWhiteMapper.selectList().stream().map(WorkOrderWhite::getSerialNumber).collect(Collectors.toList()); - // 閬嶅巻宸ュ崟鍒楄〃锛屽垽鏂槸鍚﹀湪鐧藉悕鍗曚腑 - workOrderList = workOrderList.stream().filter(item -> !serialNumbers.contains(item.getSerialNumber())) - .collect(Collectors.toList()); + //娓呯悊鏁版嵁 workOrderList = workOrderList.stream().filter(item -> { return StringUtils.hasText(item.getSerialNumber()) && Objects.nonNull(item.getStatus()) && !CollectionUtils.isEmpty(item.getErrorTypeList()); }).collect(Collectors.toList()); - if (CollectionUtils.isEmpty(workOrderList)) { - return Boolean.TRUE; - } // 鏍规嵁鍥芥爣鐮佸幓閲� workOrderList = workOrderList.stream() .collect(Collectors.toMap( @@ -129,6 +131,12 @@ p -> p, (existing, replacement) -> existing // 鍐茬獊鏃朵繚鐣欑涓�涓� )).values().stream().collect(Collectors.toList()); + //妫�鏌ョ櫧鍚嶅崟 + workOrderList = checkWhite(workOrderList); + + if (CollectionUtils.isEmpty(workOrderList)) { + return Boolean.TRUE; + } List<String> serialNumberList = workOrderList.stream().map(WorkOrder::getSerialNumber).collect(Collectors.toList()); // 鏌ュ嚭鏁版嵁搴撲腑鍥芥爣鐮佸搴旂殑鏈畬鎴愮殑宸ュ崟 List<WorkOrder> inDatabaseWorkOrderList = baseMapper.getNotFinishedWorkOrders(serialNumberList); @@ -171,7 +179,7 @@ } } //閬垮厤浠d笅鍙戠殑宸ュ崟鐩存帴鍙樻垚涓嬪彂 - if(!databaseWorkOrder.getStatus().equals(WorkOrderStatusEnum.WAIT_DISTRIBUTE)) { + if (!databaseWorkOrder.getStatus().equals(WorkOrderStatusEnum.WAIT_DISTRIBUTE)) { databaseWorkOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED); } databaseWorkOrder.setUpdateTime(now); @@ -282,7 +290,7 @@ workOrderErrorType.setErrorName(errorType); waitAddErrorTypeList.add(workOrderErrorType); } - log.info("鍗冲皢鐢熸垚鐨勫伐鍗�:{}",workOrder); + log.info("鍗冲皢鐢熸垚鐨勫伐鍗�:{}", workOrder); } redisCache.setCacheObject(RedisConstant.WORKORDER_NUM, workOrderNum); redisCache.releaseLock(RedisConstant.WORKORDER_NUM_LOCK, requestId); @@ -311,6 +319,8 @@ log.info("浼犲叆宸ュ崟鎬绘暟: {}锛屽疄闄呮坊鍔犲伐鍗曟暟锛歿}, 瀹為檯淇敼宸ュ崟鏁帮細{}", total, waitAddList.size(), updateNum); return Boolean.TRUE; } + + /** * 娣诲姞 * @@ -319,6 +329,16 @@ */ @Override public Result add(WorkOrderForm form) { + //妫�鏌ョ櫧鍚嶅崟 + List<WorkOrder> data = new ArrayList<>(); + WorkOrder workOrder = WorkOrderForm.getEntityByForm(form, null); + data.add(workOrder); + data = checkWhite(data); + if (CollectionUtils.isEmpty(data)) { + return Result.error("璇ヨ澶囩殑鏁呴殰绫诲瀷鍦ㄧ櫧鍚嶅崟涓紝涓嶈兘娣诲姞宸ュ崟"); + } + WorkOrder entity = data.get(0); + //鏌edis浠婃棩宸ュ崟鏁伴噺 int workOrderNum = 0; //UUID浣滀负value锛屼繚璇佷笂閿佺殑绾跨▼鑷繁瑙i攣 @@ -334,28 +354,22 @@ } else { return Result.error("宸ュ崟姝e湪娣诲姞锛岃绋嶅悗鍐嶈瘯"); } - WorkOrder entity = WorkOrderForm.getEntityByForm(form, null); - // 鏌ヨ鍑虹櫧鍚嶅崟鍒楄〃 - List<String> serialNumbers = workOrderWhiteMapper.selectList().stream().map(WorkOrderWhite::getSerialNumber).collect(Collectors.toList()); - // 閬嶅巻宸ュ崟鍒楄〃锛屽垽鏂槸鍚﹀湪鐧藉悕鍗曚腑 - if (serialNumbers.contains(entity.getSerialNumber())){ - return Result.error("璇ヨ澶囧湪鐧藉悕鍗曚腑锛屼笉鑳芥坊鍔犲伐鍗�"); - }else { - entity.setCreateTime(DateUtils.getNowDate()); - entity.setStatus(WorkOrderStatusEnum.WAIT_DISTRIBUTE); - Date now = new Date(); - entity.setCreateTime(now); - entity.setUpdateTime(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) { - return Result.ok("娣诲姞鎴愬姛"); - } - return Result.error("娣诲姞澶辫触"); + + entity.setCreateTime(DateUtils.getNowDate()); + entity.setStatus(WorkOrderStatusEnum.WAIT_DISTRIBUTE); + Date now = new Date(); + entity.setCreateTime(now); + entity.setUpdateTime(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) { + return Result.ok("娣诲姞鎴愬姛"); } + return Result.error("娣诲姞澶辫触"); } + /** * 淇敼 @@ -488,7 +502,7 @@ // 鍥芥爣璁惧鐨勭紪鐮佸氨鏄彇瑙嗛娴佺殑璁惧缂栫爜锛屽浗鏍囪澶囧氨涓�涓�傚浗鏍囪澶囩殑姣忎竴涓�氶亾浠h〃涓�涓憚鍍忓ご锛屼篃灏辨槸璁惧id鏄彇娴佺殑閫氶亾id String frameImg = null; try { - log.info("鍥芥爣骞冲彴:{},璁惧缂栫爜:{},宸ュ崟鍙�:{}",gbDevices.get(0).getDeviceId(), workOrder.getSerialNumber(), workOrder.getWorkOrderNo()); + log.info("鍥芥爣骞冲彴:{},璁惧缂栫爜:{},宸ュ崟鍙�:{}", gbDevices.get(0).getDeviceId(), workOrder.getSerialNumber(), workOrder.getWorkOrderNo()); frameImg = this.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), workOrder.getSerialNumber(), workOrder.getWorkOrderNo()); } catch (Exception e) { e.printStackTrace(); @@ -501,11 +515,12 @@ workOrderCheckImgMapper.insert(img); } } + @Override public List<WorkOrderYwConditionRecordVO> selectYwConditionByYwId(String workOrderNo) { List<WorkOrderYwConditionRecordVO> ywConditionList = workOrderYwConditionRecordMapper.selectYwConditionByYwId(workOrderNo); ywConditionList.stream().forEach(item -> { - if(item.getUserId().equals(1)){ + if (item.getUserId().equals(1)) { item.setUnitName("绠$悊鍛�"); } if (Objects.nonNull(item.getSysMsg()) && item.getSysMsg()) { @@ -583,11 +598,11 @@ @Override public Result page(WorkOrderQuery query) { IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class); - if(query.getUnitId()==null) { + if (query.getUnitId() == null) { query.setUnitId(SecurityUtils.getUnitId()); } - if(query.getStart()!=null) query.setStart(DateUtils.getDayStart(query.getStart())); - if(query.getEnd()!=null) query.setEnd(DateUtils.getDayEnd(query.getEnd())); + if (query.getStart() != null) query.setStart(DateUtils.getDayStart(query.getStart())); + if (query.getEnd() != null) query.setEnd(DateUtils.getDayEnd(query.getEnd())); baseMapper.page(page, query); if (!CollectionUtils.isEmpty(page.getRecords())) { page.getRecords().stream().forEach(item -> { @@ -616,8 +631,8 @@ @Override public Result distributePage(DistributeWorkOrderQuery query) { IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class); - if(query.getStart()!=null) query.setStart(DateUtils.getDayStart(query.getStart())); - if(query.getEnd()!=null) query.setEnd(DateUtils.getDayEnd(query.getEnd())); + if (query.getStart() != null) query.setStart(DateUtils.getDayStart(query.getStart())); + if (query.getEnd() != null) query.setEnd(DateUtils.getDayEnd(query.getEnd())); baseMapper.distributePage(page, query); return Result.ok().data(page).total(page.getTotal()); } @@ -845,11 +860,11 @@ @Override public String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) throws Exception { String url = String.format(this.rtspServer + "/api/play/start/img/%s/%s", deviceId, channelId); - log.info("璁块棶璺緞{}",url); + log.info("璁块棶璺緞{}", url); String result = HttpUtils.sendGet(url); log.info("鎷垮埌鍙栨祦鍥剧墖鍝嶅簲缁撴灉锛�" + result); WVPResult wvpResult = JSON.parseObject(result, WVPResult.class); - if(wvpResult.getCode() == 0) { + if (wvpResult.getCode() == 0) { Object imgUrl = (Object) wvpResult.getData(); imgUrl = Objects.isNull(imgUrl) ? "" : imgUrl; log.info("鎷垮埌鍙栨祦鍥剧墖锛�" + imgUrl); @@ -906,7 +921,7 @@ } @Override - public void saveFrameImgByDevice (String deviceId, String channelId, String workOrderNo){ + 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); @@ -967,13 +982,13 @@ } @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) @@ -981,7 +996,7 @@ } @Override - public Result processImg (String workOrderNo){ + public Result processImg(String workOrderNo) { WorkOrder workOrder = new LambdaQueryChainWrapper<>(baseMapper) .eq(WorkOrder::getWorkOrderNo, workOrderNo) .one(); @@ -1022,7 +1037,7 @@ } @Override - public Result detailByNo (String workOrderNo){ + public Result detailByNo(String workOrderNo) { WorkOrderDetailVO workOrder = baseMapper.detailByNo(workOrderNo); // 鏄惁鎶ュ boolean hasReport = new LambdaQueryChainWrapper<>(reportMapper) @@ -1044,8 +1059,8 @@ } @Override - public List<WorkOrderVO> export (WorkOrderExportQuery query){ - if(query.getUnitId()==null) { + public List<WorkOrderVO> export(WorkOrderExportQuery query) { + if (query.getUnitId() == null) { query.setUnitId(SecurityUtils.getUnitId()); } if (query.getStart() != null) query.setStart(query.getStart() + " 00:00:00"); @@ -1055,107 +1070,13 @@ } /** - * 宸ュ崟鐧藉悕鍗曞垪琛� - * - * @param query 鏌ヨ - * @return {@link List }<{@link WorkOrderWhite }> - * @author - */ - @Override - public Result selectWorkOrderWhiteList(WorkOrderWhiteQuery query) { - IPage<WorkOrderWhite> page = PageUtil.getPage(query, WorkOrderWhite.class); - workOrderWhiteMapper.page(page, query); - List<WorkOrderWhite> records = page.getRecords(); - records.forEach(white-> { - List<String> errorTextList = new ArrayList<>(); - List<String> errorTypeList = JSONArray.parseArray(white.getErrorType(), String.class); - errorTypeList.forEach(error->{ - String errorText = ErrorType.getDescriptionByValue(error); - errorTextList.add(errorText); - }); - white.setErrorType(String.join(",", errorTextList)); - }); - return Result.ok().data(records).total(page.getTotal()); - } - - /** - * 娣诲姞宸ュ崟鐧藉悕鍗� - * - * @param workOrderWhite 鐧借壊宸ュ崟 - * @return {@link Result } - * @author - */ - @Override - public Result addWorkOrderWhite(WorkOrderWhite workOrderWhite) { - // 妫�鏌ユ槸鍚﹀凡缁忓瓨鍦ㄨ鐧藉悕鍗� - WorkOrderWhite flag = workOrderWhiteMapper.selectBySerialNumber(workOrderWhite.getSerialNumber()); - if (flag != null) { - return Result.error("璇ヨ澶囧凡瀛樺湪鐧藉悕鍗�"); - } else { - List<String> errorTypeList = workOrderWhite.getErrorTypeList(); - workOrderWhite.setErrorType(JSONArray.toJSONString(errorTypeList)); - workOrderWhite.setCreateBy(SecurityUtils.getUsername()); - workOrderWhiteMapper.insert(workOrderWhite); - return Result.ok(); - } - } - /** - * 淇敼宸ュ崟鐧藉悕鍗� - * - * @param workOrderWhite 鐧借壊宸ュ崟 - * @return {@link Result } - * @author - */ - @Override - public Result updateWorkOrderWhite(WorkOrderWhite workOrderWhite) { - WorkOrderWhite white = workOrderWhiteMapper.selectBySerialNumber(workOrderWhite.getSerialNumber()); - workOrderWhite.setId(white.getId()); - List<String> errorTypeList = workOrderWhite.getErrorTypeList(); - workOrderWhite.setErrorType(JSONArray.toJSONString(errorTypeList)); - workOrderWhiteMapper.updateById(workOrderWhite); - return Result.ok(); - } - /** - * 鎵归噺鍒犻櫎宸ュ崟鐧藉悕鍗� - * - * @param ids ids - * @author - */ - @Override - public Result batchDeleteWorkOrderWhite(List<String> ids) { - workOrderWhiteMapper.batchDelete(ids); - return Result.ok(); - } - - /** - * 鎵归噺瀵煎叆鐧藉悕鍗� - * - * @param dataList 鏁版嵁鍒楄〃 - * @author - */ - @Override - public void batchImportWhite(List<PointExport> dataList) { -// // 鑾峰緱鎵�鏈夐渶瑕佹柊澧炵殑鐧藉悕鍗曞璞� -// List<WorkOrderWhite> whitelist = dataList.stream().map(pointExport -> -// new WorkOrderWhite(pointExport.getSerialNumber(), pointExport.getPointName(), SecurityUtils.getUsername())) -// .collect(Collectors.toList()); -// // 鑾峰緱鎵�鏈夊凡瀛樺湪鐨勭櫧鍚嶅崟璁惧缂栫爜 -// List<String> serialNumbers = workOrderWhiteMapper.selectList().stream().map(WorkOrderWhite::getSerialNumber).collect(Collectors.toList()); -// // 绛涢�夊嚭鏂板銆佷慨鏀圭殑鐧藉悕鍗曞璞� -// List<WorkOrderWhite> updateWhiteList = whitelist.stream().filter(white -> serialNumbers.contains(white.getSerialNumber())).collect(Collectors.toList()); -// List<WorkOrderWhite> insertWhiteList = whitelist.stream().filter(white ->!serialNumbers.contains(white.getSerialNumber())).collect(Collectors.toList()); -// // 鏂板/淇敼鐧藉悕鍗曡澶囪褰� -// updateWhiteList.stream().forEach(white -> workOrderWhiteMapper.updateBySerialNumber(white)); -// insertWhiteList.stream().forEach(white -> workOrderWhiteMapper.insert(white)); - } - - /** * 妫�娴嬪伐鍗曟寜閽� + * * @param workOrderNo * @return */ @Override - public Result checkImage(String workOrderNo,String serialNumber) { + public Result checkImage(String workOrderNo, String serialNumber) { // 鏌ュ嚭鍥芥爣璁惧锛屽氨涓�鏉℃暟鎹� List<DeviceInfo> gbDevices = new LambdaQueryChainWrapper<>(deviceInfoMapper) .orderByDesc(DeviceInfo::getUpdateTime) @@ -1163,7 +1084,7 @@ .list(); if (!CollectionUtils.isEmpty(gbDevices)) { try { - String imgUrl = this.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), serialNumber,workOrderNo); + String imgUrl = this.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), serialNumber, workOrderNo); if (StringUtils.hasText(imgUrl)) { WorkOrderCheckImg img = new WorkOrderCheckImg(); img.setWorkOrderNo(workOrderNo); @@ -1182,7 +1103,7 @@ @Override @Transactional(rollbackFor = Exception.class) public Result batchDeleteWorkOrder(List<String> workOrderNos) { - if(!CollectionUtils.isEmpty(workOrderNos)) { + if (!CollectionUtils.isEmpty(workOrderNos)) { //鍒犻櫎宸ュ崟瀹℃牳璁板綍 workOrderAuditingRecordMapper.delete(new QueryWrapper<WorkOrderAuditingRecord>().in("work_order_no", workOrderNos)); //鍒犻櫎宸ュ崟鍥剧墖璁板綍 @@ -1248,12 +1169,22 @@ return Result.ok().data(results); } - @Override - public Result selectWorkOrderWhiteDetail(Integer id) { - WorkOrderWhite workOrderWhite = workOrderWhiteMapper.getById(id); - List<String> errorList = JSONArray.parseArray(workOrderWhite.getErrorType(), String.class); - workOrderWhite.setErrorTypeList(errorList); - return Result.ok().data(workOrderWhite); + //鐧藉悕鍗曟牎楠� + private List<WorkOrder> checkWhite(List<WorkOrder> workOrderList) { + // 鏌ヨ鍑虹櫧鍚嶅崟鍒楄〃 + Map<String, WorkOrderWhite> whiteMap = workOrderWhiteMapper.selectList().stream().collect(Collectors.toMap(WorkOrderWhite::getSerialNumber, Function.identity())); + workOrderList = workOrderList.stream() + .filter(workOrder -> { + List<String> errorTypeList = workOrder.getErrorTypeList(); + WorkOrderWhite white = whiteMap.get(workOrder.getSerialNumber()); + if (white != null) { + List<String> whiteErrorListSet = Arrays.asList(white.getErrorType().split(",")); + errorTypeList.removeIf(whiteErrorListSet::contains); + } + return !errorTypeList.isEmpty(); // 鍙繚鐣� errorTypeList 闈炵┖鐨� WorkOrder + }) + .collect(Collectors.toList()); + return workOrderList; } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java index 8728731..bf9cd3d 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java @@ -1,17 +1,34 @@ package com.ycl.platform.service.impl; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.fastjson2.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.dataListener.CurrencyDataListener; import com.ycl.platform.domain.entity.WorkOrder; +import com.ycl.platform.domain.entity.WorkOrderWhite; +import com.ycl.platform.domain.entity.YwPoint; import com.ycl.platform.domain.entity.YwThreshold; +import com.ycl.platform.domain.excel.ErrorExport; import com.ycl.platform.domain.excel.PointExport; +import com.ycl.platform.domain.excel.WorkOrderWhiteExport; +import com.ycl.platform.domain.query.WorkOrderWhiteQuery; import com.ycl.platform.domain.result.HK.FaceDeviceInspectionResult; import com.ycl.platform.domain.result.HK.VehicleDeviceInspectionResult; import com.ycl.platform.domain.vo.DynamicColumnVO; +import com.ycl.platform.mapper.WorkOrderWhiteMapper; import com.ycl.platform.mapper.YwThresholdMapper; import com.ycl.platform.service.IYwThresholdService; import com.ycl.platform.service.WorkOrderService; import com.ycl.system.Result; +import com.ycl.system.page.PageUtil; +import com.ycl.utils.SecurityUtils; +import com.ycl.utils.StringUtils; import com.ycl.utils.ip.PingUtil; import com.ycl.utils.poi.EasyExcelImportUtils; import com.ycl.utils.uuid.IdUtils; @@ -21,14 +38,20 @@ import enumeration.ErrorType; import enumeration.general.BusinessTypeEnum; import enumeration.general.WorkOrderStatusEnum; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import utils.DateUtils; +import java.io.IOException; +import java.io.OutputStream; import java.util.*; +import java.util.concurrent.ExecutionException; +import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; @@ -47,6 +70,8 @@ @Autowired private WorkOrderService workOrderService; + @Autowired + private WorkOrderWhiteMapper workOrderWhiteMapper; /** * 鏌ヨ杩愮淮闃堝�� * @@ -151,21 +176,6 @@ // 娓呮櫚搴﹀紓甯告娴� // 浜害寮傚父鏁呴殰妫�娴� - } - - @Override - public Result importData(MultipartFile file) { - List<Map<String, String>> list = EasyExcelImportUtils.makeData(file); - List<PointExport> dataList = new ArrayList<>(); - for (Map<String, String> map : list) { - PointExport pointExport = new PointExport(); - pointExport.setPointName(map.get(PointHeaderConstant.Point_Name)); - pointExport.setSerialNumber(map.get(PointHeaderConstant.Serial_Number)); - dataList.add(pointExport); - } - workOrderService.batchImportWhite(dataList); - return Result.ok("瀵煎叆鎴愬姛"); - } /** @@ -305,6 +315,264 @@ } /** + * 鐧藉悕鍗曡鎯� + * @param id + * @return + */ + @Override + public Result selectWorkOrderWhiteDetail(Integer id) { + WorkOrderWhite workOrderWhite = workOrderWhiteMapper.getById(id); + List<String> errorTypeList = Arrays.asList(workOrderWhite.getErrorType().split(",")); + workOrderWhite.setErrorTypeList(errorTypeList); + return Result.ok().data(workOrderWhite); + } + /** + * 宸ュ崟鐧藉悕鍗曞垪琛� + * + * @param query 鏌ヨ + * @return {@link List }<{@link WorkOrderWhite }> + * @author + */ + @Override + public Result selectWorkOrderWhiteList(WorkOrderWhiteQuery query) { + IPage<WorkOrderWhite> page = PageUtil.getPage(query, WorkOrderWhite.class); + workOrderWhiteMapper.page(page, query); + List<WorkOrderWhite> records = page.getRecords(); + records.forEach(white-> { + List<String> errorTextList = new ArrayList<>(); + List<String> errorTypeList = Arrays.asList(white.getErrorType().split(",")); + errorTypeList.forEach(error->{ + String errorText = ErrorType.getDescriptionByValue(error); + errorTextList.add(errorText); + }); + white.setErrorType(String.join(",", errorTextList)); + }); + return Result.ok().data(records).total(page.getTotal()); + } + + /** + * 娣诲姞宸ュ崟鐧藉悕鍗� + * + * @param workOrderWhite 鐧借壊宸ュ崟 + * @return {@link Result } + * @author + */ + @Override + public Result addWorkOrderWhite(WorkOrderWhite workOrderWhite) { + // 妫�鏌ユ槸鍚﹀凡缁忓瓨鍦ㄨ鐧藉悕鍗� + WorkOrderWhite flag = workOrderWhiteMapper.selectBySerialNumber(workOrderWhite.getSerialNumber()); + if (flag != null) { + return Result.error("璇ヨ澶囧凡瀛樺湪鐧藉悕鍗�"); + } else { + List<String> errorTypeList = workOrderWhite.getErrorTypeList(); + workOrderWhite.setErrorType(String.join(",",errorTypeList)); + workOrderWhite.setCreateBy(SecurityUtils.getUsername()); + workOrderWhiteMapper.insert(workOrderWhite); + return Result.ok(); + } + } + /** + * 淇敼宸ュ崟鐧藉悕鍗� + * + * @param workOrderWhite 鐧借壊宸ュ崟 + * @return {@link Result } + * @author + */ + @Override + public Result updateWorkOrderWhite(WorkOrderWhite workOrderWhite) { + WorkOrderWhite white = workOrderWhiteMapper.selectBySerialNumber(workOrderWhite.getSerialNumber()); + workOrderWhite.setId(white.getId()); + List<String> errorTypeList = workOrderWhite.getErrorTypeList(); + workOrderWhite.setErrorType(String.join(",",errorTypeList)); + workOrderWhiteMapper.updateById(workOrderWhite); + return Result.ok(); + } + + /** + * 鎵归噺鍒犻櫎宸ュ崟鐧藉悕鍗� + * + * @param ids ids + * @author + */ + @Override + public Result batchDeleteWorkOrderWhite(List<String> ids) { + workOrderWhiteMapper.batchDelete(ids); + return Result.ok(); + } + /** + * 鐧藉悕鍗曞鍑� + * @param response + * @throws IOException + */ + @Override + public void whiteExport(HttpServletResponse response) throws IOException { + //鐧藉悕鍗曟暟鎹� + List<WorkOrderWhiteExport> data = workOrderWhiteMapper.whiteExport(); + data.forEach(white-> { + List<String> errorTextList = new ArrayList<>(); + List<String> errorTypeList = Arrays.asList(white.getErrorType().split(",")); + errorTypeList.forEach(error->{ + String errorText = ErrorType.getDescriptionByValue(error); + errorTextList.add(errorText); + }); + white.setErrorType(String.join(",", errorTextList)); + }); + //鏁呴殰绫诲瀷鏁版嵁 + List<String> errorTextList = ErrorType.getDescriptionList(); + List<ErrorExport> errorExports = new ArrayList<>(); + errorTextList.forEach(error -> { + ErrorExport errorExport = new ErrorExport(); + errorExport.setError(error); + errorExports.add(errorExport); + }); + ExcelWriter excelWriter = null; + try(OutputStream outputStream = response.getOutputStream()) { + excelWriter = EasyExcel.write(outputStream).build(); + + WriteSheet whiteSheet = EasyExcel.writerSheet(0, "宸ュ崟鐧藉悕鍗曟竻鍗�").head(WorkOrderWhiteExport.class).build(); + WriteSheet errorSheet = EasyExcel.writerSheet(1, "鏁呴殰绫诲瀷").head(ErrorExport.class).build(); + + excelWriter.write(data, whiteSheet); + excelWriter.write(errorExports, errorSheet); + excelWriter.finish(); + outputStream.flush(); + }catch (Exception e) { + e.printStackTrace(); + } finally { + try { + excelWriter.finish(); + response.getOutputStream().close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + } + + /** + * 瀵煎叆宸ュ崟鐧藉悕鍗� + * @param file + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Result importWhite(MultipartFile file) throws IOException{ +// Consumer<List<WorkOrderWhiteExport>> consumer = (dataList) -> { +// try { +// this.updateWhite(dataList); +// } catch (ExecutionException e) { +// e.printStackTrace(); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } +// }; +// EasyExcel.read(file.getInputStream(), WorkOrderWhiteExport.class, new CurrencyDataListener(consumer)) +// .sheet() +// .headRowNumber(1) +// .doRead(); + List<WorkOrderWhiteExport> dataList = new ArrayList<>(); + EasyExcel.read(file.getInputStream(), WorkOrderWhiteExport.class, new AnalysisEventListener<WorkOrderWhiteExport>() { + @Override + public void invoke(WorkOrderWhiteExport excel, AnalysisContext analysisContext) { + // 灏嗚鍙栧埌鐨勬瘡涓�琛屽瓨鍏eportDetails闆嗗悎涓� + dataList.add(excel); + } + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) {} + }).sheet().doRead(); + + if (CollectionUtils.isEmpty(dataList)) { + throw new RuntimeException("瀵煎叆鏁版嵁涓嶈兘涓虹┖"); + } + boolean duplic = checkDuplic(dataList); + if(duplic) throw new RuntimeException("瀛樺湪閲嶅鍥芥爣璁惧"); + //宸插瓨鍦ㄧ殑鐧藉悕鍗� + Map<String, WorkOrderWhite> whiteMap = workOrderWhiteMapper.selectList().stream().collect(Collectors.toMap(WorkOrderWhite::getSerialNumber, Function.identity())); + List<WorkOrderWhite> addList = new ArrayList<>(); + dataList.stream().forEach(item -> { + WorkOrderWhite white = new WorkOrderWhite(); + //鍥芥爣鐮� + white.setSerialNumber(item.getSerialNumber()); + //澶囨敞 + white.setRemark(item.getRemark()); + String errorType = item.getErrorType(); + if(StringUtils.isEmpty(errorType)){ + throw new RuntimeException("鍥芥爣鐮佷负"+item.getSerialNumber()+"鐨勮澶囨晠闅滀笉鑳戒负绌�"); + } + try { + List<String> errorDataList = new ArrayList<>(); + List<String> errorExcelList = Arrays.asList(item.getErrorType().split(",")); + errorExcelList.forEach(desc->{ + //鎶婁腑鏂囪浆鎹负鏁版嵁搴撳瓨鍌ㄦ牸寮� + String errorText = ErrorType.getValueByDescription(desc); + //鎵句笉鍒版姏鍑哄紓甯� + if(errorText == null) throw new RuntimeException("鍥芥爣鐮佷负"+item.getSerialNumber()+"鐨勮澶囨晠闅滅被鍨嬫湁璇�"); + errorDataList.add(errorText); + }); + white.setErrorType(String.join(",", errorDataList)); + //濡傛灉宸插瓨鍦ㄨˉ鍏卛d + WorkOrderWhite whiteExsit = whiteMap.get(white.getSerialNumber()); + if(whiteExsit!=null) white.setId(whiteExsit.getId()); + addList.add(white); + } catch (Exception e) { + throw new RuntimeException("鍥芥爣鐮佷负"+item.getSerialNumber()+"鐨勮澶囨晠闅滅被鍨嬫湁璇�"); + } + }); + if(!CollectionUtils.isEmpty(addList)) { + workOrderWhiteMapper.deleteAll(); + workOrderWhiteMapper.insertBatch(addList); + } + return Result.ok(); + } + /** + * 淇敼鐧藉悕鍗� + * + * @param dataList + * @param unitId + */ + public void updateWhite(List<WorkOrderWhiteExport> dataList) throws ExecutionException, InterruptedException { + if (CollectionUtils.isEmpty(dataList)) { + throw new RuntimeException("瀵煎叆鏁版嵁涓嶈兘涓虹┖"); + } + //宸插瓨鍦ㄧ殑鐧藉悕鍗� + List<String> serialNumbers = workOrderWhiteMapper.selectList().stream().map(WorkOrderWhite::getSerialNumber).collect(Collectors.toList()); + List<WorkOrderWhite> addList = new ArrayList<>(); + List<WorkOrderWhite> updateList = new ArrayList<>(); + dataList.stream().forEach(item -> { + WorkOrderWhite white = new WorkOrderWhite(); + //鍥芥爣鐮� + white.setSerialNumber(item.getSerialNumber()); + //澶囨敞 + white.setRemark(item.getRemark()); + String errorType = item.getErrorType(); + if(StringUtils.isEmpty(errorType)){ + throw new RuntimeException("鍥芥爣鐮佷负"+item.getSerialNumber()+"鐨勮澶囨晠闅滀笉鑳戒负绌�"); + } + try { + List<String> errorDataList = new ArrayList<>(); + List<String> errorExcelList = Arrays.asList(item.getErrorType().split(",")); + errorExcelList.forEach(desc->{ + //鎶婁腑鏂囪浆鎹负鏁版嵁搴撳瓨鍌ㄦ牸寮� + String errorText = ErrorType.getValueByDescription(desc); + //鎵句笉鍒版姏鍑哄紓甯� + if(errorText == null) throw new RuntimeException("鍥芥爣鐮佷负"+item.getSerialNumber()+"鐨勮澶囨晠闅滅被鍨嬫湁璇�"); + errorDataList.add(errorText); + }); + white.setErrorType(String.join(",", errorDataList)); + if(!CollectionUtils.isEmpty(serialNumbers) && serialNumbers.contains(white.getSerialNumber())){ + updateList.add(white); + }else { + addList.add(white); + } + } catch (Exception e) { + throw new RuntimeException("鍥芥爣鐮佷负"+item.getSerialNumber()+"鐨勮澶囨晠闅滅被鍨嬫湁璇�"); + } + }); + if(!CollectionUtils.isEmpty(addList)) workOrderWhiteMapper.insertBatch(addList); + if(!CollectionUtils.isEmpty(updateList)) workOrderWhiteMapper.updateBatch(updateList); + } + + /** * 妫�鏌ラ槇鍊� * * @param key 鏌愰槇鍊兼爣璇� @@ -373,4 +641,15 @@ } } + public static boolean checkDuplic(List<WorkOrderWhiteExport> dataList) { + Set<String> serialNumbers = new HashSet<>(); + + for (WorkOrderWhiteExport white : dataList) { + String serialNumber = white.getSerialNumber(); + if (!serialNumbers.add(serialNumber)) { + return true; + } + } + return false; + } } diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderWhiteMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderWhiteMapper.xml index 8220c64..cc93123 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderWhiteMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderWhiteMapper.xml @@ -32,7 +32,7 @@ left join t_monitor m on wow.serial_number = m.serial_number <where> <if test="query.keyword != null and query.keyword != ''"> - and (serial_number like concat('%',#{query.keyword},'%') or point_name like concat('%', #{query.keyword}, '%')) + and (wow.serial_number like concat('%',#{query.keyword},'%') or m.name like concat('%', #{query.keyword}, '%')) </if> </where> </select> @@ -44,10 +44,18 @@ wow.id = #{id} </where> </select> + + <select id="whiteExport" resultType="com.ycl.platform.domain.excel.WorkOrderWhiteExport"> + select wow.id, wow.serial_number,m.name as pointName, wow.error_type, wow.create_by, wow.remark + from t_work_order_white wow + left join t_monitor m on wow.serial_number = m.serial_number + </select> + <select id="selectBySerialNumber" resultType="com.ycl.platform.domain.entity.WorkOrderWhite"> <include refid="selectWorkOrderWhiteVo"/> where serial_number = #{serialNumber} </select> + <select id="selectList" resultType="com.ycl.platform.domain.entity.WorkOrderWhite"> <include refid="selectWorkOrderWhiteVo"/> </select> @@ -80,4 +88,26 @@ #{id} </foreach> </delete> + + <update id="updateBatch"> + <foreach collection="whiteList" separator=";" item="white"> + UPDATE t_work_order_white + SET + <if test="white.errorType != null and white.errorType !=''"> + error_type = #{white.errorType}, + </if> + remark = #{white.remark} + WHERE serial_number = #{white.serialNumber} + </foreach> + </update> + + <insert id="insertBatch"> + insert into t_work_order_white (serial_number,error_type,remark) values + <foreach item="white" collection="whiteList" separator=","> + (#{white.serialNumber},#{white.errorType},#{white.remark}) + </foreach> + </insert> + <delete id="deleteAll"> + delete from t_work_order_white; + </delete> </mapper> -- Gitblit v1.8.0