From 11e370b2ed7a7004c4a4b4d46031785bc6a7d925 Mon Sep 17 00:00:00 2001
From: 幻雨堂 <13281837894@163.com>
Date: 星期四, 29 二月 2024 09:21:19 +0800
Subject: [PATCH] 道安办部分新

---
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsSceneryOperationDataController.java    |  105 +++++++
 dujy-modules/dujy-demo/pom.xml                                                                            |    7 
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/config/MinioConfig.java                             |   36 ++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/FileUploadController.java                |   40 ++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/RsSceneryOperationData.java                  |   86 +++++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsSceneryOperationDataMapper.java            |   15 +
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java                                 |  238 +++++++++++++++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/bo/RsSceneryOperationDataBo.java             |   96 ++++++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IRsSceneryOperationDataService.java         |   49 +++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsSceneryOperationDataVo.java             |  104 ++++++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsSceneryOperationDataServiceImpl.java |  119 +++++++
 11 files changed, 895 insertions(+), 0 deletions(-)

diff --git a/dujy-modules/dujy-demo/pom.xml b/dujy-modules/dujy-demo/pom.xml
index 5193b1e..e85885e 100644
--- a/dujy-modules/dujy-demo/pom.xml
+++ b/dujy-modules/dujy-demo/pom.xml
@@ -124,6 +124,13 @@
             <artifactId>dujy-system</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>io.minio</groupId>
+            <artifactId>minio</artifactId>
+            <version>8.4.3</version>
+        </dependency>
+
+
     </dependencies>
 
 </project>
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/config/MinioConfig.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/config/MinioConfig.java
new file mode 100644
index 0000000..fad8ad4
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/config/MinioConfig.java
@@ -0,0 +1,36 @@
+package org.dromara.demo.config;
+
+import io.minio.MinioClient;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+
+@Data
+@Configuration
+public class MinioConfig {
+    @Value("${minio.endpoint}")
+    private String endpoint;
+
+    @Value("${minio.accessKey}")
+    private String accessKey;
+
+    @Value("${minio.secretKey}")
+    private String secretKey;
+
+    /**
+     * 娉ㄥ叆minio 瀹㈡埛绔�
+     *
+     * @return
+     */
+    @Bean
+    public MinioClient minioClient() {
+        return MinioClient.builder()
+            .endpoint(endpoint)
+            .credentials(accessKey, secretKey)
+            .build();
+    }
+
+
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/FileUploadController.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/FileUploadController.java
new file mode 100644
index 0000000..28d633d
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/FileUploadController.java
@@ -0,0 +1,40 @@
+package org.dromara.demo.controller;
+
+import io.minio.Result;
+import org.dromara.common.core.domain.R;
+import org.dromara.demo.util.MinioUtil;
+import org.redisson.remote.ResponseEntry;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestPart;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/file")
+public class FileUploadController {
+    @Autowired
+    private MinioUtil minioUtil;
+
+    @PostMapping("/img")
+    public R<String> uploadMinio(@RequestPart MultipartFile[] file) throws Exception {
+
+        /*//鎷垮埌鍥剧墖  MultipartFile灏佽鎺ュ彈鐨勭被
+        //鎷垮埌鍥剧墖鐨勫悕绉�
+        String filename = file.getOriginalFilename();
+        //鎷垮埌鍥剧墖鐨� UUId + 鍥剧墖绫诲瀷 (瑙e喅鍥剧墖閲嶅悕鐨勯棶棰� )
+        String uuid = UUID.randomUUID().toString();
+        String imgType = filename.substring(filename.lastIndexOf("."));
+        //鍥剧墖鏂囦欢鐨勬柊鍚嶇О xxx/uuid.jpg   鍥剧墖鎷兼帴鍚庣殑鍚�
+        String fileName = uuid + imgType;*/
+
+        List<String> uploads = minioUtil.uploads(file);
+
+
+        return R.ok(uploads.toString());
+    }
+
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsSceneryOperationDataController.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsSceneryOperationDataController.java
new file mode 100644
index 0000000..e60e8f5
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsSceneryOperationDataController.java
@@ -0,0 +1,105 @@
+package org.dromara.demo.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.demo.domain.vo.RsSceneryOperationDataVo;
+import org.dromara.demo.domain.bo.RsSceneryOperationDataBo;
+import org.dromara.demo.service.IRsSceneryOperationDataService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 鏅尯杩愯鏁版嵁
+ *
+ * @author Lion Li
+ * @date 2024-02-27
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/sc/sceneryOperationData")
+public class RsSceneryOperationDataController extends BaseController {
+
+    private final IRsSceneryOperationDataService rsSceneryOperationDataService;
+
+    /**
+     * 鏌ヨ鏅尯杩愯鏁版嵁鍒楄〃
+     */
+    @SaCheckPermission("rs:sceneryOperationData:list")
+    @GetMapping("/list")
+    public TableDataInfo<RsSceneryOperationDataVo> list(RsSceneryOperationDataBo bo, PageQuery pageQuery) {
+        return rsSceneryOperationDataService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 瀵煎嚭鏅尯杩愯鏁版嵁鍒楄〃
+     */
+    @SaCheckPermission("rs:sceneryOperationData:export")
+    @Log(title = "鏅尯杩愯鏁版嵁", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(RsSceneryOperationDataBo bo, HttpServletResponse response) {
+        List<RsSceneryOperationDataVo> list = rsSceneryOperationDataService.queryList(bo);
+        ExcelUtil.exportExcel(list, "鏅尯杩愯鏁版嵁", RsSceneryOperationDataVo.class, response);
+    }
+
+    /**
+     * 鑾峰彇鏅尯杩愯鏁版嵁璇︾粏淇℃伅
+     *
+     * @param id 涓婚敭
+     */
+    @SaCheckPermission("rs:sceneryOperationData:query")
+    @GetMapping("/{id}")
+    public R<RsSceneryOperationDataVo> getInfo(@NotNull(message = "涓婚敭涓嶈兘涓虹┖")
+                                     @PathVariable Long id) {
+        return R.ok(rsSceneryOperationDataService.queryById(id));
+    }
+
+    /**
+     * 鏂板鏅尯杩愯鏁版嵁
+     */
+    @SaCheckPermission("system:sceneryOperationData:add")
+    @Log(title = "鏅尯杩愯鏁版嵁", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody RsSceneryOperationDataBo bo) {
+        return toAjax(rsSceneryOperationDataService.insertByBo(bo));
+    }
+
+    /**
+     * 淇敼鏅尯杩愯鏁版嵁
+     */
+    @SaCheckPermission("system:sceneryOperationData:edit")
+    @Log(title = "鏅尯杩愯鏁版嵁", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody RsSceneryOperationDataBo bo) {
+        return toAjax(rsSceneryOperationDataService.updateByBo(bo));
+    }
+
+    /**
+     * 鍒犻櫎鏅尯杩愯鏁版嵁
+     *
+     * @param ids 涓婚敭涓�
+     */
+    @SaCheckPermission("system:sceneryOperationData:remove")
+    @Log(title = "鏅尯杩愯鏁版嵁", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖")
+                          @PathVariable Long[] ids) {
+        return toAjax(rsSceneryOperationDataService.deleteWithValidByIds(List.of(ids), true));
+    }
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/RsSceneryOperationData.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/RsSceneryOperationData.java
new file mode 100644
index 0000000..8300719
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/RsSceneryOperationData.java
@@ -0,0 +1,86 @@
+package org.dromara.demo.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 鏅尯杩愯鏁版嵁瀵硅薄 rs_scenery_operation_data
+ *
+ * @author Lion Li
+ * @date 2024-02-27
+ */
+@Data
+//@EqualsAndHashCode(callSuper = true)
+@TableName("rs_scenery_operation_data")
+public class RsSceneryOperationData  {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 鍛ㄦ湡骞�
+     */
+    private Long periodYear;
+
+    /**
+     * 鍛ㄦ湡鏈�
+     */
+    private Long periodMonth;
+
+    /**
+     * 杞︽祦閲�
+     */
+    private Long carFlowNum;
+
+    /**
+     * 浜烘祦閲�
+     */
+    private Long personFlowNum;
+
+    /**
+     * 娓稿棰勭害
+     */
+    private Long visitorSubNum;
+
+    /**
+     * 鍏ュ洯浜烘暟
+     */
+    private Long enterGardenNum;
+
+    /**
+     * 鍦ㄥ矖璀﹀姏
+     */
+    private Long onPolice;
+
+    /**
+     * 鍦ㄥ矖璀﹁溅
+     */
+    private Long onPaddyWagon;
+
+    /**
+     * 澶囧嫟璀﹀姏
+     */
+    private Long standbyPolice;
+
+    /**
+     * 鐘舵�� 1鍚敤 0鏈惎鐢�
+     */
+    private Long status;
+
+    /**
+     * 鏅尯id
+     */
+    private Long scId;
+
+
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/bo/RsSceneryOperationDataBo.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/bo/RsSceneryOperationDataBo.java
new file mode 100644
index 0000000..fea5acc
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/bo/RsSceneryOperationDataBo.java
@@ -0,0 +1,96 @@
+package org.dromara.demo.domain.bo;
+
+import org.dromara.demo.domain.RsSceneryOperationData;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 鏅尯杩愯鏁版嵁涓氬姟瀵硅薄 rs_scenery_operation_data
+ *
+ * @author Lion Li
+ * @date 2024-02-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = RsSceneryOperationData.class, reverseConvertGenerate = false)
+public class RsSceneryOperationDataBo extends BaseEntity {
+
+    /**
+     * id
+     */
+    @NotNull(message = "id涓嶈兘涓虹┖", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 鍛ㄦ湡骞�
+     */
+    @NotNull(message = "鍛ㄦ湡骞翠笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private Long periodYear;
+
+    /**
+     * 鍛ㄦ湡鏈�
+     */
+    @NotNull(message = "鍛ㄦ湡鏈堜笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private Long periodMonth;
+
+    /**
+     * 杞︽祦閲�
+     */
+    @NotNull(message = "杞︽祦閲忎笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private Long carFlowNum;
+
+    /**
+     * 浜烘祦閲�
+     */
+    @NotNull(message = "浜烘祦閲忎笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private Long personFlowNum;
+
+    /**
+     * 娓稿棰勭害
+     */
+    @NotNull(message = "娓稿棰勭害涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long visitorSubNum;
+
+    /**
+     * 鍏ュ洯浜烘暟
+     */
+    @NotNull(message = "鍏ュ洯浜烘暟涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long enterGardenNum;
+
+    /**
+     * 鍦ㄥ矖璀﹀姏
+     */
+    @NotNull(message = "鍦ㄥ矖璀﹀姏涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long onPolice;
+
+    /**
+     * 鍦ㄥ矖璀﹁溅
+     */
+    @NotNull(message = "鍦ㄥ矖璀﹁溅涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long onPaddyWagon;
+
+    /**
+     * 澶囧嫟璀﹀姏
+     */
+    @NotNull(message = "澶囧嫟璀﹀姏涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long standbyPolice;
+
+    /**
+     * 鐘舵�� 1鍚敤 0鏈惎鐢�
+     */
+    @NotNull(message = "鐘舵�� 1鍚敤 0鏈惎鐢ㄤ笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private Long status;
+
+    /**
+     * 鏅尯id
+     */
+    @NotNull(message = "鏅尯id涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long scId;
+
+
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsSceneryOperationDataVo.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsSceneryOperationDataVo.java
new file mode 100644
index 0000000..2071f17
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsSceneryOperationDataVo.java
@@ -0,0 +1,104 @@
+package org.dromara.demo.domain.vo;
+
+import org.dromara.demo.domain.RsSceneryOperationData;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 鏅尯杩愯鏁版嵁瑙嗗浘瀵硅薄 rs_scenery_operation_data
+ *
+ * @author Lion Li
+ * @date 2024-02-27
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = RsSceneryOperationData.class)
+public class RsSceneryOperationDataVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @ExcelProperty(value = "id")
+    private Long id;
+
+    /**
+     * 鍛ㄦ湡骞�
+     */
+    @ExcelProperty(value = "鍛ㄦ湡骞�")
+    private Long periodYear;
+
+    /**
+     * 鍛ㄦ湡鏈�
+     */
+    @ExcelProperty(value = "鍛ㄦ湡鏈�")
+    private Long periodMonth;
+
+    /**
+     * 杞︽祦閲�
+     */
+    @ExcelProperty(value = "杞︽祦閲�")
+    private Long carFlowNum;
+
+    /**
+     * 浜烘祦閲�
+     */
+    @ExcelProperty(value = "浜烘祦閲�")
+    private Long personFlowNum;
+
+    /**
+     * 娓稿棰勭害
+     */
+    @ExcelProperty(value = "娓稿棰勭害")
+    private Long visitorSubNum;
+
+    /**
+     * 鍏ュ洯浜烘暟
+     */
+    @ExcelProperty(value = "鍏ュ洯浜烘暟")
+    private Long enterGardenNum;
+
+    /**
+     * 鍦ㄥ矖璀﹀姏
+     */
+    @ExcelProperty(value = "鍦ㄥ矖璀﹀姏")
+    private Long onPolice;
+
+    /**
+     * 鍦ㄥ矖璀﹁溅
+     */
+    @ExcelProperty(value = "鍦ㄥ矖璀﹁溅")
+    private Long onPaddyWagon;
+
+    /**
+     * 澶囧嫟璀﹀姏
+     */
+    @ExcelProperty(value = "澶囧嫟璀﹀姏")
+    private Long standbyPolice;
+
+    /**
+     * 鐘舵�� 1鍚敤 0鏈惎鐢�
+     */
+    @ExcelProperty(value = "鐘舵�� 1鍚敤 0鏈惎鐢�")
+    private Long status;
+
+    /**
+     * 鏅尯id
+     */
+    @ExcelProperty(value = "鏅尯id")
+    private Long scId;
+
+
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsSceneryOperationDataMapper.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsSceneryOperationDataMapper.java
new file mode 100644
index 0000000..d1a9dc9
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsSceneryOperationDataMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.demo.mapper;
+
+import org.dromara.demo.domain.RsSceneryOperationData;
+import org.dromara.demo.domain.vo.RsSceneryOperationDataVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 鏅尯杩愯鏁版嵁Mapper鎺ュ彛
+ *
+ * @author Lion Li
+ * @date 2024-02-27
+ */
+public interface RsSceneryOperationDataMapper extends BaseMapperPlus<RsSceneryOperationData, RsSceneryOperationDataVo> {
+
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IRsSceneryOperationDataService.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IRsSceneryOperationDataService.java
new file mode 100644
index 0000000..0345db9
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IRsSceneryOperationDataService.java
@@ -0,0 +1,49 @@
+package org.dromara.demo.service;
+
+import org.dromara.demo.domain.RsSceneryOperationData;
+import org.dromara.demo.domain.vo.RsSceneryOperationDataVo;
+import org.dromara.demo.domain.bo.RsSceneryOperationDataBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 鏅尯杩愯鏁版嵁Service鎺ュ彛
+ *
+ * @author Lion Li
+ * @date 2024-02-27
+ */
+public interface IRsSceneryOperationDataService {
+
+    /**
+     * 鏌ヨ鏅尯杩愯鏁版嵁
+     */
+    RsSceneryOperationDataVo queryById(Long id);
+
+    /**
+     * 鏌ヨ鏅尯杩愯鏁版嵁鍒楄〃
+     */
+    TableDataInfo<RsSceneryOperationDataVo> queryPageList(RsSceneryOperationDataBo bo, PageQuery pageQuery);
+
+    /**
+     * 鏌ヨ鏅尯杩愯鏁版嵁鍒楄〃
+     */
+    List<RsSceneryOperationDataVo> queryList(RsSceneryOperationDataBo bo);
+
+    /**
+     * 鏂板鏅尯杩愯鏁版嵁
+     */
+    Boolean insertByBo(RsSceneryOperationDataBo bo);
+
+    /**
+     * 淇敼鏅尯杩愯鏁版嵁
+     */
+    Boolean updateByBo(RsSceneryOperationDataBo bo);
+
+    /**
+     * 鏍¢獙骞舵壒閲忓垹闄ゆ櫙鍖鸿繍琛屾暟鎹俊鎭�
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsSceneryOperationDataServiceImpl.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsSceneryOperationDataServiceImpl.java
new file mode 100644
index 0000000..81e9c66
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsSceneryOperationDataServiceImpl.java
@@ -0,0 +1,119 @@
+package org.dromara.demo.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.demo.domain.bo.RsSceneryOperationDataBo;
+import org.dromara.demo.domain.vo.RsSceneryOperationDataVo;
+import org.dromara.demo.domain.RsSceneryOperationData;
+import org.dromara.demo.mapper.RsSceneryOperationDataMapper;
+import org.dromara.demo.service.IRsSceneryOperationDataService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 鏅尯杩愯鏁版嵁Service涓氬姟灞傚鐞�
+ *
+ * @author Lion Li
+ * @date 2024-02-27
+ */
+@RequiredArgsConstructor
+@Service
+public class RsSceneryOperationDataServiceImpl implements IRsSceneryOperationDataService {
+
+    private final RsSceneryOperationDataMapper baseMapper;
+
+    /**
+     * 鏌ヨ鏅尯杩愯鏁版嵁
+     */
+    @Override
+    public RsSceneryOperationDataVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鏌ヨ鏅尯杩愯鏁版嵁鍒楄〃
+     */
+    @Override
+    public TableDataInfo<RsSceneryOperationDataVo> queryPageList(RsSceneryOperationDataBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<RsSceneryOperationData> lqw = buildQueryWrapper(bo);
+        Page<RsSceneryOperationDataVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 鏌ヨ鏅尯杩愯鏁版嵁鍒楄〃
+     */
+    @Override
+    public List<RsSceneryOperationDataVo> queryList(RsSceneryOperationDataBo bo) {
+        LambdaQueryWrapper<RsSceneryOperationData> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<RsSceneryOperationData> buildQueryWrapper(RsSceneryOperationDataBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<RsSceneryOperationData> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getPeriodYear() != null, RsSceneryOperationData::getPeriodYear, bo.getPeriodYear());
+        lqw.eq(bo.getPeriodMonth() != null, RsSceneryOperationData::getPeriodMonth, bo.getPeriodMonth());
+        lqw.eq(bo.getCarFlowNum() != null, RsSceneryOperationData::getCarFlowNum, bo.getCarFlowNum());
+        lqw.eq(bo.getPersonFlowNum() != null, RsSceneryOperationData::getPersonFlowNum, bo.getPersonFlowNum());
+        lqw.eq(bo.getVisitorSubNum() != null, RsSceneryOperationData::getVisitorSubNum, bo.getVisitorSubNum());
+        lqw.eq(bo.getEnterGardenNum() != null, RsSceneryOperationData::getEnterGardenNum, bo.getEnterGardenNum());
+        lqw.eq(bo.getOnPolice() != null, RsSceneryOperationData::getOnPolice, bo.getOnPolice());
+        lqw.eq(bo.getOnPaddyWagon() != null, RsSceneryOperationData::getOnPaddyWagon, bo.getOnPaddyWagon());
+        lqw.eq(bo.getStandbyPolice() != null, RsSceneryOperationData::getStandbyPolice, bo.getStandbyPolice());
+        lqw.eq(bo.getStatus() != null, RsSceneryOperationData::getStatus, bo.getStatus());
+        lqw.eq(bo.getScId() != null, RsSceneryOperationData::getScId, bo.getScId());
+        return lqw;
+    }
+
+    /**
+     * 鏂板鏅尯杩愯鏁版嵁
+     */
+    @Override
+    public Boolean insertByBo(RsSceneryOperationDataBo bo) {
+        RsSceneryOperationData add = MapstructUtils.convert(bo, RsSceneryOperationData.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼鏅尯杩愯鏁版嵁
+     */
+    @Override
+    public Boolean updateByBo(RsSceneryOperationDataBo bo) {
+        RsSceneryOperationData update = MapstructUtils.convert(bo, RsSceneryOperationData.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(RsSceneryOperationData entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鏅尯杩愯鏁版嵁
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java
new file mode 100644
index 0000000..d5ca1b3
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/MinioUtil.java
@@ -0,0 +1,238 @@
+package org.dromara.demo.util;
+
+
+import io.minio.*;
+import io.minio.messages.DeleteError;
+import io.minio.messages.DeleteObject;
+import io.minio.messages.Item;
+import org.apache.commons.compress.utils.IOUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @description锛� minio宸ュ叿绫�
+ * @version
+ */
+@Component
+public class MinioUtil {
+    @Autowired
+    private MinioClient minioClient;
+
+    @Value("${minio.bucketName}")
+    private String bucketName;
+    /**
+     * description: 鍒ゆ柇bucket鏄惁瀛樺湪锛屼笉瀛樺湪鍒欏垱寤�
+     *
+     * @return: void
+     */
+    public void existBucket(String name) {
+        try {
+            boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(name).build());
+            if (!exists) {
+                minioClient.makeBucket(MakeBucketArgs.builder().bucket(name).build());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 鍒涘缓瀛樺偍bucket
+     * @param bucketName 瀛樺偍bucket鍚嶇О
+     * @return Boolean
+     */
+    public Boolean makeBucket(String bucketName) {
+        try {
+            minioClient.makeBucket(MakeBucketArgs.builder()
+                .bucket(bucketName)
+                .build());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 鍒犻櫎瀛樺偍bucket
+     * @param bucketName 瀛樺偍bucket鍚嶇О
+     * @return Boolean
+     */
+    public Boolean removeBucket(String bucketName) {
+        try {
+            minioClient.removeBucket(RemoveBucketArgs.builder()
+                .bucket(bucketName)
+                .build());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+        return true;
+    }
+    /**
+     * description: 涓婁紶鏂囦欢
+     *
+     * @param multipartFile
+     * @return: java.lang.String
+
+     */
+    public List<String> uploads(MultipartFile[] multipartFile) {
+        List<String> names = new ArrayList<>(multipartFile.length);
+        for (MultipartFile file : multipartFile) {
+            String fileName = file.getOriginalFilename();
+            String[] split = fileName.split("\\.");
+            if (split.length > 1) {
+                fileName = split[0] + "_" + System.currentTimeMillis() + "." + split[1];
+            } else {
+                fileName = fileName + System.currentTimeMillis();
+            }
+            InputStream in = null;
+            try {
+                in = file.getInputStream();
+                minioClient.putObject(PutObjectArgs.builder()
+                    .bucket(bucketName)
+                    .object(fileName)
+                    .stream(in, in.available(), -1)
+                    .contentType(file.getContentType())
+                    .build()
+                );
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                if (in != null) {
+                    try {
+                        in.close();
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+            names.add(fileName);
+        }
+        return names;
+    }
+
+    /**
+     * 涓婁紶鍗曚釜鏂囦欢
+     * @param multipartFile
+     * @return
+     */
+    public String upload(MultipartFile multipartFile) {
+
+            String fileName = multipartFile.getOriginalFilename();
+            String[] split = fileName.split("\\.");
+            if (split.length > 1) {
+                fileName = split[0] + "_" + System.currentTimeMillis() + "." + split[1];
+            } else {
+                fileName = fileName + System.currentTimeMillis();
+            }
+            InputStream in = null;
+            try {
+                in = multipartFile.getInputStream();
+                minioClient.putObject(PutObjectArgs.builder()
+                    .bucket(bucketName)
+                    .object(fileName)
+                    .stream(in, in.available(), -1)
+                    .contentType(multipartFile.getContentType())
+                    .build()
+                );
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                if (in != null) {
+                    try {
+                        in.close();
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+
+        return fileName;
+    }
+
+    /**
+     * description: 涓嬭浇鏂囦欢
+     *
+     * @param fileName
+     * @return: org.springframework.http.ResponseEntity<byte [ ]>
+     */
+    public ResponseEntity<byte[]> download(String fileName) {
+        ResponseEntity<byte[]> responseEntity = null;
+        InputStream in = null;
+        ByteArrayOutputStream out = null;
+        try {
+            in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build());
+            out = new ByteArrayOutputStream();
+            IOUtils.copy(in, out);
+            //灏佽杩斿洖鍊�
+            byte[] bytes = out.toByteArray();
+            HttpHeaders headers = new HttpHeaders();
+            try {
+                headers.add("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+            headers.setContentLength(bytes.length);
+            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+            headers.setAccessControlExposeHeaders(Arrays.asList("*"));
+            responseEntity = new ResponseEntity<byte[]>(bytes, headers, HttpStatus.OK);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (in != null) {
+                    try {
+                        in.close();
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+                if (out != null) {
+                    out.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return responseEntity;
+    }
+
+    /**
+     * 鏌ョ湅鏂囦欢瀵硅薄
+     * @param bucketName 瀛樺偍bucket鍚嶇О
+     * @return 瀛樺偍bucket鍐呮枃浠跺璞′俊鎭�
+     */
+
+
+    /**
+     * 鎵归噺鍒犻櫎鏂囦欢瀵硅薄
+     * @param bucketName 瀛樺偍bucket鍚嶇О
+     * @param objects 瀵硅薄鍚嶇О闆嗗悎
+     */
+    public Iterable<Result<DeleteError>> removeObjects(String bucketName, List<String> objects) {
+        List<DeleteObject> dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList());
+        Iterable<Result<DeleteError>> results = minioClient.removeObjects(RemoveObjectsArgs.builder().bucket(bucketName).objects(dos).build());
+        return results;
+    }
+
+
+}
+
+

--
Gitblit v1.8.0