Ver código fonte

fix 基本需求完成

tjf 3 anos atrás
pai
commit
633fe87337
75 arquivos alterados com 4852 adições e 31 exclusões
  1. BIN
      lib/alicom-mns-receive-sdk-1.0.1-sources.jar
  2. BIN
      lib/alicom-mns-receive-sdk-1.0.1.jar
  3. BIN
      lib/aliyun-java-sdk-core-3.2.2.jar
  4. BIN
      lib/aliyun-java-sdk-dybaseapi-1.0.0.jar
  5. BIN
      lib/aliyun-sdk-mns-1.1.8.jar
  6. BIN
      lib/commons-codec-1.9.jar
  7. BIN
      lib/commons-logging-1.1.1.jar
  8. BIN
      lib/httpasyncclient-4.1.jar
  9. BIN
      lib/httpcore-nio-4.4.1.jar
  10. 12 0
      lib/install-jar.bat
  11. BIN
      lib/log4j-1.2.17.jar
  12. 2 0
      pom.xml
  13. 43 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AliMnsApplicationRunner.java
  14. 2 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
  15. 0 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ColumnNavigationBarController.java
  16. 104 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/FriendLinkController.java
  17. 105 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ImageDataController.java
  18. 114 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/InspectInforController.java
  19. 104 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/QueryConfigController.java
  20. 156 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/QueryController.java
  21. 114 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ReportDetailController.java
  22. 105 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ReportQueryLogController.java
  23. 15 0
      ruoyi-admin/src/main/resources/application.yml
  24. 59 0
      ruoyi-common/pom.xml
  25. 51 0
      ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
  26. 37 0
      ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/ColumnNavigationBar.java
  27. 6 0
      ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
  28. 119 0
      ruoyi-common/src/main/java/com/ruoyi/common/utils/SendSmsUtils.java
  29. 1 0
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
  30. 96 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/FriendLink.java
  31. 126 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/ImageDatas.java
  32. 182 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/InspectInfor.java
  33. 140 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/QueryConfig.java
  34. 167 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/ReportDetail.java
  35. 209 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/ReportQueryLog.java
  36. 7 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/ColumnNavigationBarMapper.java
  37. 14 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/ColumnNewsMapper.java
  38. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/FriendLinkMapper.java
  39. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/ImageDataMapper.java
  40. 69 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/InspectInforMapper.java
  41. 68 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/QueryConfigMapper.java
  42. 83 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/ReportDetailMapper.java
  43. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/ReportQueryLogMapper.java
  44. 7 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
  45. 14 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/AlicomMessageListenterService.java
  46. 7 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IColumnNavigationBarService.java
  47. 14 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IColumnNewsService.java
  48. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IFriendLinkService.java
  49. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IImageDataService.java
  50. 68 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IInspectInforService.java
  51. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IQueryConfigService.java
  52. 35 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IQueryService.java
  53. 67 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IReportDetailService.java
  54. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IReportQueryLogService.java
  55. 7 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
  56. 80 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AlicomMessageListenterServiceImpl.java
  57. 10 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ColumnNavigationBarServiceImpl.java
  58. 21 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ColumnNewsServiceImpl.java
  59. 96 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FriendLinkServiceImpl.java
  60. 97 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ImageDataServiceImpl.java
  61. 116 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InspectInforServiceImpl.java
  62. 96 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/QueryConfigServiceImpl.java
  63. 387 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/QueryServiceImpl.java
  64. 116 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ReportDetailServiceImpl.java
  65. 96 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ReportQueryLogServiceImpl.java
  66. 10 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
  67. 54 29
      ruoyi-system/src/main/resources/mapper/system/ColumnNavigationBarMapper.xml
  68. 14 1
      ruoyi-system/src/main/resources/mapper/system/ColumnNewsMapper.xml
  69. 87 0
      ruoyi-system/src/main/resources/mapper/system/FriendLinkMapper.xml
  70. 99 0
      ruoyi-system/src/main/resources/mapper/system/ImageDataMapper.xml
  71. 126 0
      ruoyi-system/src/main/resources/mapper/system/InspectInforMapper.xml
  72. 113 0
      ruoyi-system/src/main/resources/mapper/system/QueryConfigMapper.xml
  73. 133 0
      ruoyi-system/src/main/resources/mapper/system/ReportDetailMapper.xml
  74. 128 0
      ruoyi-system/src/main/resources/mapper/system/ReportQueryLogMapper.xml
  75. 17 0
      ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml

BIN
lib/alicom-mns-receive-sdk-1.0.1-sources.jar


BIN
lib/alicom-mns-receive-sdk-1.0.1.jar


BIN
lib/aliyun-java-sdk-core-3.2.2.jar


BIN
lib/aliyun-java-sdk-dybaseapi-1.0.0.jar


BIN
lib/aliyun-sdk-mns-1.1.8.jar


BIN
lib/commons-codec-1.9.jar


BIN
lib/commons-logging-1.1.1.jar


BIN
lib/httpasyncclient-4.1.jar


BIN
lib/httpcore-nio-4.4.1.jar


+ 12 - 0
lib/install-jar.bat

@@ -0,0 +1,12 @@
+
+@echo off
+call mvn install:install-file -Dfile=alicom-mns-receive-sdk-1.0.1.jar -DgroupId=com.alicom -DartifactId=alicom-mns-receive -Dversion=1.0.1 -Dpackaging=jar
+call mvn install:install-file -Dfile=aliyun-java-sdk-core-3.2.2.jar -DgroupId=com.alicom -DartifactId=aliyun-java-sdk-core -Dversion=3.2.2 -Dpackaging=jar
+call mvn install:install-file -Dfile=aliyun-java-sdk-dybaseapi-1.0.0.jar -DgroupId=com.alicom -DartifactId=aliyun-java-sdk-dybaseapi -Dversion=1.0.0 -Dpackaging=jar
+call mvn install:install-file -Dfile=aliyun-sdk-mns-1.1.8.jar -DgroupId=com.alicom -DartifactId=aliyun-sdk-mns -Dversion=1.1.8 -Dpackaging=jar
+call mvn install:install-file -Dfile=commons-codec-1.9.jar -DgroupId=com.alicom -DartifactId=commons-codec -Dversion=1.9 -Dpackaging=jar
+call mvn install:install-file -Dfile=commons-logging-1.1.1.jar -DgroupId=com.alicom -DartifactId=commons-logging -Dversion=1.1.1 -Dpackaging=jar
+call mvn install:install-file -Dfile=httpcore-nio-4.4.1.jar -DgroupId=com.alicom -DartifactId=httpcore-nio -Dversion=4.1 -Dpackaging=jar
+call mvn install:install-file -Dfile=httpasyncclient-4.1.jar -DgroupId=com.alicom -DartifactId=httpasyncclient -Dversion=4.1 -Dpackaging=jar
+call mvn install:install-file -Dfile=log4j-1.2.17.jar -DgroupId=com.alicom -DartifactId=log4j -Dversion=1.2.17 -Dpackaging=jar
+exit

BIN
lib/log4j-1.2.17.jar


+ 2 - 0
pom.xml

@@ -213,6 +213,8 @@
                 <version>${ruoyi.version}</version>
             </dependency>
 
+
+
         </dependencies>
     </dependencyManagement>
 

+ 43 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AliMnsApplicationRunner.java

@@ -0,0 +1,43 @@
+package com.ruoyi.web.controller.common;
+
+import com.alicom.mns.tools.DefaultAlicomMessagePuller;
+import com.ruoyi.system.service.AlicomMessageListenterService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+/**上行短信监听启动
+ * @author tjf
+ * @Date: 2021/12/28/10:04
+ */
+@Component
+public class AliMnsApplicationRunner implements ApplicationRunner {//启动项目即启动监听
+
+    @Value("${sms_aliyun_accessKeyId}")
+    String accessKeyId;// accessKeyId
+    @Value("${sms_aliyun_accessKeySecret}")
+    String accessKeySecret;// accessKeySecret
+    @Value("${sms_aliyun_smsUpQueueName}")
+    String smsUpQueueName;// accessKeySecret
+
+    @Autowired
+    private AlicomMessageListenterService alicomMessageListenerService;
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        DefaultAlicomMessagePuller puller=new DefaultAlicomMessagePuller();
+        System.out.println("开启短信监听线程池");
+        //设置异步线程池大小及任务队列的大小,还有无数据线程休眠时间
+        puller.setConsumeMinThreadSize(6);
+        puller.setConsumeMaxThreadSize(16);
+        puller.setThreadQueueSize(200);
+        puller.setPullMsgThreadSize(1);
+        //和服务端联调问题时开启,平时无需开启,消耗性能
+        puller.openDebugLog(false);
+        String messageType="SmsUp";
+        if(alicomMessageListenerService!=null){
+            puller.startReceiveMsg(accessKeyId,accessKeySecret ,messageType,smsUpQueueName, alicomMessageListenerService);
+        }
+    }
+}

+ 2 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java

@@ -75,9 +75,11 @@ public class CommonController
             String filePath = RuoYiConfig.getUploadPath();
             // 上传并返回新文件名称
             String fileName = FileUploadUtils.upload(filePath, file);
+            String originalFilename = file.getOriginalFilename();
             String url = serverConfig.getUrl() + fileName;
             AjaxResult ajax = AjaxResult.success();
             ajax.put("fileName", fileName);
+            ajax.put("originalFilename", originalFilename);
             ajax.put("url", url);
             return ajax;
         }

+ 0 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ColumnNavigationBarController.java

@@ -24,7 +24,6 @@ import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.core.domain.entity.ColumnNavigationBar;
 import com.ruoyi.system.service.IColumnNavigationBarService;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.common.core.page.TableDataInfo;
 
 /**
  * 栏目导航Controller

+ 104 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/FriendLinkController.java

@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.system;
+
+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.system.domain.FriendLink;
+import com.ruoyi.system.service.IFriendLinkService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 友链导航Controller
+ * 
+ * @author boman
+ * @date 2021-12-29
+ */
+@RestController
+@RequestMapping("/system/friendLink")
+public class FriendLinkController extends BaseController
+{
+    @Autowired
+    private IFriendLinkService friendLinkService;
+
+    /**
+     * 查询友链导航列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:friendLink:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(FriendLink friendLink)
+    {
+        startPage();
+        List<FriendLink> list = friendLinkService.selectFriendLinkList(friendLink);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出友链导航列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:friendLink:export')")
+    @Log(title = "友链导航", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, FriendLink friendLink)
+    {
+        List<FriendLink> list = friendLinkService.selectFriendLinkList(friendLink);
+        ExcelUtil<FriendLink> util = new ExcelUtil<FriendLink>(FriendLink.class);
+        util.exportExcel(response, list, "友链导航数据");
+    }
+
+    /**
+     * 获取友链导航详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:friendLink:query')")
+    @GetMapping(value = "/{linkId}")
+    public AjaxResult getInfo(@PathVariable("linkId") Long linkId)
+    {
+        return AjaxResult.success(friendLinkService.selectFriendLinkByLinkId(linkId));
+    }
+
+    /**
+     * 新增友链导航
+     */
+    @PreAuthorize("@ss.hasPermi('system:friendLink:add')")
+    @Log(title = "友链导航", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody FriendLink friendLink)
+    {
+        return toAjax(friendLinkService.insertFriendLink(friendLink));
+    }
+
+    /**
+     * 修改友链导航
+     */
+    @PreAuthorize("@ss.hasPermi('system:friendLink:edit')")
+    @Log(title = "友链导航", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody FriendLink friendLink)
+    {
+        return toAjax(friendLinkService.updateFriendLink(friendLink));
+    }
+
+    /**
+     * 删除友链导航
+     */
+    @PreAuthorize("@ss.hasPermi('system:friendLink:remove')")
+    @Log(title = "友链导航", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{linkIds}")
+    public AjaxResult remove(@PathVariable Long[] linkIds)
+    {
+        return toAjax(friendLinkService.deleteFriendLinkByLinkIds(linkIds));
+    }
+}

+ 105 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ImageDataController.java

@@ -0,0 +1,105 @@
+package com.ruoyi.web.controller.system;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.system.domain.ImageDatas;
+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.system.service.IImageDataService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 附件信息Controller
+ * 
+ * @author boman
+ * @date 2021-12-24
+ */
+@RestController
+@RequestMapping("/system/image")
+public class ImageDataController extends BaseController
+{
+    @Autowired
+    private IImageDataService imageDataService;
+
+    /**
+     * 查询附件信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:image:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ImageDatas imageDatas)
+    {
+        startPage();
+        List<ImageDatas> list = imageDataService.selectImageDataList(imageDatas);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出附件信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:image:export')")
+    @Log(title = "附件信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ImageDatas imageDatas)
+    {
+        List<ImageDatas> list = imageDataService.selectImageDataList(imageDatas);
+        ExcelUtil<ImageDatas> util = new ExcelUtil<ImageDatas>(ImageDatas.class);
+        util.exportExcel(response, list, "附件信息数据");
+    }
+
+    /**
+     * 获取附件信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:image:query')")
+    @GetMapping(value = "/{imageId}")
+    public AjaxResult getInfo(@PathVariable("imageId") Long imageId)
+    {
+        return AjaxResult.success(imageDataService.selectImageDataByImageId(imageId));
+    }
+
+    /**
+     * 新增附件信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:image:add')")
+    @Log(title = "附件信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ImageDatas imageDatas)
+    {
+        return toAjax(imageDataService.insertImageData(imageDatas));
+    }
+
+    /**
+     * 修改附件信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:image:edit')")
+    @Log(title = "附件信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ImageDatas imageDatas)
+    {
+        return toAjax(imageDataService.updateImageData(imageDatas));
+    }
+
+    /**
+     * 删除附件信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:image:remove')")
+    @Log(title = "附件信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{imageIds}")
+    public AjaxResult remove(@PathVariable Long[] imageIds)
+    {
+        return toAjax(imageDataService.deleteImageDataByImageIds(imageIds));
+    }
+}

+ 114 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/InspectInforController.java

@@ -0,0 +1,114 @@
+package com.ruoyi.web.controller.system;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.constant.UserConstants;
+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.system.domain.InspectInfor;
+import com.ruoyi.system.service.IInspectInforService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 送检信息Controller
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+@RestController
+@RequestMapping("/system/inspectInfor")
+public class InspectInforController extends BaseController
+{
+    @Autowired
+    private IInspectInforService inspectInforService;
+
+    /**
+     * 查询送检信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspectInfor:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(InspectInfor inspectInfor)
+    {
+        startPage();
+        List<InspectInfor> list = inspectInforService.selectInspectInforList(inspectInfor);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出送检信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspectInfor:export')")
+    @Log(title = "送检信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, InspectInfor inspectInfor)
+    {
+        List<InspectInfor> list = inspectInforService.selectInspectInforList(inspectInfor);
+        ExcelUtil<InspectInfor> util = new ExcelUtil<InspectInfor>(InspectInfor.class);
+        util.exportExcel(response, list, "送检信息数据");
+    }
+
+    /**
+     * 获取送检信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspectInfor:query')")
+    @GetMapping(value = "/{inspectId}")
+    public AjaxResult getInfo(@PathVariable("inspectId") Long inspectId)
+    {
+        return AjaxResult.success(inspectInforService.selectInspectInforByInspectId(inspectId));
+    }
+
+    /**
+     * 新增送检信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspectInfor:add')")
+    @Log(title = "送检信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody InspectInfor inspectInfor)
+    {
+        if (UserConstants.NOT_UNIQUE.equals(inspectInforService.checkSampleNameUnique(inspectInfor)))
+        {
+            return AjaxResult.error("新增样品名称'" + inspectInfor.getSampleName() + "'失败,样品名称已存在");
+        }
+        return toAjax(inspectInforService.insertInspectInfor(inspectInfor));
+    }
+
+    /**
+     * 修改送检信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspectInfor:edit')")
+    @Log(title = "送检信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody InspectInfor inspectInfor)
+    {
+        if (UserConstants.NOT_UNIQUE.equals(inspectInforService.checkSampleNameUnique(inspectInfor)))
+        {
+            return AjaxResult.error("修改样品名称'" + inspectInfor.getSampleName() + "'失败,样品名称已存在");
+        }
+        return toAjax(inspectInforService.updateInspectInfor(inspectInfor));
+    }
+
+    /**
+     * 删除送检信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspectInfor:remove')")
+    @Log(title = "送检信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{inspectIds}")
+    public AjaxResult remove(@PathVariable Long[] inspectIds)
+    {
+        return toAjax(inspectInforService.deleteInspectInforByInspectIds(inspectIds));
+    }
+}

+ 104 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/QueryConfigController.java

@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.system;
+
+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.system.domain.QueryConfig;
+import com.ruoyi.system.service.IQueryConfigService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 查询配置Controller
+ * 
+ * @author 博曼
+ * @date 2021-12-27
+ */
+@RestController
+@RequestMapping("/system/queryConfig")
+public class QueryConfigController extends BaseController
+{
+    @Autowired
+    private IQueryConfigService queryConfigService;
+
+    /**
+     * 查询查询配置列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:queryConfig:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(QueryConfig queryConfig)
+    {
+        startPage();
+        List<QueryConfig> list = queryConfigService.selectQueryConfigList(queryConfig);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出查询配置列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:queryConfig:export')")
+    @Log(title = "查询配置", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, QueryConfig queryConfig)
+    {
+        List<QueryConfig> list = queryConfigService.selectQueryConfigList(queryConfig);
+        ExcelUtil<QueryConfig> util = new ExcelUtil<QueryConfig>(QueryConfig.class);
+        util.exportExcel(response, list, "查询配置数据");
+    }
+
+    /**
+     * 获取查询配置详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:queryConfig:query')")
+    @GetMapping(value = "/{configId}")
+    public AjaxResult getInfo(@PathVariable("configId") Long configId)
+    {
+        return AjaxResult.success(queryConfigService.selectQueryConfigByConfigId(configId));
+    }
+
+    /**
+     * 新增查询配置
+     */
+    @PreAuthorize("@ss.hasPermi('system:queryConfig:add')")
+    @Log(title = "查询配置", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody QueryConfig queryConfig)
+    {
+        return toAjax(queryConfigService.insertQueryConfig(queryConfig));
+    }
+
+    /**
+     * 修改查询配置
+     */
+    @PreAuthorize("@ss.hasPermi('system:queryConfig:edit')")
+    @Log(title = "查询配置", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody QueryConfig queryConfig)
+    {
+        return toAjax(queryConfigService.updateQueryConfig(queryConfig));
+    }
+
+    /**
+     * 删除查询配置
+     */
+    @PreAuthorize("@ss.hasPermi('system:queryConfig:remove')")
+    @Log(title = "查询配置", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{configIds}")
+    public AjaxResult remove(@PathVariable Long[] configIds)
+    {
+        return toAjax(queryConfigService.deleteQueryConfigByConfigIds(configIds));
+    }
+}

+ 156 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/QueryController.java

@@ -0,0 +1,156 @@
+package com.ruoyi.web.controller.system;
+
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.ColumnNavigationBar;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.system.domain.*;
+import com.ruoyi.system.service.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**门户接口,对外开放
+ * @author tjf
+ * @Date: 2021/12/27/11:36
+ */
+
+@RestController
+@RequestMapping("/gateway/query")
+public class QueryController {
+
+    @Autowired
+    private IQueryService queryService;
+
+    @Autowired
+    private IColumnNavigationBarService columnNavigationBarService;
+
+    @Autowired
+    private IImageDataService imageDataService;
+
+    @Autowired
+    private IColumnNewsService columnNewsService;
+
+    @Autowired
+    private ISysNoticeService noticeService;
+
+    @Autowired
+    private IFriendLinkService friendLinkService;
+
+    /**
+     * 门户查询报告信息
+     */
+    @PostMapping("/getReport")
+    @RepeatSubmit
+    public AjaxResult list(ReportQueryLog reportQueryLog)
+    {
+        return queryService.selectReport(reportQueryLog);
+    }
+
+
+    /**
+     * 获取栏目导航下拉树列表
+     */
+    @GetMapping("/treeselect")
+    @RepeatSubmit
+    public AjaxResult treeselect(ColumnNavigationBar columnNavigationBar)
+    {
+        //默认查询是导航
+        columnNavigationBar.setIsNavigationBar("Y");
+        List<ColumnNavigationBar> columnNavigationBars = columnNavigationBarService.selectColumnNavigationBarList(columnNavigationBar);
+        return AjaxResult.success(columnNavigationBarService.buildColumnTreeSelect(columnNavigationBars));
+    }
+
+    /**
+     * 获取各个部分首页标题
+     */
+    @GetMapping("/titleList")
+    @RepeatSubmit
+    public AjaxResult titleList(ColumnNavigationBar columnNavigationBar)
+    {
+        List<ColumnNavigationBar> columnNavigationBars = columnNavigationBarService.selectColumnNavigationBarListMenHu(columnNavigationBar);
+        return AjaxResult.success(columnNavigationBars);
+    }
+
+    /**
+     * 获取首页轮播图
+     */
+    @PostMapping("/getRotationChart")
+    @RepeatSubmit
+    public AjaxResult getRotationChart(ImageDatas imageDatas)
+    {
+        List<ImageDatas> list = imageDataService.selectImageDataList(imageDatas);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 获取新闻文章
+     */
+    @PostMapping("/getNewS")
+    @RepeatSubmit
+    public AjaxResult getNewS(ColumnNews columnNews)
+    {
+        List<ColumnNews> list = columnNewsService.selectColumnNewsListMenHu(columnNews);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 获取新闻文章详情
+     */
+    @GetMapping("/{newsId}")
+    @RepeatSubmit
+    public AjaxResult getNewSDetail(@PathVariable("newsId") Integer newsId)
+    {
+        ColumnNews columnNews = columnNewsService.selectColumnNewsDetailMenHu(newsId);
+        return AjaxResult.success(columnNews);
+    }
+
+    /**
+     * 获取通知公告
+     */
+    @PostMapping("/getNotice")
+    @RepeatSubmit
+    public AjaxResult getNotice(SysNotice notice)
+    {
+        List<SysNotice> list = noticeService.selectNoticeListMenHu(notice);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 获取友链
+     */
+    @PostMapping("/getFriendLink")
+    @RepeatSubmit
+    public AjaxResult getFriendLink()
+    {
+        List<FriendLink> list = friendLinkService.selectFriendLinkList(new FriendLink());
+        return AjaxResult.success(list);
+    }
+
+
+    /**
+     * 给档案拥有者发送询问短信  todo做好防御
+     * @param reportQueryLog
+     * @return
+     */
+    @PostMapping("/sendQueryNum")
+    @RepeatSubmit
+    public AjaxResult sendQueryNum(ReportQueryLog reportQueryLog)
+    {
+        return  queryService.sendQueryNum(reportQueryLog);
+    }
+
+    /**
+     * 获取验证码 todo做好防御
+     * @param reportQueryLog
+     * @return
+     */
+    @PostMapping("/getCode")
+    @RepeatSubmit
+    public AjaxResult getCode(@Validated @RequestBody ReportQueryLog reportQueryLog)
+    {
+        return queryService.sendSms(reportQueryLog);
+    }
+}

+ 114 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ReportDetailController.java

@@ -0,0 +1,114 @@
+package com.ruoyi.web.controller.system;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.constant.UserConstants;
+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.system.domain.ReportDetail;
+import com.ruoyi.system.service.IReportDetailService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 报告信息Controller
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+@RestController
+@RequestMapping("/system/reportDetail")
+public class ReportDetailController extends BaseController
+{
+    @Autowired
+    private IReportDetailService reportDetailService;
+
+    /**
+     * 查询报告信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:reportDetail:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ReportDetail reportDetail)
+    {
+        startPage();
+        List<ReportDetail> list = reportDetailService.selectReportDetailList(reportDetail);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出报告信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:reportDetail:export')")
+    @Log(title = "报告信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ReportDetail reportDetail)
+    {
+        List<ReportDetail> list = reportDetailService.selectReportDetailList(reportDetail);
+        ExcelUtil<ReportDetail> util = new ExcelUtil<ReportDetail>(ReportDetail.class);
+        util.exportExcel(response, list, "报告信息数据");
+    }
+
+    /**
+     * 获取报告信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:reportDetail:query')")
+    @GetMapping(value = "/{reportId}")
+    public AjaxResult getInfo(@PathVariable("reportId") Long reportId)
+    {
+        return AjaxResult.success(reportDetailService.selectReportDetailByReportId(reportId));
+    }
+
+    /**
+     * 新增报告信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:reportDetail:add')")
+    @Log(title = "报告信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ReportDetail reportDetail)
+    {
+        if (UserConstants.NOT_UNIQUE.equals(reportDetailService.checkReportNumberUnique(reportDetail)))
+        {
+            return AjaxResult.error("新增报告信息'" + reportDetail.getReportNumber() + "'失败,报告编号已存在");
+        }
+        return toAjax(reportDetailService.insertReportDetail(reportDetail));
+    }
+
+    /**
+     * 修改报告信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:reportDetail:edit')")
+    @Log(title = "报告信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ReportDetail reportDetail)
+    {
+        if (UserConstants.NOT_UNIQUE.equals(reportDetailService.checkReportNumberUnique(reportDetail)))
+        {
+            return AjaxResult.error("修改报告信息'" + reportDetail.getReportNumber() + "'失败,报告编号已存在");
+        }
+        return toAjax(reportDetailService.updateReportDetail(reportDetail));
+    }
+
+    /**
+     * 删除报告信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:reportDetail:remove')")
+    @Log(title = "报告信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{reportIds}")
+    public AjaxResult remove(@PathVariable Long[] reportIds)
+    {
+        return toAjax(reportDetailService.deleteReportDetailByReportIds(reportIds));
+    }
+}

+ 105 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ReportQueryLogController.java

@@ -0,0 +1,105 @@
+package com.ruoyi.web.controller.system;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.system.domain.ReportQueryLog;
+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.system.service.IReportQueryLogService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 查询日志Controller
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+@RestController
+@RequestMapping("/system/queryLog")
+public class ReportQueryLogController extends BaseController
+{
+    @Autowired
+    private IReportQueryLogService reportQueryLogService;
+
+    /**
+     * 查询查询日志列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:queryLog:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ReportQueryLog reportQueryLog)
+    {
+        startPage();
+        List<ReportQueryLog> list = reportQueryLogService.selectReportQueryLogList(reportQueryLog);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出查询日志列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:queryLog:export')")
+    @Log(title = "查询日志", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ReportQueryLog reportQueryLog)
+    {
+        List<ReportQueryLog> list = reportQueryLogService.selectReportQueryLogList(reportQueryLog);
+        ExcelUtil<ReportQueryLog> util = new ExcelUtil<ReportQueryLog>(ReportQueryLog.class);
+        util.exportExcel(response, list, "查询日志数据");
+    }
+
+    /**
+     * 获取查询日志详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:queryLog:query')")
+    @GetMapping(value = "/{logId}")
+    public AjaxResult getInfo(@PathVariable("logId") Long logId)
+    {
+        return AjaxResult.success(reportQueryLogService.selectReportQueryLogByLogId(logId));
+    }
+
+    /**
+     * 新增查询日志
+     */
+    @PreAuthorize("@ss.hasPermi('system:queryLog:add')")
+    @Log(title = "查询日志", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ReportQueryLog reportQueryLog)
+    {
+        return toAjax(reportQueryLogService.insertReportQueryLog(reportQueryLog));
+    }
+
+    /**
+     * 修改查询日志
+     */
+    @PreAuthorize("@ss.hasPermi('system:queryLog:edit')")
+    @Log(title = "查询日志", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ReportQueryLog reportQueryLog)
+    {
+        return toAjax(reportQueryLogService.updateReportQueryLog(reportQueryLog));
+    }
+
+    /**
+     * 删除查询日志
+     */
+    @PreAuthorize("@ss.hasPermi('system:queryLog:remove')")
+    @Log(title = "查询日志", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{logIds}")
+    public AjaxResult remove(@PathVariable Long[] logIds)
+    {
+        return toAjax(reportQueryLogService.deleteReportQueryLogByLogIds(logIds));
+    }
+}

+ 15 - 0
ruoyi-admin/src/main/resources/application.yml

@@ -121,3 +121,18 @@ xss:
   excludes: /system/notice
   # 匹配链接
   urlPatterns: /system/*,/monitor/*,/tool/*
+
+#短信配置
+sms_aliyun_accessKeyId : LTAI5tNA2fcBJH6EWRH6Pxr6
+sms_aliyun_accessKeySecret : 5WdaPEOvC3u9LC7pwy2DQ9pgmJvgUr
+sms_aliyun_smsUpQueueName: Alicom-Queue-1825840013569207-SmsUp
+sms_aliyun_signName: 安徽博曼网络科技有限公司
+sms_aliyun_templateCode : SMS_219525380
+#查询码询问签名
+sms_aliyun_signNameQuery : 安徽博曼网络科技有限公司
+#查询码询问模板
+sms_aliyun_templateCodeQuery : SMS_219525380
+#查询码签名
+sms_aliyun_signNameNum : 安徽博曼网络科技有限公司
+#查询码模板
+sms_aliyun_templateCodeNum : SMS_219525380

+ 59 - 0
ruoyi-common/pom.xml

@@ -125,6 +125,65 @@
             <artifactId>javax.servlet-api</artifactId>
         </dependency>
 
+        <!--阿里短信服务-->
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-core</artifactId>
+            <version>4.5.22</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+
+<!--短信回执需要的依赖-->
+        <dependency>
+            <groupId>com.alicom</groupId>
+            <artifactId>alicom-mns-receive</artifactId>
+            <version>1.0.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alicom</groupId>
+            <artifactId>aliyun-java-sdk-core</artifactId>
+            <version>3.2.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alicom</groupId>
+            <artifactId>aliyun-java-sdk-dybaseapi</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alicom</groupId>
+            <artifactId>aliyun-sdk-mns</artifactId>
+            <version>1.1.8</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alicom</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.9</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alicom</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.1.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alicom</groupId>
+            <artifactId>httpasyncclient</artifactId>
+            <version>4.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alicom</groupId>
+            <artifactId>httpcore-nio</artifactId>
+            <version>4.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alicom</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.17</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 51 - 0
ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java

@@ -75,4 +75,55 @@ public class UserConstants
      */
     public static final int PASSWORD_MIN_LENGTH = 5;
     public static final int PASSWORD_MAX_LENGTH = 20;
+
+
+    /**
+     * 门户查询主体 个人
+     */
+    public static final String QUERY_TYPE_PEOPLE = "0";
+    /**
+     * 门户查询主体 单位
+     */
+    public static final String QUERY_TYPE_UNIT = "1";
+
+    /**
+     * 门户查询方式二维码查询
+     */
+    public static final String QUERY_MODE_EQ = "0";
+
+    /**
+     * 门户查询方式粗略查询
+     */
+    public static final String QUERY_MODE_ROUGH = "1";
+    /**
+     * 门户查询方式详情查询
+     */
+    public static final String QUERY_MODE_DETAIL = "2";
+
+    /**
+     * 门户查询验证码 redis key
+     */
+    public static final String QUERY_CODE_KEY = "query_codes:";
+
+
+    /**
+     * 门户查询查询码 redis key
+     */
+    public static final String QUERY_NUM_KEY = "query_num:";
+
+    /**
+     * 门户中用户档案拥有者回复短信的key,value存储申请查询人的手机号码
+     */
+    public static final String QUERY_NUM_CREATE = "query_num_create:";
+
+    /**
+     * 门户查询次数
+     */
+    public static final String QUERY_CODE_NUMBER = "query_number:";
+
+    /**
+     * 查询通过表示
+     */
+    public static final String QUERY_SUCCESS = "success";
+
 }

+ 37 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/ColumnNavigationBar.java

@@ -36,6 +36,19 @@ public class ColumnNavigationBar extends BaseEntity
     /** 显示顺序 */
     @Excel(name = "显示顺序")
     private Integer orderNum;
+    /**
+     * 是否是导航栏
+     */
+    private String isNavigationBar;
+
+    /**
+     * 是否是标题
+     */
+    private String isTitle;
+    /**
+     * 是否是底部导航
+     */
+    private String isBottom;
 
     /** 栏目状态(0正常 1停用) */
     @Excel(name = "栏目状态", readConverterExp = "0=正常,1=停用")
@@ -51,6 +64,30 @@ public class ColumnNavigationBar extends BaseEntity
         return children;
     }
 
+    public String getIsBottom() {
+        return isBottom;
+    }
+
+    public void setIsBottom(String isBottom) {
+        this.isBottom = isBottom;
+    }
+
+    public String getIsNavigationBar() {
+        return isNavigationBar;
+    }
+
+    public void setIsNavigationBar(String isNavigationBar) {
+        this.isNavigationBar = isNavigationBar;
+    }
+
+    public String getIsTitle() {
+        return isTitle;
+    }
+
+    public void setIsTitle(String isTitle) {
+        this.isTitle = isTitle;
+    }
+
     public void setChildren(List<ColumnNavigationBar> children) {
         this.children = children;
     }

+ 6 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java

@@ -21,6 +21,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
 
     public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
 
+    public static String YYYYMMDD = "yyyyMMdd";
+
     public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
     
     private static String[] parsePatterns = {
@@ -38,6 +40,10 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return new Date();
     }
 
+    public static String getDateNow() {
+        return dateTimeNow(YYYYMMDD);
+    }
+
     /**
      * 获取当前日期, 默认格式为yyyy-MM-dd
      * 

+ 119 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/SendSmsUtils.java

@@ -0,0 +1,119 @@
+package com.ruoyi.common.utils;
+
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.aliyuncs.exceptions.ClientException;
+import com.aliyuncs.profile.DefaultProfile;
+import com.aliyuncs.profile.IClientProfile;
+
+/**
+ * @author tjf
+ * @Date: 2021/07/15/10:21
+ */
+public class SendSmsUtils {
+    /**
+     * 产品名称:云通信短信API产品,开发者无需替换
+     */
+    static final String PRODUCT = "Dysmsapi";
+    /**
+     * 产品域名,开发者无需替换
+     */
+    static final String DOMAIN = "dysmsapi.aliyuncs.com";
+
+    /**
+     * TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
+     */
+
+    //短信参数
+//    static final String ACCESS_KEY_ID = "LTAI5tNA2fcBJH6EWRH6Pxr6";
+//    static final String ACCESS_KEY_SECRET = "5WdaPEOvC3u9LC7pwy2DQ9pgmJvgUr";
+
+    /**
+     * 发送短信接口
+     * @param phone
+     * @return
+     * @throws ClientException
+     */
+    public static SendSmsResponse sendSms(String phone,String code,String accessKeyId,String accessKeySecret,String signName,String templateCode ) throws ClientException {
+        //可自助调整超时时间
+        System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
+        System.setProperty("sun.net.client.defaultReadTimeout", "10000");
+
+        //初始化acsClient,暂不支持region化
+        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
+        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", PRODUCT, DOMAIN);
+        IAcsClient acsClient = new DefaultAcsClient(profile);
+
+        //组装请求对象-具体描述见控制台-文档部分内容
+        SendSmsRequest request = new SendSmsRequest();
+        //必填:待发送手机号 多个手机号用逗号分割
+        request.setPhoneNumbers(phone);
+        //必填:短信签名-可在短信控制台中找到
+        request.setSignName(signName);
+        //必填:短信模板-可在短信控制台中找到
+        request.setTemplateCode(templateCode);
+        //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
+        request.setTemplateParam(code);
+        //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
+        //request.setOutId("2345");
+        //hint 此处可能会抛出异常,注意catch
+        return acsClient.getAcsResponse(request);
+    }
+
+
+    /**
+     * 短信查验接口
+     * @param bizId
+     * @param phone
+     * @return
+     * @throws ClientException
+     */
+    public static QuerySendDetailsResponse querySendDetails(String bizId, String phone,String accessKeyId,String accessKeySecret) throws ClientException {
+
+        //可自助调整超时时间
+        System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
+        System.setProperty("sun.net.client.defaultReadTimeout", "10000");
+
+        //初始化acsClient,暂不支持region化
+        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
+        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", PRODUCT, DOMAIN);
+        IAcsClient acsClient = new DefaultAcsClient(profile);
+
+        //组装请求对象
+        QuerySendDetailsRequest request = new QuerySendDetailsRequest();
+        //必填-号码
+        request.setPhoneNumber(phone);
+        //可选-流水号
+        request.setBizId(bizId);
+        //必填-发送日期 支持30天内记录查询,格式yyyyMMdd
+        request.setSendDate(DateUtils.getDateNow());
+        //必填-页大小
+        request.setPageSize(10L);
+        //必填-当前页码从1开始计数
+        request.setCurrentPage(1L);
+
+        //hint 此处可能会抛出异常,注意catch
+        QuerySendDetailsResponse querySendDetailsResponse = null;
+        try {
+            querySendDetailsResponse = acsClient.getAcsResponse(request);
+        } catch (ClientException e) {
+            e.printStackTrace();
+        }
+        return querySendDetailsResponse;
+    }
+
+    //生成X位验证码
+    public static String getCode(Integer num) {
+        String[] codes = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
+        StringBuilder code = new StringBuilder();
+        for (int i = 0; i < num; i++) {
+            int j = (int) (Math.random() * 10);
+            code.append(codes[j]);
+        }
+        return code.toString();
+    }
+}

+ 1 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -112,6 +112,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/webjars/**").anonymous()
                 .antMatchers("/*/api-docs").anonymous()
                 .antMatchers("/druid/**").anonymous()
+                .antMatchers("/gateway/query/**").anonymous()
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()
                 .and()

+ 96 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/FriendLink.java

@@ -0,0 +1,96 @@
+package com.ruoyi.system.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;
+
+/**
+ * 友链导航对象 friend_link
+ * 
+ * @author boman
+ * @date 2021-12-29
+ */
+public class FriendLink extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 友链id */
+    private Long linkId;
+
+    /** 友链名称 */
+    @Excel(name = "友链名称")
+    private String linkName;
+
+    /** 友链地址 */
+    @Excel(name = "友链地址")
+    private String linkSpace;
+
+    /** 友链状态(0正常 1停用) */
+    @Excel(name = "友链状态", readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /** 删除标志(N代表存在 Y代表删除) */
+    private String delFlag;
+
+    public void setLinkId(Long linkId) 
+    {
+        this.linkId = linkId;
+    }
+
+    public Long getLinkId() 
+    {
+        return linkId;
+    }
+    public void setLinkName(String linkName) 
+    {
+        this.linkName = linkName;
+    }
+
+    public String getLinkName() 
+    {
+        return linkName;
+    }
+    public void setLinkSpace(String linkSpace) 
+    {
+        this.linkSpace = linkSpace;
+    }
+
+    public String getLinkSpace() 
+    {
+        return linkSpace;
+    }
+    public void setStatus(String status) 
+    {
+        this.status = status;
+    }
+
+    public String getStatus() 
+    {
+        return status;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("linkId", getLinkId())
+            .append("linkName", getLinkName())
+            .append("linkSpace", getLinkSpace())
+            .append("status", getStatus())
+            .append("delFlag", getDelFlag())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 126 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/ImageDatas.java

@@ -0,0 +1,126 @@
+package com.ruoyi.system.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;
+
+/**
+ * 附件信息对象 image_data
+ * 
+ * @author boman
+ * @date 2021-12-24
+ */
+public class ImageDatas extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 附件ID */
+    private Long imageId;
+
+    /** 附件名称 */
+    @Excel(name = "附件名称")
+    private String imageName;
+
+    /** 附件内容 */
+    @Excel(name = "附件内容")
+    private String imageContent;
+
+    /**
+     * 附件简介
+     */
+    @Excel(name = "附件简介")
+    private String imageIntroduce;
+
+    /** 附件状态(0正常 1停用) */
+    @Excel(name = "附件状态", readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /** 附件类型(0首页大图,1轮播图) */
+    @Excel(name = "附件类型", readConverterExp = "0=首页大图,1轮播图")
+    private String type;
+
+    /** 是否删除(N正常 Y删除) */
+    @Excel(name = "是否删除", readConverterExp = "N=正常,Y=删除")
+    private String isDel;
+
+    public String getImageIntroduce() {
+        return imageIntroduce;
+    }
+
+    public void setImageIntroduce(String imageIntroduce) {
+        this.imageIntroduce = imageIntroduce;
+    }
+
+    public void setImageId(Long imageId)
+    {
+        this.imageId = imageId;
+    }
+
+    public Long getImageId() 
+    {
+        return imageId;
+    }
+    public void setImageName(String imageName) 
+    {
+        this.imageName = imageName;
+    }
+
+    public String getImageName() 
+    {
+        return imageName;
+    }
+    public void setImageContent(String imageContent) 
+    {
+        this.imageContent = imageContent;
+    }
+
+    public String getImageContent() 
+    {
+        return imageContent;
+    }
+    public void setStatus(String status) 
+    {
+        this.status = status;
+    }
+
+    public String getStatus() 
+    {
+        return status;
+    }
+    public void setType(String type) 
+    {
+        this.type = type;
+    }
+
+    public String getType() 
+    {
+        return type;
+    }
+    public void setIsDel(String isDel) 
+    {
+        this.isDel = isDel;
+    }
+
+    public String getIsDel() 
+    {
+        return isDel;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("imageId", getImageId())
+            .append("imageName", getImageName())
+            .append("imageContent", getImageContent())
+            .append("status", getStatus())
+            .append("type", getType())
+            .append("isDel", getIsDel())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 182 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/InspectInfor.java

@@ -0,0 +1,182 @@
+package com.ruoyi.system.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;
+
+/**
+ * 送检信息对象 inspect_infor
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+public class InspectInfor extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 送检ID */
+    private Long inspectId;
+
+    /** 样品名称 */
+    @Excel(name = "样品名称")
+    private String sampleName;
+
+    /** 样品数量 */
+    @Excel(name = "样品数量")
+    private Long sampleNum;
+
+    /** 规格型号 */
+    @Excel(name = "规格型号")
+    private String normsModel;
+
+    /** 检验项目 */
+    @Excel(name = "检验项目")
+    private String testItems;
+
+    /** 提供方式 */
+    @Excel(name = "提供方式")
+    private String provideType;
+
+    /** 生产单位名称 */
+    @Excel(name = "生产单位名称")
+    private String manufacturerName;
+
+    /** 生产单位电话 */
+    @Excel(name = "生产单位电话")
+    private String manufacturerPhone;
+
+    /** 受检单位名称 */
+    @Excel(name = "受检单位名称")
+    private String inspectedName;
+
+    /** 受检单位电话 */
+    @Excel(name = "受检单位电话")
+    private String inspectedPhone;
+
+    /** 是否删除(N正常 Y删除) */
+    @Excel(name = "是否删除", readConverterExp = "N=正常,Y=删除")
+    private String isDel;
+
+    public void setInspectId(Long inspectId) 
+    {
+        this.inspectId = inspectId;
+    }
+
+    public Long getInspectId() 
+    {
+        return inspectId;
+    }
+    public void setSampleName(String sampleName) 
+    {
+        this.sampleName = sampleName;
+    }
+
+    public String getSampleName() 
+    {
+        return sampleName;
+    }
+    public void setSampleNum(Long sampleNum) 
+    {
+        this.sampleNum = sampleNum;
+    }
+
+    public Long getSampleNum() 
+    {
+        return sampleNum;
+    }
+    public void setNormsModel(String normsModel) 
+    {
+        this.normsModel = normsModel;
+    }
+
+    public String getNormsModel() 
+    {
+        return normsModel;
+    }
+    public void setTestItems(String testItems) 
+    {
+        this.testItems = testItems;
+    }
+
+    public String getTestItems() 
+    {
+        return testItems;
+    }
+    public void setProvideType(String provideType) 
+    {
+        this.provideType = provideType;
+    }
+
+    public String getProvideType() 
+    {
+        return provideType;
+    }
+    public void setManufacturerName(String manufacturerName) 
+    {
+        this.manufacturerName = manufacturerName;
+    }
+
+    public String getManufacturerName() 
+    {
+        return manufacturerName;
+    }
+    public void setManufacturerPhone(String manufacturerPhone) 
+    {
+        this.manufacturerPhone = manufacturerPhone;
+    }
+
+    public String getManufacturerPhone() 
+    {
+        return manufacturerPhone;
+    }
+    public void setInspectedName(String inspectedName) 
+    {
+        this.inspectedName = inspectedName;
+    }
+
+    public String getInspectedName() 
+    {
+        return inspectedName;
+    }
+    public void setInspectedPhone(String inspectedPhone) 
+    {
+        this.inspectedPhone = inspectedPhone;
+    }
+
+    public String getInspectedPhone() 
+    {
+        return inspectedPhone;
+    }
+    public void setIsDel(String isDel) 
+    {
+        this.isDel = isDel;
+    }
+
+    public String getIsDel() 
+    {
+        return isDel;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("inspectId", getInspectId())
+            .append("sampleName", getSampleName())
+            .append("sampleNum", getSampleNum())
+            .append("normsModel", getNormsModel())
+            .append("testItems", getTestItems())
+            .append("provideType", getProvideType())
+            .append("manufacturerName", getManufacturerName())
+            .append("manufacturerPhone", getManufacturerPhone())
+            .append("inspectedName", getInspectedName())
+            .append("inspectedPhone", getInspectedPhone())
+            .append("isDel", getIsDel())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 140 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/QueryConfig.java

@@ -0,0 +1,140 @@
+package com.ruoyi.system.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;
+
+/**
+ * 查询配置对象 query_config
+ * 
+ * @author 博曼
+ * @date 2021-12-27
+ */
+public class QueryConfig extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 查询配置Id */
+    private Long configId;
+
+    /** 查询次数 */
+    @Excel(name = "查询次数")
+    private Integer queryNumber;
+
+    /** 二维码失效单位 */
+    @Excel(name = "二维码失效单位")
+    private String qrUnit;
+
+    /** 二维码失效时间 */
+    @Excel(name = "二维码失效时间")
+    private String qrTime;
+
+    /** 单位查询主体 */
+    @Excel(name = "单位查询主体")
+    private String queryType;
+
+    /** 查询方式 */
+    @Excel(name = "查询方式")
+    private String queryMode;
+
+    /** 是否正常(N正常 Y停用) */
+    @Excel(name = "是否正常", readConverterExp = "N=正常,Y=停用")
+    private String status;
+
+    /** 是否删除(N正常 Y删除) */
+    @Excel(name = "是否删除", readConverterExp = "N=正常,Y=删除")
+    private String isDel;
+
+    public void setConfigId(Long configId) 
+    {
+        this.configId = configId;
+    }
+
+    public Long getConfigId() 
+    {
+        return configId;
+    }
+    public void setQueryNumber(Integer queryNumber) 
+    {
+        this.queryNumber = queryNumber;
+    }
+
+    public Integer getQueryNumber() 
+    {
+        return queryNumber;
+    }
+    public void setQrUnit(String qrUnit) 
+    {
+        this.qrUnit = qrUnit;
+    }
+
+    public String getQrUnit() 
+    {
+        return qrUnit;
+    }
+    public void setQrTime(String qrTime) 
+    {
+        this.qrTime = qrTime;
+    }
+
+    public String getQrTime() 
+    {
+        return qrTime;
+    }
+    public void setQueryType(String queryType) 
+    {
+        this.queryType = queryType;
+    }
+
+    public String getQueryType() 
+    {
+        return queryType;
+    }
+    public void setQueryMode(String queryMode) 
+    {
+        this.queryMode = queryMode;
+    }
+
+    public String getQueryMode() 
+    {
+        return queryMode;
+    }
+    public void setStatus(String status) 
+    {
+        this.status = status;
+    }
+
+    public String getStatus() 
+    {
+        return status;
+    }
+    public void setIsDel(String isDel) 
+    {
+        this.isDel = isDel;
+    }
+
+    public String getIsDel() 
+    {
+        return isDel;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("configId", getConfigId())
+            .append("queryNumber", getQueryNumber())
+            .append("qrUnit", getQrUnit())
+            .append("qrTime", getQrTime())
+            .append("queryType", getQueryType())
+            .append("queryMode", getQueryMode())
+            .append("status", getStatus())
+            .append("isDel", getIsDel())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 167 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/ReportDetail.java

@@ -0,0 +1,167 @@
+package com.ruoyi.system.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;
+
+/**
+ * 报告信息对象 report_detail
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+public class ReportDetail extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 报告ID */
+    private Long reportId;
+
+    /** 报告编号 */
+    @Excel(name = "报告编号")
+    private String reportNumber;
+
+    /** 送检ID */
+    @Excel(name = "送检ID")
+    private Long inspectId;
+
+    /** 样品名称 */
+    @Excel(name = "样品名称")
+    private String sampleName;
+
+    /** 送检单位名称 */
+    @Excel(name = "送检单位名称")
+    private String inspectName;
+
+    /** 委托单位名称 */
+    @Excel(name = "委托单位名称")
+    private String entrustName;
+
+    /** 是否合格(N合格 Y不合格) */
+    @Excel(name = "是否合格", readConverterExp = "N=合格,Y=不合格")
+    private String isQualify;
+
+    /** 报告图片 */
+    @Excel(name = "报告图片")
+    private String reportUrl;
+
+    /** 是否删除(N正常 Y删除) */
+    @Excel(name = "是否删除", readConverterExp = "N=正常,Y=删除")
+    private String isDel;
+
+    /**
+     * 创建人手机号码
+     */
+    private String phonenumber;
+
+    public String getPhonenumber() {
+        return phonenumber;
+    }
+
+    public void setPhonenumber(String phonenumber) {
+        this.phonenumber = phonenumber;
+    }
+
+    public void setReportId(Long reportId)
+    {
+        this.reportId = reportId;
+    }
+
+    public Long getReportId() 
+    {
+        return reportId;
+    }
+    public void setReportNumber(String reportNumber) 
+    {
+        this.reportNumber = reportNumber;
+    }
+
+    public String getReportNumber() 
+    {
+        return reportNumber;
+    }
+    public void setInspectId(Long inspectId) 
+    {
+        this.inspectId = inspectId;
+    }
+
+    public Long getInspectId() 
+    {
+        return inspectId;
+    }
+    public void setSampleName(String sampleName) 
+    {
+        this.sampleName = sampleName;
+    }
+
+    public String getSampleName() 
+    {
+        return sampleName;
+    }
+    public void setInspectName(String inspectName) 
+    {
+        this.inspectName = inspectName;
+    }
+
+    public String getInspectName() 
+    {
+        return inspectName;
+    }
+    public void setEntrustName(String entrustName) 
+    {
+        this.entrustName = entrustName;
+    }
+
+    public String getEntrustName() 
+    {
+        return entrustName;
+    }
+    public void setIsQualify(String isQualify) 
+    {
+        this.isQualify = isQualify;
+    }
+
+    public String getIsQualify() 
+    {
+        return isQualify;
+    }
+    public void setReportUrl(String reportUrl) 
+    {
+        this.reportUrl = reportUrl;
+    }
+
+    public String getReportUrl() 
+    {
+        return reportUrl;
+    }
+    public void setIsDel(String isDel) 
+    {
+        this.isDel = isDel;
+    }
+
+    public String getIsDel() 
+    {
+        return isDel;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("reportId", getReportId())
+            .append("reportNumber", getReportNumber())
+            .append("inspectId", getInspectId())
+            .append("sampleName", getSampleName())
+            .append("inspectName", getInspectName())
+            .append("entrustName", getEntrustName())
+            .append("isQualify", getIsQualify())
+            .append("reportUrl", getReportUrl())
+            .append("isDel", getIsDel())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 209 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/ReportQueryLog.java

@@ -0,0 +1,209 @@
+package com.ruoyi.system.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;
+
+/**
+ * 查询日志对象 report_query_log
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+public class ReportQueryLog extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 查询日志ID */
+    private Long logId;
+
+    /** 报告编号 */
+    @Excel(name = "报告编号")
+    private String reportNumber;
+
+    /** 查询人姓名 */
+    @Excel(name = "查询人姓名")
+    private String queryName;
+
+    /** 查询人手机号 */
+    @Excel(name = "查询人手机号")
+    private String queryPhone;
+
+    /** 单位名称 */
+    @Excel(name = "单位名称")
+    private String companyName;
+
+    /** 单位手机号 */
+    @Excel(name = "单位手机号")
+    private String companyPhone;
+
+    /** 查询主体 */
+    @Excel(name = "查询主体")
+    private String queryType;
+
+    /** 查询方式(1 二维码 2 粗略 3 详细查询) */
+    @Excel(name = "查询方式(1 二维码 2 粗略 3 详细查询)")
+    private String queryMode;
+
+    /** 查询码 */
+    @Excel(name = "查询码")
+    private String queryNum;
+    /**
+     * 验证码
+     */
+    @Excel(name = "验证码")
+    private String code;
+
+    /**
+     * 二维码
+     */
+    @Excel(name = "二维码")
+    private String qrImage;
+
+    /** 是否删除(N正常 Y删除) */
+    @Excel(name = "是否删除", readConverterExp = "N=正常,Y=删除")
+    private String isDel;
+    /**
+     * 是否成功
+     */
+    @Excel(name = "是否成功", readConverterExp = "0=成功,1=失败")
+    private String isSuccess;
+
+    public String getQrImage() {
+        return qrImage;
+    }
+
+    public void setQrImage(String qrImage) {
+        this.qrImage = qrImage;
+    }
+
+    public String getIsSuccess() {
+        return isSuccess;
+    }
+
+    public void setIsSuccess(String isSuccess) {
+        this.isSuccess = isSuccess;
+    }
+
+    public void setLogId(Long logId)
+    {
+        this.logId = logId;
+    }
+
+    public Long getLogId() 
+    {
+        return logId;
+    }
+    public void setReportNumber(String reportNumber) 
+    {
+        this.reportNumber = reportNumber;
+    }
+
+    public String getReportNumber() 
+    {
+        return reportNumber;
+    }
+    public void setQueryName(String queryName) 
+    {
+        this.queryName = queryName;
+    }
+
+    public String getQueryName() 
+    {
+        return queryName;
+    }
+    public void setQueryPhone(String queryPhone) 
+    {
+        this.queryPhone = queryPhone;
+    }
+
+    public String getQueryPhone() 
+    {
+        return queryPhone;
+    }
+    public void setCompanyName(String companyName) 
+    {
+        this.companyName = companyName;
+    }
+
+    public String getCompanyName() 
+    {
+        return companyName;
+    }
+    public void setCompanyPhone(String companyPhone) 
+    {
+        this.companyPhone = companyPhone;
+    }
+
+    public String getCompanyPhone() 
+    {
+        return companyPhone;
+    }
+    public void setQueryType(String queryType) 
+    {
+        this.queryType = queryType;
+    }
+
+    public String getQueryType() 
+    {
+        return queryType;
+    }
+    public void setQueryMode(String queryMode) 
+    {
+        this.queryMode = queryMode;
+    }
+
+    public String getQueryMode() 
+    {
+        return queryMode;
+    }
+    public void setQueryNum(String queryNum) 
+    {
+        this.queryNum = queryNum;
+    }
+
+    public String getQueryNum() 
+    {
+        return queryNum;
+    }
+    public void setIsDel(String isDel) 
+    {
+        this.isDel = isDel;
+    }
+
+    public String getIsDel() 
+    {
+        return isDel;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("logId", getLogId())
+            .append("reportNumber", getReportNumber())
+            .append("queryName", getQueryName())
+            .append("queryPhone", getQueryPhone())
+            .append("companyName", getCompanyName())
+            .append("companyPhone", getCompanyPhone())
+            .append("queryType", getQueryType())
+            .append("queryMode", getQueryMode())
+            .append("queryNum", getQueryNum())
+            .append("code", getCode())
+            .append("isDel", getIsDel())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ColumnNavigationBarMapper.java

@@ -29,6 +29,13 @@ public interface ColumnNavigationBarMapper
      */
     public List<ColumnNavigationBar> selectColumnNavigationBarList(ColumnNavigationBar columnNavigationBar);
 
+    /**
+     * 门户获取首页各个部门标题
+     * @param columnNavigationBar
+     * @return
+     */
+    public List<ColumnNavigationBar> selectColumnNavigationBarListMenHu(ColumnNavigationBar columnNavigationBar);
+
     /**
      * 新增栏目导航
      *

+ 14 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ColumnNewsMapper.java

@@ -19,6 +19,13 @@ public interface ColumnNewsMapper
      */
     public ColumnNews selectColumnNewsByNewsId(Integer newsId);
 
+    /**
+     * 门户查询新闻信息
+     * @param newsId
+     * @return
+     */
+    public ColumnNews selectColumnNewsDetailMenHu(Integer newsId);
+
     /**
      * 查询新闻信息列表
      * 
@@ -27,6 +34,13 @@ public interface ColumnNewsMapper
      */
     public List<ColumnNews> selectColumnNewsList(ColumnNews columnNews);
 
+    /**
+     * 查询新闻信息列表门户
+     * @param columnNews
+     * @return
+     */
+    public List<ColumnNews> selectColumnNewsListMenHu(ColumnNews columnNews);
+
     /**
      * 新增新闻信息
      * 

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/FriendLinkMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.FriendLink;
+
+/**
+ * 友链导航Mapper接口
+ * 
+ * @author boman
+ * @date 2021-12-29
+ */
+public interface FriendLinkMapper 
+{
+    /**
+     * 查询友链导航
+     * 
+     * @param linkId 友链导航主键
+     * @return 友链导航
+     */
+    public FriendLink selectFriendLinkByLinkId(Long linkId);
+
+    /**
+     * 查询友链导航列表
+     * 
+     * @param friendLink 友链导航
+     * @return 友链导航集合
+     */
+    public List<FriendLink> selectFriendLinkList(FriendLink friendLink);
+
+    /**
+     * 新增友链导航
+     * 
+     * @param friendLink 友链导航
+     * @return 结果
+     */
+    public int insertFriendLink(FriendLink friendLink);
+
+    /**
+     * 修改友链导航
+     * 
+     * @param friendLink 友链导航
+     * @return 结果
+     */
+    public int updateFriendLink(FriendLink friendLink);
+
+    /**
+     * 删除友链导航
+     * 
+     * @param linkId 友链导航主键
+     * @return 结果
+     */
+    public int deleteFriendLinkByLinkId(Long linkId);
+
+    /**
+     * 批量删除友链导航
+     * 
+     * @param linkIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteFriendLinkByLinkIds(Long[] linkIds);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ImageDataMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.ImageDatas;
+
+/**
+ * 附件信息Mapper接口
+ * 
+ * @author boman
+ * @date 2021-12-24
+ */
+public interface ImageDataMapper
+{
+    /**
+     * 查询附件信息
+     * 
+     * @param imageId 附件信息主键
+     * @return 附件信息
+     */
+    public ImageDatas selectImageDatasByImageId(Long imageId);
+
+    /**
+     * 查询附件信息列表
+     * 
+     * @param imageDatas 附件信息
+     * @return 附件信息集合
+     */
+    public List<ImageDatas> selectImageDatasList(ImageDatas imageDatas);
+
+    /**
+     * 新增附件信息
+     * 
+     * @param imageDatas 附件信息
+     * @return 结果
+     */
+    public int insertImageDatas(ImageDatas imageDatas);
+
+    /**
+     * 修改附件信息
+     * 
+     * @param imageDatas 附件信息
+     * @return 结果
+     */
+    public int updateImageDatas(ImageDatas imageDatas);
+
+    /**
+     * 删除附件信息
+     * 
+     * @param imageId 附件信息主键
+     * @return 结果
+     */
+    public int deleteImageDatasByImageId(Long imageId);
+
+    /**
+     * 批量删除附件信息
+     * 
+     * @param imageIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteImageDatasByImageIds(Long[] imageIds);
+}

+ 69 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/InspectInforMapper.java

@@ -0,0 +1,69 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.InspectInfor;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 送检信息Mapper接口
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+public interface InspectInforMapper 
+{
+    /**
+     * 查询送检信息
+     * 
+     * @param inspectId 送检信息主键
+     * @return 送检信息
+     */
+    public InspectInfor selectInspectInforByInspectId(Long inspectId);
+
+    /**
+     * 查询送检信息列表
+     * 
+     * @param inspectInfor 送检信息
+     * @return 送检信息集合
+     */
+    public List<InspectInfor> selectInspectInforList(InspectInfor inspectInfor);
+
+    /**
+     * 新增送检信息
+     * 
+     * @param inspectInfor 送检信息
+     * @return 结果
+     */
+    public int insertInspectInfor(InspectInfor inspectInfor);
+
+    /**
+     * 修改送检信息
+     * 
+     * @param inspectInfor 送检信息
+     * @return 结果
+     */
+    public int updateInspectInfor(InspectInfor inspectInfor);
+
+    /**
+     * 删除送检信息
+     * 
+     * @param inspectId 送检信息主键
+     * @return 结果
+     */
+    public int deleteInspectInforByInspectId(Long inspectId);
+
+    /**
+     * 批量删除送检信息
+     * 
+     * @param inspectIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteInspectInforByInspectIds(Long[] inspectIds);
+
+    /**
+     * 校验样品名称的唯一性
+     * @param sampleName
+     * @return
+     */
+    InspectInfor checkSampleNameUnique(@Param("sampleName") String sampleName);
+}

+ 68 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/QueryConfigMapper.java

@@ -0,0 +1,68 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.QueryConfig;
+
+/**
+ * 查询配置Mapper接口
+ * 
+ * @author 博曼
+ * @date 2021-12-27
+ */
+public interface QueryConfigMapper 
+{
+    /**
+     * 查询查询配置
+     * 
+     * @param configId 查询配置主键
+     * @return 查询配置
+     */
+    public QueryConfig selectQueryConfigByConfigId(Long configId);
+
+    /**
+     * 查询查询配置列表
+     * 
+     * @param queryConfig 查询配置
+     * @return 查询配置集合
+     */
+    public List<QueryConfig> selectQueryConfigList(QueryConfig queryConfig);
+
+    /**
+     * 查询查询配置信息
+     * @param queryConfig
+     * @return
+     */
+    public QueryConfig selectQueryConfig(QueryConfig queryConfig);
+
+    /**
+     * 新增查询配置
+     * 
+     * @param queryConfig 查询配置
+     * @return 结果
+     */
+    public int insertQueryConfig(QueryConfig queryConfig);
+
+    /**
+     * 修改查询配置
+     * 
+     * @param queryConfig 查询配置
+     * @return 结果
+     */
+    public int updateQueryConfig(QueryConfig queryConfig);
+
+    /**
+     * 删除查询配置
+     * 
+     * @param configId 查询配置主键
+     * @return 结果
+     */
+    public int deleteQueryConfigByConfigId(Long configId);
+
+    /**
+     * 批量删除查询配置
+     * 
+     * @param configIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteQueryConfigByConfigIds(Long[] configIds);
+}

+ 83 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ReportDetailMapper.java

@@ -0,0 +1,83 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.ReportDetail;
+
+/**
+ * 报告信息Mapper接口
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+public interface ReportDetailMapper 
+{
+    /**
+     * 查询报告信息
+     * 
+     * @param reportId 报告信息主键
+     * @return 报告信息
+     */
+    public ReportDetail selectReportDetailByReportId(Long reportId);
+
+    /**
+     * 查询报告信息列表
+     * 
+     * @param reportDetail 报告信息
+     * @return 报告信息集合
+     */
+    public List<ReportDetail> selectReportDetailList(ReportDetail reportDetail);
+
+    /**
+     * 新增报告信息
+     * 
+     * @param reportDetail 报告信息
+     * @return 结果
+     */
+    public int insertReportDetail(ReportDetail reportDetail);
+
+    /**
+     * 修改报告信息
+     * 
+     * @param reportDetail 报告信息
+     * @return 结果
+     */
+    public int updateReportDetail(ReportDetail reportDetail);
+
+    /**
+     * 删除报告信息
+     * 
+     * @param reportId 报告信息主键
+     * @return 结果
+     */
+    public int deleteReportDetailByReportId(Long reportId);
+
+    /**
+     * 批量删除报告信息
+     * 
+     * @param reportIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteReportDetailByReportIds(Long[] reportIds);
+
+
+    /**
+     * 校验报告编号唯一性
+     * @param reportNumber
+     * @return
+     */
+    public ReportDetail checkReportNumberUnique(String reportNumber);
+
+    /**
+     * 根据报告编号查询详情信息
+     * @param reportNumber
+     * @return
+     */
+    ReportDetail selectReportDetailByReportNumber(String reportNumber);
+
+    /**
+     * 根据报告编号查询详情信息中的详细查询
+     * @param reportNumber
+     * @return
+     */
+    ReportDetail selectReportDetailByReportNumberDetail(String reportNumber);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ReportQueryLogMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.ReportQueryLog;
+
+/**
+ * 查询日志Mapper接口
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+public interface ReportQueryLogMapper 
+{
+    /**
+     * 查询查询日志
+     * 
+     * @param logId 查询日志主键
+     * @return 查询日志
+     */
+    public ReportQueryLog selectReportQueryLogByLogId(Long logId);
+
+    /**
+     * 查询查询日志列表
+     * 
+     * @param reportQueryLog 查询日志
+     * @return 查询日志集合
+     */
+    public List<ReportQueryLog> selectReportQueryLogList(ReportQueryLog reportQueryLog);
+
+    /**
+     * 新增查询日志
+     * 
+     * @param reportQueryLog 查询日志
+     * @return 结果
+     */
+    public int insertReportQueryLog(ReportQueryLog reportQueryLog);
+
+    /**
+     * 修改查询日志
+     * 
+     * @param reportQueryLog 查询日志
+     * @return 结果
+     */
+    public int updateReportQueryLog(ReportQueryLog reportQueryLog);
+
+    /**
+     * 删除查询日志
+     * 
+     * @param logId 查询日志主键
+     * @return 结果
+     */
+    public int deleteReportQueryLogByLogId(Long logId);
+
+    /**
+     * 批量删除查询日志
+     * 
+     * @param logIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteReportQueryLogByLogIds(Long[] logIds);
+}

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java

@@ -26,6 +26,13 @@ public interface SysNoticeMapper
      */
     public List<SysNotice> selectNoticeList(SysNotice notice);
 
+    /**
+     * 门户查询公告列表
+     * @param notice
+     * @return
+     */
+    public List<SysNotice> selectNoticeListMenHu(SysNotice notice);
+
     /**
      * 新增公告
      * 

+ 14 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/AlicomMessageListenterService.java

@@ -0,0 +1,14 @@
+package com.ruoyi.system.service;
+
+import com.alicom.mns.tools.MessageListener;
+import com.aliyun.mns.model.Message;
+
+
+/**创建接口继承阿里的监听
+ * @author tjf
+ * @Date: 2021/12/28/9:42
+ */
+public interface AlicomMessageListenterService extends MessageListener {
+    @Override
+    boolean dealMessage(Message message);
+}

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IColumnNavigationBarService.java

@@ -30,6 +30,13 @@ public interface IColumnNavigationBarService
      */
     public List<ColumnNavigationBar> selectColumnNavigationBarList(ColumnNavigationBar columnNavigationBar);
 
+    /**
+     * 门户获取各个部分首页标题
+     * @param columnNavigationBar
+     * @return
+     */
+    public List<ColumnNavigationBar> selectColumnNavigationBarListMenHu(ColumnNavigationBar columnNavigationBar);
+
     /**
      * 新增栏目导航
      * 

+ 14 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IColumnNewsService.java

@@ -19,6 +19,13 @@ public interface IColumnNewsService
      */
     public ColumnNews selectColumnNewsByNewsId(Integer newsId);
 
+    /**
+     * 门户查询新闻信息
+     * @param newsId
+     * @return
+     */
+    public ColumnNews selectColumnNewsDetailMenHu(Integer newsId);
+
     /**
      * 查询新闻信息列表
      * 
@@ -27,6 +34,13 @@ public interface IColumnNewsService
      */
     public List<ColumnNews> selectColumnNewsList(ColumnNews columnNews);
 
+    /**
+     * 查询新闻信息列表门户
+     * @param columnNews
+     * @return
+     */
+    public List<ColumnNews> selectColumnNewsListMenHu(ColumnNews columnNews);
+
     /**
      * 新增新闻信息
      * 

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IFriendLinkService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.FriendLink;
+
+/**
+ * 友链导航Service接口
+ * 
+ * @author boman
+ * @date 2021-12-29
+ */
+public interface IFriendLinkService 
+{
+    /**
+     * 查询友链导航
+     * 
+     * @param linkId 友链导航主键
+     * @return 友链导航
+     */
+    public FriendLink selectFriendLinkByLinkId(Long linkId);
+
+    /**
+     * 查询友链导航列表
+     * 
+     * @param friendLink 友链导航
+     * @return 友链导航集合
+     */
+    public List<FriendLink> selectFriendLinkList(FriendLink friendLink);
+
+    /**
+     * 新增友链导航
+     * 
+     * @param friendLink 友链导航
+     * @return 结果
+     */
+    public int insertFriendLink(FriendLink friendLink);
+
+    /**
+     * 修改友链导航
+     * 
+     * @param friendLink 友链导航
+     * @return 结果
+     */
+    public int updateFriendLink(FriendLink friendLink);
+
+    /**
+     * 批量删除友链导航
+     * 
+     * @param linkIds 需要删除的友链导航主键集合
+     * @return 结果
+     */
+    public int deleteFriendLinkByLinkIds(Long[] linkIds);
+
+    /**
+     * 删除友链导航信息
+     * 
+     * @param linkId 友链导航主键
+     * @return 结果
+     */
+    public int deleteFriendLinkByLinkId(Long linkId);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IImageDataService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.ImageDatas;
+
+/**
+ * 附件信息Service接口
+ * 
+ * @author boman
+ * @date 2021-12-24
+ */
+public interface IImageDataService 
+{
+    /**
+     * 查询附件信息
+     * 
+     * @param imageId 附件信息主键
+     * @return 附件信息
+     */
+    public ImageDatas selectImageDataByImageId(Long imageId);
+
+    /**
+     * 查询附件信息列表
+     * 
+     * @param imageData 附件信息
+     * @return 附件信息集合
+     */
+    public List<ImageDatas> selectImageDataList(ImageDatas imageData);
+
+    /**
+     * 新增附件信息
+     * 
+     * @param imageData 附件信息
+     * @return 结果
+     */
+    public int insertImageData(ImageDatas imageData);
+
+    /**
+     * 修改附件信息
+     * 
+     * @param imageData 附件信息
+     * @return 结果
+     */
+    public int updateImageData(ImageDatas imageData);
+
+    /**
+     * 批量删除附件信息
+     * 
+     * @param imageIds 需要删除的附件信息主键集合
+     * @return 结果
+     */
+    public int deleteImageDataByImageIds(Long[] imageIds);
+
+    /**
+     * 删除附件信息信息
+     * 
+     * @param imageId 附件信息主键
+     * @return 结果
+     */
+    public int deleteImageDataByImageId(Long imageId);
+}

+ 68 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IInspectInforService.java

@@ -0,0 +1,68 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.InspectInfor;
+
+/**
+ * 送检信息Service接口
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+public interface IInspectInforService 
+{
+    /**
+     * 查询送检信息
+     * 
+     * @param inspectId 送检信息主键
+     * @return 送检信息
+     */
+    public InspectInfor selectInspectInforByInspectId(Long inspectId);
+
+    /**
+     * 查询送检信息列表
+     * 
+     * @param inspectInfor 送检信息
+     * @return 送检信息集合
+     */
+    public List<InspectInfor> selectInspectInforList(InspectInfor inspectInfor);
+
+    /**
+     * 新增送检信息
+     * 
+     * @param inspectInfor 送检信息
+     * @return 结果
+     */
+    public int insertInspectInfor(InspectInfor inspectInfor);
+
+    /**
+     * 修改送检信息
+     * 
+     * @param inspectInfor 送检信息
+     * @return 结果
+     */
+    public int updateInspectInfor(InspectInfor inspectInfor);
+
+    /**
+     * 批量删除送检信息
+     * 
+     * @param inspectIds 需要删除的送检信息主键集合
+     * @return 结果
+     */
+    public int deleteInspectInforByInspectIds(Long[] inspectIds);
+
+    /**
+     * 删除送检信息信息
+     * 
+     * @param inspectId 送检信息主键
+     * @return 结果
+     */
+    public int deleteInspectInforByInspectId(Long inspectId);
+
+    /**
+     * 校验样品名称的唯一性
+     * @param inspectInfor
+     * @return
+     */
+     String checkSampleNameUnique(InspectInfor inspectInfor);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IQueryConfigService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.QueryConfig;
+
+/**
+ * 查询配置Service接口
+ * 
+ * @author 博曼
+ * @date 2021-12-27
+ */
+public interface IQueryConfigService 
+{
+    /**
+     * 查询查询配置
+     * 
+     * @param configId 查询配置主键
+     * @return 查询配置
+     */
+    public QueryConfig selectQueryConfigByConfigId(Long configId);
+
+    /**
+     * 查询查询配置列表
+     * 
+     * @param queryConfig 查询配置
+     * @return 查询配置集合
+     */
+    public List<QueryConfig> selectQueryConfigList(QueryConfig queryConfig);
+
+    /**
+     * 新增查询配置
+     * 
+     * @param queryConfig 查询配置
+     * @return 结果
+     */
+    public int insertQueryConfig(QueryConfig queryConfig);
+
+    /**
+     * 修改查询配置
+     * 
+     * @param queryConfig 查询配置
+     * @return 结果
+     */
+    public int updateQueryConfig(QueryConfig queryConfig);
+
+    /**
+     * 批量删除查询配置
+     * 
+     * @param configIds 需要删除的查询配置主键集合
+     * @return 结果
+     */
+    public int deleteQueryConfigByConfigIds(Long[] configIds);
+
+    /**
+     * 删除查询配置信息
+     * 
+     * @param configId 查询配置主键
+     * @return 结果
+     */
+    public int deleteQueryConfigByConfigId(Long configId);
+}

+ 35 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IQueryService.java

@@ -0,0 +1,35 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.system.domain.ReportDetail;
+import com.ruoyi.system.domain.ReportQueryLog;
+
+/**
+ * @author tjf
+ * @Date: 2021/12/27/11:37
+ */
+public interface IQueryService {
+
+    /**
+     * 门户查询报告信息
+     * @param reportQueryLog
+     * @return
+     */
+    AjaxResult selectReport (ReportQueryLog reportQueryLog);
+
+
+    /**
+     * 发送查询码
+     * @param reportQueryLog
+     * @return
+     */
+    AjaxResult sendQueryNum (ReportQueryLog reportQueryLog);
+
+    /**
+     * 发送短信验证码
+     * @param reportQueryLog
+     * @return
+     */
+    AjaxResult sendSms (ReportQueryLog reportQueryLog);
+
+}

+ 67 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IReportDetailService.java

@@ -0,0 +1,67 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.ReportDetail;
+
+/**
+ * 报告信息Service接口
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+public interface IReportDetailService 
+{
+    /**
+     * 查询报告信息
+     * 
+     * @param reportId 报告信息主键
+     * @return 报告信息
+     */
+    public ReportDetail selectReportDetailByReportId(Long reportId);
+
+    /**
+     * 查询报告信息列表
+     * 
+     * @param reportDetail 报告信息
+     * @return 报告信息集合
+     */
+    public List<ReportDetail> selectReportDetailList(ReportDetail reportDetail);
+
+    /**
+     * 新增报告信息
+     * 
+     * @param reportDetail 报告信息
+     * @return 结果
+     */
+    public int insertReportDetail(ReportDetail reportDetail);
+
+    /**
+     * 修改报告信息
+     * 
+     * @param reportDetail 报告信息
+     * @return 结果
+     */
+    public int updateReportDetail(ReportDetail reportDetail);
+
+    /**
+     * 批量删除报告信息
+     * 
+     * @param reportIds 需要删除的报告信息主键集合
+     * @return 结果
+     */
+    public int deleteReportDetailByReportIds(Long[] reportIds);
+
+    /**
+     * 删除报告信息信息
+     * 
+     * @param reportId 报告信息主键
+     * @return 结果
+     */
+    public int deleteReportDetailByReportId(Long reportId);
+
+    /**
+     * 校验报告编号唯一性
+     * @return
+     */
+    public String checkReportNumberUnique(ReportDetail reportDetail);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IReportQueryLogService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.ReportQueryLog;
+
+/**
+ * 查询日志Service接口
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+public interface IReportQueryLogService 
+{
+    /**
+     * 查询查询日志
+     * 
+     * @param logId 查询日志主键
+     * @return 查询日志
+     */
+    public ReportQueryLog selectReportQueryLogByLogId(Long logId);
+
+    /**
+     * 查询查询日志列表
+     * 
+     * @param reportQueryLog 查询日志
+     * @return 查询日志集合
+     */
+    public List<ReportQueryLog> selectReportQueryLogList(ReportQueryLog reportQueryLog);
+
+    /**
+     * 新增查询日志
+     * 
+     * @param reportQueryLog 查询日志
+     * @return 结果
+     */
+    public int insertReportQueryLog(ReportQueryLog reportQueryLog);
+
+    /**
+     * 修改查询日志
+     * 
+     * @param reportQueryLog 查询日志
+     * @return 结果
+     */
+    public int updateReportQueryLog(ReportQueryLog reportQueryLog);
+
+    /**
+     * 批量删除查询日志
+     * 
+     * @param logIds 需要删除的查询日志主键集合
+     * @return 结果
+     */
+    public int deleteReportQueryLogByLogIds(Long[] logIds);
+
+    /**
+     * 删除查询日志信息
+     * 
+     * @param logId 查询日志主键
+     * @return 结果
+     */
+    public int deleteReportQueryLogByLogId(Long logId);
+}

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java

@@ -26,6 +26,13 @@ public interface ISysNoticeService
      */
     public List<SysNotice> selectNoticeList(SysNotice notice);
 
+    /**
+     * 门户查询公告列表
+     * @param notice
+     * @return
+     */
+    public List<SysNotice> selectNoticeListMenHu(SysNotice notice);
+
     /**
      * 新增公告
      * 

+ 80 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AlicomMessageListenterServiceImpl.java

@@ -0,0 +1,80 @@
+package com.ruoyi.system.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.aliyun.mns.model.Message;
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.ruoyi.common.constant.UserConstants;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.SendSmsUtils;
+import com.ruoyi.system.service.AlicomMessageListenterService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 实现接听类
+ *
+ * @author tjf
+ * @Date: 2021/12/28/9:44
+ */
+@Service
+public class AlicomMessageListenterServiceImpl implements AlicomMessageListenterService {
+
+    @Autowired
+    private RedisCache redisCache;
+
+    //短信参数
+    @Value("${sms_aliyun_accessKeyId}")
+    String accessKeyId;// accessKeyId
+    @Value("${sms_aliyun_accessKeySecret}")
+    String accessKeySecret;// accessKeySecret
+    @Value("${sms_aliyun_signNameNum}")
+    String signNameNum;
+    @Value("${sms_aliyun_templateCodeNum}")
+    String templateCodeNum;
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public boolean dealMessage(Message message) {
+        try {
+            System.out.println("收到短信回复");
+            Map<String, Object> contentMap = JSON.parseObject(message.getMessageBodyAsString(), HashMap.class);
+            //获取用户回复的内容
+            String content = (String) contentMap.get("content");
+            String phoneNumber = (String) contentMap.get("phone_number");
+            //TODO 这里开始编写您的业务代码
+            //首先判断回复的是不是Y
+            if ("Y".equals(content)) {
+                //去redis中查看是否是查询码的回复
+                String verifyKey = UserConstants.QUERY_NUM_CREATE + phoneNumber;
+                Object phone = redisCache.getCacheObject(verifyKey);
+                if (phone != null){
+                    System.out.println("发送查询码短信开始");
+                    redisCache.deleteObject(verifyKey);
+                    //生成查询码
+                    String code = SendSmsUtils.getCode(4);
+                    SendSmsResponse sendSmsResponse = SendSmsUtils.sendSms(phone.toString(), "{\"code\":\"" + code + "\"}", accessKeyId, accessKeySecret, signNameNum, templateCodeNum);
+                    QuerySendDetailsResponse querySendDetailsResponse = SendSmsUtils.querySendDetails(sendSmsResponse.getBizId(), phone.toString(),accessKeyId,accessKeySecret);
+                    String ok = querySendDetailsResponse.getCode();
+                    if ("OK".equals(ok)){
+                        //设置查询码10分钟有效期
+                        redisCache.setCacheObject(UserConstants.QUERY_NUM_KEY + phone,code,10, TimeUnit.MINUTES);
+                    }
+                }
+            }
+            System.out.println("短信回复结束");
+        } catch (com.google.gson.JsonSyntaxException e) {
+            return true;
+        } catch (Throwable e) {
+            //您自己的代码部分导致的异常,应该return false,这样消息不会被delete掉,而会根据策略进行重推
+            return false;
+        }
+        //消息处理成功,返回true, SDK将调用MNS的delete方法将消息从队列中删除掉
+        return true;
+    }
+}

+ 10 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ColumnNavigationBarServiceImpl.java

@@ -55,6 +55,16 @@ public class ColumnNavigationBarServiceImpl implements IColumnNavigationBarServi
         return columnNavigationBarMapper.selectColumnNavigationBarList(columnNavigationBar);
     }
 
+    /**
+     * 门户获取各个部分首页标题
+     * @param columnNavigationBar
+     * @return
+     */
+    @Override
+    public List<ColumnNavigationBar> selectColumnNavigationBarListMenHu(ColumnNavigationBar columnNavigationBar) {
+        return columnNavigationBarMapper.selectColumnNavigationBarListMenHu(columnNavigationBar);
+    }
+
     /**
      * 新增栏目导航
      * 

+ 21 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ColumnNewsServiceImpl.java

@@ -32,6 +32,16 @@ public class ColumnNewsServiceImpl implements IColumnNewsService
         return columnNewsMapper.selectColumnNewsByNewsId(newsId);
     }
 
+    /**
+     * 门户查询新闻信息
+     * @param newsId
+     * @return
+     */
+    @Override
+    public ColumnNews selectColumnNewsDetailMenHu(Integer newsId) {
+        return  columnNewsMapper.selectColumnNewsDetailMenHu(newsId);
+    }
+
     /**
      * 查询新闻信息列表
      * 
@@ -44,6 +54,17 @@ public class ColumnNewsServiceImpl implements IColumnNewsService
         return columnNewsMapper.selectColumnNewsList(columnNews);
     }
 
+    /**
+     * 查询新闻信息列表门户
+     *
+     * @param columnNews 新闻信息
+     * @return 新闻信息
+     */
+    @Override
+    public List<ColumnNews> selectColumnNewsListMenHu(ColumnNews columnNews)
+    {
+        return columnNewsMapper.selectColumnNewsListMenHu(columnNews);
+    }
     /**
      * 新增新闻信息
      * 

+ 96 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FriendLinkServiceImpl.java

@@ -0,0 +1,96 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FriendLinkMapper;
+import com.ruoyi.system.domain.FriendLink;
+import com.ruoyi.system.service.IFriendLinkService;
+
+/**
+ * 友链导航Service业务层处理
+ * 
+ * @author boman
+ * @date 2021-12-29
+ */
+@Service
+public class FriendLinkServiceImpl implements IFriendLinkService 
+{
+    @Autowired
+    private FriendLinkMapper friendLinkMapper;
+
+    /**
+     * 查询友链导航
+     * 
+     * @param linkId 友链导航主键
+     * @return 友链导航
+     */
+    @Override
+    public FriendLink selectFriendLinkByLinkId(Long linkId)
+    {
+        return friendLinkMapper.selectFriendLinkByLinkId(linkId);
+    }
+
+    /**
+     * 查询友链导航列表
+     * 
+     * @param friendLink 友链导航
+     * @return 友链导航
+     */
+    @Override
+    public List<FriendLink> selectFriendLinkList(FriendLink friendLink)
+    {
+        return friendLinkMapper.selectFriendLinkList(friendLink);
+    }
+
+    /**
+     * 新增友链导航
+     * 
+     * @param friendLink 友链导航
+     * @return 结果
+     */
+    @Override
+    public int insertFriendLink(FriendLink friendLink)
+    {
+        friendLink.setCreateTime(DateUtils.getNowDate());
+        return friendLinkMapper.insertFriendLink(friendLink);
+    }
+
+    /**
+     * 修改友链导航
+     * 
+     * @param friendLink 友链导航
+     * @return 结果
+     */
+    @Override
+    public int updateFriendLink(FriendLink friendLink)
+    {
+        friendLink.setUpdateTime(DateUtils.getNowDate());
+        return friendLinkMapper.updateFriendLink(friendLink);
+    }
+
+    /**
+     * 批量删除友链导航
+     * 
+     * @param linkIds 需要删除的友链导航主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFriendLinkByLinkIds(Long[] linkIds)
+    {
+        return friendLinkMapper.deleteFriendLinkByLinkIds(linkIds);
+    }
+
+    /**
+     * 删除友链导航信息
+     * 
+     * @param linkId 友链导航主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFriendLinkByLinkId(Long linkId)
+    {
+        return friendLinkMapper.deleteFriendLinkByLinkId(linkId);
+    }
+}

+ 97 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ImageDataServiceImpl.java

@@ -0,0 +1,97 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.domain.ImageDatas;
+import com.ruoyi.system.mapper.ImageDataMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ruoyi.system.service.IImageDataService;
+
+/**
+ * 附件信息Service业务层处理
+ * 
+ * @author boman
+ * @date 2021-12-24
+ */
+@Service
+public class ImageDataServiceImpl implements IImageDataService 
+{
+    @Autowired
+    private ImageDataMapper imageDataMapper;
+
+    /**
+     * 查询附件信息
+     * 
+     * @param imageId 附件信息主键
+     * @return 附件信息
+     */
+    @Override
+    public ImageDatas selectImageDataByImageId(Long imageId)
+    {
+        return imageDataMapper.selectImageDatasByImageId(imageId);
+    }
+
+    /**
+     * 查询附件信息列表
+     * 
+     * @param imageData 附件信息
+     * @return 附件信息
+     */
+    @Override
+    public List<ImageDatas> selectImageDataList(ImageDatas imageData)
+    {
+        return imageDataMapper.selectImageDatasList(imageData);
+    }
+
+    /**
+     * 新增附件信息
+     * 
+     * @param imageData 附件信息
+     * @return 结果
+     */
+    @Override
+    public int insertImageData(ImageDatas imageData)
+    {
+        imageData.setCreateTime(DateUtils.getNowDate());
+        return imageDataMapper.insertImageDatas(imageData);
+    }
+
+    /**
+     * 修改附件信息
+     * 
+     * @param imageData 附件信息
+     * @return 结果
+     */
+    @Override
+    public int updateImageData(ImageDatas imageData)
+    {
+        imageData.setUpdateTime(DateUtils.getNowDate());
+        return imageDataMapper.updateImageDatas(imageData);
+    }
+
+    /**
+     * 批量删除附件信息
+     * 
+     * @param imageIds 需要删除的附件信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteImageDataByImageIds(Long[] imageIds)
+    {
+        return imageDataMapper.deleteImageDatasByImageIds(imageIds);
+    }
+
+    /**
+     * 删除附件信息信息
+     * 
+     * @param imageId 附件信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteImageDataByImageId(Long imageId)
+    {
+        return imageDataMapper.deleteImageDatasByImageId(imageId);
+    }
+}

+ 116 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InspectInforServiceImpl.java

@@ -0,0 +1,116 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.constant.UserConstants;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.InspectInforMapper;
+import com.ruoyi.system.domain.InspectInfor;
+import com.ruoyi.system.service.IInspectInforService;
+
+/**
+ * 送检信息Service业务层处理
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+@Service
+public class InspectInforServiceImpl implements IInspectInforService 
+{
+    @Autowired
+    private InspectInforMapper inspectInforMapper;
+
+    /**
+     * 查询送检信息
+     * 
+     * @param inspectId 送检信息主键
+     * @return 送检信息
+     */
+    @Override
+    public InspectInfor selectInspectInforByInspectId(Long inspectId)
+    {
+        return inspectInforMapper.selectInspectInforByInspectId(inspectId);
+    }
+
+    /**
+     * 查询送检信息列表
+     * 
+     * @param inspectInfor 送检信息
+     * @return 送检信息
+     */
+    @Override
+    public List<InspectInfor> selectInspectInforList(InspectInfor inspectInfor)
+    {
+        return inspectInforMapper.selectInspectInforList(inspectInfor);
+    }
+
+    /**
+     * 新增送检信息
+     * 
+     * @param inspectInfor 送检信息
+     * @return 结果
+     */
+    @Override
+    public int insertInspectInfor(InspectInfor inspectInfor)
+    {
+        inspectInfor.setCreateTime(DateUtils.getNowDate());
+        return inspectInforMapper.insertInspectInfor(inspectInfor);
+    }
+
+    /**
+     * 修改送检信息
+     * 
+     * @param inspectInfor 送检信息
+     * @return 结果
+     */
+    @Override
+    public int updateInspectInfor(InspectInfor inspectInfor)
+    {
+        inspectInfor.setUpdateTime(DateUtils.getNowDate());
+        return inspectInforMapper.updateInspectInfor(inspectInfor);
+    }
+
+    /**
+     * 批量删除送检信息
+     * 
+     * @param inspectIds 需要删除的送检信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteInspectInforByInspectIds(Long[] inspectIds)
+    {
+        return inspectInforMapper.deleteInspectInforByInspectIds(inspectIds);
+    }
+
+    /**
+     * 删除送检信息信息
+     * 
+     * @param inspectId 送检信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteInspectInforByInspectId(Long inspectId)
+    {
+        return inspectInforMapper.deleteInspectInforByInspectId(inspectId);
+    }
+
+    /**
+     * 校验样品名称的唯一性
+     * @param inspectInfor
+     * @return
+     */
+    @Override
+    public String checkSampleNameUnique(InspectInfor inspectInfor) {
+        Long inspectId = StringUtils.isNull(inspectInfor.getInspectId()) ? -1L : inspectInfor.getInspectId();
+        InspectInfor info = inspectInforMapper.checkSampleNameUnique(inspectInfor.getSampleName());
+        if (StringUtils.isNotNull(info) && info.getInspectId().longValue() != inspectId.longValue())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+}

+ 96 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/QueryConfigServiceImpl.java

@@ -0,0 +1,96 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.QueryConfigMapper;
+import com.ruoyi.system.domain.QueryConfig;
+import com.ruoyi.system.service.IQueryConfigService;
+
+/**
+ * 查询配置Service业务层处理
+ * 
+ * @author 博曼
+ * @date 2021-12-27
+ */
+@Service
+public class QueryConfigServiceImpl implements IQueryConfigService 
+{
+    @Autowired
+    private QueryConfigMapper queryConfigMapper;
+
+    /**
+     * 查询查询配置
+     * 
+     * @param configId 查询配置主键
+     * @return 查询配置
+     */
+    @Override
+    public QueryConfig selectQueryConfigByConfigId(Long configId)
+    {
+        return queryConfigMapper.selectQueryConfigByConfigId(configId);
+    }
+
+    /**
+     * 查询查询配置列表
+     * 
+     * @param queryConfig 查询配置
+     * @return 查询配置
+     */
+    @Override
+    public List<QueryConfig> selectQueryConfigList(QueryConfig queryConfig)
+    {
+        return queryConfigMapper.selectQueryConfigList(queryConfig);
+    }
+
+    /**
+     * 新增查询配置
+     * 
+     * @param queryConfig 查询配置
+     * @return 结果
+     */
+    @Override
+    public int insertQueryConfig(QueryConfig queryConfig)
+    {
+        queryConfig.setCreateTime(DateUtils.getNowDate());
+        return queryConfigMapper.insertQueryConfig(queryConfig);
+    }
+
+    /**
+     * 修改查询配置
+     * 
+     * @param queryConfig 查询配置
+     * @return 结果
+     */
+    @Override
+    public int updateQueryConfig(QueryConfig queryConfig)
+    {
+        queryConfig.setUpdateTime(DateUtils.getNowDate());
+        return queryConfigMapper.updateQueryConfig(queryConfig);
+    }
+
+    /**
+     * 批量删除查询配置
+     * 
+     * @param configIds 需要删除的查询配置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteQueryConfigByConfigIds(Long[] configIds)
+    {
+        return queryConfigMapper.deleteQueryConfigByConfigIds(configIds);
+    }
+
+    /**
+     * 删除查询配置信息
+     * 
+     * @param configId 查询配置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteQueryConfigByConfigId(Long configId)
+    {
+        return queryConfigMapper.deleteQueryConfigByConfigId(configId);
+    }
+}

+ 387 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/QueryServiceImpl.java

@@ -0,0 +1,387 @@
+package com.ruoyi.system.service.impl;
+
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.aliyuncs.exceptions.ClientException;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.constant.UserConstants;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.exception.user.CaptchaException;
+import com.ruoyi.common.exception.user.CaptchaExpireException;
+import com.ruoyi.common.utils.SendSmsUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.domain.QueryConfig;
+import com.ruoyi.system.domain.ReportDetail;
+import com.ruoyi.system.domain.ReportQueryLog;
+import com.ruoyi.system.mapper.QueryConfigMapper;
+import com.ruoyi.system.mapper.ReportDetailMapper;
+import com.ruoyi.system.mapper.ReportQueryLogMapper;
+import com.ruoyi.system.service.IQueryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.Calendar;
+import java.util.concurrent.TimeUnit;
+
+import static com.ruoyi.common.core.domain.AjaxResult.MSG_TAG;
+
+/**
+ * @author tjf
+ * @Date: 2021/12/27/11:37
+ */
+@Service
+public class QueryServiceImpl implements IQueryService {
+
+    @Autowired
+    private ReportDetailMapper reportDetailMapper;
+
+    @Autowired
+    private ReportQueryLogMapper reportQueryLogMapper;
+
+    @Autowired
+    private RedisCache redisCache;
+
+    @Autowired
+    private QueryConfigMapper queryConfigMapper;
+
+
+    //短信参数
+    @Value("${sms_aliyun_accessKeyId}")
+    String accessKeyId;// accessKeyId
+    @Value("${sms_aliyun_accessKeySecret}")
+    String accessKeySecret;// accessKeySecret
+    @Value("${sms_aliyun_signName}")
+    String signName;
+    @Value("${sms_aliyun_templateCode}")
+    String templateCode;
+
+    @Value("${sms_aliyun_signNameQuery}")
+    String signNameQuery;
+    @Value("${sms_aliyun_templateCodeQuery}")
+    String templateCodeQuery;
+
+
+    /**
+     * 门户查询报告信息
+     *
+     * @param reportQueryLog
+     * @return
+     */
+    @Override
+    public AjaxResult selectReport(ReportQueryLog reportQueryLog) {
+        //通用校验
+        AjaxResult validateResult = queryPublic(reportQueryLog);
+        if (!UserConstants.QUERY_SUCCESS.equals(validateResult.get(MSG_TAG))) {
+            return validateResult;
+        }
+        //获取查询方式
+        String queryMode = reportQueryLog.getQueryMode();
+        //二维码查询
+        if (UserConstants.QUERY_MODE_EQ.equals(queryMode)) {
+            return queryByQr(reportQueryLog);
+            //粗略查询
+        } else if (UserConstants.QUERY_MODE_ROUGH.equals(queryMode)) {
+            return queryByRough(reportQueryLog);
+            //详细查询
+        } else if (UserConstants.QUERY_MODE_DETAIL.equals(queryMode)) {
+            return queryByDetail(reportQueryLog);
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 发送短信验证码
+     *
+     * @param reportQueryLog
+     * @return
+     */
+    @Override
+    public AjaxResult sendSms(ReportQueryLog reportQueryLog) {
+        //判断该手机号是否超过查询次数
+        //获取查询主体
+        String queryType = reportQueryLog.getQueryType();
+        String queryMode = reportQueryLog.getQueryMode();
+        //查询手机号
+        String phone = "";
+        QueryConfig queryConfig = new QueryConfig();
+        queryConfig.setQueryType(queryType);
+        queryConfig.setQueryMode(queryMode);
+        if (UserConstants.QUERY_TYPE_PEOPLE.equals(queryType)) {
+            phone = reportQueryLog.getQueryPhone();
+        } else if (UserConstants.QUERY_TYPE_UNIT.equals(queryType)) {
+            phone = reportQueryLog.getCompanyPhone();
+        }
+        String verifyKey = UserConstants.QUERY_CODE_KEY + phone;
+        String codeNotConsume = redisCache.getCacheObject(verifyKey);
+        if (StringUtils.isNotBlank(codeNotConsume)) {
+            //说明有未消费的验证码
+            return AjaxResult.error("请勿重复获取验证码");
+        }
+        //如果没有验证码判断今天是否有查询次数
+        //校验查询次数
+        QueryConfig queryConfigRough = queryConfigMapper.selectQueryConfig(queryConfig);
+        String resultQueryNumber = validateQueryNumber(phone, queryConfigRough);
+        if (!UserConstants.QUERY_SUCCESS.equals(resultQueryNumber)) {
+            return AjaxResult.error(resultQueryNumber);
+        }
+        //发送短信验证码
+        if (StringUtils.isNotBlank(phone)) {
+            try {
+                String code = SendSmsUtils.getCode(6);
+                SendSmsResponse sendSmsResponse = SendSmsUtils.sendSms(phone, "{\"code\":\"" + code + "\"}", accessKeyId, accessKeySecret, signName, templateCode);
+                QuerySendDetailsResponse querySendDetailsResponse = SendSmsUtils.querySendDetails(sendSmsResponse.getBizId(), phone, accessKeyId, accessKeySecret);
+                String ok = querySendDetailsResponse.getCode();
+                if ("OK".equals(ok)){
+                    //设置验证码10分钟有效期
+                    redisCache.setCacheObject(UserConstants.QUERY_CODE_KEY + phone,code,10,TimeUnit.MINUTES);
+                    return AjaxResult.success("发送成功");
+                }else {
+                    return AjaxResult.error(querySendDetailsResponse.getMessage());
+                }
+            } catch (ClientException e) {
+                e.printStackTrace();
+            }
+        }
+        return AjaxResult.error("未发现手机号");
+    }
+
+    /**
+     * 给档案拥有者发送询问短信
+     * @param reportQueryLog
+     * @return
+     */
+    @Override
+    public AjaxResult sendQueryNum(ReportQueryLog reportQueryLog) {
+        //发送查询码前,先校验验证码是否通过
+        AjaxResult result = queryPublic(reportQueryLog);
+        if (!UserConstants.QUERY_SUCCESS.equals(result.get(MSG_TAG))){
+            return result;
+        }
+        //验证码通过后,给文档原始人,发送询问查询码的短信
+        String reportNumber = reportQueryLog.getReportNumber();
+        if (StringUtils.isNotBlank(reportNumber)){
+            ReportDetail reportDetail = reportDetailMapper.selectReportDetailByReportNumberDetail(reportNumber);
+            //档案拥有者的手机号码
+            String phonenumber = reportDetail.getPhonenumber();
+            if (StringUtils.isNotBlank(phonenumber)){
+                //给文档创建人发送询问短信
+                try {
+                    String queryType = reportQueryLog.getQueryType();
+                    StringBuilder sb = new StringBuilder();
+                    String phone = "";
+                    if (UserConstants.QUERY_TYPE_PEOPLE.equals(queryType)){
+                        sb.append(reportQueryLog.getQueryName()).append("(个人)");
+                        phone = reportQueryLog.getQueryPhone();
+                    }
+                    if (UserConstants.QUERY_TYPE_UNIT.equals(queryType)){
+                        sb.append(reportQueryLog.getCompanyName()).append("(单位)");
+                        phone = reportQueryLog.getCompanyPhone();
+                    }
+                    SendSmsResponse sendSmsResponse = SendSmsUtils.sendSms(phonenumber, "{\"name\":\""+sb.toString()+"\",\"reportNumber\":\""+reportNumber+"\"}", accessKeyId, accessKeySecret, signNameQuery, templateCodeQuery);
+                    QuerySendDetailsResponse querySendDetailsResponse = SendSmsUtils.querySendDetails(sendSmsResponse.getBizId(), phonenumber, accessKeyId, accessKeySecret);
+                    String ok = querySendDetailsResponse.getCode();
+                    if ("OK".equals(ok)){
+                        //redis存储查询人的手机号码
+                        redisCache.setCacheObject(UserConstants.QUERY_NUM_CREATE + phonenumber,phone,30,TimeUnit.MINUTES);
+                        return AjaxResult.success("发送成功,请等待对方回复");
+                    }else {
+                        return AjaxResult.error(querySendDetailsResponse.getMessage());
+                    }
+                } catch (ClientException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 查询方式是二维码
+     *
+     * @param reportQueryLog
+     * @return
+     */
+    private AjaxResult queryByQr(ReportQueryLog reportQueryLog) {
+
+        //获取查询主体
+        String queryType = reportQueryLog.getQueryType();
+        //查询结果
+        String result = "";
+
+        return AjaxResult.success();
+    }
+
+
+    /**
+     * 查询方式是粗查
+     *
+     * @param reportQueryLog
+     * @return
+     */
+    private AjaxResult queryByRough(ReportQueryLog reportQueryLog) {
+        String reportNumber = reportQueryLog.getReportNumber();
+        reportQueryLog.setIsSuccess("0");
+        ReportDetail reportDetail = reportDetailMapper.selectReportDetailByReportNumber(reportNumber);
+        reportDetail.setReportUrl(null);
+        reportQueryLogMapper.insertReportQueryLog(reportQueryLog);
+        return AjaxResult.success(reportDetail);
+    }
+
+    /**
+     * 查询方式是详情
+     *
+     * @param reportQueryLog
+     * @return
+     */
+    private AjaxResult queryByDetail(ReportQueryLog reportQueryLog) {
+        //查询手机号
+        String phone = "";
+        //获取查询主体
+        String queryType = reportQueryLog.getQueryType();
+        if (UserConstants.QUERY_TYPE_PEOPLE.equals(queryType)) {
+            phone = reportQueryLog.getQueryPhone();
+        } else if (UserConstants.QUERY_TYPE_UNIT.equals(queryType)) {
+            phone = reportQueryLog.getCompanyPhone();
+        }
+        //校验查询码
+        String resultNum = validateNum(phone, reportQueryLog.getQueryNum());
+        if (!UserConstants.QUERY_SUCCESS.equals(resultNum)) {
+            reportQueryLog.setRemark(resultNum);
+            reportQueryLogMapper.insertReportQueryLog(reportQueryLog);
+            return AjaxResult.error(resultNum);
+        }
+        String reportNumber = reportQueryLog.getReportNumber();
+        reportQueryLog.setIsSuccess("0");
+        ReportDetail reportDetail = reportDetailMapper.selectReportDetailByReportNumber(reportNumber);
+        reportQueryLogMapper.insertReportQueryLog(reportQueryLog);
+        return AjaxResult.success(reportDetail);
+    }
+
+
+    /**
+     * 查询通用校验模块
+     */
+    private AjaxResult queryPublic(ReportQueryLog reportQueryLog) {
+        //获取查询主体
+        String queryType = reportQueryLog.getQueryType();
+        String queryMode = reportQueryLog.getQueryMode();
+        //查询手机号
+        String phone = "";
+        QueryConfig queryConfig = new QueryConfig();
+        queryConfig.setQueryType(queryType);
+        queryConfig.setQueryMode(queryMode);
+        queryConfig.setQueryMode(UserConstants.QUERY_MODE_ROUGH);
+        if (UserConstants.QUERY_TYPE_PEOPLE.equals(queryType)) {
+            phone = reportQueryLog.getQueryPhone();
+        } else if (UserConstants.QUERY_TYPE_UNIT.equals(queryType)) {
+            phone = reportQueryLog.getCompanyPhone();
+        }
+        //校验查询次数
+        QueryConfig queryConfigRough = queryConfigMapper.selectQueryConfig(queryConfig);
+        String resultQueryNumber = validateQueryNumber(phone, queryConfigRough);
+        if (!UserConstants.QUERY_SUCCESS.equals(resultQueryNumber)) {
+            reportQueryLog.setRemark(resultQueryNumber);
+            reportQueryLogMapper.insertReportQueryLog(reportQueryLog);
+            return AjaxResult.error(resultQueryNumber);
+        }
+
+        //校验验证码
+        String resultCaptcha = validateCaptcha(phone, reportQueryLog.getCode());
+        if (!UserConstants.QUERY_SUCCESS.equals(resultCaptcha)) {
+            reportQueryLog.setRemark(resultCaptcha);
+            reportQueryLogMapper.insertReportQueryLog(reportQueryLog);
+            return AjaxResult.error(resultCaptcha);
+        }
+        return AjaxResult.success(UserConstants.QUERY_SUCCESS);
+    }
+
+    /**
+     * 校验验证码
+     *
+     * @param queryPhone 查询者手机号
+     * @return 结果
+     */
+    public String validateCaptcha(String queryPhone, String code) {
+        String verifyKey = UserConstants.QUERY_CODE_KEY + queryPhone;
+        String captcha = redisCache.getCacheObject(verifyKey);
+        if (captcha == null) {
+            return "验证码不存在或已过期,请重新获取";
+        }
+        if (!code.equalsIgnoreCase(captcha)) {
+            return "验证码不正确,请检查";
+        }
+        redisCache.deleteObject(verifyKey);
+        return UserConstants.QUERY_SUCCESS;
+    }
+
+    /**
+     * 校验查询码
+     *
+     * @param queryPhone 查询者手机号
+     * @return 结果
+     */
+    public String validateNum(String queryPhone, String code) {
+        String verifyKey = UserConstants.QUERY_NUM_KEY + queryPhone;
+        String captcha = redisCache.getCacheObject(verifyKey);
+        if (captcha == null) {
+            return "查询码不存在或已过期,请重新获取";
+        }
+        if (!code.equalsIgnoreCase(captcha)) {
+            return "查询码不正确,请检查";
+        }
+        redisCache.deleteObject(verifyKey);
+        return UserConstants.QUERY_SUCCESS;
+    }
+
+    /**
+     * 校验查询次数
+     *
+     * @param queryPhone 查询的手机号
+     * @return
+     */
+    public String validateQueryNumber(String queryPhone, QueryConfig queryConfigRough) {
+        Integer queryNumber = 0;
+        if (queryConfigRough != null) {
+            //可用的查询次数
+            queryNumber = queryConfigRough.getQueryNumber();
+        }
+        String verifyKey = UserConstants.QUERY_CODE_NUMBER + queryPhone;
+        Object queryNum = redisCache.getCacheObject(verifyKey);
+        if (queryNum == null) {
+            //说明一次没查询判断可用的查询次数是否设置等于0就是不限制查询
+            redisCache.setCacheObject(verifyKey, 1, getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
+            return UserConstants.QUERY_SUCCESS;
+        } else {
+            //判断如果设置的查询次数是0
+            if (queryNumber == 0) {
+                redisCache.setCacheObject(verifyKey, Integer.parseInt(queryNum.toString()) + 1, getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
+                return UserConstants.QUERY_SUCCESS;
+            } else {
+                if (queryNumber >= Integer.parseInt(queryNum.toString())) {
+                    return "当前没有查询次数";
+                } else {
+                    redisCache.setCacheObject(verifyKey, Integer.parseInt(queryNum.toString()) + 1, getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
+                    return UserConstants.QUERY_SUCCESS;
+                }
+            }
+        }
+    }
+
+
+    /**
+     * 判断当前时间距离第二天凌晨的秒数
+     *
+     * @return 返回值单位为[s:秒]
+     */
+    public int getSecondsNextEarlyMorning() {
+        Calendar cal = Calendar.getInstance();
+        cal.add(Calendar.DAY_OF_YEAR, 1);
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.set(Calendar.SECOND, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.MILLISECOND, 0);
+        return (int) (cal.getTimeInMillis() - System.currentTimeMillis()) / 1000;
+    }
+}

+ 116 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ReportDetailServiceImpl.java

@@ -0,0 +1,116 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.constant.UserConstants;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.domain.InspectInfor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.ReportDetailMapper;
+import com.ruoyi.system.domain.ReportDetail;
+import com.ruoyi.system.service.IReportDetailService;
+
+/**
+ * 报告信息Service业务层处理
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+@Service
+public class ReportDetailServiceImpl implements IReportDetailService 
+{
+    @Autowired
+    private ReportDetailMapper reportDetailMapper;
+
+    /**
+     * 查询报告信息
+     * 
+     * @param reportId 报告信息主键
+     * @return 报告信息
+     */
+    @Override
+    public ReportDetail selectReportDetailByReportId(Long reportId)
+    {
+        return reportDetailMapper.selectReportDetailByReportId(reportId);
+    }
+
+    /**
+     * 查询报告信息列表
+     * 
+     * @param reportDetail 报告信息
+     * @return 报告信息
+     */
+    @Override
+    public List<ReportDetail> selectReportDetailList(ReportDetail reportDetail)
+    {
+        return reportDetailMapper.selectReportDetailList(reportDetail);
+    }
+
+    /**
+     * 新增报告信息
+     * 
+     * @param reportDetail 报告信息
+     * @return 结果
+     */
+    @Override
+    public int insertReportDetail(ReportDetail reportDetail)
+    {
+        reportDetail.setCreateTime(DateUtils.getNowDate());
+        return reportDetailMapper.insertReportDetail(reportDetail);
+    }
+
+    /**
+     * 修改报告信息
+     * 
+     * @param reportDetail 报告信息
+     * @return 结果
+     */
+    @Override
+    public int updateReportDetail(ReportDetail reportDetail)
+    {
+        reportDetail.setUpdateTime(DateUtils.getNowDate());
+        return reportDetailMapper.updateReportDetail(reportDetail);
+    }
+
+    /**
+     * 批量删除报告信息
+     * 
+     * @param reportIds 需要删除的报告信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteReportDetailByReportIds(Long[] reportIds)
+    {
+        return reportDetailMapper.deleteReportDetailByReportIds(reportIds);
+    }
+
+    /**
+     * 删除报告信息信息
+     * 
+     * @param reportId 报告信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteReportDetailByReportId(Long reportId)
+    {
+        return reportDetailMapper.deleteReportDetailByReportId(reportId);
+    }
+
+    /**
+     * 校验报告编号唯一性
+     * @param reportDetail
+     * @return
+     */
+    @Override
+    public String checkReportNumberUnique(ReportDetail reportDetail) {
+        Long reportId = StringUtils.isNull(reportDetail.getReportId())? -1L : reportDetail.getReportId();
+        ReportDetail info = reportDetailMapper.checkReportNumberUnique(reportDetail.getReportNumber());
+        if (StringUtils.isNotNull(info) && info.getReportId().longValue() != reportId.longValue())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+}

+ 96 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ReportQueryLogServiceImpl.java

@@ -0,0 +1,96 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.ReportQueryLogMapper;
+import com.ruoyi.system.domain.ReportQueryLog;
+import com.ruoyi.system.service.IReportQueryLogService;
+
+/**
+ * 查询日志Service业务层处理
+ * 
+ * @author boman
+ * @date 2021-12-27
+ */
+@Service
+public class ReportQueryLogServiceImpl implements IReportQueryLogService 
+{
+    @Autowired
+    private ReportQueryLogMapper reportQueryLogMapper;
+
+    /**
+     * 查询查询日志
+     * 
+     * @param logId 查询日志主键
+     * @return 查询日志
+     */
+    @Override
+    public ReportQueryLog selectReportQueryLogByLogId(Long logId)
+    {
+        return reportQueryLogMapper.selectReportQueryLogByLogId(logId);
+    }
+
+    /**
+     * 查询查询日志列表
+     * 
+     * @param reportQueryLog 查询日志
+     * @return 查询日志
+     */
+    @Override
+    public List<ReportQueryLog> selectReportQueryLogList(ReportQueryLog reportQueryLog)
+    {
+        return reportQueryLogMapper.selectReportQueryLogList(reportQueryLog);
+    }
+
+    /**
+     * 新增查询日志
+     * 
+     * @param reportQueryLog 查询日志
+     * @return 结果
+     */
+    @Override
+    public int insertReportQueryLog(ReportQueryLog reportQueryLog)
+    {
+        reportQueryLog.setCreateTime(DateUtils.getNowDate());
+        return reportQueryLogMapper.insertReportQueryLog(reportQueryLog);
+    }
+
+    /**
+     * 修改查询日志
+     * 
+     * @param reportQueryLog 查询日志
+     * @return 结果
+     */
+    @Override
+    public int updateReportQueryLog(ReportQueryLog reportQueryLog)
+    {
+        reportQueryLog.setUpdateTime(DateUtils.getNowDate());
+        return reportQueryLogMapper.updateReportQueryLog(reportQueryLog);
+    }
+
+    /**
+     * 批量删除查询日志
+     * 
+     * @param logIds 需要删除的查询日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteReportQueryLogByLogIds(Long[] logIds)
+    {
+        return reportQueryLogMapper.deleteReportQueryLogByLogIds(logIds);
+    }
+
+    /**
+     * 删除查询日志信息
+     * 
+     * @param logId 查询日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteReportQueryLogByLogId(Long logId)
+    {
+        return reportQueryLogMapper.deleteReportQueryLogByLogId(logId);
+    }
+}

+ 10 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java

@@ -42,6 +42,16 @@ public class SysNoticeServiceImpl implements ISysNoticeService
         return noticeMapper.selectNoticeList(notice);
     }
 
+    /**
+     * 门户查询公告列表
+     * @param notice
+     * @return
+     */
+    @Override
+    public List<SysNotice> selectNoticeListMenHu(SysNotice notice) {
+        return  noticeMapper.selectNoticeListMenHu(notice);
+    }
+
     /**
      * 新增公告
      * 

+ 54 - 29
ruoyi-system/src/main/resources/mapper/system/ColumnNavigationBarMapper.xml

@@ -1,69 +1,91 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.system.mapper.ColumnNavigationBarMapper">
-    
+
     <resultMap type="ColumnNavigationBar" id="ColumnNavigationBarResult">
-        <result property="columnId"    column="column_id"    />
-        <result property="parentId"    column="parent_id"    />
-        <result property="ancestors"    column="ancestors"    />
-        <result property="columnName"    column="column_name"    />
-        <result property="orderNum"    column="order_num"    />
-        <result property="status"    column="status"    />
-        <result property="delFlag"    column="del_flag"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="updateTime"    column="update_time"    />
+        <result property="columnId" column="column_id"/>
+        <result property="parentId" column="parent_id"/>
+        <result property="ancestors" column="ancestors"/>
+        <result property="columnName" column="column_name"/>
+        <result property="orderNum" column="order_num"/>
+        <result property="isNavigationBar" column="is_navigation_bar"/>
+        <result property="isTitle" column="is_title"/>
+        <result property="isBottom" column="is_bottom"/>
+        <result property="status" column="status"/>
+        <result property="delFlag" column="del_flag"/>
+        <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>
 
     <sql id="selectColumnNavigationBarVo">
-        select column_id, parent_id, ancestors, column_name, order_num, status, del_flag, create_by, create_time, update_by, update_time from column_navigation_bar
+        select column_id, parent_id, ancestors, column_name, order_num,is_navigation_bar,is_title,is_bottom, status, del_flag, create_by, create_time, update_by, update_time from column_navigation_bar
     </sql>
 
-    <select id="selectColumnNavigationBarList" parameterType="ColumnNavigationBar" resultMap="ColumnNavigationBarResult">
+    <select id="selectColumnNavigationBarList" parameterType="ColumnNavigationBar"
+            resultMap="ColumnNavigationBarResult">
         <include refid="selectColumnNavigationBarVo"/>
-        <where>  
-            <if test="parentId != null "> and parent_id = #{parentId}</if>
-            <if test="ancestors != null  and ancestors != ''"> and ancestors = #{ancestors}</if>
-            <if test="columnName != null  and columnName != ''"> and column_name like concat('%', #{columnName}, '%')</if>
-            <if test="orderNum != null "> and order_num = #{orderNum}</if>
-            <if test="status != null  and status != ''"> and status = #{status}</if>
-        </where>
+        where
+        status = '0'
+        <if test="parentId != null ">and parent_id = #{parentId}</if>
+        <if test="ancestors != null  and ancestors != ''">and ancestors = #{ancestors}</if>
+        <if test="columnName != null  and columnName != ''">and column_name like concat('%', #{columnName}, '%')</if>
+        <if test="orderNum != null ">and order_num = #{orderNum}</if>
+        <if test="isNavigationBar != null ">and is_navigation_bar = #{isNavigationBar}</if>
+        <if test="isTitle != null ">and is_title = #{isTitle}</if>
+        <if test="isBottom != null ">and is_bottom = #{isBottom}</if>
+    </select>
+
+    <select id="selectColumnNavigationBarListMenHu" parameterType="ColumnNavigationBar"
+            resultMap="ColumnNavigationBarResult">
+        select column_id, column_name from column_navigation_bar
+        where
+        status = '0'
+        <if test="isTitle != null ">and is_title = #{isTitle}</if>
+        <if test="isBottom != null ">and is_bottom = #{isBottom}</if>
     </select>
-    
+
     <select id="selectColumnNavigationBarByColumnId" parameterType="Long" resultMap="ColumnNavigationBarResult">
         <include refid="selectColumnNavigationBarVo"/>
         where column_id = #{columnId}
     </select>
-        
-    <insert id="insertColumnNavigationBar" parameterType="ColumnNavigationBar" useGeneratedKeys="true" keyProperty="columnId">
+
+    <insert id="insertColumnNavigationBar" parameterType="ColumnNavigationBar" useGeneratedKeys="true"
+            keyProperty="columnId">
         insert into column_navigation_bar
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="parentId != null">parent_id,</if>
             <if test="ancestors != null">ancestors,</if>
             <if test="columnName != null">column_name,</if>
             <if test="orderNum != null">order_num,</if>
+            <if test="isNavigationBar != null">is_navigation_bar,</if>
+            <if test="isTitle != null">is_title,</if>
+            <if test="isBottom != null">is_bottom,</if>
             <if test="status != null">status,</if>
             <if test="delFlag != null">del_flag,</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>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="parentId != null">#{parentId},</if>
             <if test="ancestors != null">#{ancestors},</if>
             <if test="columnName != null">#{columnName},</if>
             <if test="orderNum != null">#{orderNum},</if>
+            <if test="isNavigationBar != null">#{isNavigationBar},</if>
+            <if test="isTitle != null">#{isTitle},</if>
+            <if test="isBottom != null">#{isBottom},</if>
             <if test="status != null">#{status},</if>
             <if test="delFlag != null">#{delFlag},</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>
+        </trim>
     </insert>
 
     <update id="updateColumnNavigationBar" parameterType="ColumnNavigationBar">
@@ -73,6 +95,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="ancestors != null">ancestors = #{ancestors},</if>
             <if test="columnName != null">column_name = #{columnName},</if>
             <if test="orderNum != null">order_num = #{orderNum},</if>
+            <if test="isNavigationBar != null">is_navigation_bar = #{isNavigationBar},</if>
+            <if test="isTitle != null">is_title = #{isTitle},</if>
+            <if test="isBottom != null">is_bottom = #{isBottom},</if>
             <if test="status != null">status = #{status},</if>
             <if test="delFlag != null">del_flag = #{delFlag},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
@@ -88,7 +113,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <delete id="deleteColumnNavigationBarByColumnIds" parameterType="String">
-        delete from column_navigation_bar where column_id in 
+        delete from column_navigation_bar where column_id in
         <foreach item="columnId" collection="array" open="(" separator="," close=")">
             #{columnId}
         </foreach>

+ 14 - 1
ruoyi-system/src/main/resources/mapper/system/ColumnNewsMapper.xml

@@ -21,7 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectColumnNewsVo">
-        select n.news_id, n.news_title, n.column_id, n.news_content, n.status, n.is_del, n.reason, n.create_by, n.create_time, n.update_by, n.update_time, n.remark,c.column_name from column_news n
+        select n.news_id, n.news_title, n.column_id, n.news_content, n.status,  n.reason, n.create_by, n.create_time, n.update_by, n.update_time, n.remark,c.column_name from column_news n
         left join column_navigation_bar c on n.column_id = c.column_id
     </sql>
 
@@ -35,11 +35,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="columnName != null  and columnName != ''"> and c.column_name = #{columnName}</if>
         </where>
     </select>
+
+    <select id="selectColumnNewsListMenHu" parameterType="ColumnNews" resultMap="ColumnNewsResult">
+        select n.news_id, n.news_title, n.create_time from column_news n
+        <where>
+            <if test="newsTitle != null  and newsTitle != ''"> and (n.news_title like concat('%', #{newsTitle}, '%') or n.news_content like concat('%', #{newsContent}, '%'))</if>
+            <if test="columnId != null  and columnId != ''"> and n.column_id = #{columnId}</if>
+        </where>
+    </select>
     
     <select id="selectColumnNewsByNewsId" parameterType="Integer" resultMap="ColumnNewsResult">
         <include refid="selectColumnNewsVo"/>
         where n.news_id = #{newsId}
     </select>
+
+    <select id="selectColumnNewsDetailMenHu" parameterType="Integer" resultMap="ColumnNewsResult">
+        select n.news_id, n.news_title, n.column_id, n.news_content, n.status,  n.reason, n.create_by, n.create_time, n.update_by, n.update_time, n.remark from column_news n
+        where n.news_id = #{newsId}
+    </select>
         
     <insert id="insertColumnNews" parameterType="ColumnNews" useGeneratedKeys="true" keyProperty="newsId">
         insert into column_news

+ 87 - 0
ruoyi-system/src/main/resources/mapper/system/FriendLinkMapper.xml

@@ -0,0 +1,87 @@
+<?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.system.mapper.FriendLinkMapper">
+    
+    <resultMap type="FriendLink" id="FriendLinkResult">
+        <result property="linkId"    column="link_id"    />
+        <result property="linkName"    column="link_name"    />
+        <result property="linkSpace"    column="link_space"    />
+        <result property="status"    column="status"    />
+        <result property="delFlag"    column="del_flag"    />
+        <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>
+
+    <sql id="selectFriendLinkVo">
+        select link_id, link_name, link_space, status, del_flag, create_by, create_time, update_by, update_time from friend_link
+    </sql>
+
+    <select id="selectFriendLinkList" parameterType="FriendLink" resultMap="FriendLinkResult">
+        select link_id, link_name, link_space, status, del_flag from friend_link
+        where
+        del_flag = 'N'
+            <if test="linkName != null  and linkName != ''"> and link_name like concat('%', #{linkName}, '%')</if>
+            <if test="linkSpace != null  and linkSpace != ''"> and link_space = #{linkSpace}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+
+    </select>
+    
+    <select id="selectFriendLinkByLinkId" parameterType="Long" resultMap="FriendLinkResult">
+        <include refid="selectFriendLinkVo"/>
+        where link_id = #{linkId} and del_flag = 'N'
+    </select>
+        
+    <insert id="insertFriendLink" parameterType="FriendLink" useGeneratedKeys="true" keyProperty="linkId">
+        insert into friend_link
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="linkName != null">link_name,</if>
+            <if test="linkSpace != null">link_space,</if>
+            <if test="status != null">status,</if>
+            <if test="delFlag != null">del_flag,</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="linkName != null">#{linkName},</if>
+            <if test="linkSpace != null">#{linkSpace},</if>
+            <if test="status != null">#{status},</if>
+            <if test="delFlag != null">#{delFlag},</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="updateFriendLink" parameterType="FriendLink">
+        update friend_link
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="linkName != null">link_name = #{linkName},</if>
+            <if test="linkSpace != null">link_space = #{linkSpace},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</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 link_id = #{linkId}
+    </update>
+
+    <delete id="deleteFriendLinkByLinkId" parameterType="Long">
+        delete from friend_link where link_id = #{linkId}
+    </delete>
+
+    <delete id="deleteFriendLinkByLinkIds" parameterType="String">
+        delete from friend_link where link_id in 
+        <foreach item="linkId" collection="array" open="(" separator="," close=")">
+            #{linkId}
+        </foreach>
+    </delete>
+</mapper>

+ 99 - 0
ruoyi-system/src/main/resources/mapper/system/ImageDataMapper.xml

@@ -0,0 +1,99 @@
+<?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.system.mapper.ImageDataMapper">
+    
+    <resultMap type="ImageDatas" id="ImageDataResult">
+        <result property="imageId"    column="image_id"    />
+        <result property="imageName"    column="image_name"    />
+        <result property="imageContent"    column="image_content"    />
+        <result property="imageIntroduce"    column="image_introduce"    />
+        <result property="status"    column="status"    />
+        <result property="type"    column="type"    />
+        <result property="isDel"    column="is_del"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectImageDataVo">
+        select image_id, image_name, image_content, image_introduce, status, type, is_del, create_by, create_time, update_by, update_time, remark from image_data
+    </sql>
+
+    <select id="selectImageDatasList" parameterType="ImageDatas" resultMap="ImageDataResult">
+        <include refid="selectImageDataVo"/>
+       where
+            status = '0'
+            <if test="imageName != null  and imageName != ''"> and image_name like concat('%', #{imageName}, '%')</if>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+            <if test="isDel != null  and isDel != ''"> and is_del = #{isDel}</if>
+
+    </select>
+    
+    <select id="selectImageDatasByImageId" parameterType="Long" resultMap="ImageDataResult">
+        <include refid="selectImageDataVo"/>
+        where image_id = #{imageId} and status = '0'
+    </select>
+        
+    <insert id="insertImageDatas" parameterType="ImageDatas" useGeneratedKeys="true" keyProperty="imageId">
+        insert into image_data
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="imageName != null and imageName != ''">image_name,</if>
+            <if test="imageContent != null">image_content,</if>
+            <if test="imageIntroduce != null">image_introduce,</if>
+            <if test="status != null">status,</if>
+            <if test="type != null">type,</if>
+            <if test="isDel != null">is_del,</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>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="imageName != null and imageName != ''">#{imageName},</if>
+            <if test="imageContent != null">#{imageContent},</if>
+            <if test="imageIntroduce != null">#{imageIntroduce},</if>
+            <if test="status != null">#{status},</if>
+            <if test="type != null">#{type},</if>
+            <if test="isDel != null">#{isDel},</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>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateImageDatas" parameterType="ImageDatas">
+        update image_data
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="imageName != null and imageName != ''">image_name = #{imageName},</if>
+            <if test="imageContent != null">image_content = #{imageContent},</if>
+            <if test="imageIntroduce != null">image_introduce = #{imageIntroduce},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="isDel != null">is_del = #{isDel},</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>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where image_id = #{imageId}
+    </update>
+
+    <delete id="deleteImageDatasByImageId" parameterType="Long">
+        delete from image_data where image_id = #{imageId}
+    </delete>
+
+    <delete id="deleteImageDatasByImageIds" parameterType="String">
+        delete from image_data where image_id in 
+        <foreach item="imageId" collection="array" open="(" separator="," close=")">
+            #{imageId}
+        </foreach>
+    </delete>
+</mapper>

+ 126 - 0
ruoyi-system/src/main/resources/mapper/system/InspectInforMapper.xml

@@ -0,0 +1,126 @@
+<?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.system.mapper.InspectInforMapper">
+    
+    <resultMap type="InspectInfor" id="InspectInforResult">
+        <result property="inspectId"    column="inspect_id"    />
+        <result property="sampleName"    column="sample_name"    />
+        <result property="sampleNum"    column="sample_num"    />
+        <result property="normsModel"    column="norms_model"    />
+        <result property="testItems"    column="test_items"    />
+        <result property="provideType"    column="provide_type"    />
+        <result property="manufacturerName"    column="manufacturer_name"    />
+        <result property="manufacturerPhone"    column="manufacturer_phone"    />
+        <result property="inspectedName"    column="inspected_name"    />
+        <result property="inspectedPhone"    column="inspected_phone"    />
+        <result property="isDel"    column="is_del"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectInspectInforVo">
+        select inspect_id, sample_name, sample_num, norms_model, test_items, provide_type, manufacturer_name, manufacturer_phone, inspected_name, inspected_phone, is_del, create_by, create_time, update_by, update_time, remark from inspect_infor
+    </sql>
+
+    <select id="selectInspectInforList" parameterType="InspectInfor" resultMap="InspectInforResult">
+        <include refid="selectInspectInforVo"/>
+        <where>  
+            <if test="sampleName != null  and sampleName != ''"> and sample_name like concat('%', #{sampleName}, '%')</if>
+            <if test="sampleNum != null "> and sample_num = #{sampleNum}</if>
+            <if test="normsModel != null  and normsModel != ''"> and norms_model = #{normsModel}</if>
+            <if test="testItems != null  and testItems != ''"> and test_items = #{testItems}</if>
+            <if test="provideType != null  and provideType != ''"> and provide_type = #{provideType}</if>
+            <if test="manufacturerName != null  and manufacturerName != ''"> and manufacturer_name like concat('%', #{manufacturerName}, '%')</if>
+            <if test="manufacturerPhone != null  and manufacturerPhone != ''"> and manufacturer_phone = #{manufacturerPhone}</if>
+            <if test="inspectedName != null  and inspectedName != ''"> and inspected_name like concat('%', #{inspectedName}, '%')</if>
+            <if test="inspectedPhone != null  and inspectedPhone != ''"> and inspected_phone = #{inspectedPhone}</if>
+            <if test="isDel != null  and isDel != ''"> and is_del = #{isDel}</if>
+        </where>
+    </select>
+    
+    <select id="selectInspectInforByInspectId" parameterType="Long" resultMap="InspectInforResult">
+        <include refid="selectInspectInforVo"/>
+        where inspect_id = #{inspectId}
+    </select>
+        
+    <insert id="insertInspectInfor" parameterType="InspectInfor" useGeneratedKeys="true" keyProperty="inspectId">
+        insert into inspect_infor
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="sampleName != null and sampleName != ''">sample_name,</if>
+            <if test="sampleNum != null">sample_num,</if>
+            <if test="normsModel != null">norms_model,</if>
+            <if test="testItems != null">test_items,</if>
+            <if test="provideType != null">provide_type,</if>
+            <if test="manufacturerName != null">manufacturer_name,</if>
+            <if test="manufacturerPhone != null">manufacturer_phone,</if>
+            <if test="inspectedName != null">inspected_name,</if>
+            <if test="inspectedPhone != null">inspected_phone,</if>
+            <if test="isDel != null">is_del,</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>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="sampleName != null and sampleName != ''">#{sampleName},</if>
+            <if test="sampleNum != null">#{sampleNum},</if>
+            <if test="normsModel != null">#{normsModel},</if>
+            <if test="testItems != null">#{testItems},</if>
+            <if test="provideType != null">#{provideType},</if>
+            <if test="manufacturerName != null">#{manufacturerName},</if>
+            <if test="manufacturerPhone != null">#{manufacturerPhone},</if>
+            <if test="inspectedName != null">#{inspectedName},</if>
+            <if test="inspectedPhone != null">#{inspectedPhone},</if>
+            <if test="isDel != null">#{isDel},</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>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateInspectInfor" parameterType="InspectInfor">
+        update inspect_infor
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="sampleName != null and sampleName != ''">sample_name = #{sampleName},</if>
+            <if test="sampleNum != null">sample_num = #{sampleNum},</if>
+            <if test="normsModel != null">norms_model = #{normsModel},</if>
+            <if test="testItems != null">test_items = #{testItems},</if>
+            <if test="provideType != null">provide_type = #{provideType},</if>
+            <if test="manufacturerName != null">manufacturer_name = #{manufacturerName},</if>
+            <if test="manufacturerPhone != null">manufacturer_phone = #{manufacturerPhone},</if>
+            <if test="inspectedName != null">inspected_name = #{inspectedName},</if>
+            <if test="inspectedPhone != null">inspected_phone = #{inspectedPhone},</if>
+            <if test="isDel != null">is_del = #{isDel},</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>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where inspect_id = #{inspectId}
+    </update>
+
+    <delete id="deleteInspectInforByInspectId" parameterType="Long">
+        delete from inspect_infor where inspect_id = #{inspectId}
+    </delete>
+
+    <delete id="deleteInspectInforByInspectIds" parameterType="String">
+        delete from inspect_infor where inspect_id in 
+        <foreach item="inspectId" collection="array" open="(" separator="," close=")">
+            #{inspectId}
+        </foreach>
+    </delete>
+
+    <select id="checkSampleNameUnique" resultMap="InspectInforResult">
+        <include refid="selectInspectInforVo"/>
+        where sample_name=#{sampleName} and is_del = 'N' limit 1
+    </select>
+</mapper>

+ 113 - 0
ruoyi-system/src/main/resources/mapper/system/QueryConfigMapper.xml

@@ -0,0 +1,113 @@
+<?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.system.mapper.QueryConfigMapper">
+    
+    <resultMap type="QueryConfig" id="QueryConfigResult">
+        <result property="configId"    column="config_id"    />
+        <result property="queryNumber"    column="query_number"    />
+        <result property="qrUnit"    column="qr_unit"    />
+        <result property="qrTime"    column="qr_time"    />
+        <result property="queryType"    column="query_type"    />
+        <result property="queryMode"    column="query_mode"    />
+        <result property="status"    column="status"    />
+        <result property="isDel"    column="is_del"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectQueryConfigVo">
+        select config_id, query_number, qr_unit, qr_time, query_type, query_mode, status, is_del, create_by, create_time, update_by, update_time, remark from query_config
+    </sql>
+
+    <select id="selectQueryConfigList" parameterType="QueryConfig" resultMap="QueryConfigResult">
+        <include refid="selectQueryConfigVo"/>
+        <where>  
+            <if test="qrTime != null  and qrTime != ''"> and qr_time = #{qrTime}</if>
+            <if test="queryType != null  and queryType != ''"> and query_type = #{queryType}</if>
+            <if test="queryMode != null  and queryMode != ''"> and query_mode = #{queryMode}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+            <if test="isDel != null  and isDel != ''"> and is_del = #{isDel}</if>
+        </where>
+    </select>
+
+    <select id="selectQueryConfig" parameterType="QueryConfig" resultMap="QueryConfigResult">
+        <include refid="selectQueryConfigVo"/>
+        where
+            status = 'N'
+            and is_del = 'N'
+            <if test="queryType != null  and queryType != ''"> and query_type = #{queryType}</if>
+            <if test="queryMode != null  and queryMode != ''"> and query_mode = #{queryMode}</if>
+    </select>
+
+    <select id="selectQueryConfigByConfigId" parameterType="Long" resultMap="QueryConfigResult">
+        <include refid="selectQueryConfigVo"/>
+        where config_id = #{configId}
+    </select>
+        
+    <insert id="insertQueryConfig" parameterType="QueryConfig" useGeneratedKeys="true" keyProperty="configId">
+        insert into query_config
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="queryNumber != null">query_number,</if>
+            <if test="qrUnit != null and qrUnit != ''">qr_unit,</if>
+            <if test="qrTime != null and qrTime != ''">qr_time,</if>
+            <if test="queryType != null">query_type,</if>
+            <if test="queryMode != null">query_mode,</if>
+            <if test="status != null">status,</if>
+            <if test="isDel != null">is_del,</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>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="queryNumber != null">#{queryNumber},</if>
+            <if test="qrUnit != null and qrUnit != ''">#{qrUnit},</if>
+            <if test="qrTime != null and qrTime != ''">#{qrTime},</if>
+            <if test="queryType != null">#{queryType},</if>
+            <if test="queryMode != null">#{queryMode},</if>
+            <if test="status != null">#{status},</if>
+            <if test="isDel != null">#{isDel},</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>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateQueryConfig" parameterType="QueryConfig">
+        update query_config
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="queryNumber != null">query_number = #{queryNumber},</if>
+            <if test="qrUnit != null and qrUnit != ''">qr_unit = #{qrUnit},</if>
+            <if test="qrTime != null and qrTime != ''">qr_time = #{qrTime},</if>
+            <if test="queryType != null">query_type = #{queryType},</if>
+            <if test="queryMode != null">query_mode = #{queryMode},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="isDel != null">is_del = #{isDel},</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>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where config_id = #{configId}
+    </update>
+
+    <delete id="deleteQueryConfigByConfigId" parameterType="Long">
+        delete from query_config where config_id = #{configId}
+    </delete>
+
+    <delete id="deleteQueryConfigByConfigIds" parameterType="String">
+        delete from query_config where config_id in 
+        <foreach item="configId" collection="array" open="(" separator="," close=")">
+            #{configId}
+        </foreach>
+    </delete>
+</mapper>

+ 133 - 0
ruoyi-system/src/main/resources/mapper/system/ReportDetailMapper.xml

@@ -0,0 +1,133 @@
+<?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.system.mapper.ReportDetailMapper">
+
+    <resultMap type="ReportDetail" id="ReportDetailResult">
+        <result property="reportId" column="report_id"/>
+        <result property="reportNumber" column="report_number"/>
+        <result property="inspectId" column="inspect_id"/>
+        <result property="sampleName" column="sample_name"/>
+        <result property="inspectName" column="inspect_name"/>
+        <result property="entrustName" column="entrust_name"/>
+        <result property="isQualify" column="is_qualify"/>
+        <result property="reportUrl" column="report_url"/>
+        <result property="isDel" column="is_del"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="remark" column="remark"/>
+        <result property="phonenumber" column="phonenumber"/>
+    </resultMap>
+
+    <sql id="selectReportDetailVo">
+        select report_id, report_number, inspect_id, sample_name, inspect_name, entrust_name, is_qualify, report_url, is_del, create_by, create_time, update_by, update_time, remark from report_detail
+    </sql>
+
+    <select id="selectReportDetailList" parameterType="ReportDetail" resultMap="ReportDetailResult">
+        <include refid="selectReportDetailVo"/>
+        <where>
+            <if test="reportNumber != null  and reportNumber != ''">and report_number = #{reportNumber}</if>
+            <if test="inspectId != null ">and inspect_id = #{inspectId}</if>
+            <if test="sampleName != null  and sampleName != ''">and sample_name like concat('%', #{sampleName}, '%')
+            </if>
+            <if test="inspectName != null  and inspectName != ''">and inspect_name like concat('%', #{inspectName},
+                '%')
+            </if>
+            <if test="entrustName != null  and entrustName != ''">and entrust_name like concat('%', #{entrustName},
+                '%')
+            </if>
+            <if test="isQualify != null  and isQualify != ''">and is_qualify = #{isQualify}</if>
+            <if test="reportUrl != null  and reportUrl != ''">and report_url = #{reportUrl}</if>
+            <if test="isDel != null  and isDel != ''">and is_del = #{isDel}</if>
+        </where>
+    </select>
+
+    <select id="selectReportDetailByReportId" parameterType="Long" resultMap="ReportDetailResult">
+        <include refid="selectReportDetailVo"/>
+        where report_id = #{reportId}
+    </select>
+
+    <insert id="insertReportDetail" parameterType="ReportDetail" useGeneratedKeys="true" keyProperty="reportId">
+        insert into report_detail
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="reportNumber != null and reportNumber != ''">report_number,</if>
+            <if test="inspectId != null">inspect_id,</if>
+            <if test="sampleName != null and sampleName != ''">sample_name,</if>
+            <if test="inspectName != null">inspect_name,</if>
+            <if test="entrustName != null">entrust_name,</if>
+            <if test="isQualify != null">is_qualify,</if>
+            <if test="reportUrl != null">report_url,</if>
+            <if test="isDel != null">is_del,</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>
+            <if test="remark != null">remark,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="reportNumber != null and reportNumber != ''">#{reportNumber},</if>
+            <if test="inspectId != null">#{inspectId},</if>
+            <if test="sampleName != null and sampleName != ''">#{sampleName},</if>
+            <if test="inspectName != null">#{inspectName},</if>
+            <if test="entrustName != null">#{entrustName},</if>
+            <if test="isQualify != null">#{isQualify},</if>
+            <if test="reportUrl != null">#{reportUrl},</if>
+            <if test="isDel != null">#{isDel},</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>
+            <if test="remark != null">#{remark},</if>
+        </trim>
+    </insert>
+
+    <update id="updateReportDetail" parameterType="ReportDetail">
+        update report_detail
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="reportNumber != null and reportNumber != ''">report_number = #{reportNumber},</if>
+            <if test="inspectId != null">inspect_id = #{inspectId},</if>
+            <if test="sampleName != null and sampleName != ''">sample_name = #{sampleName},</if>
+            <if test="inspectName != null">inspect_name = #{inspectName},</if>
+            <if test="entrustName != null">entrust_name = #{entrustName},</if>
+            <if test="isQualify != null">is_qualify = #{isQualify},</if>
+            <if test="reportUrl != null">report_url = #{reportUrl},</if>
+            <if test="isDel != null">is_del = #{isDel},</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>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where report_id = #{reportId}
+    </update>
+
+    <delete id="deleteReportDetailByReportId" parameterType="Long">
+        delete from report_detail where report_id = #{reportId}
+    </delete>
+
+    <delete id="deleteReportDetailByReportIds" parameterType="String">
+        delete from report_detail where report_id in
+        <foreach item="reportId" collection="array" open="(" separator="," close=")">
+            #{reportId}
+        </foreach>
+    </delete>
+
+    <select id="checkReportNumberUnique" resultMap="ReportDetailResult">
+        <include refid="selectReportDetailVo"/>
+        where report_number=#{reportNumber} and is_del = 'N' limit 1
+    </select>
+
+    <select id="selectReportDetailByReportNumber" resultMap="ReportDetailResult">
+     select  r.report_number,  r.sample_name, r.inspect_name, r.entrust_name, r.is_qualify, r.report_url from report_detail r
+        where r.report_number=#{reportNumber} and r.is_del = 'N'  limit 1
+    </select>
+
+    <select id="selectReportDetailByReportNumberDetail" resultMap="ReportDetailResult">
+     select  r.report_number,  r.sample_name, r.inspect_name, r.entrust_name, r.is_qualify, r.report_url,s.phonenumber from report_detail r left join sys_user s on r.create_by = s.create_by
+        where r.report_number=#{reportNumber} and r.is_del = 'N' and s.status = '0' and s.del_flag = '0' limit 1
+    </select>
+
+</mapper>

+ 128 - 0
ruoyi-system/src/main/resources/mapper/system/ReportQueryLogMapper.xml

@@ -0,0 +1,128 @@
+<?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.system.mapper.ReportQueryLogMapper">
+    
+    <resultMap type="ReportQueryLog" id="ReportQueryLogResult">
+        <result property="logId"    column="log_id"    />
+        <result property="reportNumber"    column="report_number"    />
+        <result property="queryName"    column="query_name"    />
+        <result property="queryPhone"    column="query_phone"    />
+        <result property="companyName"    column="company_name"    />
+        <result property="companyPhone"    column="company_phone"    />
+        <result property="queryType"    column="query_type"    />
+        <result property="queryMode"    column="query_mode"    />
+        <result property="queryNum"    column="query_num"    />
+        <result property="code"    column="code"    />
+        <result property="qrImage"    column="qr_image"    />
+        <result property="isSuccess"    column="is_success"    />
+        <result property="isDel"    column="is_del"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectReportQueryLogVo">
+        select log_id, report_number, query_name, query_phone, company_name, company_phone, query_type, query_mode, query_num,code, qr_image, is_success, is_del, create_by, create_time, update_by, update_time, remark from report_query_log
+    </sql>
+
+    <select id="selectReportQueryLogList" parameterType="ReportQueryLog" resultMap="ReportQueryLogResult">
+        <include refid="selectReportQueryLogVo"/>
+        <where>  
+            <if test="reportNumber != null  and reportNumber != ''"> and report_number = #{reportNumber}</if>
+            <if test="queryName != null  and queryName != ''"> and query_name like concat('%', #{queryName}, '%')</if>
+            <if test="queryPhone != null  and queryPhone != ''"> and query_phone = #{queryPhone}</if>
+            <if test="companyName != null  and companyName != ''"> and company_name like concat('%', #{companyName}, '%')</if>
+            <if test="companyPhone != null  and companyPhone != ''"> and company_phone = #{companyPhone}</if>
+            <if test="queryType != null  and queryType != ''"> and query_type = #{queryType}</if>
+            <if test="queryMode != null  and queryMode != ''"> and query_mode = #{queryMode}</if>
+            <if test="queryNum != null  and queryNum != ''"> and query_num = #{queryNum}</if>
+            <if test="isDel != null  and isDel != ''"> and is_del = #{isDel}</if>
+        </where>
+    </select>
+    
+    <select id="selectReportQueryLogByLogId" parameterType="Long" resultMap="ReportQueryLogResult">
+        <include refid="selectReportQueryLogVo"/>
+        where log_id = #{logId}
+    </select>
+        
+    <insert id="insertReportQueryLog" parameterType="ReportQueryLog" useGeneratedKeys="true" keyProperty="logId">
+        insert into report_query_log
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="reportNumber != null and reportNumber != ''">report_number,</if>
+            <if test="queryName != null and queryName != ''">query_name,</if>
+            <if test="queryPhone != null and queryPhone != ''">query_phone,</if>
+            <if test="companyName != null">company_name,</if>
+            <if test="companyPhone != null">company_phone,</if>
+            <if test="queryType != null">query_type,</if>
+            <if test="queryMode != null">query_mode,</if>
+            <if test="queryNum != null">query_num,</if>
+            <if test="code != null">code,</if>
+            <if test="qrImage != null">qr_image,</if>
+            <if test="isSuccess != null">is_success,</if>
+            <if test="isDel != null">is_del,</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>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="reportNumber != null and reportNumber != ''">#{reportNumber},</if>
+            <if test="queryName != null and queryName != ''">#{queryName},</if>
+            <if test="queryPhone != null and queryPhone != ''">#{queryPhone},</if>
+            <if test="companyName != null">#{companyName},</if>
+            <if test="companyPhone != null">#{companyPhone},</if>
+            <if test="queryType != null">#{queryType},</if>
+            <if test="queryMode != null">#{queryMode},</if>
+            <if test="queryNum != null">#{queryNum},</if>
+            <if test="code != null">#{code},</if>
+            <if test="qrImage != null">#{qrImage},</if>
+            <if test="isSuccess != null">#{isSuccess},</if>
+            <if test="isDel != null">#{isDel},</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>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateReportQueryLog" parameterType="ReportQueryLog">
+        update report_query_log
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="reportNumber != null and reportNumber != ''">report_number = #{reportNumber},</if>
+            <if test="queryName != null and queryName != ''">query_name = #{queryName},</if>
+            <if test="queryPhone != null and queryPhone != ''">query_phone = #{queryPhone},</if>
+            <if test="companyName != null">company_name = #{companyName},</if>
+            <if test="companyPhone != null">company_phone = #{companyPhone},</if>
+            <if test="queryType != null">query_type = #{queryType},</if>
+            <if test="queryMode != null">query_mode = #{queryMode},</if>
+            <if test="queryNum != null">query_num = #{queryNum},</if>
+            <if test="code != null">code = #{code},</if>
+            <if test="qrImage != null">qr_image = #{qrImage},</if>
+            <if test="isSuccess != null">is_success = #{isSuccess},</if>
+            <if test="isDel != null">is_del = #{isDel},</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>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where log_id = #{logId}
+    </update>
+
+    <delete id="deleteReportQueryLogByLogId" parameterType="Long">
+        delete from report_query_log where log_id = #{logId}
+    </delete>
+
+    <delete id="deleteReportQueryLogByLogIds" parameterType="String">
+        delete from report_query_log where log_id in 
+        <foreach item="logId" collection="array" open="(" separator="," close=")">
+            #{logId}
+        </foreach>
+    </delete>
+</mapper>

+ 17 - 0
ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml

@@ -41,6 +41,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			</if>
 		</where>
     </select>
+
+    <select id="selectNoticeListMenHu" parameterType="SysNotice" resultMap="SysNoticeResult">
+        select notice_id, notice_title, notice_type, cast(notice_content as char) as notice_content, create_by, create_time, update_by, update_time
+        from sys_notice
+        where
+        status = '0'
+            <if test="noticeTitle != null and noticeTitle != ''">
+                AND notice_title like concat('%', #{noticeTitle}, '%')
+            </if>
+            <if test="noticeType != null and noticeType != ''">
+                AND notice_type = #{noticeType}
+            </if>
+            <if test="createBy != null and createBy != ''">
+                AND create_by like concat('%', #{createBy}, '%')
+            </if>
+
+    </select>
     
     <insert id="insertNotice" parameterType="SysNotice">
         insert into sys_notice (