From 64c7668818aa8272c0aae206a3c0f7007ca38e5d Mon Sep 17 00:00:00 2001 From: 艾金辉 <1144154118@qq.com> Date: 星期六, 22 七月 2023 16:37:57 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ard-work/src/main/java/com/ruoyi/app/task/mapper/ArdAppTaskMapper.java | 113 ++ ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml | 190 ++++ ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyUserMapper.java | 2 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml | 12 ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java | 85 ++ ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java | 42 + ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyUserServiceImpl.java | 6 ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdAlarmpointsWellController.java | 7 ard-work/src/main/java/com/ruoyi/app/position/domain/ArdAppPosition.java | 2 ard-work/src/main/java/com/ruoyi/rongcloud/service/Impl/RongCloudServiceImpl.java | 22 ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java | 87 + ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java | 61 + ard-work/src/main/java/com/ruoyi/app/tasktext/service/IArdAppTaskTextService.java | 61 + ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskPic.java | 65 + ard-work/src/main/java/com/ruoyi/sy/service/IArdSyUserService.java | 5 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java | 10 ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java | 104 ++ ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java | 8 ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java | 10 ard-work/src/main/java/com/ruoyi/app/position/mapper/ArdAppPositionMapper.java | 4 ard-work/src/main/resources/mapper/app/ArdAppPositionMapper.xml | 2 lib/mediamtx/mediamtx.yml | 24 ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTask.java | 149 +++ ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImpl.java | 109 ++ ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java | 32 lib/mediamtx/ffmpeg.exe | 0 ard-work/src/main/java/com/ruoyi/app/tasktext/controller/ArdAppTaskTextController.java | 104 ++ ard-work/src/main/java/com/ruoyi/app/tasktext/service/impl/ArdAppTaskTextServiceImpl.java | 89 ++ ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java | 74 + ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java | 19 ard-work/src/main/java/com/ruoyi/app/tasktext/domain/ArdAppTaskText.java | 65 + ard-work/src/main/resources/mapper/sy/ArdSyUserMapper.xml | 3 ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java | 160 ++++ ard-work/src/main/resources/mapper/app/ArdAppTaskTextMapper.xml | 63 + ard-work/pom.xml | 58 + ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java | 190 ++++ ard-work/src/main/java/com/ruoyi/rongcloud/service/RongCloudService.java | 1 ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml | 8 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 5 ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java | 8 ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyCarMapper.java | 7 ard-work/src/main/java/com/ruoyi/app/tasktext/mapper/ArdAppTaskTextMapper.java | 61 + ard-work/src/main/java/com/ruoyi/app/position/service/IArdAppPositionService.java | 4 ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskDetail.java | 149 +++ ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java | 11 ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java | 4 46 files changed, 2,232 insertions(+), 63 deletions(-) diff --git a/ard-work/pom.xml b/ard-work/pom.xml index 2e3a240..c686bad 100644 --- a/ard-work/pom.xml +++ b/ard-work/pom.xml @@ -14,6 +14,12 @@ </description> <dependencies> + <dependency> + <groupId>net.sf.ucanaccess</groupId> + <artifactId>ucanaccess</artifactId> + <version>5.0.1</version> + </dependency> + <!-- 閫氱敤宸ュ叿--> <dependency> <groupId>commons-codec</groupId> @@ -123,7 +129,57 @@ <artifactId>fastjson2</artifactId> <version>2.0.36</version> </dependency> - + <!--涓変竴杞﹁締渚濊禆--> + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + <version>1.14</version> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-collections4</artifactId> + <version>4.4</version> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <version>3.9</version> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>1.2</version> + </dependency> + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>fastjson</artifactId> + <version>1.2.35</version> + </dependency> + <dependency> + <groupId>com.sy</groupId> + <artifactId>gps-push-client</artifactId> + <version>1.0.0</version> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-api</artifactId> + <version>2.12.1</version> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-core</artifactId> + <version>2.12.1</version> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-jcl</artifactId> + <version>2.11.2</version> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-all</artifactId> + <version>4.1.63.Final</version> + </dependency> </dependencies> <build> diff --git a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdAlarmpointsWellController.java b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdAlarmpointsWellController.java index e4ac74d..42a3bad 100644 --- a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdAlarmpointsWellController.java +++ b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdAlarmpointsWellController.java @@ -58,6 +58,13 @@ return getDataTable(list); } + @PreAuthorize("@ss.hasPermi('alarmpoints:well:list')") + @GetMapping("/nonPageList") + @ApiOperation("鏌ヨ浜曞垪琛�-涓嶅垎椤�") + public AjaxResult nonPageList(ArdAlarmpointsWell ardAlarmpointsWell) { + List<ArdAlarmpointsWell> list = ardAlarmpointsWellService.selectArdAlarmpointsWellList(ardAlarmpointsWell); + return success(list); + } /** * 瀵煎嚭浜曠鐞嗗垪琛� */ diff --git a/ard-work/src/main/java/com/ruoyi/app/controller/ArdAppPositionController.java b/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java similarity index 60% rename from ard-work/src/main/java/com/ruoyi/app/controller/ArdAppPositionController.java rename to ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java index 64e4ec7..c3f102a 100644 --- a/ard-work/src/main/java/com/ruoyi/app/controller/ArdAppPositionController.java +++ b/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java @@ -1,19 +1,28 @@ -package com.ruoyi.app.controller; +package com.ruoyi.app.position.controller; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import com.ruoyi.app.domain.ArdAppPosition; -import com.ruoyi.app.service.IArdAppPositionService; -import com.ruoyi.common.core.domain.entity.SysRole; +import com.ruoyi.app.position.domain.ArdAppPosition; +import com.ruoyi.app.position.service.IArdAppPositionService; +import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.device.hiksdk.util.minio.MinioUtils; +import com.ruoyi.rongcloud.service.RongCloudService; +import com.ruoyi.system.domain.SysUserOnline; import com.ruoyi.system.service.ISysRoleService; +import com.ruoyi.system.service.ISysUserOnlineService; import com.ruoyi.system.service.ISysUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -27,12 +36,9 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.core.page.TableDataInfo; +import org.springframework.web.multipart.MultipartFile; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import static org.bytedeco.javacv.FrameGrabber.list; +import java.util.*; /** * app浣嶇疆Controller @@ -50,7 +56,7 @@ @Autowired private ISysUserService sysUserService; @Autowired - private ISysRoleService roleService; + private RongCloudService rongCloudService; /** * 鏌ヨapp浣嶇疆鍒楄〃 @@ -134,6 +140,58 @@ return AjaxResult.success(list); } /** + * 鑾峰彇鎵�鏈塧pp鐢ㄦ埛 + */ + @ApiOperation("鑾峰彇鎵�鏈塧pp鐢ㄦ埛") + @GetMapping("/getAppUserlist") + public AjaxResult getAppUserlist(Long deptId) + { + SysUser user=new SysUser(); + user.setDeptId(deptId); + List<SysUser> list = sysUserService.selectAppUserList(user); + return AjaxResult.success(list); + } + + /** + * 鑾峰彇鎵�鏈塧pp鐢ㄦ埛 + */ + @ApiOperation("鑾峰彇鎵�鏈塧pp鐢ㄦ埛pc") + @GetMapping("/getAppUserForPclist") + public AjaxResult getAppUserForPclist(Long deptId) + { + SysUser user=new SysUser(); + user.setDeptId(deptId); + List<SysUser> list = sysUserService.selectAppUserList(user); + List<SysUser> onLineList=new ArrayList<>(); + List<SysUser> offLineList=new ArrayList<>(); + for(SysUser sysUser:list) + { + Boolean online = rongCloudService.checkOnline(sysUser.getUserId()); + if(online) + { + onLineList.add(sysUser); + } + else + { + offLineList.add(sysUser); + } + } + Map<String,Object> onlineMap=new HashMap<>(); + onlineMap.put("children",onLineList); + onlineMap.put("name","鍦ㄧ嚎鐢ㄦ埛("+onLineList.size()+")"); + onlineMap.put("disabled",true); + onlineMap.put("id","onLine"); + Map<String,Object> offlineMap=new HashMap<>(); + offlineMap.put("children",offLineList); + offlineMap.put("name","绂荤嚎鐢ㄦ埛("+offLineList.size()+")"); + offlineMap.put("disabled",true); + offlineMap.put("id","offLine"); + List< Map<String,Object> > lists = new ArrayList<>(); + lists.add(onlineMap); + lists.add(offlineMap); + return AjaxResult.success(lists); + } + /** * 鑾峰彇鐢ㄦ埛璇︽儏 */ @ApiOperation("鑾峰彇鐢ㄦ埛璇︽儏") @@ -143,4 +201,11 @@ SysUser sysUser = sysUserService.selectUserById(userId); return AjaxResult.success(sysUser); } + @PostMapping("/uploadFile") + @ApiOperation("涓婁紶鏂囦欢") + public AjaxResult uploadFile(MultipartFile file,String type) + { + String url = MinioUtils.putObjectAndGetUrl("app",type, file); + return AjaxResult.success(url); + } } diff --git a/ard-work/src/main/java/com/ruoyi/app/domain/ArdAppPosition.java b/ard-work/src/main/java/com/ruoyi/app/position/domain/ArdAppPosition.java similarity index 95% rename from ard-work/src/main/java/com/ruoyi/app/domain/ArdAppPosition.java rename to ard-work/src/main/java/com/ruoyi/app/position/domain/ArdAppPosition.java index 25bb335..1bb7e20 100644 --- a/ard-work/src/main/java/com/ruoyi/app/domain/ArdAppPosition.java +++ b/ard-work/src/main/java/com/ruoyi/app/position/domain/ArdAppPosition.java @@ -1,4 +1,4 @@ -package com.ruoyi.app.domain; +package com.ruoyi.app.position.domain; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; diff --git a/ard-work/src/main/java/com/ruoyi/app/mapper/ArdAppPositionMapper.java b/ard-work/src/main/java/com/ruoyi/app/position/mapper/ArdAppPositionMapper.java similarity index 92% rename from ard-work/src/main/java/com/ruoyi/app/mapper/ArdAppPositionMapper.java rename to ard-work/src/main/java/com/ruoyi/app/position/mapper/ArdAppPositionMapper.java index 113eae3..0b23c5d 100644 --- a/ard-work/src/main/java/com/ruoyi/app/mapper/ArdAppPositionMapper.java +++ b/ard-work/src/main/java/com/ruoyi/app/position/mapper/ArdAppPositionMapper.java @@ -1,7 +1,7 @@ -package com.ruoyi.app.mapper; +package com.ruoyi.app.position.mapper; import java.util.List; -import com.ruoyi.app.domain.ArdAppPosition; +import com.ruoyi.app.position.domain.ArdAppPosition; /** diff --git a/ard-work/src/main/java/com/ruoyi/app/service/IArdAppPositionService.java b/ard-work/src/main/java/com/ruoyi/app/position/service/IArdAppPositionService.java similarity index 92% rename from ard-work/src/main/java/com/ruoyi/app/service/IArdAppPositionService.java rename to ard-work/src/main/java/com/ruoyi/app/position/service/IArdAppPositionService.java index 0e022d4..a4fa952 100644 --- a/ard-work/src/main/java/com/ruoyi/app/service/IArdAppPositionService.java +++ b/ard-work/src/main/java/com/ruoyi/app/position/service/IArdAppPositionService.java @@ -1,7 +1,7 @@ -package com.ruoyi.app.service; +package com.ruoyi.app.position.service; import java.util.List; -import com.ruoyi.app.domain.ArdAppPosition; +import com.ruoyi.app.position.domain.ArdAppPosition; /** diff --git a/ard-work/src/main/java/com/ruoyi/app/service/impl/ArdAppPositionServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java similarity index 87% rename from ard-work/src/main/java/com/ruoyi/app/service/impl/ArdAppPositionServiceImpl.java rename to ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java index f665230..14ce8c9 100644 --- a/ard-work/src/main/java/com/ruoyi/app/service/impl/ArdAppPositionServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java @@ -1,12 +1,10 @@ -package com.ruoyi.app.service.impl; +package com.ruoyi.app.position.service.impl; -import com.ruoyi.app.domain.ArdAppPosition; -import com.ruoyi.app.mapper.ArdAppPositionMapper; -import com.ruoyi.app.service.IArdAppPositionService; +import com.ruoyi.app.position.domain.ArdAppPosition; +import com.ruoyi.app.position.mapper.ArdAppPositionMapper; +import com.ruoyi.app.position.service.IArdAppPositionService; import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.uuid.IdUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; diff --git a/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java b/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java new file mode 100644 index 0000000..1eb5f3e --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java @@ -0,0 +1,104 @@ +package com.ruoyi.app.task.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.app.task.domain.ArdAppTask; +import com.ruoyi.app.task.service.IArdAppTaskService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * app浠诲姟绠$悊Controller + * + * @author ard + * @date 2023-07-22 + */ +@RestController +@RequestMapping("/app/task") +public class ArdAppTaskController extends BaseController +{ + @Autowired + private IArdAppTaskService ardAppTaskService; + + /** + * 鏌ヨapp浠诲姟绠$悊鍒楄〃 + */ + @PreAuthorize("@ss.hasPermi('app:task:list')") + @GetMapping("/list") + public TableDataInfo list(ArdAppTask ardAppTask) + { + startPage(); + List<ArdAppTask> list = ardAppTaskService.selectArdAppTaskList(ardAppTask); + return getDataTable(list); + } + + /** + * 瀵煎嚭app浠诲姟绠$悊鍒楄〃 + */ + @PreAuthorize("@ss.hasPermi('app:task:export')") + @Log(title = "app浠诲姟绠$悊", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ArdAppTask ardAppTask) + { + List<ArdAppTask> list = ardAppTaskService.selectArdAppTaskList(ardAppTask); + ExcelUtil<ArdAppTask> util = new ExcelUtil<ArdAppTask>(ArdAppTask.class); + util.exportExcel(response, list, "app浠诲姟绠$悊鏁版嵁"); + } + + /** + * 鑾峰彇app浠诲姟绠$悊璇︾粏淇℃伅 + */ + @PreAuthorize("@ss.hasPermi('app:task:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(ardAppTaskService.selectArdAppTaskById(id)); + } + + /** + * 鏂板app浠诲姟绠$悊 + */ + @PreAuthorize("@ss.hasPermi('app:task:add')") + @Log(title = "app浠诲姟绠$悊", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ArdAppTask ardAppTask) + { + return toAjax(ardAppTaskService.insertArdAppTask(ardAppTask)); + } + + /** + * 淇敼app浠诲姟绠$悊 + */ + @PreAuthorize("@ss.hasPermi('app:task:edit')") + @Log(title = "app浠诲姟绠$悊", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ArdAppTask ardAppTask) + { + return toAjax(ardAppTaskService.updateArdAppTask(ardAppTask)); + } + + /** + * 鍒犻櫎app浠诲姟绠$悊 + */ + @PreAuthorize("@ss.hasPermi('app:task:remove')") + @Log(title = "app浠诲姟绠$悊", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(ardAppTaskService.deleteArdAppTaskByIds(ids)); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTask.java b/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTask.java new file mode 100644 index 0000000..65f7bed --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTask.java @@ -0,0 +1,149 @@ +package com.ruoyi.app.task.domain; + +import java.util.List; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * app浠诲姟绠$悊瀵硅薄 ard_app_task + * + * @author ard + * @date 2023-07-22 + */ +public class ArdAppTask extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** ID */ + private String id; + + /** 浠诲姟鍚嶇О */ + @Excel(name = "浠诲姟鍚嶇О") + private String name; + + /** 浠诲姟鏂囨湰 */ + @Excel(name = "浠诲姟鏂囨湰") + private String text; + + /** 浠诲姟璇煶 */ + @Excel(name = "浠诲姟璇煶") + private String voice; + + /** 閮ㄩ棬ID */ + @Excel(name = "閮ㄩ棬ID") + private Integer deptId; + + /** 鐢ㄦ埛ID */ + @Excel(name = "鐢ㄦ埛ID") + private String userId; + /** app浠诲姟鍥剧墖淇℃伅 */ + private List<ArdAppTaskPic> ardAppTaskPicList; + + /** app浠诲姟鍏宠仈澶氱敤鎴� */ + private List<String> userIds; + + /** app浠诲姟璇︽儏淇℃伅 */ + private List<ArdAppTaskDetail> ardAppTaskDetailList; + + public List<ArdAppTaskPic> getArdAppTaskPicList() + { + return ardAppTaskPicList; + } + + public List<String> getUserIds() { + return userIds; + } + + public void setUserIds(List<String> userIds) { + this.userIds = userIds; + } + + public void setArdAppTaskPicList(List<ArdAppTaskPic> ardAppTaskPicList) + { + this.ardAppTaskPicList = ardAppTaskPicList; + } + + public void setId(String id) + { + this.id = id; + } + + public String getId() + { + return id; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setText(String text) + { + this.text = text; + } + + public String getText() + { + return text; + } + public void setVoice(String voice) + { + this.voice = voice; + } + + public String getVoice() + { + return voice; + } + public void setDeptId(Integer deptId) + { + this.deptId = deptId; + } + + public Integer getDeptId() + { + return deptId; + } + public void setUserId(String userId) + { + this.userId = userId; + } + + public String getUserId() + { + return userId; + } + + public List<ArdAppTaskDetail> getArdAppTaskDetailList() + { + return ardAppTaskDetailList; + } + + public void setArdAppTaskDetailList(List<ArdAppTaskDetail> ardAppTaskDetailList) + { + this.ardAppTaskDetailList = ardAppTaskDetailList; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("id", getId()) + .append("name", getName()) + .append("text", getText()) + .append("voice", getVoice()) + .append("deptId", getDeptId()) + .append("userId", getUserId()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("ardAppTaskDetailList", getArdAppTaskDetailList()) + .toString(); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskDetail.java b/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskDetail.java new file mode 100644 index 0000000..e52c535 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskDetail.java @@ -0,0 +1,149 @@ +package com.ruoyi.app.task.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * app浠诲姟璇︽儏瀵硅薄 ard_app_task_detail + * + * @author ard + * @date 2023-07-22 + */ +public class ArdAppTaskDetail extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** ID */ + private String id; + + /** 鍏磋叮鐐瑰悕绉� */ + @Excel(name = "鍏磋叮鐐瑰悕绉�") + private String name; + + /** 鍏磋叮鐐圭粡搴� */ + @Excel(name = "鍏磋叮鐐圭粡搴�") + private String longitude; + + /** 鍏磋叮鐐圭含搴� */ + @Excel(name = "鍏磋叮鐐圭含搴�") + private String latitude; + + /** 鍏磋叮鐐归珮灞� */ + @Excel(name = "鍏磋叮鐐归珮灞�") + private String altitude; + + /** 鍏宠仈鐢ㄦ埛ID */ + @Excel(name = "鍏宠仈鐢ㄦ埛ID") + private String userId; + + /** 鎵撳崱鏂囨湰 */ + @Excel(name = "鎵撳崱鏂囨湰") + private String text; + + /** 鎵撳崱璇煶 */ + @Excel(name = "鎵撳崱璇煶") + private String voice; + + /** 浠诲姟ID */ + @Excel(name = "浠诲姟ID") + private String taskId; + + public void setId(String id) + { + this.id = id; + } + + public String getId() + { + return id; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setLongitude(String longitude) + { + this.longitude = longitude; + } + + public String getLongitude() + { + return longitude; + } + public void setLatitude(String latitude) + { + this.latitude = latitude; + } + + public String getLatitude() + { + return latitude; + } + public void setAltitude(String altitude) + { + this.altitude = altitude; + } + + public String getAltitude() + { + return altitude; + } + public void setUserId(String userId) + { + this.userId = userId; + } + + public String getUserId() + { + return userId; + } + public void setText(String text) + { + this.text = text; + } + + public String getText() + { + return text; + } + public void setVoice(String voice) + { + this.voice = voice; + } + + public String getVoice() + { + return voice; + } + public void setTaskId(String taskId) + { + this.taskId = taskId; + } + + public String getTaskId() + { + return taskId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("name", getName()) + .append("longitude", getLongitude()) + .append("latitude", getLatitude()) + .append("altitude", getAltitude()) + .append("userId", getUserId()) + .append("text", getText()) + .append("voice", getVoice()) + .append("taskId", getTaskId()) + .toString(); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskPic.java b/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskPic.java new file mode 100644 index 0000000..b37e20e --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskPic.java @@ -0,0 +1,65 @@ +package com.ruoyi.app.task.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * app浠诲姟鍥剧墖瀵硅薄 ard_app_task_pic + * + * @author ard + * @date 2023-07-22 + */ +public class ArdAppTaskPic extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** ID */ + private String id; + + /** app浠诲姟ID */ + @Excel(name = "app浠诲姟ID") + private String taskId; + + /** app浠诲姟鍥剧墖url */ + @Excel(name = "app浠诲姟鍥剧墖url") + private String picUrl; + + public void setId(String id) + { + this.id = id; + } + + public String getId() + { + return id; + } + public void setTaskId(String taskId) + { + this.taskId = taskId; + } + + public String getTaskId() + { + return taskId; + } + public void setPicUrl(String picUrl) + { + this.picUrl = picUrl; + } + + public String getPicUrl() + { + return picUrl; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("taskId", getTaskId()) + .append("picUrl", getPicUrl()) + .toString(); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/app/task/mapper/ArdAppTaskMapper.java b/ard-work/src/main/java/com/ruoyi/app/task/mapper/ArdAppTaskMapper.java new file mode 100644 index 0000000..6869eb6 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/app/task/mapper/ArdAppTaskMapper.java @@ -0,0 +1,113 @@ +package com.ruoyi.app.task.mapper; + +import java.util.List; +import com.ruoyi.app.task.domain.ArdAppTask; +import com.ruoyi.app.task.domain.ArdAppTaskDetail; +import com.ruoyi.app.task.domain.ArdAppTaskPic; + +/** + * app浠诲姟绠$悊Mapper鎺ュ彛 + * + * @author ard + * @date 2023-07-22 + */ +public interface ArdAppTaskMapper +{ + /** + * 鏌ヨapp浠诲姟绠$悊 + * + * @param id app浠诲姟绠$悊涓婚敭 + * @return app浠诲姟绠$悊 + */ + public ArdAppTask selectArdAppTaskById(String id); + + /** + * 鏌ヨapp浠诲姟绠$悊鍒楄〃 + * + * @param ardAppTask app浠诲姟绠$悊 + * @return app浠诲姟绠$悊闆嗗悎 + */ + public List<ArdAppTask> selectArdAppTaskList(ArdAppTask ardAppTask); + + /** + * 鏂板app浠诲姟绠$悊 + * + * @param ardAppTask app浠诲姟绠$悊 + * @return 缁撴灉 + */ + public int insertArdAppTask(ArdAppTask ardAppTask); + + /** + * 淇敼app浠诲姟绠$悊 + * + * @param ardAppTask app浠诲姟绠$悊 + * @return 缁撴灉 + */ + public int updateArdAppTask(ArdAppTask ardAppTask); + + /** + * 鍒犻櫎app浠诲姟绠$悊 + * + * @param id app浠诲姟绠$悊涓婚敭 + * @return 缁撴灉 + */ + public int deleteArdAppTaskById(String id); + + /** + * 鎵归噺鍒犻櫎app浠诲姟绠$悊 + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎 + * @return 缁撴灉 + */ + public int deleteArdAppTaskByIds(String[] ids); + + /** + * 鎵归噺鍒犻櫎app浠诲姟鍥剧墖 + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎 + * @return 缁撴灉 + */ + public int deleteArdAppTaskPicByTaskIds(String[] ids); + + /** + * 鎵归噺鏂板app浠诲姟鍥剧墖 + * + * @param ardAppTaskPicList app浠诲姟鍥剧墖鍒楄〃 + * @return 缁撴灉 + */ + public int batchArdAppTaskPic(List<ArdAppTaskPic> ardAppTaskPicList); + + + /** + * 閫氳繃app浠诲姟绠$悊涓婚敭鍒犻櫎app浠诲姟鍥剧墖淇℃伅 + * + * @param id app浠诲姟绠$悊ID + * @return 缁撴灉 + */ + public int deleteArdAppTaskPicByTaskId(String id); + + /** + * 鎵归噺鍒犻櫎app浠诲姟璇︽儏 + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎 + * @return 缁撴灉 + */ + public int deleteArdAppTaskDetailByTaskIds(String[] ids); + + /** + * 鎵归噺鏂板app浠诲姟璇︽儏 + * + * @param ardAppTaskDetailList app浠诲姟璇︽儏鍒楄〃 + * @return 缁撴灉 + */ + public int batchArdAppTaskDetail(List<ArdAppTaskDetail> ardAppTaskDetailList); + + + /** + * 閫氳繃app浠诲姟绠$悊涓婚敭鍒犻櫎app浠诲姟璇︽儏淇℃伅 + * + * @param id app浠诲姟绠$悊ID + * @return 缁撴灉 + */ + public int deleteArdAppTaskDetailByTaskId(String id); +} diff --git a/ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java b/ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java new file mode 100644 index 0000000..03a72a4 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java @@ -0,0 +1,61 @@ +package com.ruoyi.app.task.service; + +import java.util.List; +import com.ruoyi.app.task.domain.ArdAppTask; + +/** + * app浠诲姟绠$悊Service鎺ュ彛 + * + * @author ard + * @date 2023-07-22 + */ +public interface IArdAppTaskService +{ + /** + * 鏌ヨapp浠诲姟绠$悊 + * + * @param id app浠诲姟绠$悊涓婚敭 + * @return app浠诲姟绠$悊 + */ + public ArdAppTask selectArdAppTaskById(String id); + + /** + * 鏌ヨapp浠诲姟绠$悊鍒楄〃 + * + * @param ardAppTask app浠诲姟绠$悊 + * @return app浠诲姟绠$悊闆嗗悎 + */ + public List<ArdAppTask> selectArdAppTaskList(ArdAppTask ardAppTask); + + /** + * 鏂板app浠诲姟绠$悊 + * + * @param ardAppTask app浠诲姟绠$悊 + * @return 缁撴灉 + */ + public int insertArdAppTask(ArdAppTask ardAppTask); + + /** + * 淇敼app浠诲姟绠$悊 + * + * @param ardAppTask app浠诲姟绠$悊 + * @return 缁撴灉 + */ + public int updateArdAppTask(ArdAppTask ardAppTask); + + /** + * 鎵归噺鍒犻櫎app浠诲姟绠$悊 + * + * @param ids 闇�瑕佸垹闄ょ殑app浠诲姟绠$悊涓婚敭闆嗗悎 + * @return 缁撴灉 + */ + public int deleteArdAppTaskByIds(String[] ids); + + /** + * 鍒犻櫎app浠诲姟绠$悊淇℃伅 + * + * @param id app浠诲姟绠$悊涓婚敭 + * @return 缁撴灉 + */ + public int deleteArdAppTaskById(String id); +} diff --git a/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java new file mode 100644 index 0000000..79c86b7 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java @@ -0,0 +1,190 @@ +package com.ruoyi.app.task.service.impl; + +import java.util.List; + +import com.ruoyi.app.task.domain.ArdAppTaskDetail; +import com.ruoyi.app.tasktext.domain.ArdAppTaskText; +import com.ruoyi.app.tasktext.mapper.ArdAppTaskTextMapper; +import com.ruoyi.common.annotation.DataScope; +import com.ruoyi.common.utils.DateUtils; + +import com.ruoyi.common.utils.uuid.IdUtils; +import com.ruoyi.common.utils.uuid.UUID; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.ArrayList; + +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.SecurityUtils; +import org.springframework.transaction.annotation.Transactional; +import com.ruoyi.app.task.domain.ArdAppTaskPic; +import com.ruoyi.app.task.mapper.ArdAppTaskMapper; +import com.ruoyi.app.task.domain.ArdAppTask; +import com.ruoyi.app.task.service.IArdAppTaskService; + +import javax.annotation.Resource; + +/** + * app浠诲姟绠$悊Service涓氬姟灞傚鐞� + * + * @author ard + * @date 2023-07-22 + */ +@Service +public class ArdAppTaskServiceImpl implements IArdAppTaskService { + @Resource + private ArdAppTaskMapper ardAppTaskMapper; + @Resource + private ArdAppTaskTextMapper ardAppTaskTextMapper; + /** + * 鏌ヨapp浠诲姟绠$悊 + * + * @param id app浠诲姟绠$悊涓婚敭 + * @return app浠诲姟绠$悊 + */ + @Override + public ArdAppTask selectArdAppTaskById(String id) { + return ardAppTaskMapper.selectArdAppTaskById(id); + } + + /** + * 鏌ヨapp浠诲姟绠$悊鍒楄〃 + * + * @param ardAppTask app浠诲姟绠$悊 + * @return app浠诲姟绠$悊 + */ + @Override + @DataScope(deptAlias = "d", userAlias = "u") + public List<ArdAppTask> selectArdAppTaskList(ArdAppTask ardAppTask) { + return ardAppTaskMapper.selectArdAppTaskList(ardAppTask); + } + + /** + * 鏂板app浠诲姟绠$悊 + * + * @param ardAppTask app浠诲姟绠$悊 + * @return 缁撴灉 + */ + @Transactional + @Override + public int insertArdAppTask(ArdAppTask ardAppTask) { + ardAppTask.setId(IdUtils.simpleUUID()); + ardAppTask.setUserId(SecurityUtils.getUserId()); + ardAppTask.setCreateBy(SecurityUtils.getUsername()); + ardAppTask.setCreateTime(DateUtils.getNowDate()); + int rows = ardAppTaskMapper.insertArdAppTask(ardAppTask); + insertArdAppTaskPic(ardAppTask); + insertArdAppTaskDetail(ardAppTask); + insertArdAppTaskText(ardAppTask); + return rows; + } + + /** + * 淇敼app浠诲姟绠$悊 + * + * @param ardAppTask app浠诲姟绠$悊 + * @return 缁撴灉 + */ + @Transactional + @Override + public int updateArdAppTask(ArdAppTask ardAppTask) { + ardAppTask.setUpdateBy(SecurityUtils.getUsername()); + ardAppTask.setUpdateTime(DateUtils.getNowDate()); + ardAppTaskMapper.deleteArdAppTaskPicByTaskId(ardAppTask.getId()); + ardAppTaskMapper.deleteArdAppTaskDetailByTaskId(ardAppTask.getId()); + insertArdAppTaskPic(ardAppTask); + insertArdAppTaskDetail(ardAppTask); + return ardAppTaskMapper.updateArdAppTask(ardAppTask); + } + + /** + * 鎵归噺鍒犻櫎app浠诲姟绠$悊 + * + * @param ids 闇�瑕佸垹闄ょ殑app浠诲姟绠$悊涓婚敭 + * @return 缁撴灉 + */ + @Transactional + @Override + public int deleteArdAppTaskByIds(String[] ids) { + ardAppTaskMapper.deleteArdAppTaskPicByTaskIds(ids); + return ardAppTaskMapper.deleteArdAppTaskByIds(ids); + } + + /** + * 鍒犻櫎app浠诲姟绠$悊淇℃伅 + * + * @param id app浠诲姟绠$悊涓婚敭 + * @return 缁撴灉 + */ + @Transactional + @Override + public int deleteArdAppTaskById(String id) { + ardAppTaskMapper.deleteArdAppTaskPicByTaskId(id); + return ardAppTaskMapper.deleteArdAppTaskById(id); + } + + /** + * 鏂板app浠诲姟鍥剧墖淇℃伅 + * + * @param ardAppTask app浠诲姟绠$悊瀵硅薄 + */ + public void insertArdAppTaskPic(ArdAppTask ardAppTask) { + List<ArdAppTaskPic> ardAppTaskPicList = ardAppTask.getArdAppTaskPicList(); + String id = ardAppTask.getId(); + if (StringUtils.isNotNull(ardAppTaskPicList)) { + List<ArdAppTaskPic> list = new ArrayList<ArdAppTaskPic>(); + for (ArdAppTaskPic ardAppTaskPic :ardAppTaskPicList) + { + ardAppTaskPic.setId(IdUtils.simpleUUID()); + ardAppTaskPic.setTaskId(id); + list.add(ardAppTaskPic); + } + if (list.size() > 0) { + ardAppTaskMapper.batchArdAppTaskPic(list); + } + } + } + + /** + * 鏂板app浠诲姟璇︽儏淇℃伅 + * + * @param ardAppTask app浠诲姟绠$悊瀵硅薄 + */ + public void insertArdAppTaskDetail(ArdAppTask ardAppTask) { + List<String> userIds = ardAppTask.getUserIds(); + for(String userId:userIds) { + List<ArdAppTaskDetail> ardAppTaskDetailList = ardAppTask.getArdAppTaskDetailList(); + String id = ardAppTask.getId(); + if (StringUtils.isNotNull(ardAppTaskDetailList)) { + List<ArdAppTaskDetail> list = new ArrayList<ArdAppTaskDetail>(); + for (ArdAppTaskDetail ardAppTaskDetail : ardAppTaskDetailList) { + ardAppTaskDetail.setId(IdUtils.simpleUUID()); + ardAppTaskDetail.setTaskId(id); + ardAppTaskDetail.setUserId(userId); + list.add(ardAppTaskDetail); + } + if (list.size() > 0) { + ardAppTaskMapper.batchArdAppTaskDetail(list); + } + } + } + } + /** + * 鏂板app浠诲姟鎻忚堪淇℃伅 + * + * @param ardAppTask app浠诲姟绠$悊瀵硅薄 + */ + public void insertArdAppTaskText(ArdAppTask ardAppTask) { + String userId = ardAppTask.getUserId(); + String text = ardAppTask.getText(); + ArdAppTaskText ardAppTaskText=new ArdAppTaskText(); + ardAppTaskText.setId(IdUtils.simpleUUID()); + ardAppTaskText.setUserId(userId); + ardAppTaskText.setText(text); + List<ArdAppTaskText> ardAppTaskTexts = ardAppTaskTextMapper.selectArdAppTaskTextList(ardAppTaskText); + if(ardAppTaskTexts.size()==0) + { + ardAppTaskTextMapper.insertArdAppTaskText(ardAppTaskText); + } + } +} diff --git a/ard-work/src/main/java/com/ruoyi/app/tasktext/controller/ArdAppTaskTextController.java b/ard-work/src/main/java/com/ruoyi/app/tasktext/controller/ArdAppTaskTextController.java new file mode 100644 index 0000000..70fd7b9 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/app/tasktext/controller/ArdAppTaskTextController.java @@ -0,0 +1,104 @@ +package com.ruoyi.app.tasktext.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.app.tasktext.domain.ArdAppTaskText; +import com.ruoyi.app.tasktext.service.IArdAppTaskTextService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * app浠诲姟鎻忚堪Controller + * + * @author ard + * @date 2023-07-22 + */ +@RestController +@RequestMapping("/task/text") +public class ArdAppTaskTextController extends BaseController +{ + @Autowired + private IArdAppTaskTextService ardAppTaskTextService; + + /** + * 鏌ヨapp浠诲姟鎻忚堪鍒楄〃 + */ + @PreAuthorize("@ss.hasPermi('task:text:list')") + @GetMapping("/list") + public TableDataInfo list(ArdAppTaskText ardAppTaskText) + { + startPage(); + List<ArdAppTaskText> list = ardAppTaskTextService.selectArdAppTaskTextList(ardAppTaskText); + return getDataTable(list); + } + + /** + * 瀵煎嚭app浠诲姟鎻忚堪鍒楄〃 + */ + @PreAuthorize("@ss.hasPermi('task:text:export')") + @Log(title = "app浠诲姟鎻忚堪", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ArdAppTaskText ardAppTaskText) + { + List<ArdAppTaskText> list = ardAppTaskTextService.selectArdAppTaskTextList(ardAppTaskText); + ExcelUtil<ArdAppTaskText> util = new ExcelUtil<ArdAppTaskText>(ArdAppTaskText.class); + util.exportExcel(response, list, "app浠诲姟鎻忚堪鏁版嵁"); + } + + /** + * 鑾峰彇app浠诲姟鎻忚堪璇︾粏淇℃伅 + */ + @PreAuthorize("@ss.hasPermi('task:text:query')") + @GetMapping(value = "/{userId}") + public AjaxResult getInfo(@PathVariable("userId") String userId) + { + return success(ardAppTaskTextService.selectArdAppTaskTextByUserId(userId)); + } + + /** + * 鏂板app浠诲姟鎻忚堪 + */ + @PreAuthorize("@ss.hasPermi('task:text:add')") + @Log(title = "app浠诲姟鎻忚堪", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ArdAppTaskText ardAppTaskText) + { + return toAjax(ardAppTaskTextService.insertArdAppTaskText(ardAppTaskText)); + } + + /** + * 淇敼app浠诲姟鎻忚堪 + */ + @PreAuthorize("@ss.hasPermi('task:text:edit')") + @Log(title = "app浠诲姟鎻忚堪", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ArdAppTaskText ardAppTaskText) + { + return toAjax(ardAppTaskTextService.updateArdAppTaskText(ardAppTaskText)); + } + + /** + * 鍒犻櫎app浠诲姟鎻忚堪 + */ + @PreAuthorize("@ss.hasPermi('task:text:remove')") + @Log(title = "app浠诲姟鎻忚堪", businessType = BusinessType.DELETE) + @DeleteMapping("/{userIds}") + public AjaxResult remove(@PathVariable String[] userIds) + { + return toAjax(ardAppTaskTextService.deleteArdAppTaskTextByUserIds(userIds)); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/app/tasktext/domain/ArdAppTaskText.java b/ard-work/src/main/java/com/ruoyi/app/tasktext/domain/ArdAppTaskText.java new file mode 100644 index 0000000..fc75e3e --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/app/tasktext/domain/ArdAppTaskText.java @@ -0,0 +1,65 @@ +package com.ruoyi.app.tasktext.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * app浠诲姟鎻忚堪瀵硅薄 ard_app_task_text + * + * @author ard + * @date 2023-07-22 + */ +public class ArdAppTaskText extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 鐢ㄦ埛ID */ + @Excel(name = "鐢ㄦ埛ID") + private String userId; + + /** app浠诲姟鎻忚堪 */ + @Excel(name = "app浠诲姟鎻忚堪") + private String text; + + /** ID */ + private String id; + + public void setUserId(String userId) + { + this.userId = userId; + } + + public String getUserId() + { + return userId; + } + public void setText(String text) + { + this.text = text; + } + + public String getText() + { + return text; + } + public void setId(String id) + { + this.id = id; + } + + public String getId() + { + return id; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("userId", getUserId()) + .append("text", getText()) + .append("id", getId()) + .toString(); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/app/tasktext/mapper/ArdAppTaskTextMapper.java b/ard-work/src/main/java/com/ruoyi/app/tasktext/mapper/ArdAppTaskTextMapper.java new file mode 100644 index 0000000..bba0652 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/app/tasktext/mapper/ArdAppTaskTextMapper.java @@ -0,0 +1,61 @@ +package com.ruoyi.app.tasktext.mapper; + +import java.util.List; +import com.ruoyi.app.tasktext.domain.ArdAppTaskText; + +/** + * app浠诲姟鎻忚堪Mapper鎺ュ彛 + * + * @author ard + * @date 2023-07-22 + */ +public interface ArdAppTaskTextMapper +{ + /** + * 鏌ヨapp浠诲姟鎻忚堪 + * + * @param userId app浠诲姟鎻忚堪涓婚敭 + * @return app浠诲姟鎻忚堪 + */ + public ArdAppTaskText selectArdAppTaskTextByUserId(String userId); + + /** + * 鏌ヨapp浠诲姟鎻忚堪鍒楄〃 + * + * @param ardAppTaskText app浠诲姟鎻忚堪 + * @return app浠诲姟鎻忚堪闆嗗悎 + */ + public List<ArdAppTaskText> selectArdAppTaskTextList(ArdAppTaskText ardAppTaskText); + + /** + * 鏂板app浠诲姟鎻忚堪 + * + * @param ardAppTaskText app浠诲姟鎻忚堪 + * @return 缁撴灉 + */ + public int insertArdAppTaskText(ArdAppTaskText ardAppTaskText); + + /** + * 淇敼app浠诲姟鎻忚堪 + * + * @param ardAppTaskText app浠诲姟鎻忚堪 + * @return 缁撴灉 + */ + public int updateArdAppTaskText(ArdAppTaskText ardAppTaskText); + + /** + * 鍒犻櫎app浠诲姟鎻忚堪 + * + * @param userId app浠诲姟鎻忚堪涓婚敭 + * @return 缁撴灉 + */ + public int deleteArdAppTaskTextByUserId(String userId); + + /** + * 鎵归噺鍒犻櫎app浠诲姟鎻忚堪 + * + * @param userIds 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎 + * @return 缁撴灉 + */ + public int deleteArdAppTaskTextByUserIds(String[] userIds); +} diff --git a/ard-work/src/main/java/com/ruoyi/app/tasktext/service/IArdAppTaskTextService.java b/ard-work/src/main/java/com/ruoyi/app/tasktext/service/IArdAppTaskTextService.java new file mode 100644 index 0000000..45f3f49 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/app/tasktext/service/IArdAppTaskTextService.java @@ -0,0 +1,61 @@ +package com.ruoyi.app.tasktext.service; + +import java.util.List; +import com.ruoyi.app.tasktext.domain.ArdAppTaskText; + +/** + * app浠诲姟鎻忚堪Service鎺ュ彛 + * + * @author ard + * @date 2023-07-22 + */ +public interface IArdAppTaskTextService +{ + /** + * 鏌ヨapp浠诲姟鎻忚堪 + * + * @param userId app浠诲姟鎻忚堪涓婚敭 + * @return app浠诲姟鎻忚堪 + */ + public ArdAppTaskText selectArdAppTaskTextByUserId(String userId); + + /** + * 鏌ヨapp浠诲姟鎻忚堪鍒楄〃 + * + * @param ardAppTaskText app浠诲姟鎻忚堪 + * @return app浠诲姟鎻忚堪闆嗗悎 + */ + public List<ArdAppTaskText> selectArdAppTaskTextList(ArdAppTaskText ardAppTaskText); + + /** + * 鏂板app浠诲姟鎻忚堪 + * + * @param ardAppTaskText app浠诲姟鎻忚堪 + * @return 缁撴灉 + */ + public int insertArdAppTaskText(ArdAppTaskText ardAppTaskText); + + /** + * 淇敼app浠诲姟鎻忚堪 + * + * @param ardAppTaskText app浠诲姟鎻忚堪 + * @return 缁撴灉 + */ + public int updateArdAppTaskText(ArdAppTaskText ardAppTaskText); + + /** + * 鎵归噺鍒犻櫎app浠诲姟鎻忚堪 + * + * @param userIds 闇�瑕佸垹闄ょ殑app浠诲姟鎻忚堪涓婚敭闆嗗悎 + * @return 缁撴灉 + */ + public int deleteArdAppTaskTextByUserIds(String[] userIds); + + /** + * 鍒犻櫎app浠诲姟鎻忚堪淇℃伅 + * + * @param userId app浠诲姟鎻忚堪涓婚敭 + * @return 缁撴灉 + */ + public int deleteArdAppTaskTextByUserId(String userId); +} diff --git a/ard-work/src/main/java/com/ruoyi/app/tasktext/service/impl/ArdAppTaskTextServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/tasktext/service/impl/ArdAppTaskTextServiceImpl.java new file mode 100644 index 0000000..97e94d4 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/app/tasktext/service/impl/ArdAppTaskTextServiceImpl.java @@ -0,0 +1,89 @@ +package com.ruoyi.app.tasktext.service.impl; + +import java.util.List; + +import com.ruoyi.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.app.tasktext.mapper.ArdAppTaskTextMapper; +import com.ruoyi.app.tasktext.domain.ArdAppTaskText; +import com.ruoyi.app.tasktext.service.IArdAppTaskTextService; + +/** + * app浠诲姟鎻忚堪Service涓氬姟灞傚鐞� + * + * @author ard + * @date 2023-07-22 + */ +@Service +public class ArdAppTaskTextServiceImpl implements IArdAppTaskTextService { + @Autowired + private ArdAppTaskTextMapper ardAppTaskTextMapper; + + /** + * 鏌ヨapp浠诲姟鎻忚堪 + * + * @param userId app浠诲姟鎻忚堪涓婚敭 + * @return app浠诲姟鎻忚堪 + */ + @Override + public ArdAppTaskText selectArdAppTaskTextByUserId(String userId) { + return ardAppTaskTextMapper.selectArdAppTaskTextByUserId(userId); + } + + /** + * 鏌ヨapp浠诲姟鎻忚堪鍒楄〃 + * + * @param ardAppTaskText app浠诲姟鎻忚堪 + * @return app浠诲姟鎻忚堪 + */ + @Override + public List<ArdAppTaskText> selectArdAppTaskTextList(ArdAppTaskText ardAppTaskText) { + return ardAppTaskTextMapper.selectArdAppTaskTextList(ardAppTaskText); + } + + /** + * 鏂板app浠诲姟鎻忚堪 + * + * @param ardAppTaskText app浠诲姟鎻忚堪 + * @return 缁撴灉 + */ + @Override + public int insertArdAppTaskText(ArdAppTaskText ardAppTaskText) { + ardAppTaskText.setUserId(SecurityUtils.getUserId()); + return ardAppTaskTextMapper.insertArdAppTaskText(ardAppTaskText); + } + + /** + * 淇敼app浠诲姟鎻忚堪 + * + * @param ardAppTaskText app浠诲姟鎻忚堪 + * @return 缁撴灉 + */ + @Override + public int updateArdAppTaskText(ArdAppTaskText ardAppTaskText) { + return ardAppTaskTextMapper.updateArdAppTaskText(ardAppTaskText); + } + + /** + * 鎵归噺鍒犻櫎app浠诲姟鎻忚堪 + * + * @param userIds 闇�瑕佸垹闄ょ殑app浠诲姟鎻忚堪涓婚敭 + * @return 缁撴灉 + */ + @Override + public int deleteArdAppTaskTextByUserIds(String[] userIds) { + return ardAppTaskTextMapper.deleteArdAppTaskTextByUserIds(userIds); + } + + /** + * 鍒犻櫎app浠诲姟鎻忚堪淇℃伅 + * + * @param userId app浠诲姟鎻忚堪涓婚敭 + * @return 缁撴灉 + */ + @Override + public int deleteArdAppTaskTextByUserId(String userId) { + return ardAppTaskTextMapper.deleteArdAppTaskTextByUserId(userId); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java index 81fa418..85f91d9 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java @@ -10,6 +10,7 @@ import io.minio.messages.Item; import lombok.extern.slf4j.Slf4j; import org.springframework.web.multipart.MultipartFile; + import java.io.*; import java.util.*; import java.util.concurrent.TimeUnit; @@ -151,15 +152,14 @@ boolean exsit = exitsBucket(bucketName); if (!exsit) { boolean bucket = createBucket(bucketName); - if(bucket) - { + if (bucket) { log.info(bucketName + "-妗朵笉瀛樺湪,鎴愬姛鍒涘缓妗�"); } } //鏂囦欢鍚� String originalFilename = file.getOriginalFilename(); //鏂扮殑鏂囦欢鍚� - String fileName = IdUtils.fastSimpleUUID()+"_"+ originalFilename; + String fileName = IdUtils.fastSimpleUUID() + "_" + originalFilename; try { InputStream inputStream = file.getInputStream(); /*涓婁紶瀵硅薄*/ @@ -180,7 +180,59 @@ .method(Method.GET) .build(); String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); - String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); + String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); + return ObjectUrl; + } catch (Exception ex) { + log.error("涓婁紶瀵硅薄杩斿洖url寮傚父锛�" + ex.getMessage()); + } + return ""; + } + + /** + * @鎻忚堪 涓婁紶MultipartFile鏂囦欢杩斿洖url + * @鍙傛暟 [bucketName, file] + * @杩斿洖鍊� java.lang.String + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/5/18 12:16 + * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + public static String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) { + //鍒ゆ柇鏂囦欢鏄惁涓虹┖ + if (null == file || 0 == file.getSize()) { + log.error("涓婁紶minio鏂囦欢鏈嶅姟鍣ㄩ敊璇紝涓婁紶鏂囦欢涓虹┖"); + } + boolean exsit = exitsBucket(bucketName); + if (!exsit) { + boolean bucket = createBucket(bucketName); + if (bucket) { + log.info(bucketName + "-妗朵笉瀛樺湪,鎴愬姛鍒涘缓妗�"); + } + } + //鏂囦欢鍚� + String originalFilename = file.getOriginalFilename(); + //鏂扮殑鏂囦欢鍚� + String fileName = folder + "/" + IdUtils.fastSimpleUUID() + "_" + originalFilename; + try { + InputStream inputStream = file.getInputStream(); + /*涓婁紶瀵硅薄*/ + PutObjectArgs putObjectArgs = PutObjectArgs + .builder() + .bucket(bucketName) + .object(fileName) + .stream(inputStream, file.getSize(), -1) + .contentType(file.getContentType()) + .build(); + MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + inputStream.close(); + /*鑾峰彇url*/ + GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs + .builder() + .bucket(bucketName) + .object(fileName) + .method(Method.GET) + .build(); + String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); return ObjectUrl; } catch (Exception ex) { log.error("涓婁紶瀵硅薄杩斿洖url寮傚父锛�" + ex.getMessage()); @@ -435,14 +487,14 @@ } /** - *@鎻忚堪 鑾峰彇妗朵腑鎵�鏈夊璞� - *@鍙傛暟 [bucketName] - *@杩斿洖鍊� java.lang.Iterable<io.minio.Result<io.minio.messages.Item>> - *@鍒涘缓浜� 鍒樿嫃涔� - *@鍒涘缓鏃堕棿 2023/2/6 10:32 - *@淇敼浜哄拰鍏跺畠淇℃伅 + * @鎻忚堪 鑾峰彇妗朵腑鎵�鏈夊璞� + * @鍙傛暟 [bucketName] + * @杩斿洖鍊� java.lang.Iterable<io.minio.Result < io.minio.messages.Item>> + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/2/6 10:32 + * @淇敼浜哄拰鍏跺畠淇℃伅 */ - public static Iterable<Result<Item>> getObjectsByBucket(String bucketName) { + public static Iterable<Result<Item>> getObjectsByBucket(String bucketName) { Iterable<Result<Item>> listObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder() .bucket(bucketName) .recursive(true) diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java index 9a417f4..b28201b 100644 --- a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java +++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java @@ -59,7 +59,7 @@ @Override public String addPath(String name, String rtspPath, String mode) { - String rtspUrl = "rtsp://" + mediamtxHost + ":8554/"; + String rtspUrl = "rtsp://" + mediamtxHost + ":7554/"; Conf mediaInfo = new Conf(); //-vcodec libx264 //鎸囧畾瑙嗛缂栫爜鍣ㄤ负 libx264锛屼娇鐢� H.264 缂栫爜鏍煎紡杩涜瑙嗛鍘嬬缉 //-preset ultrafast //--preset鐨勫弬鏁颁富瑕佽皟鑺傜紪鐮侀�熷害鍜岃川閲忕殑骞宠 锛屾湁ultrafast锛堣浆鐮侀�熷害鏈�蹇紝瑙嗛寰�寰�涔熸渶妯$硦锛夈�乻uperfast銆乿eryfast銆乫aster銆乫ast銆乵edium銆乻low銆乻lower銆乿eryslow銆乸lacebo杩�10涓�夐」锛屼粠蹇埌鎱� @@ -223,7 +223,7 @@ String name = item.getName(); info.setName(name); //RTSP鎾斁鍦板潃 - String rtspUrl = "rtsp://" + mediamtxHost + ":8554/" + name; + String rtspUrl = "rtsp://" + mediamtxHost + ":7554/" + name; info.setRtspUrl(rtspUrl); Source source = item.getSource(); if (source == null) { diff --git a/ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java b/ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java index 1fd77d9..fd62a92 100644 --- a/ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java +++ b/ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java @@ -38,13 +38,7 @@ return AjaxResult.success(token); } - @PostMapping("/uploadPic") - @ApiOperation("涓婁紶鐢ㄦ埛澶村儚") - public AjaxResult uploadPic(MultipartFile file) - { - String url = MinioUtils.putObjectAndGetUrl("useravatar", file); - return AjaxResult.success(url); - } + @PostMapping("/checkOnline") @ApiOperation("鏌ヨ鐢ㄦ埛鍦ㄧ嚎鐘舵��") diff --git a/ard-work/src/main/java/com/ruoyi/rongcloud/service/Impl/RongCloudServiceImpl.java b/ard-work/src/main/java/com/ruoyi/rongcloud/service/Impl/RongCloudServiceImpl.java index fa55088..1666afa 100644 --- a/ard-work/src/main/java/com/ruoyi/rongcloud/service/Impl/RongCloudServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/rongcloud/service/Impl/RongCloudServiceImpl.java @@ -67,6 +67,18 @@ return onlineMap; } + @Override + public Boolean checkOnline(String userId) { + RongCloudParam param = new RongCloudParam(); + param.setUserId(userId); + Map isOnline = rongCloudClient.checkOnline(getRongCloudHead(), param); + if (isOnline.get("status").equals("1")) { + return true; + } else { + return false; + } + } + /** * 鑾峰彇铻嶄簯绛惧悕淇℃伅 */ @@ -76,11 +88,11 @@ String nonce = RandomStringUtils.randomNumeric(18); String timestamp = String.valueOf(new Date().getTime()); String signature = DigestUtils.sha1Hex(appSecret + nonce + timestamp);//App Secret + Nonce + T - Map<String, Object> headerMap=new HashMap<>(); - headerMap.put("App-Key",appKey); - headerMap.put("Nonce",nonce); - headerMap.put("Timestamp",timestamp); - headerMap.put("Signature",signature); + Map<String, Object> headerMap = new HashMap<>(); + headerMap.put("App-Key", appKey); + headerMap.put("Nonce", nonce); + headerMap.put("Timestamp", timestamp); + headerMap.put("Signature", signature); return headerMap; } } diff --git a/ard-work/src/main/java/com/ruoyi/rongcloud/service/RongCloudService.java b/ard-work/src/main/java/com/ruoyi/rongcloud/service/RongCloudService.java index 1cdeac8..3d40277 100644 --- a/ard-work/src/main/java/com/ruoyi/rongcloud/service/RongCloudService.java +++ b/ard-work/src/main/java/com/ruoyi/rongcloud/service/RongCloudService.java @@ -14,4 +14,5 @@ String getToken(String userId,String name); Map checkOnline(List<String>userIds); + Boolean checkOnline(String userId); } diff --git a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java index b598ce0..d18f016 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java +++ b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java @@ -2,6 +2,9 @@ import java.text.Collator; import java.util.*; +import java.util.*; +import javax.annotation.PostConstruct; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson2.JSON; @@ -10,9 +13,12 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.sy.domain.ArdSyUser; +import com.ruoyi.sy.gps31.PushClientImplPosition; import com.ruoyi.sy.service.IArdSyUserService; import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.service.ISysConfigService; +import com.ruoyi.system.service.ISysDeptService; +import com.ruoyi.system.service.ISysUserService; import com.ruoyi.utils.httpclient.SYCarClient; import com.ruoyi.utils.result.Results; import io.swagger.annotations.Api; @@ -29,6 +35,8 @@ import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; import org.springframework.web.multipart.MultipartFile; + +import static com.ruoyi.common.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS; /** * 涓変竴杞﹁締Controller @@ -54,6 +62,40 @@ private IArdSyUserService iArdSyUserService; + private ArdSyCarController ardSyCarController; + + @PostConstruct + public void init(){ + ardSyCarController = this; + ardSyCarController.sysConfigService = this.sysConfigService; + ardSyCarController.iArdSyUserService = this.iArdSyUserService; + + SysConfig config = new SysConfig(); + config.setConfigKey("syCarPT"); + List<SysConfig> sysConfigResult = sysConfigService.selectConfigList(config); + String syURL = ""; + if(sysConfigResult.size() == 0){ + return; + }else{ + syURL = sysConfigResult.get(0).getConfigValue(); + } + String ip = syURL.split(":")[1].replace("//", ""); + List<ArdSyUser> ardSyUserList = iArdSyUserService.selectSyUser(); + //杞﹁締瀹炴椂浣嶇疆绾跨▼ + PushClientImplPosition pushClientImplPosition = new PushClientImplPosition(ip,ardSyUserList.get(0).getUserId(),ardSyUserList.get(0).getPassword()); + Thread pushClientImplPositionThread = new Thread(pushClientImplPosition); + pushClientImplPositionThread.start(); + + Date date = new Date(); + Timer carPositionTimer = new Timer();//瀹氭椂鎺ㄩ�佸疄鏃朵綅缃� + TimerTask carPositionTask =new TimerTask(){ + public void run(){ + ardSyCarService.sendArdSyCarPosition(); + } + }; + carPositionTimer.scheduleAtFixedRate(carPositionTask,date,3*1000);//鍚敤 + } + /** * 鏌ヨ涓変竴杞﹁締鍒楄〃 */ diff --git a/ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java b/ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java new file mode 100644 index 0000000..ac30783 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java @@ -0,0 +1,19 @@ +package com.ruoyi.sy.gps31; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class PositionContainer { + + private static Map<String, Map<String,Map<String,Object>>> deptPositionMap = new HashMap();//渚濋儴闂ㄥ瓨鏀惧疄鏂借溅杈嗕綅缃�:deptId锛宑arId锛岃溅杈嗕綅缃� + + public static Map<String, Map<String, Map<String,Object>>> getDeptPositionMap() { + return deptPositionMap; + } + + public static void setDeptPositionMap(Map<String, Map<String, Map<String,Object>>> deptPositionMap) { + PositionContainer.deptPositionMap = deptPositionMap; + } + +} diff --git a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImpl.java b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImpl.java new file mode 100644 index 0000000..ba6bc30 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImpl.java @@ -0,0 +1,109 @@ +/** + * <p>Description: </p> + * <p>Copyright: Copyright (c) 2020</p> + * <p>Company: www.31gps.net</p> + * @author chencq + * @version 1.0 + */ +package com.ruoyi.sy.gps31; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import com.alibaba.fastjson2.JSON; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import com.gps31.push.netty.PushClient; +import com.gps31.push.netty.PushMsg; +import com.gps31.push.netty.client.TcpClient; +import com.gps31.push.util.MapUtil; +/** + * <p>Description: </p> + * <p>Copyright: Copyright (c) 2020</p> + * <p>Company: www.31gps.net</p> + * @author chencq + * @version 1.0 + */ +public class PushClientImpl extends PushClient{ + private static final Log log = LogFactory.getLog(PushClientImpl.class); + + @Override + public void messageReceived(TcpClient tcpClient, PushMsg pushMsg) + throws Exception { + if("8001".equals(pushMsg.getCmd())) {//鐧诲綍搴旂瓟 + String rspResult = MapUtil.getStrVal(pushMsg.getJsonMap(),"rspResult","1"); + if("0".equals(rspResult)) {//鐧诲綍鎴愬姛锛屽畾闃呭姩鎬佹秷鎭� + Map<String,Object> map = new HashMap<String,Object>(); + map.put("seq", "1"); + map.put("action", "add"); + map.put("msgIds", JSON.toJSONString(getSubCmdSet())); + PushMsg subMsg = getInstance("0003",map); + sendMsg(subMsg); + } + }else if("8002".equals(pushMsg.getCmd())){//蹇冭烦搴旂瓟 + + }else if("8003".equals(pushMsg.getCmd())){//璁㈤槄鍔ㄦ�佹秷鎭簲绛� + String rspResult = MapUtil.getStrVal(pushMsg.getJsonMap(),"rspResult","1"); + log.error(String.format(" 璁㈤槄搴旂瓟:%s", "0".equals(rspResult)?"鎴愬姛":"澶辫触")); + }else if("0200".equals(pushMsg.getCmd())) {//瀹氫綅淇℃伅 + Map<String,Object> gpsMap = pushMsg.getJsonMap(); + String carName = MapUtil.getStrVal(gpsMap, "carName","");//鑾峰彇杞︾墝鍙� + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + System.out.println(sdf.format(new Date())); + log.error(String.format(" ---->鏀跺埌瀹氫綅鏁版嵁:%s",JSON.toJSONString(gpsMap))); + /** + * + * 璇峰姞鍏ヤ笁鏂归泦鎴愭柟鐨勪笟鍔¢�昏緫 + * + */ + }else if("0300".equals(pushMsg.getCmd())) {//鎶ヨ娑堟伅 + Map<String,Object> alarmMap = pushMsg.getJsonMap(); + String carName = MapUtil.getStrVal(alarmMap, "carName","");//鑾峰彇杞︾墝鍙� + log.error(String.format(" ---->鏀跺埌鎶ヨ鏁版嵁:%s",JSON.toJSONString(alarmMap))); + /** + * + * 璇峰姞鍏ヤ笁鏂归泦鎴愭柟鐨勪笟鍔¢�昏緫 + * + */ + }else if("0401".equals(pushMsg.getCmd())) {//閫忎紶娑堟伅 + Map<String,Object> dataMap = pushMsg.getJsonMap(); + String carName = MapUtil.getStrVal(dataMap, "carName","");//鑾峰彇杞︾墝鍙� + log.error(String.format(" ---->鏀跺埌閫忎紶鏁版嵁:%s",JSON.toJSONString(dataMap))); + /** + * + * 璇峰姞鍏ヤ笁鏂归泦鎴愭柟鐨勪笟鍔¢�昏緫 + * + */ + } + } + + public static void main(String[] args) { + try { + PushClientImpl client = new PushClientImpl(); + client.setLog(true);//鏄惁鎵撳嵃鏄庢枃 + //client.setLogBytes(true);//鏄惁鎵撳嵃缃戠粶瀛楄妭娴� + //client.setHost("106.14.186.44");//鏈嶅姟鍣↖P + client.setHost("116.182.15.14");//鏈嶅姟鍣↖P + client.setPort(10100);//鏈嶅姟鍣ㄧ鍙� + //client.setUserName("ys_admin");//绯荤粺鐢ㄦ埛鍚� + //client.setPwd("123456");//绯荤粺鐢ㄦ埛瀵嗙爜 + //client.setUserName("admin_dqard");//绯荤粺鐢ㄦ埛鍚� + //client.setUserName("dqard");//绯荤粺鐢ㄦ埛鍚� + //client.setPwd("123456");//绯荤粺鐢ㄦ埛瀵嗙爜 + client.setUserName("admin");//绯荤粺鐢ㄦ埛鍚� + client.setPwd("654321");//绯荤粺鐢ㄦ埛瀵嗙爜 + //client.setSubMsgIds("0200|0300");//璁㈤槄鐨勫姩鎬佹秷鎭紝澶氫釜鍔ㄦ�佹秷鎭娇鐢▅杈熷垎锛屽綋鍓嶇ず渚嬫槸璁㈤槄 瀹氫綅娑堟伅(0x0200)鍜屾姤璀︽秷鎭�(0x0300) + client.setSubMsgIds("0200");//璁㈤槄鐨勫姩鎬佹秷鎭紝澶氫釜鍔ㄦ�佹秷鎭娇鐢▅杈熷垎锛屽綋鍓嶇ず渚嬫槸璁㈤槄 瀹氫綅娑堟伅(0x0200)鍜屾姤璀︽秷鎭�(0x0300) + client.setDesc("娴嬭瘯瀹㈡埛绔�");//瀹㈡埛绔殑鎻忚堪锛� + client.start(); + while(true) { + Thread.sleep(1000); + } + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java new file mode 100644 index 0000000..a08974d --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java @@ -0,0 +1,160 @@ +/** + * <p>Description: </p> + * <p>Copyright: Copyright (c) 2020</p> + * <p>Company: www.31gps.net</p> + * @author chencq + * @version 1.0 + */ +package com.ruoyi.sy.gps31; + +import com.alibaba.fastjson2.JSON; +import com.gps31.push.netty.PushClient; +import com.gps31.push.netty.PushMsg; +import com.gps31.push.netty.client.TcpClient; +import com.gps31.push.util.MapUtil; +import com.ruoyi.common.utils.spring.SpringUtils; +import com.ruoyi.sy.service.impl.ArdSyCarServiceImpl; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * <p>Description: </p> + * <p>Copyright: Copyright (c) 2020</p> + * <p>Company: www.31gps.net</p> + * @author chencq + * @version 1.0 + */ +public class PushClientImplPosition extends PushClient implements Runnable { + + private static final Log log = LogFactory.getLog(PushClientImplPosition.class); + + private String ip; + + private String userId; + + private String password; + + public PushClientImplPosition(String ip, String userId, String password) { + this.ip = ip; + this.userId = userId; + this.password = password; + } + + public PushClientImplPosition() { + + } + + @Override + public void messageReceived(TcpClient tcpClient, PushMsg pushMsg) + throws Exception { + if("8001".equals(pushMsg.getCmd())) {//鐧诲綍搴旂瓟 + String rspResult = MapUtil.getStrVal(pushMsg.getJsonMap(),"rspResult","1"); + if("0".equals(rspResult)) {//鐧诲綍鎴愬姛锛屽畾闃呭姩鎬佹秷鎭� + Map<String,Object> map = new HashMap<String,Object>(); + map.put("seq", "1"); + map.put("action", "add"); + map.put("msgIds", JSON.toJSONString(getSubCmdSet())); + PushMsg subMsg = getInstance("0003",map); + sendMsg(subMsg); + } + }else if("8002".equals(pushMsg.getCmd())){//蹇冭烦搴旂瓟 + + }else if("8003".equals(pushMsg.getCmd())){//璁㈤槄鍔ㄦ�佹秷鎭簲绛� + String rspResult = MapUtil.getStrVal(pushMsg.getJsonMap(),"rspResult","1"); + //log.error(String.format(" 璁㈤槄搴旂瓟:%s", "0".equals(rspResult)?"鎴愬姛":"澶辫触")); + }else if("0200".equals(pushMsg.getCmd())) {//瀹氫綅淇℃伅 + Map<String,Object> gpsMap = pushMsg.getJsonMap(); + /*String carName = MapUtil.getStrVal(gpsMap, "carName","");//鑾峰彇杞︾墝鍙� + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + System.out.println(sdf.format(new Date())); + log.error(String.format(" ---->鏀跺埌瀹氫綅鏁版嵁:%s",JSON.toJSONString(gpsMap)));*/ + String carId = (String)gpsMap.get("carId"); + Map<String,Object> result = ((ArdSyCarServiceImpl)SpringUtils.getBean("ardSyCarServiceImpl")).getArdSyCarAndDeptByCarId(carId);//鏌ヨ杞﹁締鍙婇儴闂� + if(result != null){ + gpsMap.putAll(result); + String ancestors = (String) gpsMap.get("ancestors");//鑾峰彇鐖剁骇閮ㄩ棬 + String[] ancestorsArray = ancestors.split(","); + if(ancestorsArray.length == 1){//鏈�楂樼骇閮ㄩ棬 + String deptId = String.valueOf(gpsMap.get("deptId")); + Map<String,Map<String,Object>> deptMap = PositionContainer.getDeptPositionMap().get(deptId); + if(deptMap == null){ + deptMap = new HashMap(); + } + deptMap.put((String)gpsMap.get("carId"),gpsMap);//棣栨鍔犲叆瀹瑰櫒锛屽啀娆″幓閲� + PositionContainer.getDeptPositionMap().put(deptId,deptMap); + }else{ + //鍔犲叆鏈儴闂ㄥ鍣� + String deptId = String.valueOf(gpsMap.get("deptId")); + Map<String,Map<String,Object>> deptMap = PositionContainer.getDeptPositionMap().get(deptId); + if(deptMap == null){ + deptMap = new HashMap(); + } + deptMap.put((String)gpsMap.get("carId"),gpsMap);//棣栨鍔犲叆瀹瑰櫒锛屽啀娆″幓閲� + PositionContainer.getDeptPositionMap().put(deptId,deptMap); + //鍔犲叆鐖剁骇閮ㄩ棬瀹瑰櫒 + for(int i = 1;i <= ancestorsArray.length - 1;i++){ + String deptIdp = String.valueOf(gpsMap.get(ancestorsArray[i])); + Map<String,Map<String,Object>> deptMapp = PositionContainer.getDeptPositionMap().get(deptIdp); + if(deptMapp == null){ + deptMapp = new HashMap(); + } + deptMapp.put((String)gpsMap.get("carId"),gpsMap);//棣栨鍔犲叆瀹瑰櫒锛屽啀娆″幓閲� + PositionContainer.getDeptPositionMap().put(deptIdp,deptMap); + } + } + } + /** + * + * 璇峰姞鍏ヤ笁鏂归泦鎴愭柟鐨勪笟鍔¢�昏緫 + * + */ + }else if("0300".equals(pushMsg.getCmd())) {//鎶ヨ娑堟伅 + Map<String,Object> alarmMap = pushMsg.getJsonMap(); + String carName = MapUtil.getStrVal(alarmMap, "carName","");//鑾峰彇杞︾墝鍙� + //log.error(String.format(" ---->鏀跺埌鎶ヨ鏁版嵁:%s",JSON.toJSONString(alarmMap))); + /** + * + * 璇峰姞鍏ヤ笁鏂归泦鎴愭柟鐨勪笟鍔¢�昏緫 + * + */ + }else if("0401".equals(pushMsg.getCmd())) {//閫忎紶娑堟伅 + Map<String,Object> dataMap = pushMsg.getJsonMap(); + String carName = MapUtil.getStrVal(dataMap, "carName","");//鑾峰彇杞︾墝鍙� + //log.error(String.format(" ---->鏀跺埌閫忎紶鏁版嵁:%s",JSON.toJSONString(dataMap))); + /** + * + * 璇峰姞鍏ヤ笁鏂归泦鎴愭柟鐨勪笟鍔¢�昏緫 + * + */ + } + } + + public void sendMassage() { + try { + PushClientImplPosition client = new PushClientImplPosition(); + client.setLog(false);//鏄惁鎵撳嵃鏄庢枃 + client.setHost(this.ip);//鏈嶅姟鍣↖P + client.setPort(10100);//鏈嶅姟鍣ㄧ鍙� + client.setUserName(this.userId);//绯荤粺鐢ㄦ埛鍚� + client.setPwd(this.password);//绯荤粺鐢ㄦ埛瀵嗙爜 + client.setSubMsgIds("0200");//璁㈤槄鐨勫姩鎬佹秷鎭紝澶氫釜鍔ㄦ�佹秷鎭娇鐢▅杈熷垎锛屽綋鍓嶇ず渚嬫槸璁㈤槄 瀹氫綅娑堟伅(0x0200)鍜屾姤璀︽秷鎭�(0x0300) + client.setDesc("娴嬭瘯瀹㈡埛绔�");//瀹㈡埛绔殑鎻忚堪锛� + client.start(); + while(true) { + Thread.sleep(1000); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void run() { + sendMassage(); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyCarMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyCarMapper.java index 77c169d..d5ea855 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyCarMapper.java +++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyCarMapper.java @@ -1,6 +1,8 @@ package com.ruoyi.sy.mapper; import java.util.List; +import java.util.Map; + import com.ruoyi.sy.domain.ArdSyCar; import org.apache.ibatis.annotations.Param; @@ -76,4 +78,9 @@ * @return */ List<ArdSyCar> carListById(String id); + + /** + * 鏍规嵁杞﹁締id鏌ヨ涓変竴杞﹁締鍙婂搴旈儴闂� + */ + public Map<String, Object> getArdSyCarAndDeptByCarId(String carId); } diff --git a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyUserMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyUserMapper.java index 79b167b..bf59b58 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyUserMapper.java +++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyUserMapper.java @@ -81,4 +81,6 @@ Map<String,Object> selectArdSyUserByUsersId(Integer usersId); ArdSyUser userById(String id); + + public List<ArdSyUser> selectSyUser(); } diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java b/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java index 5d6d65a..d8c32cb 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java @@ -83,6 +83,17 @@ */ public String uploadCarPicture(String id, MultipartFile carPicture); + List<ArdSyCar> carListById(String id); + + /** + * 鏍规嵁杞﹁締id鏌ヨ涓変竴杞﹁締鍙婂搴旈儴闂� + */ + public Map<String,Object> getArdSyCarAndDeptByCarId(String carId); + + /** + * 鏍规嵁閮ㄩ棬鍙戦�佽溅杈嗗疄鏃朵綅缃� + */ + public void sendArdSyCarPosition(); // List<ArdSyCar> getArdSyCarWithRightByCarIdList(List<String> carIdList); Results carListById(String id); diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyUserService.java b/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyUserService.java index cdb48ea..7dc55ef 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyUserService.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyUserService.java @@ -77,4 +77,9 @@ Map<String,Object> selectArdSyUserByUsersId(Integer usersId); ArdSyUser userById(String id); + + /** + * 鏌ヨ鏈寕鎺ヤ笁涓�杞﹁締璐﹀彿瀵嗙爜 + */ + public List<ArdSyUser> selectSyUser(); } diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java index b14176e..800649c 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java @@ -8,13 +8,18 @@ import java.util.function.Predicate; import java.util.stream.Collectors; +import com.alibaba.fastjson.JSON; +import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.uuid.IdUtils; +import com.ruoyi.common.websocket.util.WebSocketUtils; import com.ruoyi.device.hiksdk.config.MinioClientSingleton; import com.ruoyi.device.hiksdk.util.minio.MinioUtils; import com.ruoyi.sy.domain.ArdSyUser; +import com.ruoyi.sy.gps31.PositionContainer; import com.ruoyi.sy.mapper.ArdSyUserMapper; import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.mapper.SysConfigMapper; +import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.utils.httpclient.SYCarClient; import com.ruoyi.utils.result.Constants; import com.ruoyi.utils.result.Results; @@ -33,6 +38,8 @@ import javax.annotation.Resource; +import static com.ruoyi.common.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS; + /** * 涓変竴杞﹁締Service涓氬姟灞傚鐞� * @@ -49,6 +56,9 @@ @Resource private ArdSyUserMapper ardSyUserMapper; + + @Resource + private SysUserMapper userMapper; /** @@ -333,6 +343,7 @@ // return result; // } + @Override public Results carListById(String id) { try { @@ -347,4 +358,25 @@ return Results.error(e.toString()); } } + + @Override + public Map<String, Object> getArdSyCarAndDeptByCarId(String carId) { + Map<String, Object> result = ardSyCarMapper.getArdSyCarAndDeptByCarId(carId); + return result; + } + + @Override + public void sendArdSyCarPosition() { + for(String key : ONLINE_USER_SESSIONS.keySet()){ + SysUser sysUser = userMapper.selectUserById(key); + String deptId = String.valueOf(sysUser.getDeptId()); + Map<String,Map<String,Object>> map = PositionContainer.getDeptPositionMap().get(deptId); + List<Map<String,Object>> positionList = (List<Map<String, Object>>) map.values(); + if(positionList.size() != 0){ + Map<Integer,Object> data = new HashMap(); + data.put(30000,positionList); + WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(key), JSON.toJSONString(positionList)); + } + } + } } diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyUserServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyUserServiceImpl.java index de6ae1b..0a97740 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyUserServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyUserServiceImpl.java @@ -126,4 +126,10 @@ public ArdSyUser userById(String id) { return ardSyUserMapper.userById(id); } + + @Override + public List<ArdSyUser> selectSyUser() { + List<ArdSyUser> result = ardSyUserMapper.selectSyUser(); + return result; + } } diff --git a/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java b/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java new file mode 100644 index 0000000..e146beb --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java @@ -0,0 +1,85 @@ +package com.ruoyi.test; + +/** + * @Description: + * @ClassName: ReadAccessDatabase + * @Author: 鍒樿嫃涔� + * @Date: 2023骞�07鏈�21鏃�16:00:57 + * @Version: 1.0 + **/ + +import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; +import java.sql.*; + +public class ReadAccessDatabase { + + public static void main(String[] args) { + // 澶氫釜鏁版嵁搴撴枃浠惰矾寰� + String[] dbPaths = { + "D:\\mdb\\閬撹矾涓績绾�.mdb", + "D:\\mdb\\闃查鏋�-鐏屾湪.mdb", + // 娣诲姞鏇村鐨勬暟鎹簱鏂囦欢璺緞 + }; + + // 閬嶅巻姣忎釜鏁版嵁搴撴枃浠� + for (String dbPath : dbPaths) { + readDataFromAccessDatabase(dbPath); + } + } + + public static void readDataFromAccessDatabase(String dbPath) { + try { + // 鍔犺浇JDBC椹卞姩 + Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); + + // 杩炴帴Access鏁版嵁搴� + String url = "jdbc:ucanaccess://" + dbPath + ";encoding=gb2312;"; + Connection connection = DriverManager.getConnection(url); + // 鑾峰彇鎵�鏈夎〃鐨勫厓鏁版嵁 + DatabaseMetaData metaData = connection.getMetaData(); + ResultSet tables = metaData.getTables(null, null, null, new String[]{"TABLE"}); + + // 閬嶅巻琛� + while (tables.next()) { + String tableName = tables.getString("TABLE_NAME"); + if (!tableName.equals("閬撹矾涓績绾�")) { + continue; + } + System.out.println("琛ㄥ悕: " + tableName); + + // 鑾峰彇琛ㄧ殑瀛楁鍏冩暟鎹� + // ResultSet column = metaData.getColumns(null, null, tableName, null); + // 閬嶅巻瀛楁 +// while (column.next()) { +// String columnName = column.getString("COLUMN_NAME"); +// System.out.println("瀛楁鍚�: " + columnName); +// } +// column.close(); + // 鎵ц鏌ヨ鎿嶄綔 + String sql = "SELECT * FROM " + tableName; // 鏇挎崲涓轰綘瑕佹煡璇㈢殑琛ㄥ悕 + Statement statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery(sql); + // 澶勭悊鏌ヨ缁撴灉 + while (resultSet.next()) { + // 璇诲彇姣忎竴琛屾暟鎹� + String id = resultSet.getString(1); // 鏍规嵁琛ㄤ腑鐨勫垪鍚嶈幏鍙栨暟鎹� + String name = resultSet.getString("缂栧彿"); + + // 鍙互鏍规嵁鍏蜂綋鐨勮〃缁撴瀯缁х画鑾峰彇鍏朵粬瀛楁鐨勬暟鎹� + + // 鍦ㄨ繖閲屽鐞嗚幏鍙栧埌鐨勬暟鎹紝渚嬪杈撳嚭鍒版帶鍒跺彴鎴栦繚瀛樺埌闆嗗悎涓� + System.out.println("ID: " + id + ", Name: " + name); + } + // 鍏抽棴杩炴帴 + resultSet.close(); + statement.close(); + } + tables.close(); + connection.close(); + } catch (ClassNotFoundException | SQLException e) { + e.printStackTrace(); + } + } +} + diff --git a/ard-work/src/main/resources/mapper/app/ArdAppPositionMapper.xml b/ard-work/src/main/resources/mapper/app/ArdAppPositionMapper.xml index 2905557..1967f0f 100644 --- a/ard-work/src/main/resources/mapper/app/ArdAppPositionMapper.xml +++ b/ard-work/src/main/resources/mapper/app/ArdAppPositionMapper.xml @@ -2,7 +2,7 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.ruoyi.app.mapper.ArdAppPositionMapper"> +<mapper namespace="com.ruoyi.app.position.mapper.ArdAppPositionMapper"> <resultMap type="ArdAppPosition" id="ArdAppPositionResult"> <result property="id" column="id"/> <result property="userId" column="user_id"/> diff --git a/ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml b/ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml new file mode 100644 index 0000000..53d6ecd --- /dev/null +++ b/ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml @@ -0,0 +1,190 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.app.task.mapper.ArdAppTaskMapper"> + + <resultMap type="ArdAppTask" id="ArdAppTaskResult"> + <result property="id" column="id"/> + <result property="name" column="name"/> + <result property="text" column="text"/> + <result property="voice" column="voice"/> + <result property="deptId" column="dept_id"/> + <result property="userId" column="user_id"/> + <result property="createBy" column="create_by"/> + <result property="createTime" column="create_time"/> + <result property="updateBy" column="update_by"/> + <result property="updateTime" column="update_time"/> + </resultMap> + + <resultMap id="ArdAppTaskArdAppTaskPicResult" type="ArdAppTask" extends="ArdAppTaskResult"> + <collection property="ardAppTaskPicList" notNullColumn="sub_id" javaType="java.util.List" + resultMap="ArdAppTaskPicResult"/> + </resultMap> + <resultMap id="ArdAppTaskArdAppTaskDetailResult" type="ArdAppTask" extends="ArdAppTaskResult"> + <collection property="ardAppTaskDetailList" notNullColumn="sub_id" javaType="java.util.List" + resultMap="ArdAppTaskDetailResult"/> + </resultMap> + + <resultMap type="ArdAppTaskDetail" id="ArdAppTaskDetailResult"> + <result property="id" column="sub_id"/> + <result property="name" column="sub_name"/> + <result property="longitude" column="sub_longitude"/> + <result property="latitude" column="sub_latitude"/> + <result property="altitude" column="sub_altitude"/> + <result property="userId" column="sub_user_id"/> + <result property="text" column="sub_text"/> + <result property="voice" column="sub_voice"/> + <result property="taskId" column="sub_task_id"/> + </resultMap> + <resultMap type="ArdAppTaskPic" id="ArdAppTaskPicResult"> + <result property="id" column="sub_id"/> + <result property="taskId" column="sub_task_id"/> + <result property="picUrl" column="sub_pic_url"/> + </resultMap> + + <sql id="selectArdAppTaskVo"> + select c.id, + c.name, + c.text, + c.voice, + c.dept_id, + c.user_id, + c.create_by, + c.create_time, + c.update_by, + c.update_time + from ard_app_task c + left join sys_dept d on d.dept_id = c.dept_id + left join sys_user u on u.user_id = c.user_id + </sql> + + <select id="selectArdAppTaskList" parameterType="ArdAppTask" resultMap="ArdAppTaskResult"> + <include refid="selectArdAppTaskVo"/> + <where> + <if test="name != null and name != ''">and name like '%'||#{name}||'%'</if> + <if test="text != null and text != ''">and text = #{text}</if> + <if test="voice != null and voice != ''">and voice = #{voice}</if> + <if test="deptId != null ">and (c.dept_id = #{deptId} OR c.dept_id IN ( SELECT t.dept_id FROM sys_dept t + WHERE cast(#{deptId} as varchar) = any(string_to_array(ancestors,',')) )) + </if> + <if test="userId != null and userId != ''">and user_id = #{userId}</if> + <!-- 鏁版嵁鑼冨洿杩囨护 --> + ${params.dataScope} + </where> + </select> + + <select id="selectArdAppTaskById" parameterType="String" resultMap="ArdAppTaskArdAppTaskPicResult"> + select a.id, + a.name, + a.text, + a.voice, + a.dept_id, + a.user_id, + a.create_by, + a.create_time, + a.update_by, + a.update_time, + b.id as sub_id, + b.task_id as sub_task_id, + b.pic_url as sub_pic_url + from ard_app_task a + left join ard_app_task_pic b on b.task_id = a.id + left join ard_app_task_detail c on c.task_id = a.id + where a.id = #{id} + </select> + + <insert id="insertArdAppTask" parameterType="ArdAppTask"> + insert into ard_app_task + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="id != null">id,</if> + <if test="name != null">name,</if> + <if test="text != null">text,</if> + <if test="voice != null">voice,</if> + <if test="deptId != null">dept_id,</if> + <if test="userId != null">user_id,</if> + <if test="createBy != null">create_by,</if> + <if test="createTime != null">create_time,</if> + <if test="updateBy != null">update_by,</if> + <if test="updateTime != null">update_time,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="id != null">#{id},</if> + <if test="name != null">#{name},</if> + <if test="text != null">#{text},</if> + <if test="voice != null">#{voice},</if> + <if test="deptId != null">#{deptId},</if> + <if test="userId != null">#{userId},</if> + <if test="createBy != null">#{createBy},</if> + <if test="createTime != null">#{createTime},</if> + <if test="updateBy != null">#{updateBy},</if> + <if test="updateTime != null">#{updateTime},</if> + </trim> + </insert> + + <update id="updateArdAppTask" parameterType="ArdAppTask"> + update ard_app_task + <trim prefix="SET" suffixOverrides=","> + <if test="name != null">name = #{name},</if> + <if test="text != null">text = #{text},</if> + <if test="voice != null">voice = #{voice},</if> + <if test="deptId != null">dept_id = #{deptId},</if> + <if test="userId != null">user_id = #{userId},</if> + <if test="createBy != null">create_by = #{createBy},</if> + <if test="createTime != null">create_time = #{createTime},</if> + <if test="updateBy != null">update_by = #{updateBy},</if> + <if test="updateTime != null">update_time = #{updateTime},</if> + </trim> + where id = #{id} + </update> + + <delete id="deleteArdAppTaskById" parameterType="String"> + delete + from ard_app_task + where id = #{id} + </delete> + + <delete id="deleteArdAppTaskByIds" parameterType="String"> + delete from ard_app_task where id in + <foreach item="id" collection="array" open="(" separator="," close=")"> + #{id} + </foreach> + </delete> + + <delete id="deleteArdAppTaskPicByTaskIds" parameterType="String"> + delete from ard_app_task_pic where task_id in + <foreach item="taskId" collection="array" open="(" separator="," close=")"> + #{taskId} + </foreach> + </delete> + + <delete id="deleteArdAppTaskPicByTaskId" parameterType="String"> + delete + from ard_app_task_pic + where task_id = #{taskId} + </delete> + + <insert id="batchArdAppTaskPic"> + insert into ard_app_task_pic( id, task_id, pic_url) values + <foreach item="item" index="index" collection="list" separator=","> + ( #{item.id}, #{item.taskId}, #{item.picUrl}) + </foreach> + </insert> + <delete id="deleteArdAppTaskDetailByTaskIds" parameterType="String"> + delete from ard_app_task_detail where task_id in + <foreach item="taskId" collection="array" open="(" separator="," close=")"> + #{taskId} + </foreach> + </delete> + + <delete id="deleteArdAppTaskDetailByTaskId" parameterType="String"> + delete from ard_app_task_detail where task_id = #{taskId} + </delete> + + <insert id="batchArdAppTaskDetail"> + insert into ard_app_task_detail( id, name, longitude, latitude, altitude, user_id, text, voice, task_id) values + <foreach item="item" index="index" collection="list" separator=","> + ( #{item.id}, #{item.name}, #{item.longitude}, #{item.latitude}, #{item.altitude}, #{item.userId}, #{item.text}, #{item.voice}, #{item.taskId}) + </foreach> + </insert> +</mapper> \ No newline at end of file diff --git a/ard-work/src/main/resources/mapper/app/ArdAppTaskTextMapper.xml b/ard-work/src/main/resources/mapper/app/ArdAppTaskTextMapper.xml new file mode 100644 index 0000000..a9dc727 --- /dev/null +++ b/ard-work/src/main/resources/mapper/app/ArdAppTaskTextMapper.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.app.tasktext.mapper.ArdAppTaskTextMapper"> + + <resultMap type="ArdAppTaskText" id="ArdAppTaskTextResult"> + <result property="userId" column="user_id" /> + <result property="text" column="text" /> + <result property="id" column="id" /> + </resultMap> + + <sql id="selectArdAppTaskTextVo"> + select user_id, text, id from ard_app_task_text + </sql> + + <select id="selectArdAppTaskTextList" parameterType="ArdAppTaskText" resultMap="ArdAppTaskTextResult"> + <include refid="selectArdAppTaskTextVo"/> + <where> + <if test="userId != null and userId != ''"> and user_id = #{userId}</if> + <if test="text != null and text != ''"> and text = #{text}</if> + </where> + </select> + + <select id="selectArdAppTaskTextByUserId" parameterType="String" resultMap="ArdAppTaskTextResult"> + <include refid="selectArdAppTaskTextVo"/> + where user_id = #{userId} + </select> + + <insert id="insertArdAppTaskText" parameterType="ArdAppTaskText"> + insert into ard_app_task_text + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="userId != null">user_id,</if> + <if test="text != null">text,</if> + <if test="id != null">id,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="userId != null">#{userId},</if> + <if test="text != null">#{text},</if> + <if test="id != null">#{id},</if> + </trim> + </insert> + + <update id="updateArdAppTaskText" parameterType="ArdAppTaskText"> + update ard_app_task_text + <trim prefix="SET" suffixOverrides=","> + <if test="text != null">text = #{text},</if> + <if test="id != null">id = #{id},</if> + </trim> + where user_id = #{userId} + </update> + + <delete id="deleteArdAppTaskTextByUserId" parameterType="String"> + delete from ard_app_task_text where user_id = #{userId} + </delete> + + <delete id="deleteArdAppTaskTextByUserIds" parameterType="String"> + delete from ard_app_task_text where user_id in + <foreach item="userId" collection="array" open="(" separator="," close=")"> + #{userId} + </foreach> + </delete> +</mapper> \ No newline at end of file diff --git a/ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml index 441a04f..b47d788 100644 --- a/ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml +++ b/ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml @@ -106,4 +106,12 @@ <select id="carListById" parameterType="String" resultMap="ArdSyCarResult"> select * from ard_sy_car where id = #{id} </select> + <select id="getArdSyCarAndDeptByCarId" parameterType="String" resultType="java.util.Map"> + select asc0.id,asc0.car_id as "carId",coalesce(asc0.car_model,'') as "carModel", + coalesce(asc0.car_type,'') as "carType",coalesce(asc0.car_brand,'') as "carBrand", + asc0.dept_id as "deptId",asc0.car_picture as "carPicture",sd.ancestors, + sd.dept_name as "deptName" from ard_sy_car asc0 + inner join sys_dept sd on asc0.dept_id = sd.dept_id + where asc0.car_id = #{carId} + </select> </mapper> \ No newline at end of file diff --git a/ard-work/src/main/resources/mapper/sy/ArdSyUserMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdSyUserMapper.xml index 7918055..d33f4d4 100644 --- a/ard-work/src/main/resources/mapper/sy/ArdSyUserMapper.xml +++ b/ard-work/src/main/resources/mapper/sy/ArdSyUserMapper.xml @@ -137,4 +137,7 @@ <include refid="selectArdSyUserVo"/> where sys_user_id = #{id} </select> + <select id="selectSyUser" resultMap="ArdSyUserResult"> + select distinct asu.user_id,asu.password from ard_sy_user asu + </select> </mapper> \ No newline at end of file diff --git a/lib/mediamtx/ffmpeg.exe b/lib/mediamtx/ffmpeg.exe new file mode 100644 index 0000000..a562fa0 --- /dev/null +++ b/lib/mediamtx/ffmpeg.exe Binary files differ diff --git a/lib/mediamtx/mediamtx.yml b/lib/mediamtx/mediamtx.yml index 5b11bf9..ae9757b 100644 --- a/lib/mediamtx/mediamtx.yml +++ b/lib/mediamtx/mediamtx.yml @@ -40,17 +40,17 @@ # Enable the HTTP API. api: yes # Address of the API listener. -apiAddress: 192.168.1.227:9997 +apiAddress: 127.0.0.1:9997 # Enable Prometheus-compatible metrics. metrics: no # Address of the metrics listener. -metricsAddress: 192.168.1.227:9998 +metricsAddress: 127.0.0.1:9998 # Enable pprof-compatible endpoint to monitor performances. pprof: no # Address of the pprof listener. -pprofAddress: 192.168.1.227:9999 +pprofAddress: 127.0.0.1:9999 # Command to run when a client connects to the server. # Prepend ./ to run an executable in the current folder (example: "./ffmpeg") @@ -77,19 +77,19 @@ # Available values are "no", "strict", "optional". encryption: "no" # Address of the TCP/RTSP listener. This is needed only when encryption is "no" or "optional". -rtspAddress: :8554 +rtspAddress: :7554 # Address of the TCP/TLS/RTSPS listener. This is needed only when encryption is "strict" or "optional". -rtspsAddress: :8322 +rtspsAddress: :7322 # Address of the UDP/RTP listener. This is needed only when "udp" is in protocols. -rtpAddress: :8000 +rtpAddress: :7000 # Address of the UDP/RTCP listener. This is needed only when "udp" is in protocols. -rtcpAddress: :8001 +rtcpAddress: :7001 # IP range of all UDP-multicast listeners. This is needed only when "multicast" is in protocols. multicastIPRange: 224.1.0.0/16 # Port of all UDP-multicast/RTP listeners. This is needed only when "multicast" is in protocols. -multicastRTPPort: 8002 +multicastRTPPort: 7002 # Port of all UDP-multicast/RTCP listeners. This is needed only when "multicast" is in protocols. -multicastRTCPPort: 8003 +multicastRTCPPort: 7003 # Path to the server key. This is needed only when encryption is "strict" or "optional". # This can be generated with: # openssl genrsa -out server.key 2048 @@ -105,7 +105,7 @@ # RTMP parameters # Disable support for the RTMP protocol. -rtmpDisable: no +rtmpDisable: yes # Address of the RTMP listener. This is needed only when encryption is "no" or "optional". rtmpAddress: :1935 # Encrypt connections with TLS (RTMPS). @@ -125,7 +125,7 @@ # HLS parameters # Disable support for the HLS protocol. -hlsDisable: no +hlsDisable: yes # Address of the HLS listener. hlsAddress: :8888 # Enable TLS/HTTPS on the HLS server. @@ -181,7 +181,7 @@ # WebRTC parameters # Disable support for the WebRTC protocol. -webrtcDisable: no +webrtcDisable: yes # Address of the WebRTC listener. webrtcAddress: :8889 # Enable TLS/HTTPS on the WebRTC server. diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java index ce2bf43..bf69eff 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java @@ -18,7 +18,13 @@ * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 */ public List<SysUser> selectUserList(SysUser sysUser); - + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨAPP鐢ㄦ埛鍒楄〃 + * + * @param sysUser APP鐢ㄦ埛淇℃伅 + * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 + */ + public List<SysUser> selectAppUserList(SysUser sysUser); /** * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸查厤鐢ㄦ埛瑙掕壊鍒楄〃 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java index 980cb0d..897852b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java @@ -1,6 +1,7 @@ package com.ruoyi.system.service; import java.util.List; +import java.util.Map; import com.ruoyi.common.core.domain.entity.SysUser; @@ -17,6 +18,14 @@ * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 */ public List<SysUser> selectUserList(SysUser user); + + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨAPP鐢ㄦ埛鍒楄〃 + * + * @param user APP鐢ㄦ埛淇℃伅 + * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 + */ + public List<SysUser> selectAppUserList(SysUser user); /** * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛� @@ -225,4 +234,5 @@ * @param userIds 鐢ㄦ埛id鏁扮粍 */ public void clearUserCache(String[] userIds); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 6b36d4f..93eca00 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -128,6 +128,11 @@ public List<SysUser> selectUserList(SysUser user) { return userMapper.selectUserList(user); } + @Override + @DataScope(deptAlias = "d", userAlias = "u") + public List<SysUser> selectAppUserList(SysUser user) { + return userMapper.selectAppUserList(user); + } /** * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛� diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index e41ea2c..08396d0 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -117,7 +117,17 @@ <!-- 鏁版嵁鑼冨洿杩囨护 --> ${params.dataScope} </select> - + <select id="selectAppUserList" parameterType="SysUser" resultMap="SysUserResult"> + <include refid="selectUserVo"/> + where u.del_flag = '0' + and LOWER(r.role_name) like '%app%' + <if test="deptId != null and deptId != 0"> + AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE cast(#{deptId} as + varchar) = any(string_to_array(ancestors,',')) )) + </if> + <!-- 鏁版嵁鑼冨洿杩囨护 --> + ${params.dataScope} + </select> <select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult"> select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time from sys_user u -- Gitblit v1.9.3