Browse Source

调整一部分代码

攻心小虫 1 month ago
parent
commit
4134c5dd7f
58 changed files with 2936 additions and 659 deletions
  1. 36 47
      healsphere-admin/src/main/java/com/zdqz/web/controller/monitor/SysUserOnlineController.java
  2. 3 2
      healsphere-admin/src/main/resources/application.yml
  3. BIN
      healsphere-admin/src/main/resources/templates/fonts/MSYH.TTC
  4. BIN
      healsphere-admin/src/main/resources/templates/fonts/MSYHBD.TTC
  5. BIN
      healsphere-admin/src/main/resources/templates/fonts/MSYHL.TTC
  6. BIN
      healsphere-admin/src/main/resources/templates/fonts/SIMLI.TTF
  7. BIN
      healsphere-admin/src/main/resources/templates/fonts/ping_fang_bold.ttf
  8. BIN
      healsphere-admin/src/main/resources/templates/fonts/ping_fang_light.ttf
  9. BIN
      healsphere-admin/src/main/resources/templates/fonts/ping_fang_regular.ttf
  10. BIN
      healsphere-admin/src/main/resources/templates/img/1.jpg
  11. BIN
      healsphere-admin/src/main/resources/templates/img/2.jpg
  12. BIN
      healsphere-admin/src/main/resources/templates/img/3.jpg
  13. BIN
      healsphere-admin/src/main/resources/templates/img/4.jpg
  14. BIN
      healsphere-admin/src/main/resources/templates/img/index.jpg
  15. BIN
      healsphere-admin/src/main/resources/templates/img/logo.jpg
  16. 12 34
      healsphere-buss/pom.xml
  17. 104 0
      healsphere-buss/src/main/java/com/zdqz/data/controller/DateReportBytController.java
  18. 12 0
      healsphere-buss/src/main/java/com/zdqz/data/domain/DataBase.java
  19. 67 0
      healsphere-buss/src/main/java/com/zdqz/data/domain/DataBaseForTable.java
  20. 150 0
      healsphere-buss/src/main/java/com/zdqz/data/domain/DateReportByt.java
  21. 61 0
      healsphere-buss/src/main/java/com/zdqz/data/mapper/DateReportBytMapper.java
  22. 61 0
      healsphere-buss/src/main/java/com/zdqz/data/service/IDateReportBytService.java
  23. 96 0
      healsphere-buss/src/main/java/com/zdqz/data/service/impl/DateReportBytServiceImpl.java
  24. 3 3
      healsphere-buss/src/main/java/com/zdqz/read/domain/ReadData.java
  25. 777 0
      healsphere-buss/src/main/java/com/zdqz/report/controller/ReportController.java
  26. 99 0
      healsphere-buss/src/main/java/com/zdqz/report/domain/ReportBean.java
  27. 4 2
      healsphere-buss/src/main/java/com/zdqz/sample/controller/SampleExperimentController.java
  28. 2 1
      healsphere-buss/src/main/java/com/zdqz/sample/service/ISampleExperimentService.java
  29. 5 3
      healsphere-buss/src/main/java/com/zdqz/sample/service/impl/SampleExperimentServiceImpl.java
  30. 660 69
      healsphere-buss/src/main/java/com/zdqz/sample/tool/PdfTools.java
  31. 104 0
      healsphere-buss/src/main/java/com/zdqz/system/controller/SysReportConfigController.java
  32. 71 0
      healsphere-buss/src/main/java/com/zdqz/system/domain/SysReportConfig.java
  33. 61 0
      healsphere-buss/src/main/java/com/zdqz/system/mapper/SysReportConfigMapper.java
  34. 61 0
      healsphere-buss/src/main/java/com/zdqz/system/service/ISysReportConfigService.java
  35. 96 0
      healsphere-buss/src/main/java/com/zdqz/system/service/impl/SysReportConfigServiceImpl.java
  36. 106 0
      healsphere-buss/src/main/resources/mapper/data/DateReportBytMapper.xml
  37. 42 42
      healsphere-buss/src/main/resources/mapper/read/ReadDataMapper.xml
  38. 1 2
      healsphere-buss/src/main/resources/mapper/read/ReadRemarkMapper.xml
  39. 86 0
      healsphere-buss/src/main/resources/mapper/system/SysReportConfigMapper.xml
  40. BIN
      healsphere-buss/src/main/resources/templates/fonts/MSYH.TTC
  41. BIN
      healsphere-buss/src/main/resources/templates/fonts/MSYHBD.TTC
  42. BIN
      healsphere-buss/src/main/resources/templates/fonts/MSYHL.TTC
  43. BIN
      healsphere-buss/src/main/resources/templates/fonts/SIMLI.TTF
  44. BIN
      healsphere-buss/src/main/resources/templates/fonts/ping_fang_bold.ttf
  45. BIN
      healsphere-buss/src/main/resources/templates/fonts/ping_fang_light.ttf
  46. BIN
      healsphere-buss/src/main/resources/templates/fonts/ping_fang_regular.ttf
  47. BIN
      healsphere-buss/src/main/resources/templates/img/1.jpg
  48. BIN
      healsphere-buss/src/main/resources/templates/img/2.jpg
  49. BIN
      healsphere-buss/src/main/resources/templates/img/3.jpg
  50. BIN
      healsphere-buss/src/main/resources/templates/img/4.jpg
  51. BIN
      healsphere-buss/src/main/resources/templates/img/index.jpg
  52. BIN
      healsphere-buss/src/main/resources/templates/img/logo.jpg
  53. 0 290
      healsphere-buss/src/main/resources/templates/template.html
  54. 22 14
      healsphere-common/src/main/java/com/zdqz/common/config/ZdqzConfig.java
  55. 0 5
      healsphere-common/src/main/java/com/zdqz/common/constant/Constants.java
  56. 2 0
      healsphere-common/src/main/java/com/zdqz/common/utils/DateUtils.java
  57. 43 44
      healsphere-framework/src/main/java/com/zdqz/framework/config/ResourcesConfig.java
  58. 89 101
      healsphere-framework/src/main/java/com/zdqz/framework/config/SecurityConfig.java

+ 36 - 47
healsphere-admin/src/main/java/com/zdqz/web/controller/monitor/SysUserOnlineController.java

@@ -30,54 +30,43 @@ import com.zdqz.system.service.ISysUserOnlineService;
  */
 @RestController
 @RequestMapping("/monitor/online")
-public class SysUserOnlineController extends BaseController
-{
-    @Autowired
-    private ISysUserOnlineService userOnlineService;
+public class SysUserOnlineController extends BaseController {
+	@Autowired
+	private ISysUserOnlineService userOnlineService;
 
-    @Autowired
-    private RedisCache redisCache;
+	@Autowired
+	private RedisCache redisCache;
 
-    @PreAuthorize("@ss.hasPermi('monitor:online:list')")
-    @GetMapping("/list")
-    public TableDataInfo list(String ipaddr, String userName)
-    {
-        Collection<String> keys = redisCache.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
-        List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
-        for (String key : keys)
-        {
-            LoginUser user = redisCache.getCacheObject(key);
-            if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName))
-            {
-                userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
-            }
-            else if (StringUtils.isNotEmpty(ipaddr))
-            {
-                userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
-            }
-            else if (StringUtils.isNotEmpty(userName) && StringUtils.isNotNull(user.getUser()))
-            {
-                userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
-            }
-            else
-            {
-                userOnlineList.add(userOnlineService.loginUserToUserOnline(user));
-            }
-        }
-        Collections.reverse(userOnlineList);
-        userOnlineList.removeAll(Collections.singleton(null));
-        return getDataTable(userOnlineList);
-    }
+	@PreAuthorize("@ss.hasPermi('monitor:online:list')")
+	@GetMapping("/list")
+	public TableDataInfo list(String ipaddr, String userName) {
+		Collection<String> keys = redisCache.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
+		List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
+		for (String key : keys) {
+			LoginUser user = redisCache.getCacheObject(key);
+			if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) {
+				userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
+			} else if (StringUtils.isNotEmpty(ipaddr)) {
+				userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
+			} else if (StringUtils.isNotEmpty(userName) && StringUtils.isNotNull(user.getUser())) {
+				userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
+			} else {
+				userOnlineList.add(userOnlineService.loginUserToUserOnline(user));
+			}
+		}
+		Collections.reverse(userOnlineList);
+		userOnlineList.removeAll(Collections.singleton(null));
+		return getDataTable(userOnlineList);
+	}
 
-    /**
-     * 强退用户
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:online:forceLogout')")
-    @Log(title = "在线用户", businessType = BusinessType.FORCE)
-    @DeleteMapping("/{tokenId}")
-    public AjaxResult forceLogout(@PathVariable String tokenId)
-    {
-        redisCache.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId);
-        return success();
-    }
+	/**
+	 * 强退用户
+	 */
+	@PreAuthorize("@ss.hasPermi('monitor:online:forceLogout')")
+	@Log(title = "在线用户", businessType = BusinessType.FORCE)
+	@DeleteMapping("/{tokenId}")
+	public AjaxResult forceLogout(@PathVariable String tokenId) {
+		redisCache.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId);
+		return success();
+	}
 }

+ 3 - 2
healsphere-admin/src/main/resources/application.yml

@@ -1,11 +1,12 @@
 # 项目相关配置
 zdqz:
   # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
-  profile: /datadisk/healsphere/uploadPath
+  profile: /datadisk/toid/uploadPath
+  templates: /datadisk/toid/templates
   # 验证码类型 math 数字计算 char 字符验证
   captchaType: math
   initPassword: 123456
-  readFilePath: C:/Users/szpSh/Desktop/
+  readFilePath: /datadisk/toid/data
 
 # 开发环境配置
 server:

BIN
healsphere-admin/src/main/resources/templates/fonts/MSYH.TTC


BIN
healsphere-admin/src/main/resources/templates/fonts/MSYHBD.TTC


BIN
healsphere-admin/src/main/resources/templates/fonts/MSYHL.TTC


BIN
healsphere-admin/src/main/resources/templates/fonts/SIMLI.TTF


BIN
healsphere-admin/src/main/resources/templates/fonts/ping_fang_bold.ttf


BIN
healsphere-admin/src/main/resources/templates/fonts/ping_fang_light.ttf


BIN
healsphere-admin/src/main/resources/templates/fonts/ping_fang_regular.ttf


BIN
healsphere-admin/src/main/resources/templates/img/1.jpg


BIN
healsphere-admin/src/main/resources/templates/img/2.jpg


BIN
healsphere-admin/src/main/resources/templates/img/3.jpg


BIN
healsphere-admin/src/main/resources/templates/img/4.jpg


BIN
healsphere-admin/src/main/resources/templates/img/index.jpg


BIN
healsphere-admin/src/main/resources/templates/img/logo.jpg


+ 12 - 34
healsphere-buss/pom.xml

@@ -12,49 +12,27 @@
     <artifactId>healsphere-buss</artifactId>
 
     <dependencies>
-	<!-- itext7 -->
-        <dependency>
-            <groupId>com.itextpdf</groupId>
-            <artifactId>kernel</artifactId>
-            <version>7.1.15</version>
-        </dependency>
-        <dependency>
-            <groupId>com.itextpdf</groupId>
-            <artifactId>io</artifactId>
-            <version>7.1.15</version>
-        </dependency>
-        <dependency>
-            <groupId>com.itextpdf</groupId>
-            <artifactId>layout</artifactId>
-            <version>7.1.15</version>
-        </dependency>
-        <dependency>
-            <groupId>com.itextpdf</groupId>
-            <artifactId>forms</artifactId>
-            <version>7.1.15</version>
-        </dependency>
-        <dependency>
+		<dependency>
             <groupId>com.itextpdf</groupId>
-            <artifactId>pdfa</artifactId>
-            <version>7.1.15</version>
+            <artifactId>itextpdf</artifactId>
+            <version>5.4.2</version>
         </dependency>
         <dependency>
-            <groupId>com.itextpdf</groupId>
-            <artifactId>pdftest</artifactId>
-            <version>7.1.15</version>
+            <groupId>com.itextpdf.tool</groupId>
+            <artifactId>xmlworker</artifactId>
+            <version>5.4.1</version>
         </dependency>
         <dependency>
             <groupId>com.itextpdf</groupId>
-            <artifactId>font-asian</artifactId>
-            <version>7.1.15</version>
+            <artifactId>itext-asian</artifactId>
+            <version>5.2.0</version>
         </dependency>
-
-        <!--itext7 html转pdf用到的包-->
         <dependency>
-            <groupId>com.itextpdf</groupId>
-            <artifactId>html2pdf</artifactId>
-            <version>3.0.0</version>
+            <groupId>org.xhtmlrenderer</groupId>
+            <artifactId>flying-saucer-pdf</artifactId>
+            <version>9.0.3</version>
         </dependency>
+        <!--freemarker-->
         <dependency>
             <groupId>org.freemarker</groupId>
             <artifactId>freemarker</artifactId>

+ 104 - 0
healsphere-buss/src/main/java/com/zdqz/data/controller/DateReportBytController.java

@@ -0,0 +1,104 @@
+package com.zdqz.data.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zdqz.common.annotation.Log;
+import com.zdqz.common.core.controller.BaseController;
+import com.zdqz.common.core.domain.AjaxResult;
+import com.zdqz.common.enums.BusinessType;
+import com.zdqz.data.domain.DateReportByt;
+import com.zdqz.data.service.IDateReportBytService;
+import com.zdqz.common.utils.poi.ExcelUtil;
+import com.zdqz.common.core.page.TableDataInfo;
+
+/**
+ * 病原体历史统计Controller
+ * 
+ * @author 攻心小虫
+ * @date 2025-06-11
+ */
+@RestController
+@RequestMapping("/data/dataReportByt")
+public class DateReportBytController extends BaseController
+{
+    @Autowired
+    private IDateReportBytService dateReportBytService;
+
+    /**
+     * 查询病原体历史统计列表
+     */
+    @PreAuthorize("@ss.hasPermi('data:dataReportByt:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(DateReportByt dateReportByt)
+    {
+        startPage();
+        List<DateReportByt> list = dateReportBytService.selectDateReportBytList(dateReportByt);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出病原体历史统计列表
+     */
+    @PreAuthorize("@ss.hasPermi('data:dataReportByt:export')")
+    @Log(title = "病原体历史统计", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, DateReportByt dateReportByt)
+    {
+        List<DateReportByt> list = dateReportBytService.selectDateReportBytList(dateReportByt);
+        ExcelUtil<DateReportByt> util = new ExcelUtil<DateReportByt>(DateReportByt.class);
+        util.exportExcel(response, list, "病原体历史统计数据");
+    }
+
+    /**
+     * 获取病原体历史统计详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('data:dataReportByt:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(dateReportBytService.selectDateReportBytById(id));
+    }
+
+    /**
+     * 新增病原体历史统计
+     */
+    @PreAuthorize("@ss.hasPermi('data:dataReportByt:add')")
+    @Log(title = "病原体历史统计", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody DateReportByt dateReportByt)
+    {
+        return toAjax(dateReportBytService.insertDateReportByt(dateReportByt));
+    }
+
+    /**
+     * 修改病原体历史统计
+     */
+    @PreAuthorize("@ss.hasPermi('data:dataReportByt:edit')")
+    @Log(title = "病原体历史统计", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody DateReportByt dateReportByt)
+    {
+        return toAjax(dateReportBytService.updateDateReportByt(dateReportByt));
+    }
+
+    /**
+     * 删除病原体历史统计
+     */
+    @PreAuthorize("@ss.hasPermi('data:dataReportByt:remove')")
+    @Log(title = "病原体历史统计", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(dateReportBytService.deleteDateReportBytByIds(ids));
+    }
+}

+ 12 - 0
healsphere-buss/src/main/java/com/zdqz/data/domain/DataBase.java

@@ -24,6 +24,18 @@ public class DataBase extends BaseEntity {
 
 	private Integer type;
 
+	
+	public DataBase() {
+		
+	}
+	
+	public DataBase(String  nameCn,String  genomeSize,String  organismName,String defined) {
+		this.nameCn = nameCn;
+		this.genomeSize = genomeSize;
+		this.organismName = organismName;
+		this.defined = defined;
+	}
+	
 	/** 唯一注册号 */
 	@Excel(name = "唯一注册号")
 	private String assemblyAccession;

+ 67 - 0
healsphere-buss/src/main/java/com/zdqz/data/domain/DataBaseForTable.java

@@ -0,0 +1,67 @@
+package com.zdqz.data.domain;
+
+import java.util.List;
+
+import com.zdqz.common.core.domain.BaseEntity;
+
+/**
+ * 病原体管理对象 data_base
+ * 
+ * @author 攻心小虫
+ * @date 2025-06-05
+ */
+public class DataBaseForTable extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	private String type;
+	private String name;
+
+	private String xdfd;
+
+	private String xlh;
+
+	private List<DataBase> datas;
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getXdfd() {
+		return xdfd;
+	}
+
+	public void setXdfd(String xdfd) {
+		this.xdfd = xdfd;
+	}
+
+	public String getXlh() {
+		return xlh;
+	}
+
+	public void setXlh(String xlh) {
+		this.xlh = xlh;
+	}
+
+	public List<DataBase> getDatas() {
+		return datas;
+	}
+
+	public void setDatas(List<DataBase> datas) {
+		this.datas = datas;
+	}
+	
+	
+	
+}

+ 150 - 0
healsphere-buss/src/main/java/com/zdqz/data/domain/DateReportByt.java

@@ -0,0 +1,150 @@
+package com.zdqz.data.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zdqz.common.annotation.Excel;
+import com.zdqz.common.core.domain.BaseEntity;
+
+/**
+ * 病原体历史统计对象 date_report_byt
+ * 
+ * @author 攻心小虫
+ * @date 2025-06-11
+ */
+public class DateReportByt extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    private Long id;
+
+    /** 唯一注册号 */
+    @Excel(name = "唯一注册号")
+    private String assemblyAccession;
+
+    /** 病原体名称 */
+    @Excel(name = "病原体名称")
+    private String name;
+
+    /** 统计时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "统计时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date reportDate;
+
+    /** 区域类型; */
+    @Excel(name = "区域类型;")
+    private Long areaType;
+
+    /** 区域编号 */
+    @Excel(name = "区域编号")
+    private String areaId;
+
+    /** 区域名称 */
+    @Excel(name = "区域名称")
+    private String areaName;
+
+    /** 数量 */
+    @Excel(name = "数量")
+    private Long num;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+
+    public void setAssemblyAccession(String assemblyAccession) 
+    {
+        this.assemblyAccession = assemblyAccession;
+    }
+
+    public String getAssemblyAccession() 
+    {
+        return assemblyAccession;
+    }
+
+    public void setName(String name) 
+    {
+        this.name = name;
+    }
+
+    public String getName() 
+    {
+        return name;
+    }
+
+    public void setReportDate(Date reportDate) 
+    {
+        this.reportDate = reportDate;
+    }
+
+    public Date getReportDate() 
+    {
+        return reportDate;
+    }
+
+    public void setAreaType(Long areaType) 
+    {
+        this.areaType = areaType;
+    }
+
+    public Long getAreaType() 
+    {
+        return areaType;
+    }
+
+    public void setAreaId(String areaId) 
+    {
+        this.areaId = areaId;
+    }
+
+    public String getAreaId() 
+    {
+        return areaId;
+    }
+
+    public void setAreaName(String areaName) 
+    {
+        this.areaName = areaName;
+    }
+
+    public String getAreaName() 
+    {
+        return areaName;
+    }
+
+    public void setNum(Long num) 
+    {
+        this.num = num;
+    }
+
+    public Long getNum() 
+    {
+        return num;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("assemblyAccession", getAssemblyAccession())
+            .append("name", getName())
+            .append("reportDate", getReportDate())
+            .append("areaType", getAreaType())
+            .append("areaId", getAreaId())
+            .append("areaName", getAreaName())
+            .append("num", getNum())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 61 - 0
healsphere-buss/src/main/java/com/zdqz/data/mapper/DateReportBytMapper.java

@@ -0,0 +1,61 @@
+package com.zdqz.data.mapper;
+
+import java.util.List;
+import com.zdqz.data.domain.DateReportByt;
+
+/**
+ * 病原体历史统计Mapper接口
+ * 
+ * @author 攻心小虫
+ * @date 2025-06-11
+ */
+public interface DateReportBytMapper 
+{
+    /**
+     * 查询病原体历史统计
+     * 
+     * @param id 病原体历史统计主键
+     * @return 病原体历史统计
+     */
+    public DateReportByt selectDateReportBytById(Long id);
+
+    /**
+     * 查询病原体历史统计列表
+     * 
+     * @param dateReportByt 病原体历史统计
+     * @return 病原体历史统计集合
+     */
+    public List<DateReportByt> selectDateReportBytList(DateReportByt dateReportByt);
+
+    /**
+     * 新增病原体历史统计
+     * 
+     * @param dateReportByt 病原体历史统计
+     * @return 结果
+     */
+    public int insertDateReportByt(DateReportByt dateReportByt);
+
+    /**
+     * 修改病原体历史统计
+     * 
+     * @param dateReportByt 病原体历史统计
+     * @return 结果
+     */
+    public int updateDateReportByt(DateReportByt dateReportByt);
+
+    /**
+     * 删除病原体历史统计
+     * 
+     * @param id 病原体历史统计主键
+     * @return 结果
+     */
+    public int deleteDateReportBytById(Long id);
+
+    /**
+     * 批量删除病原体历史统计
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteDateReportBytByIds(Long[] ids);
+}

+ 61 - 0
healsphere-buss/src/main/java/com/zdqz/data/service/IDateReportBytService.java

@@ -0,0 +1,61 @@
+package com.zdqz.data.service;
+
+import java.util.List;
+import com.zdqz.data.domain.DateReportByt;
+
+/**
+ * 病原体历史统计Service接口
+ * 
+ * @author 攻心小虫
+ * @date 2025-06-11
+ */
+public interface IDateReportBytService 
+{
+    /**
+     * 查询病原体历史统计
+     * 
+     * @param id 病原体历史统计主键
+     * @return 病原体历史统计
+     */
+    public DateReportByt selectDateReportBytById(Long id);
+
+    /**
+     * 查询病原体历史统计列表
+     * 
+     * @param dateReportByt 病原体历史统计
+     * @return 病原体历史统计集合
+     */
+    public List<DateReportByt> selectDateReportBytList(DateReportByt dateReportByt);
+
+    /**
+     * 新增病原体历史统计
+     * 
+     * @param dateReportByt 病原体历史统计
+     * @return 结果
+     */
+    public int insertDateReportByt(DateReportByt dateReportByt);
+
+    /**
+     * 修改病原体历史统计
+     * 
+     * @param dateReportByt 病原体历史统计
+     * @return 结果
+     */
+    public int updateDateReportByt(DateReportByt dateReportByt);
+
+    /**
+     * 批量删除病原体历史统计
+     * 
+     * @param ids 需要删除的病原体历史统计主键集合
+     * @return 结果
+     */
+    public int deleteDateReportBytByIds(Long[] ids);
+
+    /**
+     * 删除病原体历史统计信息
+     * 
+     * @param id 病原体历史统计主键
+     * @return 结果
+     */
+    public int deleteDateReportBytById(Long id);
+}

+ 96 - 0
healsphere-buss/src/main/java/com/zdqz/data/service/impl/DateReportBytServiceImpl.java

@@ -0,0 +1,96 @@
+package com.zdqz.data.service.impl;
+
+import java.util.List;
+import com.zdqz.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zdqz.data.mapper.DateReportBytMapper;
+import com.zdqz.data.domain.DateReportByt;
+import com.zdqz.data.service.IDateReportBytService;
+
+/**
+ * 病原体历史统计Service业务层处理
+ * 
+ * @author 攻心小虫
+ * @date 2025-06-11
+ */
+@Service
+public class DateReportBytServiceImpl implements IDateReportBytService 
+{
+    @Autowired
+    private DateReportBytMapper dateReportBytMapper;
+
+    /**
+     * 查询病原体历史统计
+     * 
+     * @param id 病原体历史统计主键
+     * @return 病原体历史统计
+     */
+    @Override
+    public DateReportByt selectDateReportBytById(Long id)
+    {
+        return dateReportBytMapper.selectDateReportBytById(id);
+    }
+
+    /**
+     * 查询病原体历史统计列表
+     * 
+     * @param dateReportByt 病原体历史统计
+     * @return 病原体历史统计
+     */
+    @Override
+    public List<DateReportByt> selectDateReportBytList(DateReportByt dateReportByt)
+    {
+        return dateReportBytMapper.selectDateReportBytList(dateReportByt);
+    }
+
+    /**
+     * 新增病原体历史统计
+     * 
+     * @param dateReportByt 病原体历史统计
+     * @return 结果
+     */
+    @Override
+    public int insertDateReportByt(DateReportByt dateReportByt)
+    {
+        dateReportByt.setCreateTime(DateUtils.getNowDate());
+        return dateReportBytMapper.insertDateReportByt(dateReportByt);
+    }
+
+    /**
+     * 修改病原体历史统计
+     * 
+     * @param dateReportByt 病原体历史统计
+     * @return 结果
+     */
+    @Override
+    public int updateDateReportByt(DateReportByt dateReportByt)
+    {
+        dateReportByt.setUpdateTime(DateUtils.getNowDate());
+        return dateReportBytMapper.updateDateReportByt(dateReportByt);
+    }
+
+    /**
+     * 批量删除病原体历史统计
+     * 
+     * @param ids 需要删除的病原体历史统计主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDateReportBytByIds(Long[] ids)
+    {
+        return dateReportBytMapper.deleteDateReportBytByIds(ids);
+    }
+
+    /**
+     * 删除病原体历史统计信息
+     * 
+     * @param id 病原体历史统计主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDateReportBytById(Long id)
+    {
+        return dateReportBytMapper.deleteDateReportBytById(id);
+    }
+}

+ 3 - 3
healsphere-buss/src/main/java/com/zdqz/read/domain/ReadData.java

@@ -33,7 +33,7 @@ public class ReadData extends BaseEntity {
 	private String speciesTaxid;
 
 	@Excel(name = "生物名称")
-	private Long organismName;
+	private String organismName;
 
 	@Excel(name = "organismNameStd")
 	private String organismNameStd;
@@ -116,11 +116,11 @@ public class ReadData extends BaseEntity {
 		return speciesTaxid;
 	}
 
-	public void setOrganismName(Long organismName) {
+	public void setOrganismName(String organismName) {
 		this.organismName = organismName;
 	}
 
-	public Long getOrganismName() {
+	public String getOrganismName() {
 		return organismName;
 	}
 

File diff suppressed because it is too large
+ 777 - 0
healsphere-buss/src/main/java/com/zdqz/report/controller/ReportController.java


+ 99 - 0
healsphere-buss/src/main/java/com/zdqz/report/domain/ReportBean.java

@@ -0,0 +1,99 @@
+package com.zdqz.report.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+@ApiModel(value="请求体",description="报表请求体")
+public class ReportBean implements Serializable {
+
+	private static final long serialVersionUID = 4540360374353261642L;
+
+	@ApiModelProperty(value="开始时间",name="startDate")
+	private Date startDate;
+	
+	@ApiModelProperty(value="开始时间",name="endDate")
+	private Date endDate;
+	
+	@ApiModelProperty(value="型号",name="model")
+	private String model;
+	
+	
+	@ApiModelProperty(value="分支",name="batch")
+	private String batch;
+	
+	@ApiModelProperty(value="病原体名称",name="bytName")
+	private String bytName;
+	
+	@ApiModelProperty(value="国家",name="country")
+	private String country;
+	
+	@ApiModelProperty(value="中国省份(国家是中国时才有)",name="province")
+	private String province;
+
+	public Date getStartDate() {
+		return startDate;
+	}
+
+	public void setStartDate(Date startDate) {
+		this.startDate = startDate;
+	}
+
+	public Date getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
+
+	public String getModel() {
+		return model;
+	}
+
+	public void setModel(String model) {
+		this.model = model;
+	}
+
+	public String getBatch() {
+		return batch;
+	}
+
+	public void setBatch(String batch) {
+		this.batch = batch;
+	}
+
+	public String getBytName() {
+		return bytName;
+	}
+
+	public void setBytName(String bytName) {
+		this.bytName = bytName;
+	}
+
+	public String getCountry() {
+		return country;
+	}
+
+	public void setCountry(String country) {
+		this.country = country;
+	}
+
+	public String getProvince() {
+		return province;
+	}
+
+	public void setProvince(String province) {
+		this.province = province;
+	}
+
+	public static long getSerialversionuid() {
+		return serialVersionUID;
+	}
+	
+
+	
+	
+}

+ 4 - 2
healsphere-buss/src/main/java/com/zdqz/sample/controller/SampleExperimentController.java

@@ -81,6 +81,8 @@ public class SampleExperimentController extends BaseController {
 	@Log(title = "解读管理", businessType = BusinessType.INSERT)
 	@PostMapping
 	public AjaxResult add(@RequestBody SampleExperiment sampleExperiment) {
+		sampleExperiment.setStatus(1L);
+		sampleExperiment.setGeneratorStatus(1L);
 		return toAjax(sampleExperimentService.insertSampleExperiment(sampleExperiment));
 	}
 
@@ -105,7 +107,7 @@ public class SampleExperimentController extends BaseController {
 	}
 	
 	@ApiOperation("拉取解读数据")
-	@PostMapping("/readData/{id}")
+	@PostMapping("/loadReadData/{id}")
 	@Log(title = "拉取解读数据", businessType = BusinessType.UPDATE)
 	@ApiImplicitParam(name = "id", value = "实验编号", required = true, dataType = "int", paramType = "path", dataTypeClass = Long.class)
 	public AjaxResult readData(@PathVariable("id") Long id) {
@@ -118,7 +120,7 @@ public class SampleExperimentController extends BaseController {
 	}
 	
 	@ApiOperation("生成文档")
-	@PostMapping("/readData/{id}")
+	@PostMapping("/generator/{id}")
 	@Log(title = "生成文档", businessType = BusinessType.UPDATE)
 	@ApiImplicitParam(name = "id", value = "实验编号", required = true, dataType = "int", paramType = "path", dataTypeClass = Long.class)
 	public AjaxResult generator(@PathVariable("id") Long id) {

+ 2 - 1
healsphere-buss/src/main/java/com/zdqz/sample/service/ISampleExperimentService.java

@@ -1,5 +1,6 @@
 package com.zdqz.sample.service;
 
+import java.io.IOException;
 import java.util.List;
 import com.zdqz.sample.domain.SampleExperiment;
 
@@ -61,5 +62,5 @@ public interface ISampleExperimentService
 
 	public void readData(Long id) throws Exception;
 
-	public void generator(Long id);
+	public void generator(Long id) throws IOException ;
 }

+ 5 - 3
healsphere-buss/src/main/java/com/zdqz/sample/service/impl/SampleExperimentServiceImpl.java

@@ -2,6 +2,7 @@ package com.zdqz.sample.service.impl;
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.IOException;
 import java.util.Date;
 import java.util.List;
 
@@ -19,6 +20,7 @@ import com.zdqz.read.service.IReadDataService;
 import com.zdqz.sample.domain.SampleExperiment;
 import com.zdqz.sample.mapper.SampleExperimentMapper;
 import com.zdqz.sample.service.ISampleExperimentService;
+import com.zdqz.sample.tool.PdfTools;
 
 /**
  * 解读管理Service业务层处理
@@ -91,7 +93,7 @@ public class SampleExperimentServiceImpl implements ISampleExperimentService {
 	}
 
 	@Override
-	public void generator(Long id) {
+	public void generator(Long id) throws IOException {
 		SampleExperiment se = selectSampleExperimentById(id);
 		if(se == null) {
 			throw new NullPointerException("实验数据不存在");
@@ -99,9 +101,9 @@ public class SampleExperimentServiceImpl implements ISampleExperimentService {
 		se.setGeneratorStatus(2L);
 		se.setGeneratorTime(new Date());
 		String fileName = UUID.randomUUID().toString().replace("-","");
+		PdfTools.exportToFile(ZdqzConfig.getTemplates(), ZdqzConfig.getDownloadPath()+"/"+fileName+".pdf", null);
 		se.setGeneratorFile(fileName+".pdf");
 		sampleExperimentMapper.updateSampleExperiment(se);
-		
-		//生成文档
 	}
+	
 }

File diff suppressed because it is too large
+ 660 - 69
healsphere-buss/src/main/java/com/zdqz/sample/tool/PdfTools.java


+ 104 - 0
healsphere-buss/src/main/java/com/zdqz/system/controller/SysReportConfigController.java

@@ -0,0 +1,104 @@
+package com.zdqz.system.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zdqz.common.annotation.Log;
+import com.zdqz.common.core.controller.BaseController;
+import com.zdqz.common.core.domain.AjaxResult;
+import com.zdqz.common.enums.BusinessType;
+import com.zdqz.system.domain.SysReportConfig;
+import com.zdqz.system.service.ISysReportConfigService;
+import com.zdqz.common.utils.poi.ExcelUtil;
+import com.zdqz.common.core.page.TableDataInfo;
+
+/**
+ * 诊断统计设置Controller
+ * 
+ * @author 攻心小虫
+ * @date 2025-06-12
+ */
+@RestController
+@RequestMapping("/system/systemConfig")
+public class SysReportConfigController extends BaseController
+{
+    @Autowired
+    private ISysReportConfigService sysReportConfigService;
+
+    /**
+     * 查询诊断统计设置列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:systemConfig:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(SysReportConfig sysReportConfig)
+    {
+        startPage();
+        List<SysReportConfig> list = sysReportConfigService.selectSysReportConfigList(sysReportConfig);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出诊断统计设置列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:systemConfig:export')")
+    @Log(title = "诊断统计设置", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysReportConfig sysReportConfig)
+    {
+        List<SysReportConfig> list = sysReportConfigService.selectSysReportConfigList(sysReportConfig);
+        ExcelUtil<SysReportConfig> util = new ExcelUtil<SysReportConfig>(SysReportConfig.class);
+        util.exportExcel(response, list, "诊断统计设置数据");
+    }
+
+    /**
+     * 获取诊断统计设置详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:systemConfig:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(sysReportConfigService.selectSysReportConfigById(id));
+    }
+
+    /**
+     * 新增诊断统计设置
+     */
+    @PreAuthorize("@ss.hasPermi('system:systemConfig:add')")
+    @Log(title = "诊断统计设置", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody SysReportConfig sysReportConfig)
+    {
+        return toAjax(sysReportConfigService.insertSysReportConfig(sysReportConfig));
+    }
+
+    /**
+     * 修改诊断统计设置
+     */
+    @PreAuthorize("@ss.hasPermi('system:systemConfig:edit')")
+    @Log(title = "诊断统计设置", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody SysReportConfig sysReportConfig)
+    {
+        return toAjax(sysReportConfigService.updateSysReportConfig(sysReportConfig));
+    }
+
+    /**
+     * 删除诊断统计设置
+     */
+    @PreAuthorize("@ss.hasPermi('system:systemConfig:remove')")
+    @Log(title = "诊断统计设置", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(sysReportConfigService.deleteSysReportConfigByIds(ids));
+    }
+}

+ 71 - 0
healsphere-buss/src/main/java/com/zdqz/system/domain/SysReportConfig.java

@@ -0,0 +1,71 @@
+package com.zdqz.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import com.zdqz.common.annotation.Excel;
+import com.zdqz.common.core.domain.BaseEntity;
+
+/**
+ * 诊断统计设置对象 sys_report_config
+ * 
+ * @author 攻心小虫
+ * @date 2025-06-12
+ */
+public class SysReportConfig extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/** 编号 */
+	private Long id;
+
+	/** 关键字 */
+	@Excel(name = "关键字")
+	private String keyword;
+
+	/** 是否展示 */
+	@Excel(name = "是否展示")
+	private String defaultShow;
+
+	/** 是否数值 */
+	@Excel(name = "是否数值")
+	private String isNum;
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setKeyword(String keyword) {
+		this.keyword = keyword;
+	}
+
+	public String getKeyword() {
+		return keyword;
+	}
+
+	public void setDefaultShow(String defaultShow) {
+		this.defaultShow = defaultShow;
+	}
+
+	public String getDefaultShow() {
+		return defaultShow;
+	}
+
+	public void setIsNum(String isNum) {
+		this.isNum = isNum;
+	}
+
+	public String getIsNum() {
+		return isNum;
+	}
+
+	@Override
+	public String toString() {
+		return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("id", getId()).append("keyword", getKeyword()).append("defaultShow", getDefaultShow())
+				.append("isNum", getIsNum()).append("createBy", getCreateBy()).append("createTime", getCreateTime()).append("updateBy", getUpdateBy())
+				.append("updateTime", getUpdateTime()).append("remark", getRemark()).toString();
+	}
+}

+ 61 - 0
healsphere-buss/src/main/java/com/zdqz/system/mapper/SysReportConfigMapper.java

@@ -0,0 +1,61 @@
+package com.zdqz.system.mapper;
+
+import java.util.List;
+import com.zdqz.system.domain.SysReportConfig;
+
+/**
+ * 诊断统计设置Mapper接口
+ * 
+ * @author 攻心小虫
+ * @date 2025-06-12
+ */
+public interface SysReportConfigMapper 
+{
+    /**
+     * 查询诊断统计设置
+     * 
+     * @param id 诊断统计设置主键
+     * @return 诊断统计设置
+     */
+    public SysReportConfig selectSysReportConfigById(Long id);
+
+    /**
+     * 查询诊断统计设置列表
+     * 
+     * @param sysReportConfig 诊断统计设置
+     * @return 诊断统计设置集合
+     */
+    public List<SysReportConfig> selectSysReportConfigList(SysReportConfig sysReportConfig);
+
+    /**
+     * 新增诊断统计设置
+     * 
+     * @param sysReportConfig 诊断统计设置
+     * @return 结果
+     */
+    public int insertSysReportConfig(SysReportConfig sysReportConfig);
+
+    /**
+     * 修改诊断统计设置
+     * 
+     * @param sysReportConfig 诊断统计设置
+     * @return 结果
+     */
+    public int updateSysReportConfig(SysReportConfig sysReportConfig);
+
+    /**
+     * 删除诊断统计设置
+     * 
+     * @param id 诊断统计设置主键
+     * @return 结果
+     */
+    public int deleteSysReportConfigById(Long id);
+
+    /**
+     * 批量删除诊断统计设置
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteSysReportConfigByIds(Long[] ids);
+}

+ 61 - 0
healsphere-buss/src/main/java/com/zdqz/system/service/ISysReportConfigService.java

@@ -0,0 +1,61 @@
+package com.zdqz.system.service;
+
+import java.util.List;
+import com.zdqz.system.domain.SysReportConfig;
+
+/**
+ * 诊断统计设置Service接口
+ * 
+ * @author 攻心小虫
+ * @date 2025-06-12
+ */
+public interface ISysReportConfigService 
+{
+    /**
+     * 查询诊断统计设置
+     * 
+     * @param id 诊断统计设置主键
+     * @return 诊断统计设置
+     */
+    public SysReportConfig selectSysReportConfigById(Long id);
+
+    /**
+     * 查询诊断统计设置列表
+     * 
+     * @param sysReportConfig 诊断统计设置
+     * @return 诊断统计设置集合
+     */
+    public List<SysReportConfig> selectSysReportConfigList(SysReportConfig sysReportConfig);
+
+    /**
+     * 新增诊断统计设置
+     * 
+     * @param sysReportConfig 诊断统计设置
+     * @return 结果
+     */
+    public int insertSysReportConfig(SysReportConfig sysReportConfig);
+
+    /**
+     * 修改诊断统计设置
+     * 
+     * @param sysReportConfig 诊断统计设置
+     * @return 结果
+     */
+    public int updateSysReportConfig(SysReportConfig sysReportConfig);
+
+    /**
+     * 批量删除诊断统计设置
+     * 
+     * @param ids 需要删除的诊断统计设置主键集合
+     * @return 结果
+     */
+    public int deleteSysReportConfigByIds(Long[] ids);
+
+    /**
+     * 删除诊断统计设置信息
+     * 
+     * @param id 诊断统计设置主键
+     * @return 结果
+     */
+    public int deleteSysReportConfigById(Long id);
+}

+ 96 - 0
healsphere-buss/src/main/java/com/zdqz/system/service/impl/SysReportConfigServiceImpl.java

@@ -0,0 +1,96 @@
+package com.zdqz.system.service.impl;
+
+import java.util.List;
+import com.zdqz.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zdqz.system.mapper.SysReportConfigMapper;
+import com.zdqz.system.domain.SysReportConfig;
+import com.zdqz.system.service.ISysReportConfigService;
+
+/**
+ * 诊断统计设置Service业务层处理
+ * 
+ * @author 攻心小虫
+ * @date 2025-06-12
+ */
+@Service
+public class SysReportConfigServiceImpl implements ISysReportConfigService 
+{
+    @Autowired
+    private SysReportConfigMapper sysReportConfigMapper;
+
+    /**
+     * 查询诊断统计设置
+     * 
+     * @param id 诊断统计设置主键
+     * @return 诊断统计设置
+     */
+    @Override
+    public SysReportConfig selectSysReportConfigById(Long id)
+    {
+        return sysReportConfigMapper.selectSysReportConfigById(id);
+    }
+
+    /**
+     * 查询诊断统计设置列表
+     * 
+     * @param sysReportConfig 诊断统计设置
+     * @return 诊断统计设置
+     */
+    @Override
+    public List<SysReportConfig> selectSysReportConfigList(SysReportConfig sysReportConfig)
+    {
+        return sysReportConfigMapper.selectSysReportConfigList(sysReportConfig);
+    }
+
+    /**
+     * 新增诊断统计设置
+     * 
+     * @param sysReportConfig 诊断统计设置
+     * @return 结果
+     */
+    @Override
+    public int insertSysReportConfig(SysReportConfig sysReportConfig)
+    {
+        sysReportConfig.setCreateTime(DateUtils.getNowDate());
+        return sysReportConfigMapper.insertSysReportConfig(sysReportConfig);
+    }
+
+    /**
+     * 修改诊断统计设置
+     * 
+     * @param sysReportConfig 诊断统计设置
+     * @return 结果
+     */
+    @Override
+    public int updateSysReportConfig(SysReportConfig sysReportConfig)
+    {
+        sysReportConfig.setUpdateTime(DateUtils.getNowDate());
+        return sysReportConfigMapper.updateSysReportConfig(sysReportConfig);
+    }
+
+    /**
+     * 批量删除诊断统计设置
+     * 
+     * @param ids 需要删除的诊断统计设置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSysReportConfigByIds(Long[] ids)
+    {
+        return sysReportConfigMapper.deleteSysReportConfigByIds(ids);
+    }
+
+    /**
+     * 删除诊断统计设置信息
+     * 
+     * @param id 诊断统计设置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSysReportConfigById(Long id)
+    {
+        return sysReportConfigMapper.deleteSysReportConfigById(id);
+    }
+}

+ 106 - 0
healsphere-buss/src/main/resources/mapper/data/DateReportBytMapper.xml

@@ -0,0 +1,106 @@
+<?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.zdqz.data.mapper.DateReportBytMapper">
+    
+    <resultMap type="DateReportByt" id="DateReportBytResult">
+        <result property="id"    column="id"    />
+        <result property="assemblyAccession"    column="assembly_accession"    />
+        <result property="name"    column="name"    />
+        <result property="reportDate"    column="report_date"    />
+        <result property="areaType"    column="area_type"    />
+        <result property="areaId"    column="area_id"    />
+        <result property="areaName"    column="area_name"    />
+        <result property="num"    column="num"    />
+        <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="selectDateReportBytVo">
+        select id, assembly_accession, name, report_date, area_type, area_id, area_name, num, create_by, create_time, update_by, update_time, remark from date_report_byt
+    </sql>
+
+    <select id="selectDateReportBytList" parameterType="DateReportByt" resultMap="DateReportBytResult">
+        <include refid="selectDateReportBytVo"/>
+        <where>  
+            <if test="assemblyAccession != null  and assemblyAccession != ''"> and assembly_accession = #{assemblyAccession}</if>
+            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
+            <if test="reportDate != null "> and report_date = #{reportDate}</if>
+            <if test="areaType != null "> and area_type = #{areaType}</if>
+            <if test="areaId != null  and areaId != ''"> and area_id = #{areaId}</if>
+            <if test="areaName != null  and areaName != ''"> and area_name like concat('%', #{areaName}, '%')</if>
+            <if test="num != null "> and num = #{num}</if>
+        </where>
+    </select>
+    
+    <select id="selectDateReportBytById" parameterType="Long" resultMap="DateReportBytResult">
+        <include refid="selectDateReportBytVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertDateReportByt" parameterType="DateReportByt" useGeneratedKeys="true" keyProperty="id">
+        insert into date_report_byt
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="assemblyAccession != null">assembly_accession,</if>
+            <if test="name != null">name,</if>
+            <if test="reportDate != null">report_date,</if>
+            <if test="areaType != null">area_type,</if>
+            <if test="areaId != null">area_id,</if>
+            <if test="areaName != null">area_name,</if>
+            <if test="num != null">num,</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="assemblyAccession != null">#{assemblyAccession},</if>
+            <if test="name != null">#{name},</if>
+            <if test="reportDate != null">#{reportDate},</if>
+            <if test="areaType != null">#{areaType},</if>
+            <if test="areaId != null">#{areaId},</if>
+            <if test="areaName != null">#{areaName},</if>
+            <if test="num != null">#{num},</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="updateDateReportByt" parameterType="DateReportByt">
+        update date_report_byt
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="assemblyAccession != null">assembly_accession = #{assemblyAccession},</if>
+            <if test="name != null">name = #{name},</if>
+            <if test="reportDate != null">report_date = #{reportDate},</if>
+            <if test="areaType != null">area_type = #{areaType},</if>
+            <if test="areaId != null">area_id = #{areaId},</if>
+            <if test="areaName != null">area_name = #{areaName},</if>
+            <if test="num != null">num = #{num},</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 id = #{id}
+    </update>
+
+    <delete id="deleteDateReportBytById" parameterType="Long">
+        delete from date_report_byt where id = #{id}
+    </delete>
+
+    <delete id="deleteDateReportBytByIds" parameterType="String">
+        delete from date_report_byt where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 42 - 42
healsphere-buss/src/main/resources/mapper/read/ReadDataMapper.xml

@@ -185,48 +185,48 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 	<sql id="selectReadData">
         select a.*, 
-	        assembly_accession b_assembly_accession, 
-	        refseq_category b_refseq_category, 
-	        taxid b_taxid, 
-	        species_taxid b_species_taxid, 
-	        organism_name b_organism_name, 
-	        infraspecific_name b_infraspecific_name, 
-	        isolate b_isolate, 
-	        assembly_level b_assembly_level, 
-	        genome_rep b_genome_rep, 
-	        seq_rel_date b_seq_rel_date, 
-	        asm_name b_asm_name, 
-	        gbrs_paired_asm b_gbrs_paired_asm, 
-	        paired_asm_comp b_paired_asm_comp, 
-	        ftp_path b_ftp_path, 
-	        excluded_from_refseq b_excluded_from_refseq, 
-	        assembly_type b_assembly_type, 
-	        `group` b_group, 
-	        genome_size b_genome_size, 
-	        genome_size_ungapped b_genome_size_ungapped, 
-	        gc_percent b_gc_percent, 
-	        replicon_count b_replicon_count, 
-	        scaffold_count b_scaffold_count, 
-	        contig_count b_contig_count, 
-	        total_gene_count b_total_gene_count, 
-	        protein_coding_gene_count b_protein_coding_gene_count, 
-	        non_coding_gene_count b_non_coding_gene_count, 
-	        name_cn b_name_cn, 
-	        defined b_defined, 
-	        seq_source b_seq_source, 
-	        express b_express, 
-	        file_path b_file_path, 
-	        dtpnyjy b_dtpnyjy, 
-	        dtpnyjy_express b_dtpnyjy_express, 
-	        nyjy b_nyjy, 
-	        nyjy_express b_nyjy_express, 
-	        dljy b_dljy, 
-	        dljy_express b_dljy_express, 
-	        create_by b_create_by, 
-	        create_time b_create_time, 
-	        update_by b_update_by, 
-	        update_time b_update_time, 
-	        remark b_remark 
+	        b.assembly_accession b_assembly_accession, 
+	        b.refseq_category b_refseq_category, 
+	        b.taxid b_taxid, 
+	        b.species_taxid b_species_taxid, 
+	        b.organism_name b_organism_name, 
+	        b.infraspecific_name b_infraspecific_name, 
+	        b.isolate b_isolate, 
+	        b.assembly_level b_assembly_level, 
+	       	b.genome_rep b_genome_rep, 
+	        b.seq_rel_date b_seq_rel_date, 
+	        b.asm_name b_asm_name, 
+	        b.gbrs_paired_asm b_gbrs_paired_asm, 
+	        b.paired_asm_comp b_paired_asm_comp, 
+	        b.ftp_path b_ftp_path, 
+	        b.excluded_from_refseq b_excluded_from_refseq, 
+	        b.assembly_type b_assembly_type, 
+	        b.`group` b_group, 
+	        b.genome_size b_genome_size, 
+	        b.genome_size_ungapped b_genome_size_ungapped, 
+	        b.gc_percent b_gc_percent, 
+	        b.replicon_count b_replicon_count, 
+	        b.scaffold_count b_scaffold_count, 
+	        b.contig_count b_contig_count, 
+	        b.total_gene_count b_total_gene_count, 
+	        b.protein_coding_gene_count b_protein_coding_gene_count, 
+	        b.non_coding_gene_count b_non_coding_gene_count, 
+	        b.name_cn b_name_cn, 
+	        b.defined b_defined, 
+	        b.seq_source b_seq_source, 
+	        b.express b_express, 
+	        b.file_path b_file_path, 
+	        b.dtpnyjy b_dtpnyjy, 
+	        b.dtpnyjy_express b_dtpnyjy_express, 
+	        b.nyjy b_nyjy, 
+	        b.nyjy_express b_nyjy_express, 
+	        b.dljy b_dljy, 
+	        b.dljy_express b_dljy_express, 
+	        b.create_by b_create_by, 
+	        b.create_time b_create_time, 
+	        b.update_by b_update_by, 
+	        b.update_time b_update_time, 
+	        b.remark b_remark 
         from read_data a
     </sql>
     

+ 1 - 2
healsphere-buss/src/main/resources/mapper/read/ReadRemarkMapper.xml

@@ -48,9 +48,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     
     <select id="selectReadRemarkByExperiment" parameterType="Long" resultMap="ReadRemarkResult">
         <include refid="selectReadRemarkVo"/>
-        where experimentId = #{experimentid}
+        where experiment_id = #{experimentid}
     </select>
-    
 
     <insert id="insertReadRemark" parameterType="ReadRemark" useGeneratedKeys="true" keyProperty="id">
         insert into read_remark

+ 86 - 0
healsphere-buss/src/main/resources/mapper/system/SysReportConfigMapper.xml

@@ -0,0 +1,86 @@
+<?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.zdqz.system.mapper.SysReportConfigMapper">
+    
+    <resultMap type="SysReportConfig" id="SysReportConfigResult">
+        <result property="id"    column="id"    />
+        <result property="keyword"    column="keyword"    />
+        <result property="defaultShow"    column="default_show"    />
+        <result property="isNum"    column="is_num"    />
+        <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="selectSysReportConfigVo">
+        select id, keyword, default_show, is_num, create_by, create_time, update_by, update_time, remark from sys_report_config
+    </sql>
+
+    <select id="selectSysReportConfigList" parameterType="SysReportConfig" resultMap="SysReportConfigResult">
+        <include refid="selectSysReportConfigVo"/>
+        <where>  
+            <if test="keyword != null  and keyword != ''"> and keyword = #{keyword}</if>
+            <if test="defaultShow != null "> and default_show = #{defaultShow}</if>
+            <if test="isNum != null "> and is_num = #{isNum}</if>
+        </where>
+    </select>
+    
+    <select id="selectSysReportConfigById" parameterType="Long" resultMap="SysReportConfigResult">
+        <include refid="selectSysReportConfigVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertSysReportConfig" parameterType="SysReportConfig" useGeneratedKeys="true" keyProperty="id">
+        insert into sys_report_config
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="keyword != null">keyword,</if>
+            <if test="defaultShow != null">default_show,</if>
+            <if test="isNum != null">is_num,</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="keyword != null">#{keyword},</if>
+            <if test="defaultShow != null">#{defaultShow},</if>
+            <if test="isNum != null">#{isNum},</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="updateSysReportConfig" parameterType="SysReportConfig">
+        update sys_report_config
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="keyword != null">keyword = #{keyword},</if>
+            <if test="defaultShow != null">default_show = #{defaultShow},</if>
+            <if test="isNum != null">is_num = #{isNum},</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 id = #{id}
+    </update>
+
+    <delete id="deleteSysReportConfigById" parameterType="Long">
+        delete from sys_report_config where id = #{id}
+    </delete>
+
+    <delete id="deleteSysReportConfigByIds" parameterType="String">
+        delete from sys_report_config where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

BIN
healsphere-buss/src/main/resources/templates/fonts/MSYH.TTC


BIN
healsphere-buss/src/main/resources/templates/fonts/MSYHBD.TTC


BIN
healsphere-buss/src/main/resources/templates/fonts/MSYHL.TTC


BIN
healsphere-buss/src/main/resources/templates/fonts/SIMLI.TTF


BIN
healsphere-buss/src/main/resources/templates/fonts/ping_fang_bold.ttf


BIN
healsphere-buss/src/main/resources/templates/fonts/ping_fang_light.ttf


BIN
healsphere-buss/src/main/resources/templates/fonts/ping_fang_regular.ttf


BIN
healsphere-buss/src/main/resources/templates/img/1.jpg


BIN
healsphere-buss/src/main/resources/templates/img/2.jpg


BIN
healsphere-buss/src/main/resources/templates/img/3.jpg


BIN
healsphere-buss/src/main/resources/templates/img/4.jpg


BIN
healsphere-buss/src/main/resources/templates/img/index.jpg


BIN
healsphere-buss/src/main/resources/templates/img/logo.jpg


+ 0 - 290
healsphere-buss/src/main/resources/templates/template.html

@@ -1,290 +0,0 @@
-!DOCTYPE html>
-<html>
-<head>
-    <meta charset="UTF-8">
-    <title></title>
-    <style type="text/css">
-        @page {
-            size: A4;
-            margin: 5mm 10mm; /* 上下和左右两个方向的边距分别为 10mm 和 20mm */
-        }
-        body {
-            width: 180mm;
-            height: 297mm;
-        }
-
-        .item_content {
-            width: 95%;
-            height: 100%;
-        }
-
-        .item_content .title {
-            overflow: hidden; /* 清除浮动 */
-            box-sizing: border-box; /* 盒模型以边框为界计算宽度 */
-            display: flex;
-            height: 20pt;
-            width: 100%;
-            align-items: center;
-            justify-content: center;
-        }
-
-        .item_content .title .circle {
-            float: left;
-            width: 3%;
-            padding-right: 0.5px; /* 右侧间距 */
-            align-self: center;
-            justify-self: center;
-            margin-right: -1pt;
-            margin-top: 2pt;
-        }
-
-        .item_content .title .title_text {
-            float: left;
-            width: 12%;
-            color: #409EFF;
-            text-align: center;
-            position: relative;
-            font-size: 15pt;
-            padding-right: 0.5px; /* 右侧间距 */
-            align-self: center;
-            justify-self: center;
-        }
-
-        .item_content .title .line {
-            float: right;
-            width: 85%;
-            border-top: 0.75pt solid black;
-            margin-top: 10pt;
-        }
-
-        .item_content .section {
-            overflow: hidden; /* 清除浮动 */
-            box-sizing: border-box; /* 盒模型以边框为界计算宽度 */
-            display: flex;
-            height: 100%; /* 高度设为100% */
-            margin: auto;
-        }
-
-        .item_content .section .section_photo {
-            float: left;
-            width: 14.5%;
-            text-align: center;
-        }
-
-        .item_content .section .section_info {
-            float: right;
-            width: 84.5%;
-            align-self: center;
-            justify-self: center;
-            text-align: left;
-        }
-
-        .item_content .section .section_info .name {
-            color: #409EFF;
-            font-size: 21pt;
-        }
-
-        .item_content .section .section_info .address {
-            width: 100%;
-            height: 40px;
-            line-height: 40px;
-            background: #5195db;
-            color: white;
-            font-size: 15pt;
-            padding: 0 15pt;
-            margin: 10px 0 0;
-            -webkit-print-color-adjust: exact;
-        }
-
-        .item_content .section .section_info .divider {
-            width: 100%;
-            margin: 15pt 0;
-            border-top: 0.75pt solid #ccc;
-        }
-
-        .item_content .section .section_info .info-container {
-            overflow: hidden;/* 清除浮动后的高度问题 */
-            margin-top: 1%;
-            margin-bottom: 1%;
-            font-size: 11.25pt;
-            gap: 4%;
-        }
-
-        .item_content .section .section_info .info-container .left-container{
-            float: left;
-            width: 48%;
-            mmargin-top: 1%;
-            margin-bottom: 1%;
-        }
-
-        .item_content .section .section_info .info-container .right-container{
-            float: right;
-            width: 48%;
-            margin-top: 1%;
-            margin-bottom: 1%;
-        }
-
-        .item_content .section .section_info .info-container .left-container .id-card-photo-container{
-            overflow: hidden;/* 清除浮动后的高度问题 */
-        }
-
-        .item_content .section .section_info .info-container .left-container .id-card-photo-container .left-id-card-photo{
-            float: left;
-            width: 40%;/* 左半部分的宽度为 40% */
-        }
-
-        .item_content .section .section_info .info-container .left-container .id-card-photo-container .right-id-card-photo{
-            float: right;
-            width: 60%;/* 右半部分的宽度为 60% */
-        }
-
-        .item_content .section .section_info .record-container {
-            overflow: hidden;/* 清除浮动后的高度问题 */
-            margin-top: 1%;
-            margin-bottom: 1%;
-            font-size: 11.25pt;
-            gap: 4%;
-        }
-
-        .item_content .section .section_info .record-container .left-record {
-            float: left;
-            width: 48%;/* 左半部分的宽度为 50% */
-            mmargin-top: 1%;
-            margin-bottom: 1%;
-            text-align: left;
-        }
-
-        .item_content .section .section_info .record-container .right-record {
-            float: right;
-            width: 48%;/* 右半部分的宽度为 50% */
-            margin-top: 1%;
-            margin-bottom: 1%;
-            text-align: left;
-        }
-
-        .item_content .experience {
-            width: 90%;
-            margin: 15px auto 20px;
-            background: #f5f5f5;
-            -webkit-print-color-adjust: exact;
-            padding: 10px 20px;
-        }
-
-        .item_content .experience .experience-info{
-            overflow: hidden;/* 清除浮动后的高度问题 */
-            font-size: 11.25pt;
-        }
-
-        .item_content .experience .experience-info .left-experience{
-            float: left; /* 左浮动 */
-            width: 33.33%; /* 固定宽度 */
-            box-sizing: border-box; /* 盒模型以边框为界计算宽度 */
-            padding-right: 7.5pt; /* 右侧间距 */
-            text-align: left;
-        }
-
-        .item_content .experience .experience-info .middle-experience{
-            float: left; /* 左浮动 */
-            width: 33.33%; /* 固定宽度 */
-            box-sizing: border-box; /* 盒模型以边框为界计算宽度 */
-            padding-right: 7.5px; /* 右侧间距 */
-            text-align: left;
-        }
-
-        .item_content .experience .experience-info .right-experience{
-            float: left; /* 左浮动 */
-            width: 33.33%; /* 固定宽度 */
-            box-sizing: border-box; /* 盒模型以边框为界计算宽度 */
-            text-align: left;
-        }
-
-        .item_content .table_style {
-            border-collapse: collapse;
-            width: 100%;
-        }
-
-        .item_content .table_style td {
-            text-align: center;
-            height: 11.25pt;
-            padding: 3.75pt 7.5pt;
-            min-width: 97.5pt;
-            max-width: none;
-        }
-
-        .item_content .table_style thead td {
-            font-weight: 600;
-            background: #f3f3f3;
-            font-size: 11.25pt;
-        }
-
-        .item_content .table_style thead th {
-            font-weight: 600;
-            background: #f3f3f3;
-            font-size: 13pt;
-        }
-    </style>
-</head>
-<body style="text-align: center">
-<div>
-    <div>
-        <div class="scroll-show">
-            <div style="margin-right:3%;margin-left:5%;">
-                <div class="item_content">
-                    <div class="title">
-                        <div class="circle"><img src="https://egongban.oss-cn-shenzhen.aliyuncs.com/2023/05/29/b506e8108f4d9ee742370f4301e170a.png" style="width: 14pt; height: 14pt;"></div>
-                        <div class="title_text">个人信息</div>
-                        <div class="line"></div>
-                    </div>
-                    <div class="section">
-                        <div class="section_photo">
-                        </div>
-                        <div class="section_info">
-                            
-                            <div class="info-container">
-                             
-                            </div>
-                            <div class="divider"></div>
-                            <div class="info-container">
-                                
-                            </div>
-                            <div class="divider"></div>
-                            <div class="record-container">
-                               
-                            </div>
-                            <div class="divider"></div>
-                            <div class="info-container">
-                                
-                            </div>
-                        </div>
-                    </div>
-                    <div class="title">
-                        <div class="circle"><img src="https://egongban.oss-cn-shenzhen.aliyuncs.com/2023/05/29/b506e8108f4d9ee742370f4301e170a.png" style="width: 14pt; height: 14pt;"></div>
-                        <div class="title_text" id="experience">从业经历</div>
-                        <div class="line"></div>
-                    </div>
-                    <div class="experience">
-                        
-                    </div>
-                    <div class="title">
-                        <div class="circle"><img src="https://egongban.oss-cn-shenzhen.aliyuncs.com/2023/05/29/b506e8108f4d9ee742370f4301e170a.png" style="width: 14pt; height: 14pt;"></div>
-                        <div class="title_text" id="training">安全培训</div>
-                        <div class="line"></div>
-                    </div>
-                    <div style="width: 90%;margin: 15px auto;">
-                        
-                    </div>
-                    <div class="title">
-                        <div class="circle"><img src="https://egongban.oss-cn-shenzhen.aliyuncs.com/2023/05/29/b506e8108f4d9ee742370f4301e170a.png" style="width: 14pt; height: 14pt;"></div>
-                        <div class="title_text" id="record">奖惩记录</div>
-                        <div class="line"></div>
-                    </div>
-                    <div style="width: 90%;margin: 15px auto;">
-                       
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-</body>
-</html>

+ 22 - 14
healsphere-common/src/main/java/com/zdqz/common/config/ZdqzConfig.java

@@ -14,6 +14,8 @@ public class ZdqzConfig {
 
 	/** 上传路径 */
 	private static String profile;
+	
+	private static String templates;
 
 	/** 验证码类型 */
 	private static String captchaType;
@@ -24,35 +26,41 @@ public class ZdqzConfig {
 	private static String readFilePath;
 	
 
+	public static String getProfile() {
+		return profile;
+	}
+	public static String getTemplates() {
+		return templates;
+	}
 	public static String getReadFilePath() {
 		return readFilePath;
 	}
 
-	public static void setReadFilePath(String readFilePath) {
+	public static String getCaptchaType() {
+		return captchaType;
+	}
+	
+	public static String getInitPassword() {
+		return initPassword;
+	}
+	
+	public void setReadFilePath(String readFilePath) {
 		ZdqzConfig.readFilePath = readFilePath;
 	}
-
-	public static String getProfile() {
-		return profile;
+	
+	public void setTemplates(String templates) {
+		ZdqzConfig.templates = templates;
 	}
 
 	public void setProfile(String profile) {
 		ZdqzConfig.profile = profile;
 	}
 
-	public static String getCaptchaType() {
-		return captchaType;
-	}
-
 	public void setCaptchaType(String captchaType) {
 		ZdqzConfig.captchaType = captchaType;
 	}
-
-	public static String getInitPassword() {
-		return initPassword;
-	}
-
-	public static void setInitPassword(String initPassword) {
+	
+	public void setInitPassword(String initPassword) {
 		ZdqzConfig.initPassword = initPassword;
 	}
 

+ 0 - 5
healsphere-common/src/main/java/com/zdqz/common/constant/Constants.java

@@ -115,11 +115,6 @@ public class Constants
      */
     public static final String JWT_USERNAME = Claims.SUBJECT;
 
-    /**
-     * 用户头像
-     */
-    public static final String JWT_AVATAR = "avatar";
-
     /**
      * 创建时间
      */

+ 2 - 0
healsphere-common/src/main/java/com/zdqz/common/utils/DateUtils.java

@@ -23,6 +23,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
     public static String YYYY_MM = "yyyy-MM";
 
     public static String YYYY_MM_DD = "yyyy-MM-dd";
+    
+    public static String YYYY_MM_DD_HH = "yyyy-MM-dd HH";
 
     public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
 

+ 43 - 44
healsphere-framework/src/main/java/com/zdqz/framework/config/ResourcesConfig.java

@@ -1,6 +1,7 @@
 package com.zdqz.framework.config;
 
 import java.util.concurrent.TimeUnit;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -11,6 +12,7 @@ import org.springframework.web.filter.CorsFilter;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
 import com.zdqz.common.config.ZdqzConfig;
 import com.zdqz.common.constant.Constants;
 import com.zdqz.framework.interceptor.RepeatSubmitInterceptor;
@@ -21,52 +23,49 @@ import com.zdqz.framework.interceptor.RepeatSubmitInterceptor;
  * @author 攻心小虫
  */
 @Configuration
-public class ResourcesConfig implements WebMvcConfigurer
-{
-    @Autowired
-    private RepeatSubmitInterceptor repeatSubmitInterceptor;
+public class ResourcesConfig implements WebMvcConfigurer {
+	@Autowired
+	private RepeatSubmitInterceptor repeatSubmitInterceptor;
 
-    @Override
-    public void addResourceHandlers(ResourceHandlerRegistry registry)
-    {
-        /** 本地文件上传路径 */
-        registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**")
-                .addResourceLocations("file:" + ZdqzConfig.getProfile() + "/");
+	@Override
+	public void addResourceHandlers(ResourceHandlerRegistry registry) {
+		/** 本地文件上传路径 */
+		registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**").addResourceLocations("file:" + ZdqzConfig.getProfile() + "/");
+		
+		/** 本地文件上传路径 */
+		registry.addResourceHandler("/download/**").addResourceLocations("file:" + ZdqzConfig.getDownloadPath() + "/");
 
-        /** swagger配置 */
-        registry.addResourceHandler("/swagger-ui/**")
-                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
-                .setCacheControl(CacheControl.maxAge(5, TimeUnit.HOURS).cachePublic());
-    }
+		/** swagger配置 */
+		registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
+				.setCacheControl(CacheControl.maxAge(5, TimeUnit.HOURS).cachePublic());
+	}
 
-    /**
-     * 自定义拦截规则
-     */
-    @Override
-    public void addInterceptors(InterceptorRegistry registry)
-    {
-        registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**");
-    }
+	/**
+	 * 自定义拦截规则
+	 */
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+		registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**");
+	}
 
-    /**
-     * 跨域配置
-     */
-    @Bean
-    public CorsFilter corsFilter()
-    {
-        CorsConfiguration config = new CorsConfiguration();
-        // 设置访问源地址
-        config.addAllowedOriginPattern("*");
-        // 设置访问源请求头
-        config.addAllowedHeader("*");
-        // 设置访问源请求方法
-        config.addAllowedMethod("*");
-        // 有效期 1800秒
-        config.setMaxAge(1800L);
-        // 添加映射路径,拦截一切请求
-        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-        source.registerCorsConfiguration("/**", config);
-        // 返回新的CorsFilter
-        return new CorsFilter(source);
-    }
+	/**
+	 * 跨域配置
+	 */
+	@Bean
+	public CorsFilter corsFilter() {
+		CorsConfiguration config = new CorsConfiguration();
+		// 设置访问源地址
+		config.addAllowedOriginPattern("*");
+		// 设置访问源请求头
+		config.addAllowedHeader("*");
+		// 设置访问源请求方法
+		config.addAllowedMethod("*");
+		// 有效期 1800秒
+		config.setMaxAge(1800L);
+		// 添加映射路径,拦截一切请求
+		UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+		source.registerCorsConfiguration("/**", config);
+		// 返回新的CorsFilter
+		return new CorsFilter(source);
+	}
 }

+ 89 - 101
healsphere-framework/src/main/java/com/zdqz/framework/config/SecurityConfig.java

@@ -28,111 +28,99 @@ import com.zdqz.framework.security.handle.LogoutSuccessHandlerImpl;
  */
 @EnableMethodSecurity(prePostEnabled = true, securedEnabled = true)
 @Configuration
-public class SecurityConfig
-{
-    /**
-     * 自定义用户认证逻辑
-     */
-    @Autowired
-    private UserDetailsService userDetailsService;
-    
-    /**
-     * 认证失败处理类
-     */
-    @Autowired
-    private AuthenticationEntryPointImpl unauthorizedHandler;
+public class SecurityConfig {
+	/**
+	 * 自定义用户认证逻辑
+	 */
+	@Autowired
+	private UserDetailsService userDetailsService;
 
-    /**
-     * 退出处理类
-     */
-    @Autowired
-    private LogoutSuccessHandlerImpl logoutSuccessHandler;
+	/**
+	 * 认证失败处理类
+	 */
+	@Autowired
+	private AuthenticationEntryPointImpl unauthorizedHandler;
 
-    /**
-     * token认证过滤器
-     */
-    @Autowired
-    private JwtAuthenticationTokenFilter authenticationTokenFilter;
-    
-    /**
-     * 跨域过滤器
-     */
-    @Autowired
-    private CorsFilter corsFilter;
+	/**
+	 * 退出处理类
+	 */
+	@Autowired
+	private LogoutSuccessHandlerImpl logoutSuccessHandler;
 
-    /**
-     * 允许匿名访问的地址
-     */
-    @Autowired
-    private PermitAllUrlProperties permitAllUrl;
+	/**
+	 * token认证过滤器
+	 */
+	@Autowired
+	private JwtAuthenticationTokenFilter authenticationTokenFilter;
 
-    /**
-     * 身份验证实现
-     */
-    @Bean
-    public AuthenticationManager authenticationManager()
-    {
-        DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
-        daoAuthenticationProvider.setUserDetailsService(userDetailsService);
-        daoAuthenticationProvider.setPasswordEncoder(bCryptPasswordEncoder());
-        return new ProviderManager(daoAuthenticationProvider);
-    }
+	/**
+	 * 跨域过滤器
+	 */
+	@Autowired
+	private CorsFilter corsFilter;
 
-    /**
-     * anyRequest          |   匹配所有请求路径
-     * access              |   SpringEl表达式结果为true时可以访问
-     * anonymous           |   匿名可以访问
-     * denyAll             |   用户不能访问
-     * fullyAuthenticated  |   用户完全认证可以访问(非remember-me下自动登录)
-     * hasAnyAuthority     |   如果有参数,参数表示权限,则其中任何一个权限可以访问
-     * hasAnyRole          |   如果有参数,参数表示角色,则其中任何一个角色可以访问
-     * hasAuthority        |   如果有参数,参数表示权限,则其权限可以访问
-     * hasIpAddress        |   如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问
-     * permitAll           |   用户可以任意访问
-     * rememberMe          |   允许通过remember-me登录的用户访问
-     * authenticated       |   用户登录后可访问
-     */
-    @Bean
-    protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception
-    {
-        return httpSecurity
-            // CSRF禁用,因为不使用session
-            .csrf(csrf -> csrf.disable())
-            // 禁用HTTP响应标头
-            .headers((headersCustomizer) -> {
-                headersCustomizer.cacheControl(cache -> cache.disable()).frameOptions(options -> options.sameOrigin());
-            })
-            // 认证失败处理类
-            .exceptionHandling(exception -> exception.authenticationEntryPoint(unauthorizedHandler))
-            // 基于token,所以不需要session
-            .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
-            // 注解标记允许匿名访问的url
-            .authorizeHttpRequests((requests) -> {
-                permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
-                // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
-                    // 静态资源,可匿名访问
-                    .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
-                    .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
-                    // 除上面外的所有请求全部需要鉴权认证
-                    .anyRequest().authenticated();
-            })
-            // 添加Logout filter
-            .logout(logout -> logout.logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler))
-            // 添加JWT filter
-            .addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class)
-            // 添加CORS filter
-            .addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class)
-            .addFilterBefore(corsFilter, LogoutFilter.class)
-            .build();
-    }
+	/**
+	 * 允许匿名访问的地址
+	 */
+	@Autowired
+	private PermitAllUrlProperties permitAllUrl;
 
-    /**
-     * 强散列哈希加密实现
-     */
-    @Bean
-    public BCryptPasswordEncoder bCryptPasswordEncoder()
-    {
-        return new BCryptPasswordEncoder();
-    }
+	/**
+	 * 身份验证实现
+	 */
+	@Bean
+	public AuthenticationManager authenticationManager() {
+		DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
+		daoAuthenticationProvider.setUserDetailsService(userDetailsService);
+		daoAuthenticationProvider.setPasswordEncoder(bCryptPasswordEncoder());
+		return new ProviderManager(daoAuthenticationProvider);
+	}
+
+	/**
+	 * anyRequest | 匹配所有请求路径 access | SpringEl表达式结果为true时可以访问 anonymous | 匿名可以访问
+	 * denyAll | 用户不能访问 fullyAuthenticated | 用户完全认证可以访问(非remember-me下自动登录)
+	 * hasAnyAuthority | 如果有参数,参数表示权限,则其中任何一个权限可以访问 hasAnyRole |
+	 * 如果有参数,参数表示角色,则其中任何一个角色可以访问 hasAuthority | 如果有参数,参数表示权限,则其权限可以访问 hasIpAddress
+	 * | 如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问 permitAll | 用户可以任意访问 rememberMe |
+	 * 允许通过remember-me登录的用户访问 authenticated | 用户登录后可访问
+	 */
+	@Bean
+	protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
+		return httpSecurity
+				// CSRF禁用,因为不使用session
+				.csrf(csrf -> csrf.disable())
+				// 禁用HTTP响应标头
+				.headers((headersCustomizer) -> {
+					headersCustomizer.cacheControl(cache -> cache.disable()).frameOptions(options -> options.sameOrigin());
+				})
+				// 认证失败处理类
+				.exceptionHandling(exception -> exception.authenticationEntryPoint(unauthorizedHandler))
+				// 基于token,所以不需要session
+				.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
+				// 注解标记允许匿名访问的url
+				.authorizeHttpRequests((requests) -> {
+					permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
+					// 对于登录login 注册register 验证码captchaImage 允许匿名访问
+					requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
+							// 静态资源,可匿名访问
+							.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**", "/download/**").permitAll()
+							.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
+							// 除上面外的所有请求全部需要鉴权认证
+							.anyRequest().authenticated();
+				})
+				// 添加Logout filter
+				.logout(logout -> logout.logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler))
+				// 添加JWT filter
+				.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class)
+				// 添加CORS filter
+				.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class).addFilterBefore(corsFilter, LogoutFilter.class).build();
+	}
+
+	/**
+	 * 强散列哈希加密实现
+	 */
+	@Bean
+	public BCryptPasswordEncoder bCryptPasswordEncoder() {
+		return new BCryptPasswordEncoder();
+	}
 }