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