Browse Source

核酸一键对比

LIVE_YE 2 năm trước cách đây
mục cha
commit
3dea0f14c2
25 tập tin đã thay đổi với 1579 bổ sung160 xóa
  1. 102 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/AkmDataController.java
  2. 0 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/KeyPeopleInfoController.java
  3. 106 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/SysHesuanConfigurationController.java
  4. 2 4
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/UserInfoController.java
  5. 1 1
      ruoyi-admin/src/main/resources/application.yml
  6. 1 1
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
  7. 109 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/AkmData.java
  8. 45 13
      ruoyi-system/src/main/java/com/ruoyi/system/domain/KeyPeopleInfo.java
  9. 118 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/SysHesuanConfiguration.java
  10. 13 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/UserInfo.java
  11. 13 1
      ruoyi-system/src/main/java/com/ruoyi/system/domain/UserInfoOne.java
  12. 64 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/AkmDataMapper.java
  13. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysHesuanConfigurationMapper.java
  14. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IAkmDataService.java
  15. 63 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/ISysHesuanConfigurationService.java
  16. 119 131
      ruoyi-system/src/main/java/com/ruoyi/system/service/Task.java
  17. 93 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AkmDataServiceImpl.java
  18. 39 2
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/KeyPeopleInfoServiceImpl.java
  19. 140 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysHesuanConfigurationServiceImpl.java
  20. 238 5
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserInfoServiceImpl.java
  21. 85 0
      ruoyi-system/src/main/resources/mapper/system/AkmDataMapper.xml
  22. 9 1
      ruoyi-system/src/main/resources/mapper/system/KeyPeopleInfoMapper.xml
  23. 83 0
      ruoyi-system/src/main/resources/mapper/system/SysHesuanConfigurationMapper.xml
  24. 8 0
      ruoyi-system/src/main/resources/mapper/system/UserInfoMapper.xml
  25. 6 0
      ruoyi-system/src/main/resources/mapper/system/UserInfoOneMapper.xml

+ 102 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/AkmDataController.java

@@ -0,0 +1,102 @@
+package com.ruoyi.web.controller.info;
+
+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.AkmData;
+import com.ruoyi.system.service.IAkmDataService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 安康码扫码地点Controller
+ * 
+ * @author ruoyi
+ * @date 2022-10-10
+ */
+@RestController
+@RequestMapping("/system/data")
+public class AkmDataController extends BaseController
+{
+    @Autowired
+    private IAkmDataService akmDataService;
+
+    /**
+     * 查询安康码扫码地点列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:data:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(AkmData akmData)
+    {
+        startPage();
+        List<AkmData> list = akmDataService.selectAkmDataList(akmData);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出安康码扫码地点列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:data:export')")
+    @Log(title = "安康码扫码地点", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, AkmData akmData)
+    {
+        List<AkmData> list = akmDataService.selectAkmDataList(akmData);
+        ExcelUtil<AkmData> util = new ExcelUtil<AkmData>(AkmData.class);
+        util.exportExcel(response, list, "安康码扫码地点数据");
+    }
+
+    /**
+     * 获取安康码扫码地点详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:data:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(akmDataService.selectAkmDataById(id));
+    }
+
+    /**
+     * 新增安康码扫码地点
+     */
+    //@Log(title = "安康码扫码地点", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody AkmData akmData)
+    {
+        return toAjax(akmDataService.insertAkmData(akmData));
+    }
+
+    /**
+     * 修改安康码扫码地点
+     */
+    @Log(title = "安康码扫码地点", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody AkmData akmData)
+    {
+        return toAjax(akmDataService.updateAkmData(akmData));
+    }
+
+    /**
+     * 删除安康码扫码地点
+     */
+    @PreAuthorize("@ss.hasPermi('system:data:remove')")
+    @Log(title = "安康码扫码地点", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(akmDataService.deleteAkmDataByIds(ids));
+    }
+}

+ 0 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/KeyPeopleInfoController.java

@@ -47,7 +47,6 @@ public class KeyPeopleInfoController extends BaseController
     @GetMapping("/list")
     public TableDataInfo list(KeyPeopleInfo keyPeopleInfo)
     {
-        startPage();
         List<KeyPeopleInfo> list = keyPeopleInfoService.selectKeyPeopleInfoList(keyPeopleInfo);
         return getDataTable(list);
     }

+ 106 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/SysHesuanConfigurationController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.web.controller.info;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.core.domain.entity.SysUser;
+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.SysHesuanConfiguration;
+import com.ruoyi.system.service.ISysHesuanConfigurationService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 对比规则配置Controller
+ * 
+ * @author ruoyi
+ * @date 2022-10-10
+ */
+@RestController
+@RequestMapping("/system/configuration")
+public class SysHesuanConfigurationController extends BaseController
+{
+    @Autowired
+    private ISysHesuanConfigurationService sysHesuanConfigurationService;
+
+    /**
+     * 查询对比规则配置列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:configuration:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(SysHesuanConfiguration sysHesuanConfiguration)
+    {
+        List<SysHesuanConfiguration> list = sysHesuanConfigurationService.selectSysHesuanConfigurationList(sysHesuanConfiguration);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出对比规则配置列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:configuration:export')")
+    @Log(title = "对比规则配置", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysHesuanConfiguration sysHesuanConfiguration)
+    {
+        List<SysHesuanConfiguration> list = sysHesuanConfigurationService.selectSysHesuanConfigurationList(sysHesuanConfiguration);
+        ExcelUtil<SysHesuanConfiguration> util = new ExcelUtil<SysHesuanConfiguration>(SysHesuanConfiguration.class);
+        util.exportExcel(response, list, "对比规则配置数据");
+    }
+
+    /**
+     * 获取对比规则配置详细信息
+     */
+    //@PreAuthorize("@ss.hasPermi('system:configuration:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(sysHesuanConfigurationService.selectSysHesuanConfigurationById(id));
+    }
+
+    /**
+     * 新增对比规则配置
+     */
+    //@PreAuthorize("@ss.hasPermi('system:configuration:add')")
+    @Log(title = "对比规则配置", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody SysHesuanConfiguration sysHesuanConfiguration)
+    {
+        SysUser user = getLoginUser().getUser();
+        return toAjax(sysHesuanConfigurationService.insertSysHesuanConfiguration(sysHesuanConfiguration,user));
+    }
+
+    /**
+     * 修改对比规则配置
+     */
+    //@PreAuthorize("@ss.hasPermi('system:configuration:edit')")
+    @Log(title = "对比规则配置", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody SysHesuanConfiguration sysHesuanConfiguration)
+    {
+        return toAjax(sysHesuanConfigurationService.updateSysHesuanConfiguration(sysHesuanConfiguration));
+    }
+
+    /**
+     * 删除对比规则配置
+     */
+    //@PreAuthorize("@ss.hasPermi('system:configuration:remove')")
+    @Log(title = "对比规则配置", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(sysHesuanConfigurationService.deleteSysHesuanConfigurationByIds(ids));
+    }
+}

+ 2 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/UserInfoController.java

@@ -48,7 +48,6 @@ public class UserInfoController extends BaseController {
      */
     @GetMapping("/list")
     public TableDataInfo list(UserInfo userInfo) {
-        startPage();
         List<UserInfo> list = userInfoService.selectUserInfoList(userInfo);
         return getDataTable(list);
     }
@@ -58,7 +57,6 @@ public class UserInfoController extends BaseController {
      */
     @GetMapping("/oneDateList")
     public TableDataInfo oneDateList(UserInfoOne userInfoOne) throws Exception {
-        startPage();
         List<UserInfoOne> list = userInfoService.oneDateList(userInfoOne);
         return getDataTable(list);
     }
@@ -77,11 +75,11 @@ public class UserInfoController extends BaseController {
     @GetMapping("/date")
     public AjaxResult date(UserInfo userInfo) throws Exception {
 
-        if (StringUtils.isEmpty(userInfo.getStartTime()) || StringUtils.isEmpty(userInfo.getEndTime()) ||
+        /*if (StringUtils.isEmpty(userInfo.getStartTime()) || StringUtils.isEmpty(userInfo.getEndTime()) ||
                 StringUtils.isEmpty(userInfo.getDetectionNumber()) || StringUtils.isEmpty(userInfo.getJobStyle()) ||
                 StringUtils.isEmpty(userInfo.getFocusCrowdStyle())) {
             return AjaxResult.error("请将对比参数填写完整后查询(开始时间,结束时间,检测频次(次数),职业类别,重点人群分类)");
-        }
+        }*/
         SysUser user = getLoginUser().getUser();
         userInfoService.date(userInfo, user);
         return AjaxResult.success("正在处理中,请稍后刷新页面");

+ 1 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -81,6 +81,6 @@ xss:
   # 过滤开关
   enabled: true
   # 排除链接(多个用逗号分隔)
-  excludes: /system/notice,/system/merchants,/system/guide,/system/use,/system/welfare
+  excludes: /system/notice,/system/merchants,/system/guide,/system/use,/system/welfare,/system/data
   # 匹配链接
   urlPatterns: /system/*,/monitor/*,/tool/*

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

@@ -109,7 +109,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 // 过滤请求
                 .authorizeRequests()
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                .antMatchers("/login", "/register", "/captchaImage").anonymous()
+                .antMatchers("/login", "/register", "/captchaImage","/system/data").anonymous()
                 // 静态资源,可匿名访问
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()

+ 109 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/AkmData.java

@@ -0,0 +1,109 @@
+package com.ruoyi.system.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.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 安康码扫码地点对象 akm_data
+ * 
+ * @author ruoyi
+ * @date 2022-10-10
+ */
+public class AkmData extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 姓名 */
+    @Excel(name = "姓名")
+    private String name;
+
+    /** 身份证号码 */
+    @Excel(name = "身份证号码")
+    private String idCard;
+
+    /** 联系号码 */
+    @Excel(name = "联系号码")
+    private String phoneNum;
+
+    /** 扫码时间(采集时间) */
+    @Excel(name = "扫码时间(采集时间)", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private String collectTime;
+
+    /** 扫码地点(采集地点) */
+    @Excel(name = "扫码地点", readConverterExp = "采=集地点")
+    private String collectSite;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setName(String name) 
+    {
+        this.name = name;
+    }
+
+    public String getName() 
+    {
+        return name;
+    }
+    public void setIdCard(String idCard) 
+    {
+        this.idCard = idCard;
+    }
+
+    public String getIdCard() 
+    {
+        return idCard;
+    }
+    public void setPhoneNum(String phoneNum) 
+    {
+        this.phoneNum = phoneNum;
+    }
+
+    public String getPhoneNum() 
+    {
+        return phoneNum;
+    }
+    public void setCollectTime(String collectTime)
+    {
+        this.collectTime = collectTime;
+    }
+
+    public String getCollectTime()
+    {
+        return collectTime;
+    }
+    public void setCollectSite(String collectSite) 
+    {
+        this.collectSite = collectSite;
+    }
+
+    public String getCollectSite() 
+    {
+        return collectSite;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("name", getName())
+            .append("idCard", getIdCard())
+            .append("phoneNum", getPhoneNum())
+            .append("collectTime", getCollectTime())
+            .append("collectSite", getCollectSite())
+            .toString();
+    }
+}

+ 45 - 13
ruoyi-system/src/main/java/com/ruoyi/system/domain/KeyPeopleInfo.java

@@ -5,6 +5,8 @@ import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 
+import java.util.List;
+
 /**
  * 重点人群信息对象 key_people_info
  * 
@@ -30,15 +32,27 @@ public class KeyPeopleInfo extends BaseEntity
     @Excel(name = "联系号码")
     private String phoneNum;
 
+    /** 职业类别 */
+    private String jobStyle;
+
+    /** 重点人群分类 */
+    private String focusCrowdStyle;
+
     /** 部门id */
     private String deptId;
 
+    private List<String> deptIdList;
+
     public void setId(Long id) 
     {
         this.id = id;
     }
 
-    public Long getId() 
+    public void setDeptIdList(List<String> deptIdList) {
+        this.deptIdList = deptIdList;
+    }
+
+    public Long getId()
     {
         return id;
     }
@@ -79,19 +93,37 @@ public class KeyPeopleInfo extends BaseEntity
         return deptId;
     }
 
+    public List<String> getDeptIdList() {
+        return deptIdList;
+    }
+
+    public String getJobStyle() {
+        return jobStyle;
+    }
+
+    public String getFocusCrowdStyle() {
+        return focusCrowdStyle;
+    }
+
+    public void setJobStyle(String jobStyle) {
+        this.jobStyle = jobStyle;
+    }
+
+    public void setFocusCrowdStyle(String focusCrowdStyle) {
+        this.focusCrowdStyle = focusCrowdStyle;
+    }
+
     @Override
     public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("name", getName())
-            .append("idCard", getIdCard())
-            .append("phoneNum", getPhoneNum())
-            .append("deptId", getDeptId())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("remark", getRemark())
-            .toString();
+        return "KeyPeopleInfo{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", idCard='" + idCard + '\'' +
+                ", phoneNum='" + phoneNum + '\'' +
+                ", jobStyle='" + jobStyle + '\'' +
+                ", focusCrowdStyle='" + focusCrowdStyle + '\'' +
+                ", deptId='" + deptId + '\'' +
+                ", deptIdList=" + deptIdList +
+                '}';
     }
 }

+ 118 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysHesuanConfiguration.java

@@ -0,0 +1,118 @@
+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;
+
+import java.util.List;
+
+/**
+ * 对比规则配置对象 sys_hesuan_configuration
+ * 
+ * @author ruoyi
+ * @date 2022-10-10
+ */
+public class SysHesuanConfiguration extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 部门id */
+    private String deptId;
+
+    /** 职业类别 */
+    @Excel(name = "职业类别")
+    private String jobStyle;
+
+    /** 重点人群分类 */
+    @Excel(name = "重点人群分类")
+    private String focusCrowdStyle;
+
+    /** 检测频次(次数) */
+    @Excel(name = "检测频次", readConverterExp = "次=数")
+    private String detectionNumber;
+
+    /** 检测频次(时间间隔,天) */
+    @Excel(name = "检测频次", readConverterExp = "时=间间隔,天")
+    private String detectionScope;
+
+    private List<String> deptIdList;
+
+    public List<String> getDeptIdList() {
+        return deptIdList;
+    }
+
+    public void setDeptIdList(List<String> deptIdList) {
+        this.deptIdList = deptIdList;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setDeptId(String deptId) 
+    {
+        this.deptId = deptId;
+    }
+
+    public String getDeptId() 
+    {
+        return deptId;
+    }
+    public void setJobStyle(String jobStyle) 
+    {
+        this.jobStyle = jobStyle;
+    }
+
+    public String getJobStyle() 
+    {
+        return jobStyle;
+    }
+    public void setFocusCrowdStyle(String focusCrowdStyle) 
+    {
+        this.focusCrowdStyle = focusCrowdStyle;
+    }
+
+    public String getFocusCrowdStyle() 
+    {
+        return focusCrowdStyle;
+    }
+    public void setDetectionNumber(String detectionNumber) 
+    {
+        this.detectionNumber = detectionNumber;
+    }
+
+    public String getDetectionNumber() 
+    {
+        return detectionNumber;
+    }
+    public void setDetectionScope(String detectionScope) 
+    {
+        this.detectionScope = detectionScope;
+    }
+
+    public String getDetectionScope() 
+    {
+        return detectionScope;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("deptId", getDeptId())
+            .append("jobStyle", getJobStyle())
+            .append("focusCrowdStyle", getFocusCrowdStyle())
+            .append("detectionNumber", getDetectionNumber())
+            .append("detectionScope", getDetectionScope())
+            .toString();
+    }
+}

+ 13 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/UserInfo.java

@@ -5,6 +5,8 @@ import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 
+import java.util.List;
+
 /**
  * 导入人员信息对象 user_info
  * 
@@ -92,6 +94,17 @@ public class UserInfo extends BaseEntity
     @Excel(name = "比对结束时间")
     private String endTime;
 
+
+    private List<String> deptIdList;
+
+    public List<String> getDeptIdList() {
+        return deptIdList;
+    }
+
+    public void setDeptIdList(List<String> deptIdList) {
+        this.deptIdList = deptIdList;
+    }
+
     public String getNucleicResults() {
         return nucleicResults;
     }

+ 13 - 1
ruoyi-system/src/main/java/com/ruoyi/system/domain/UserInfoOne.java

@@ -5,6 +5,8 @@ import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 
+import java.util.List;
+
 /**
  * 导入人员信息对象 user_info_one
  * 
@@ -98,7 +100,17 @@ public class UserInfoOne extends BaseEntity
     @Excel(name = "比对结果")
     private String detectionResult;
 
-    public void setId(Long id) 
+    private List<String> deptIdList;
+
+    public List<String> getDeptIdList() {
+        return deptIdList;
+    }
+
+    public void setDeptIdList(List<String> deptIdList) {
+        this.deptIdList = deptIdList;
+    }
+
+    public void setId(Long id)
     {
         this.id = id;
     }

+ 64 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/AkmDataMapper.java

@@ -0,0 +1,64 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.AkmData;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 安康码扫码地点Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2022-10-10
+ */
+public interface AkmDataMapper 
+{
+    /**
+     * 查询安康码扫码地点
+     * 
+     * @param id 安康码扫码地点主键
+     * @return 安康码扫码地点
+     */
+    public AkmData selectAkmDataById(Long id);
+
+    /**
+     * 查询安康码扫码地点列表
+     * 
+     * @param akmData 安康码扫码地点
+     * @return 安康码扫码地点集合
+     */
+    public List<AkmData> selectAkmDataList(AkmData akmData);
+
+    /**
+     * 新增安康码扫码地点
+     * 
+     * @param akmData 安康码扫码地点
+     * @return 结果
+     */
+    public int insertAkmData(AkmData akmData);
+
+    /**
+     * 修改安康码扫码地点
+     * 
+     * @param akmData 安康码扫码地点
+     * @return 结果
+     */
+    public int updateAkmData(AkmData akmData);
+
+    /**
+     * 删除安康码扫码地点
+     * 
+     * @param id 安康码扫码地点主键
+     * @return 结果
+     */
+    public int deleteAkmDataById(Long id);
+
+    /**
+     * 批量删除安康码扫码地点
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteAkmDataByIds(Long[] ids);
+
+    List<AkmData> selectAkmDataListByIdList(@Param("startTime") String startTime, @Param("endTime")String endTime, @Param("idCardList")List<String> idCardList);
+}

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

@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.SysHesuanConfiguration;
+
+/**
+ * 对比规则配置Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2022-10-10
+ */
+public interface SysHesuanConfigurationMapper 
+{
+    /**
+     * 查询对比规则配置
+     * 
+     * @param id 对比规则配置主键
+     * @return 对比规则配置
+     */
+    public SysHesuanConfiguration selectSysHesuanConfigurationById(Long id);
+
+    /**
+     * 查询对比规则配置列表
+     * 
+     * @param sysHesuanConfiguration 对比规则配置
+     * @return 对比规则配置集合
+     */
+    public List<SysHesuanConfiguration> selectSysHesuanConfigurationList(SysHesuanConfiguration sysHesuanConfiguration);
+
+    /**
+     * 新增对比规则配置
+     * 
+     * @param sysHesuanConfiguration 对比规则配置
+     * @return 结果
+     */
+    public int insertSysHesuanConfiguration(SysHesuanConfiguration sysHesuanConfiguration);
+
+    /**
+     * 修改对比规则配置
+     * 
+     * @param sysHesuanConfiguration 对比规则配置
+     * @return 结果
+     */
+    public int updateSysHesuanConfiguration(SysHesuanConfiguration sysHesuanConfiguration);
+
+    /**
+     * 删除对比规则配置
+     * 
+     * @param id 对比规则配置主键
+     * @return 结果
+     */
+    public int deleteSysHesuanConfigurationById(Long id);
+
+    /**
+     * 批量删除对比规则配置
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteSysHesuanConfigurationByIds(Long[] ids);
+}

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

@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.AkmData;
+
+/**
+ * 安康码扫码地点Service接口
+ * 
+ * @author ruoyi
+ * @date 2022-10-10
+ */
+public interface IAkmDataService 
+{
+    /**
+     * 查询安康码扫码地点
+     * 
+     * @param id 安康码扫码地点主键
+     * @return 安康码扫码地点
+     */
+    public AkmData selectAkmDataById(Long id);
+
+    /**
+     * 查询安康码扫码地点列表
+     * 
+     * @param akmData 安康码扫码地点
+     * @return 安康码扫码地点集合
+     */
+    public List<AkmData> selectAkmDataList(AkmData akmData);
+
+    /**
+     * 新增安康码扫码地点
+     * 
+     * @param akmData 安康码扫码地点
+     * @return 结果
+     */
+    public int insertAkmData(AkmData akmData);
+
+    /**
+     * 修改安康码扫码地点
+     * 
+     * @param akmData 安康码扫码地点
+     * @return 结果
+     */
+    public int updateAkmData(AkmData akmData);
+
+    /**
+     * 批量删除安康码扫码地点
+     * 
+     * @param ids 需要删除的安康码扫码地点主键集合
+     * @return 结果
+     */
+    public int deleteAkmDataByIds(Long[] ids);
+
+    /**
+     * 删除安康码扫码地点信息
+     * 
+     * @param id 安康码扫码地点主键
+     * @return 结果
+     */
+    public int deleteAkmDataById(Long id);
+}

+ 63 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysHesuanConfigurationService.java

@@ -0,0 +1,63 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.system.domain.SysHesuanConfiguration;
+
+/**
+ * 对比规则配置Service接口
+ * 
+ * @author ruoyi
+ * @date 2022-10-10
+ */
+public interface ISysHesuanConfigurationService 
+{
+    /**
+     * 查询对比规则配置
+     * 
+     * @param id 对比规则配置主键
+     * @return 对比规则配置
+     */
+    public SysHesuanConfiguration selectSysHesuanConfigurationById(Long id);
+
+    /**
+     * 查询对比规则配置列表
+     * 
+     * @param sysHesuanConfiguration 对比规则配置
+     * @return 对比规则配置集合
+     */
+    public List<SysHesuanConfiguration> selectSysHesuanConfigurationList(SysHesuanConfiguration sysHesuanConfiguration);
+
+    /**
+     * 新增对比规则配置
+     * 
+     * @param sysHesuanConfiguration 对比规则配置
+     * @return 结果
+     */
+    public int insertSysHesuanConfiguration(SysHesuanConfiguration sysHesuanConfiguration, SysUser user);
+
+    /**
+     * 修改对比规则配置
+     * 
+     * @param sysHesuanConfiguration 对比规则配置
+     * @return 结果
+     */
+    public int updateSysHesuanConfiguration(SysHesuanConfiguration sysHesuanConfiguration);
+
+    /**
+     * 批量删除对比规则配置
+     * 
+     * @param ids 需要删除的对比规则配置主键集合
+     * @return 结果
+     */
+    public int deleteSysHesuanConfigurationByIds(Long[] ids);
+
+    /**
+     * 删除对比规则配置信息
+     * 
+     * @param id 对比规则配置主键
+     * @return 结果
+     */
+    public int deleteSysHesuanConfigurationById(Long id);
+}

+ 119 - 131
ruoyi-system/src/main/java/com/ruoyi/system/service/Task.java

@@ -1,15 +1,14 @@
 package com.ruoyi.system.service;
 
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.extra.mail.MailUtil;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.domain.KeyPeopleInfo;
-import com.ruoyi.system.domain.OdsQssHsjcxx;
-import com.ruoyi.system.domain.UserInfo;
-import com.ruoyi.system.domain.UserNucleicTime;
+import com.ruoyi.system.domain.*;
+import com.ruoyi.system.mapper.AkmDataMapper;
 import com.ruoyi.system.mapper.KeyPeopleInfoMapper;
 import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.system.utils.ExcelUtils;
@@ -33,11 +32,13 @@ public class Task {
     private SysDeptMapper deptMapper;
     @Resource
     private KeyPeopleInfoMapper keyPeopleInfoMapper;
+    @Resource
+    private AkmDataMapper akmDataMapper;
 
     /***
      * 邮件发送(定时比对数据后发送邮件)
      */
-    @Scheduled(cron = "0 0 * * * ? ")
+    //@Scheduled(cron = "0 0/30 * * * ? ")
     public void thirdNucleicAcid() {
         try {
             SysDept dept = new SysDept();
@@ -55,8 +56,8 @@ public class Task {
             //获取当前时间
             Date data = DateUtils.getNowDate();
             String endTime = DateUtils.formatString(data);
-            //往前推1个小时
-            String startTime = DateUtils.plusSeconds(endTime, -60);
+            //往前推个小时
+            String startTime = DateUtils.plusSeconds(endTime, -30);
 
             //SysUser user = SecurityUtils.getLoginUser().getUser();
             //UserInfo userInfo = new UserInfo();
@@ -70,135 +71,62 @@ public class Task {
             List<String> idCardList = keyPeopleInfoList.stream().map(KeyPeopleInfo::getIdCard).collect(Collectors.toList());
             //从第三方数据库查询人员核酸计录
             List<OdsQssHsjcxx> OdsQssHsjcxxList = qdsQssHsjcxxService.thirdNucleicAcid(startTime, endTime, idCardList);
-            if(OdsQssHsjcxxList == null || OdsQssHsjcxxList.size() <= 0){
+            //查询安康码采集地点信息
+            List<AkmData> akmDataList = akmDataMapper.selectAkmDataListByIdList(startTime, endTime, idCardList);
+            if((OdsQssHsjcxxList == null || OdsQssHsjcxxList.size() <= 0) && (akmDataList == null || akmDataList.size() <= 0)){
                 return;
             }
-            /*Map<String, List<OdsQssHsjcxx>> OdsQssHsjcxxMapSorted = new HashMap<>();
-            if (OdsQssHsjcxxList != null && OdsQssHsjcxxList.size() > 0) {
-                OdsQssHsjcxxMapSorted = OdsQssHsjcxxList.stream().sorted(Comparator.comparing(OdsQssHsjcxx::getCjsj).reversed()).collect(Collectors.groupingBy(OdsQssHsjcxx::getSfzhm));
-            }
 
 
-            int index = 0;
-            int count = 0;
-            List<UserInfo> userList = new ArrayList<>();
-
-            for (KeyPeopleInfo peopleInfo : keyPeopleInfoList) {
-                UserInfo userInfo = new UserInfo();
-                userInfo.setDeptId(depts.get(0).getDeptId().toString());
-                userInfo.setPhoneNum(peopleInfo.getPhoneNum());
-                userInfo.setName(peopleInfo.getName());
-                userInfo.setIdCard(peopleInfo.getIdCard());
-
-                //采集地点
-                StringBuilder collectPlace = new StringBuilder();
-                //核酸采集时间
-                StringBuilder nucleicCollectTime = new StringBuilder();
-                //核酸结果时间
-                StringBuilder nucleicResultsTime = new StringBuilder();
-                //核酸结果
-                StringBuilder nucleicResults = new StringBuilder();
-
-
-                userInfo.setJobStyle("重点人群");
-                userInfo.setFocusCrowdStyle("重点人群");
-                userInfo.setDetectionFrequency(detectionNumber + "/" + detectionScope);
-                userInfo.setDetectionNumber(detectionNumber);
-                userInfo.setDetectionScope(detectionScope);
-                userInfo.setStartTime(startTime);
-                userInfo.setEndTime(endTime);
-                //判断结果是否合格,默认合格
-                Boolean bl = true;
-
-                index = 0;
-                count = 0;
-                if (OdsQssHsjcxxMapSorted.size() > 0) {
-                    //身份证号码
-                    String idCard = userInfo.getIdCard();
-                    List<OdsQssHsjcxx> odsQssHsjcxxes = OdsQssHsjcxxMapSorted.get(idCard);
-                    if (odsQssHsjcxxes != null && odsQssHsjcxxes.size() > 0) {
-                        //String time = null;
-
-                        for (OdsQssHsjcxx odsQssHsjcxx : odsQssHsjcxxes) {
-
-                            if (StringUtils.isNotEmpty(collectPlace.toString())) {
-                                collectPlace.append("<br>");
-                            }
-                            collectPlace.append(odsQssHsjcxx.getJcdd());
-
-                            if (StringUtils.isNotEmpty(nucleicCollectTime.toString())) {
-                                nucleicCollectTime.append("<br>");
-                            }
-                            nucleicCollectTime.append(odsQssHsjcxx.getCjsj());
-
-                            if (StringUtils.isNotEmpty(nucleicResultsTime.toString())) {
-                                nucleicResultsTime.append("<br>");
-                            }
-                            nucleicResultsTime.append(odsQssHsjcxx.getJgcjss());
-
-                            if (StringUtils.isNotEmpty(nucleicResults.toString())) {
-                                nucleicResults.append("<br>");
-                            }
-                            if(StringUtils.isEmpty(odsQssHsjcxx.getJcjg())){
-                                nucleicResults.append(odsQssHsjcxx.getJcjg());
-                            }else if("0".equals(odsQssHsjcxx.getJcjg()) || "negative".equals(odsQssHsjcxx.getJcjg())){
-                                nucleicResults.append("阴性");
-                            }else if("1".equals(odsQssHsjcxx.getJcjg()) || "positive".equals(odsQssHsjcxx.getJcjg())){
-                                nucleicResults.append("阳性");
-                            }else{
-                                nucleicResults.append(odsQssHsjcxx.getJcjg());
-                            }
-
-                        }
-                        index = odsQssHsjcxxes.size();
-                    }
+            //List<Map<String, Object>> mapList = new ArrayList<>();
+            StringBuilder sb = new StringBuilder();
+            sb.append("时间:"+startTime+"--"+endTime);
+            StringBuilder sb1 = new StringBuilder();
+            sb1.append("时间:"+startTime+"--"+endTime);
 
 
-                }
-                if (index < Integer.parseInt(detectionNumber)) {
-                    bl = false;
-                }
-                userInfo.setCollectPlace(collectPlace.toString());
-                userInfo.setNucleicCollectTime(nucleicCollectTime.toString());
-                userInfo.setNucleicResultsTime(nucleicResultsTime.toString());
-                userInfo.setNucleicResults(nucleicResults.toString());
-                userInfo.setDetectionProgress(index + "/" + detectionNumber);
-
-                if (bl) {
-                    userInfo.setDetectionResult("正常");
-                } else {
-                    userInfo.setDetectionResult("异常");
-                }
+            boolean b = false;
+            boolean b1 = false;
+            if(OdsQssHsjcxxList != null && OdsQssHsjcxxList.size() > 0){
 
-                userList.add(userInfo);
-            }*/
+                sb.append("<br>").append("核酸采集点数据:");
+                sb1.append("<br>").append("核酸采集点数据:");
 
-            /*if (OdsQssHsjcxxList != null && OdsQssHsjcxxList.size() > 0) {
                 for (OdsQssHsjcxx odsQssHsjcxx : OdsQssHsjcxxList) {
-                    for (UserInfo userInfo : userList) {
-                        if (userInfo.getIdCard().equals(odsQssHsjcxx.getSfzhm())) {
-                            UserNucleicTime userNucleicTime = new UserNucleicTime();
-                            userNucleicTime.setInfoId(userInfo.getId());
-                            userNucleicTime.setIdCard(odsQssHsjcxx.getSfzhm());
-                            userNucleicTime.setCollectPlace(odsQssHsjcxx.getJcdd());
-                            userNucleicTime.setNucleicCollectTime(odsQssHsjcxx.getCjsj());
-                            userNucleicTime.setNucleicResultsTime(odsQssHsjcxx.getJgcjss());
-                            userNucleicTime.setJobStyle(jobStyle);
-                            userNucleicTime.setFocusCrowdStyle(focusCrowdStyle);
-                            userNucleicTime.setName(userInfo.getName());
-                            userNucleicTime.setPhoneNum(userInfo.getPhoneNum());
-                            userNucleicTime.setDeptId(user.getDeptId().toString());
-                            UserNucleicTimeList.add(userNucleicTime);
-                            userNucleicTime.setDateSource("批量导入");
+
+                    if(odsQssHsjcxx.getSfzhm().substring(0,2).equals("65")){
+                        if(odsQssHsjcxx.getXm().length()==2){
+                            sb.append("<br>").append(odsQssHsjcxx.getXm()).append("&nbsp;&nbsp;&nbsp;---").append(odsQssHsjcxx.getSfzhm()).append("---");
+                        }else{
+                            sb.append("<br>").append(odsQssHsjcxx.getXm()).append("---").append(odsQssHsjcxx.getSfzhm()).append("---");
+                        }
+                        if(StringUtils.isNotEmpty(odsQssHsjcxx.getSjhm())){
+                            sb.append(odsQssHsjcxx.getSjhm()).append("---").append(odsQssHsjcxx.getCjsj());
+                            sb.append("---").append(odsQssHsjcxx.getJcdd());
+                        }else{
+                            sb.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
+                            sb.append("---").append(odsQssHsjcxx.getCjsj()).append("---").append(odsQssHsjcxx.getJcdd());
                         }
-                    }
-                }
-            }*/
 
-            List<Map<String, Object>> mapList = new ArrayList<>();
+                        b = true;
+                    }else {
+                        if(odsQssHsjcxx.getXm().length()==2){
+                            sb1.append("<br>").append(odsQssHsjcxx.getXm()).append("&nbsp;&nbsp;&nbsp;---").append(odsQssHsjcxx.getSfzhm()).append("---");
+                        }else{
+                            sb1.append("<br>").append(odsQssHsjcxx.getXm()).append("---").append(odsQssHsjcxx.getSfzhm()).append("---");
+                        }
+
+                        if(StringUtils.isNotEmpty(odsQssHsjcxx.getSjhm())){
+                            sb1.append(odsQssHsjcxx.getSjhm()).append("---").append(odsQssHsjcxx.getCjsj());
+                            sb1.append("---").append(odsQssHsjcxx.getJcdd());
+                        }else{
+                            sb1.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
+                            sb1.append("---").append(odsQssHsjcxx.getCjsj()).append("---").append(odsQssHsjcxx.getJcdd());
+                        }
+                        b1 = true;
+                    }
 
-            for (OdsQssHsjcxx odsQssHsjcxx : OdsQssHsjcxxList) {
-                Map<String, Object> map = new HashMap<>();
+                /*Map<String, Object> map = new HashMap<>();
                 map.put("姓名", odsQssHsjcxx.getXm());
                 map.put("身份证号码", odsQssHsjcxx.getSfzhm());
                 map.put("联系号码", odsQssHsjcxx.getSjhm());
@@ -215,18 +143,78 @@ public class Task {
                 map.put("采集结果", "");
                 map.put("比对开始时间", startTime);
                 map.put("比对结束时间", endTime);
-                mapList.add(map);
+                mapList.add(map);*/
+                }
             }
 
+            if(akmDataList != null || akmDataList.size() > 0){
+                sb.append("<br>").append("安康码扫码地点数据:");
+                sb1.append("<br>").append("安康码扫码地点数据:");
 
-            String path = ExcelUtils.getInstance().createExcel(mapList, "核酸对比数据", "对比数据");
-            MailUtil.send("qsxzhb@126.com", "重点人群定时对比数据", "时间:"+startTime+"--"+endTime, true,
-                    FileUtil.file(path));
-            MailUtil.send("731020@qq.com", "重点人群定时对比数据", "时间:"+startTime+"--"+endTime, true,
+                for (AkmData akmData : akmDataList) {
+
+                    if(akmData.getIdCard().substring(0,2).equals("65")){
+                        if(akmData.getName().length()==2){
+                            sb.append("<br>").append(akmData.getName()).append("&nbsp;&nbsp;&nbsp;---").append(akmData.getIdCard()).append("---");
+                        }else{
+                            sb.append("<br>").append(akmData.getName()).append("---").append(akmData.getIdCard()).append("---");
+                        }
+                        if(StringUtils.isNotEmpty(akmData.getPhoneNum())){
+                            sb.append(akmData.getPhoneNum()).append("---").append(akmData.getCollectTime());
+                            sb.append("---").append(akmData.getCollectSite());
+                        }else{
+                            sb.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
+                            sb.append("---").append(akmData.getCollectTime()).append("---").append(akmData.getCollectSite());
+                        }
+
+                        b = true;
+                    }else {
+                        if(akmData.getName().length()==2){
+                            sb1.append("<br>").append(akmData.getName()).append("&nbsp;&nbsp;&nbsp;---").append(akmData.getIdCard()).append("---");
+                        }else{
+                            sb1.append("<br>").append(akmData.getName()).append("---").append(akmData.getIdCard()).append("---");
+                        }
+
+                        if(StringUtils.isNotEmpty(akmData.getPhoneNum())){
+                            sb1.append(akmData.getPhoneNum()).append("---").append(akmData.getCollectTime());
+                            sb1.append("---").append(akmData.getCollectSite());
+                        }else{
+                            sb1.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
+                            sb1.append("---").append(akmData.getCollectTime()).append("---").append(akmData.getCollectSite());
+                        }
+                        b1 = true;
+                    }
+                }
+            }
+            
+
+            if(b){
+                ArrayList<String> tos = CollUtil.newArrayList(
+                        "3555393474@qq.com",
+                        "731020@qq.com");
+                ArrayList<String> tos1 = CollUtil.newArrayList(
+                        "1223814488@qq.com",
+                        "15156696045@139.com");
+                MailUtil.send(tos, "会员积分实时变动通知", sb.toString(), true);
+            }
+            if(b1){
+                ArrayList<String> tos = CollUtil.newArrayList(
+                        "qsxzhb@126.com",
+                        "731020@qq.com");
+                ArrayList<String> tos1 = CollUtil.newArrayList(
+                        "1434899932@qq.com",
+                        "1434745622@qq.com");
+                MailUtil.send(tos, "会员积分实时变动通知", sb1.toString(), true);
+            }
+
+            //String path = ExcelUtils.getInstance().createExcel(mapList, "核酸对比数据", "对比数据");
+            /*MailUtil.send("qsxzhb@126.com", "会员积分实时变动通知", "时间:"+startTime+"--"+endTime, true,
                     FileUtil.file(path));
+            MailUtil.send("731020@qq.com", "会员积分实时变动通知", "时间:"+startTime+"--"+endTime, true,
+                    FileUtil.file(path));*/
             //删除系统文件
-            File file = new File(path);
-            file.delete();
+            //File file = new File(path);
+            //file.delete();
 
         } catch (Exception e) {
             e.printStackTrace();

+ 93 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AkmDataServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.AkmDataMapper;
+import com.ruoyi.system.domain.AkmData;
+import com.ruoyi.system.service.IAkmDataService;
+
+/**
+ * 安康码扫码地点Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2022-10-10
+ */
+@Service
+public class AkmDataServiceImpl implements IAkmDataService 
+{
+    @Autowired
+    private AkmDataMapper akmDataMapper;
+
+    /**
+     * 查询安康码扫码地点
+     * 
+     * @param id 安康码扫码地点主键
+     * @return 安康码扫码地点
+     */
+    @Override
+    public AkmData selectAkmDataById(Long id)
+    {
+        return akmDataMapper.selectAkmDataById(id);
+    }
+
+    /**
+     * 查询安康码扫码地点列表
+     * 
+     * @param akmData 安康码扫码地点
+     * @return 安康码扫码地点
+     */
+    @Override
+    public List<AkmData> selectAkmDataList(AkmData akmData)
+    {
+        return akmDataMapper.selectAkmDataList(akmData);
+    }
+
+    /**
+     * 新增安康码扫码地点
+     * 
+     * @param akmData 安康码扫码地点
+     * @return 结果
+     */
+    @Override
+    public int insertAkmData(AkmData akmData)
+    {
+        return akmDataMapper.insertAkmData(akmData);
+    }
+
+    /**
+     * 修改安康码扫码地点
+     * 
+     * @param akmData 安康码扫码地点
+     * @return 结果
+     */
+    @Override
+    public int updateAkmData(AkmData akmData)
+    {
+        return akmDataMapper.updateAkmData(akmData);
+    }
+
+    /**
+     * 批量删除安康码扫码地点
+     * 
+     * @param ids 需要删除的安康码扫码地点主键
+     * @return 结果
+     */
+    @Override
+    public int deleteAkmDataByIds(Long[] ids)
+    {
+        return akmDataMapper.deleteAkmDataByIds(ids);
+    }
+
+    /**
+     * 删除安康码扫码地点信息
+     * 
+     * @param id 安康码扫码地点主键
+     * @return 结果
+     */
+    @Override
+    public int deleteAkmDataById(Long id)
+    {
+        return akmDataMapper.deleteAkmDataById(id);
+    }
+}

+ 39 - 2
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/KeyPeopleInfoServiceImpl.java

@@ -1,12 +1,19 @@
 package com.ruoyi.system.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
 
+import com.github.pagehelper.PageHelper;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.page.PageDomain;
+import com.ruoyi.common.core.page.TableSupport;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.sql.SqlUtil;
+import com.ruoyi.system.mapper.SysDeptMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -15,6 +22,7 @@ import com.ruoyi.system.domain.KeyPeopleInfo;
 import com.ruoyi.system.service.IKeyPeopleInfoService;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import javax.management.relation.Role;
 
 /**
@@ -28,6 +36,22 @@ public class KeyPeopleInfoServiceImpl implements IKeyPeopleInfoService
 {
     @Autowired
     private KeyPeopleInfoMapper keyPeopleInfoMapper;
+    @Resource
+    private SysDeptMapper deptMapper;
+
+
+    /**
+     * 设置请求分页数据
+     */
+    public static void startPage()
+    {
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+        String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
+        Boolean reasonable = pageDomain.getReasonable();
+        PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
+    }
 
     /**
      * 查询重点人群信息
@@ -54,13 +78,26 @@ public class KeyPeopleInfoServiceImpl implements IKeyPeopleInfoService
         SysUser user = SecurityUtils.getLoginUser().getUser();
         List<SysRole> roles = user.getRoles();
         String deptId = user.getDeptId().toString();
+        List<String> listDeptId = new ArrayList<>();
+        listDeptId.add(deptId);
+        //判断账号下面所有子部门
+        List<SysDept> depts = deptMapper.selectChildrenDeptById(Long.valueOf(deptId));
+        if(depts != null && depts.size()>0){
+            for (SysDept dept : depts) {
+                listDeptId.add(String.valueOf(dept.getDeptId()));
+            }
+        }
+
+
         for (SysRole role : roles) {
             if("超级管理员".equals(role.getRoleName())){
-                deptId = "";
+                listDeptId = null;
                 break;
             }
         }
-        keyPeopleInfo.setDeptId(deptId);
+        //keyPeopleInfo.setDeptId(deptId);
+        keyPeopleInfo.setDeptIdList(listDeptId);
+        startPage();
         return keyPeopleInfoMapper.selectKeyPeopleInfoList(keyPeopleInfo);
     }
 

+ 140 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysHesuanConfigurationServiceImpl.java

@@ -0,0 +1,140 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.github.pagehelper.PageHelper;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysRole;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.page.PageDomain;
+import com.ruoyi.common.core.page.TableSupport;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.sql.SqlUtil;
+import com.ruoyi.system.mapper.SysDeptMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.SysHesuanConfigurationMapper;
+import com.ruoyi.system.domain.SysHesuanConfiguration;
+import com.ruoyi.system.service.ISysHesuanConfigurationService;
+
+import static com.ruoyi.common.utils.SecurityUtils.getLoginUser;
+
+/**
+ * 对比规则配置Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2022-10-10
+ */
+@Service
+public class SysHesuanConfigurationServiceImpl implements ISysHesuanConfigurationService 
+{
+    @Autowired
+    private SysHesuanConfigurationMapper sysHesuanConfigurationMapper;
+    @Autowired
+    private SysDeptMapper deptMapper;
+
+
+
+    private void startPage() {
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
+            String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
+            PageHelper.startPage(pageNum, pageSize, orderBy);
+        }
+    }
+
+    /**
+     * 查询对比规则配置
+     * 
+     * @param id 对比规则配置主键
+     * @return 对比规则配置
+     */
+    @Override
+    public SysHesuanConfiguration selectSysHesuanConfigurationById(Long id)
+    {
+        return sysHesuanConfigurationMapper.selectSysHesuanConfigurationById(id);
+    }
+
+    /**
+     * 查询对比规则配置列表
+     * 
+     * @param sysHesuanConfiguration 对比规则配置
+     * @return 对比规则配置
+     */
+    @Override
+    public List<SysHesuanConfiguration> selectSysHesuanConfigurationList(SysHesuanConfiguration sysHesuanConfiguration)
+    {
+        SysUser user = getLoginUser().getUser();
+        List<SysRole> roles = user.getRoles();
+        List<String> listDeptId = new ArrayList<>();
+        listDeptId.add(String.valueOf(user.getDeptId()));
+        //判断账号下面所有子部门
+        List<SysDept> depts = deptMapper.selectChildrenDeptById(Long.valueOf(user.getDeptId()));
+        if(depts != null && depts.size()>0){
+            for (SysDept dept : depts) {
+                listDeptId.add(String.valueOf(dept.getDeptId()));
+            }
+        }
+        for (SysRole role : roles) {
+            if("超级管理员".equals(role.getRoleName())){
+                listDeptId = null;
+                break;
+            }
+        }
+        sysHesuanConfiguration.setDeptIdList(listDeptId);
+        startPage();
+        return sysHesuanConfigurationMapper.selectSysHesuanConfigurationList(sysHesuanConfiguration);
+    }
+
+    /**
+     * 新增对比规则配置
+     * 
+     * @param sysHesuanConfiguration 对比规则配置
+     * @return 结果
+     */
+    @Override
+    public int insertSysHesuanConfiguration(SysHesuanConfiguration sysHesuanConfiguration, SysUser user)
+    {
+        sysHesuanConfiguration.setDeptId(String.valueOf(user.getDeptId()));
+        return sysHesuanConfigurationMapper.insertSysHesuanConfiguration(sysHesuanConfiguration);
+    }
+
+    /**
+     * 修改对比规则配置
+     * 
+     * @param sysHesuanConfiguration 对比规则配置
+     * @return 结果
+     */
+    @Override
+    public int updateSysHesuanConfiguration(SysHesuanConfiguration sysHesuanConfiguration)
+    {
+        return sysHesuanConfigurationMapper.updateSysHesuanConfiguration(sysHesuanConfiguration);
+    }
+
+    /**
+     * 批量删除对比规则配置
+     * 
+     * @param ids 需要删除的对比规则配置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSysHesuanConfigurationByIds(Long[] ids)
+    {
+        return sysHesuanConfigurationMapper.deleteSysHesuanConfigurationByIds(ids);
+    }
+
+    /**
+     * 删除对比规则配置信息
+     * 
+     * @param id 对比规则配置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSysHesuanConfigurationById(Long id)
+    {
+        return sysHesuanConfigurationMapper.deleteSysHesuanConfigurationById(id);
+    }
+}

+ 238 - 5
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserInfoServiceImpl.java

@@ -4,16 +4,21 @@ import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.TypeReference;
+import com.github.pagehelper.PageHelper;
 import com.ruoyi.common.annotation.DataSource;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.page.PageDomain;
+import com.ruoyi.common.core.page.TableSupport;
 import com.ruoyi.common.enums.DataSourceType;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.http.HttpClientUtils;
 import com.ruoyi.common.utils.http.HttpUtils;
+import com.ruoyi.common.utils.sql.SqlUtil;
 import com.ruoyi.system.domain.*;
 import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.service.IUserInfoService;
@@ -52,6 +57,22 @@ public class UserInfoServiceImpl implements IUserInfoService {
     private UserInfoOneMapper userInfoOneMapper;
     @Autowired
     private KeyPeopleInfoMapper keyPeopleInfoMapper;
+    @Autowired
+    private SysDeptMapper deptMapper;
+    @Autowired
+    private SysHesuanConfigurationMapper sysHesuanConfigurationMapper;
+
+
+
+    private void startPage() {
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
+            String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
+            PageHelper.startPage(pageNum, pageSize, orderBy);
+        }
+    }
 
     /**
      * 查询导入人员信息
@@ -73,7 +94,27 @@ public class UserInfoServiceImpl implements IUserInfoService {
     @Override
     public List<UserInfo> selectUserInfoList(UserInfo userInfo) {
         SysUser user = getLoginUser().getUser();
-        userInfo.setDeptId(String.valueOf(user.getDeptId()));
+        List<SysRole> roles = user.getRoles();
+        List<String> listDeptId = new ArrayList<>();
+        listDeptId.add(String.valueOf(user.getDeptId()));
+        //判断账号下面所有子部门
+        List<SysDept> depts = deptMapper.selectChildrenDeptById(Long.valueOf(user.getDeptId()));
+        if(depts != null && depts.size()>0){
+            for (SysDept dept : depts) {
+                listDeptId.add(String.valueOf(dept.getDeptId()));
+            }
+        }
+
+        for (SysRole role : roles) {
+            if("超级管理员".equals(role.getRoleName())){
+                listDeptId = null;
+                break;
+            }
+        }
+
+        //userInfo.setDeptId(String.valueOf(user.getDeptId()));
+        userInfo.setDeptIdList(listDeptId);
+        startPage();
         return userInfoMapper.selectUserInfoList(userInfo);
     }
 
@@ -136,12 +177,185 @@ public class UserInfoServiceImpl implements IUserInfoService {
 
         //获取人员信息
         KeyPeopleInfo keyPeopleInfo = new KeyPeopleInfo();
-        keyPeopleInfo.setDeptId(user.getDeptId().toString());
+        List<String> listDeptId = new ArrayList<>();
+        listDeptId.add(String.valueOf(user.getDeptId()));
+        //判断账号下面所有子部门
+        List<SysDept> depts = deptMapper.selectChildrenDeptById(Long.valueOf(user.getDeptId()));
+        if(depts != null && depts.size()>0){
+            for (SysDept dept : depts) {
+                listDeptId.add(String.valueOf(dept.getDeptId()));
+            }
+        }
+        keyPeopleInfo.setDeptIdList(listDeptId);
         List<KeyPeopleInfo> keyPeopleInfoList = keyPeopleInfoMapper.selectKeyPeopleInfoList(keyPeopleInfo);
         if(keyPeopleInfoList==null || keyPeopleInfoList.size()<=0){
             return "请先上传该部门重点人员";
         }
-        String startTime = userInfoP.getStartTime();
+        SysHesuanConfiguration sysHesuan = new SysHesuanConfiguration();
+        sysHesuan.setDeptIdList(listDeptId);
+        //查询部门的规则配置
+        List<SysHesuanConfiguration> sysHesuanList = sysHesuanConfigurationMapper.selectSysHesuanConfigurationList(sysHesuan);
+
+        for (SysHesuanConfiguration sysHesuanConfiguration : sysHesuanList) {
+            //获取当前时间
+            Date data = DateUtils.getNowDate();
+            String endTime = DateUtils.formatString(data);
+            //往前推配置的时间 天数X24X60
+            int num = -(Integer.parseInt(sysHesuanConfiguration.getDetectionScope())*24*60);
+            String startTime = DateUtils.plusSeconds(endTime, num);
+            //次数
+            String detectionNumber = sysHesuanConfiguration.getDetectionNumber();
+            //间隔
+            String detectionScope = sysHesuanConfiguration.getDetectionScope();
+
+            //获取所属当前规则的人员
+            List<String> idCardList = new ArrayList<>();
+            List<KeyPeopleInfo> KeyPeopleInfo1 = new ArrayList<>();
+            for (KeyPeopleInfo peopleInfo : keyPeopleInfoList) {
+                if(peopleInfo.getJobStyle().equals(sysHesuanConfiguration.getJobStyle()) && peopleInfo.getFocusCrowdStyle().equals(sysHesuanConfiguration.getFocusCrowdStyle())){
+                    idCardList.add(peopleInfo.getIdCard());
+                    KeyPeopleInfo1.add(peopleInfo);
+                }
+            }
+            //从第三方数据库查询人员核酸计录
+            List<OdsQssHsjcxx> OdsQssHsjcxxList = qdsQssHsjcxxService.thirdNucleicAcid(startTime, endTime, idCardList);
+            Map<String, List<OdsQssHsjcxx>> OdsQssHsjcxxMapSorted = new HashMap<>();
+            if (OdsQssHsjcxxList != null && OdsQssHsjcxxList.size() > 0) {
+                OdsQssHsjcxxMapSorted = OdsQssHsjcxxList.stream().sorted(Comparator.comparing(OdsQssHsjcxx::getCjsj).reversed()).collect(Collectors.groupingBy(OdsQssHsjcxx::getSfzhm));
+            }
+            //把采集时间降序
+            List<UserNucleicTime> UserNucleicTimeList = new ArrayList<>();
+            int index = 0;
+            int count = 0;
+            List<UserInfo> userList = new ArrayList<>();
+            for (KeyPeopleInfo peopleInfo : KeyPeopleInfo1) {
+                UserInfo userInfo = new UserInfo();
+                userInfo.setDeptId(user.getDeptId().toString());
+                userInfo.setPhoneNum(peopleInfo.getPhoneNum());
+                userInfo.setName(peopleInfo.getName());
+                userInfo.setIdCard(peopleInfo.getIdCard());
+
+                //采集地点
+                StringBuilder collectPlace = new StringBuilder();
+                //核酸采集时间
+                StringBuilder nucleicCollectTime = new StringBuilder();
+                //核酸结果时间
+                StringBuilder nucleicResultsTime = new StringBuilder();
+                //核酸结果
+                StringBuilder nucleicResults = new StringBuilder();
+
+
+                userInfo.setJobStyle(sysHesuanConfiguration.getJobStyle());
+                userInfo.setFocusCrowdStyle(sysHesuanConfiguration.getFocusCrowdStyle());
+                userInfo.setDetectionFrequency(detectionNumber + "/" + detectionScope);
+                userInfo.setDetectionNumber(detectionNumber);
+                userInfo.setDetectionScope(detectionScope);
+                userInfo.setStartTime(startTime);
+                userInfo.setEndTime(endTime);
+                //判断结果是否合格,默认合格
+                Boolean bl = true;
+
+                index = 0;
+                count = 0;
+                String PhoneNum = "";
+                if (OdsQssHsjcxxMapSorted.size() > 0) {
+                    //身份证号码
+                    String idCard = userInfo.getIdCard();
+                    List<OdsQssHsjcxx> odsQssHsjcxxes = OdsQssHsjcxxMapSorted.get(idCard);
+                    if (odsQssHsjcxxes != null && odsQssHsjcxxes.size() > 0) {
+                        //String time = null;
+
+                        for (OdsQssHsjcxx odsQssHsjcxx : odsQssHsjcxxes) {
+
+
+                            if(StringUtils.isEmpty(PhoneNum)){
+                                PhoneNum = odsQssHsjcxx.getSjhm();
+                            }
+
+                            if (StringUtils.isNotEmpty(collectPlace.toString())) {
+                                collectPlace.append("<br>");
+                            }
+                            collectPlace.append(odsQssHsjcxx.getJcdd());
+
+                            if (StringUtils.isNotEmpty(nucleicCollectTime.toString())) {
+                                nucleicCollectTime.append("<br>");
+                            }
+                            nucleicCollectTime.append(odsQssHsjcxx.getCjsj());
+
+                            if (StringUtils.isNotEmpty(nucleicResultsTime.toString())) {
+                                nucleicResultsTime.append("<br>");
+                            }
+                            nucleicResultsTime.append(odsQssHsjcxx.getJgcjss());
+
+                            if (StringUtils.isNotEmpty(nucleicResults.toString())) {
+                                nucleicResults.append("<br>");
+                            }
+                            if(StringUtils.isEmpty(odsQssHsjcxx.getJcjg())){
+                                nucleicResults.append(odsQssHsjcxx.getJcjg());
+                            }else if("0".equals(odsQssHsjcxx.getJcjg()) || "negative".equals(odsQssHsjcxx.getJcjg())){
+                                nucleicResults.append("阴性");
+                            }else if("1".equals(odsQssHsjcxx.getJcjg()) || "positive".equals(odsQssHsjcxx.getJcjg())){
+                                nucleicResults.append("阳性");
+                            }else{
+                                nucleicResults.append(odsQssHsjcxx.getJcjg());
+                            }
+
+                        }
+                        index = odsQssHsjcxxes.size();
+                    }
+
+
+                }
+                if (index < Integer.parseInt(detectionNumber)) {
+                    bl = false;
+                }
+
+                userInfo.setPhoneNum(PhoneNum);
+                userInfo.setCollectPlace(collectPlace.toString());
+                userInfo.setNucleicCollectTime(nucleicCollectTime.toString());
+                userInfo.setNucleicResultsTime(nucleicResultsTime.toString());
+                userInfo.setNucleicResults(nucleicResults.toString());
+                userInfo.setDetectionProgress(index + "/" + detectionNumber);
+                PhoneNum = "";
+                if (bl) {
+                    userInfo.setDetectionResult("正常");
+                } else {
+                    userInfo.setDetectionResult("异常");
+                }
+
+                userList.add(userInfo);
+            }
+
+            if (OdsQssHsjcxxList != null && OdsQssHsjcxxList.size() > 0) {
+                for (OdsQssHsjcxx odsQssHsjcxx : OdsQssHsjcxxList) {
+                    for (UserInfo userInfo : userList) {
+                        if (userInfo.getIdCard().equals(odsQssHsjcxx.getSfzhm())) {
+                            UserNucleicTime userNucleicTime = new UserNucleicTime();
+                            userNucleicTime.setInfoId(userInfo.getId());
+                            userNucleicTime.setIdCard(odsQssHsjcxx.getSfzhm());
+                            userNucleicTime.setCollectPlace(odsQssHsjcxx.getJcdd());
+                            userNucleicTime.setNucleicCollectTime(odsQssHsjcxx.getCjsj());
+                            userNucleicTime.setNucleicResultsTime(odsQssHsjcxx.getJgcjss());
+                            userNucleicTime.setJobStyle(sysHesuanConfiguration.getJobStyle());
+                            userNucleicTime.setFocusCrowdStyle(sysHesuanConfiguration.getFocusCrowdStyle());
+                            userNucleicTime.setName(userInfo.getName());
+                            userNucleicTime.setPhoneNum(userInfo.getPhoneNum());
+                            userNucleicTime.setDeptId(user.getDeptId().toString());
+                            UserNucleicTimeList.add(userNucleicTime);
+                            userNucleicTime.setDateSource("批量导入");
+                        }
+                    }
+                }
+            }
+
+            //批量保存
+            userInfoMapper.insertUserInfoList(userList);
+            userNucleicTimeMapper.insertUserNucleicTimeList(UserNucleicTimeList);
+
+        }
+
+
+        /*String startTime = userInfoP.getStartTime();
         String endTime = userInfoP.getEndTime();
         String detectionNumber = userInfoP.getDetectionNumber();
 
@@ -289,7 +503,7 @@ public class UserInfoServiceImpl implements IUserInfoService {
 
         //批量保存
         userInfoMapper.insertUserInfoList(userList);
-        userNucleicTimeMapper.insertUserNucleicTimeList(UserNucleicTimeList);
+        userNucleicTimeMapper.insertUserNucleicTimeList(UserNucleicTimeList);*/
 
         long end1 = System.currentTimeMillis();
         System.out.println("---------------接口耗时" + (end1 - start1) + "---------------");
@@ -637,7 +851,26 @@ public class UserInfoServiceImpl implements IUserInfoService {
     @Override
     public List<UserInfoOne> oneDateList(UserInfoOne userInfoOne) {
         SysUser user = getLoginUser().getUser();
-        userInfoOne.setDeptId(String.valueOf(user.getDeptId()));
+        List<SysRole> roles = user.getRoles();
+        List<String> listDeptId = new ArrayList<>();
+        listDeptId.add(String.valueOf(user.getDeptId()));
+        //判断账号下面所有子部门
+        List<SysDept> depts = deptMapper.selectChildrenDeptById(Long.valueOf(user.getDeptId()));
+        if(depts != null && depts.size()>0){
+            for (SysDept dept : depts) {
+                listDeptId.add(String.valueOf(dept.getDeptId()));
+            }
+        }
+
+        for (SysRole role : roles) {
+            if("超级管理员".equals(role.getRoleName())){
+                listDeptId = null;
+                break;
+            }
+        }
+        
+        userInfoOne.setDeptIdList(listDeptId);
+        startPage();
         return userInfoOneMapper.selectUserInfoOneList(userInfoOne);
     }
 

+ 85 - 0
ruoyi-system/src/main/resources/mapper/system/AkmDataMapper.xml

@@ -0,0 +1,85 @@
+<?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.AkmDataMapper">
+    
+    <resultMap type="AkmData" id="AkmDataResult">
+        <result property="id"    column="id"    />
+        <result property="name"    column="name"    />
+        <result property="idCard"    column="id_card"    />
+        <result property="phoneNum"    column="phone_num"    />
+        <result property="collectTime"    column="collect_time"    />
+        <result property="collectSite"    column="collect_site"    />
+    </resultMap>
+
+    <sql id="selectAkmDataVo">
+        select id, name, id_card, phone_num, collect_time, collect_site from akm_data
+    </sql>
+
+    <select id="selectAkmDataList" parameterType="AkmData" resultMap="AkmDataResult">
+        <include refid="selectAkmDataVo"/>
+        <where>  
+            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
+            <if test="idCard != null  and idCard != ''"> and id_card = #{idCard}</if>
+            <if test="phoneNum != null  and phoneNum != ''"> and phone_num = #{phoneNum}</if>
+            <if test="collectTime != null "> and collect_time = #{collectTime}</if>
+            <if test="collectSite != null  and collectSite != ''"> and collect_site = #{collectSite}</if>
+        </where>
+    </select>
+    
+    <select id="selectAkmDataById" parameterType="Long" resultMap="AkmDataResult">
+        <include refid="selectAkmDataVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectAkmDataListByIdList" resultMap="AkmDataResult">
+        <include refid="selectAkmDataVo"/>
+        where collect_time > #{startTime}  and #{endTime}>=collect_time
+        and id_card in
+        <foreach item="idCard" collection="idCardList" open="(" separator="," close=")">
+            #{idCard}
+        </foreach>
+    </select>
+
+    <insert id="insertAkmData" parameterType="AkmData" useGeneratedKeys="true" keyProperty="id">
+        insert into akm_data
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="name != null">name,</if>
+            <if test="idCard != null">id_card,</if>
+            <if test="phoneNum != null">phone_num,</if>
+            <if test="collectTime != null">collect_time,</if>
+            <if test="collectSite != null">collect_site,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="name != null">#{name},</if>
+            <if test="idCard != null">#{idCard},</if>
+            <if test="phoneNum != null">#{phoneNum},</if>
+            <if test="collectTime != null">#{collectTime},</if>
+            <if test="collectSite != null">#{collectSite},</if>
+         </trim>
+    </insert>
+
+    <update id="updateAkmData" parameterType="AkmData">
+        update akm_data
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="name != null">name = #{name},</if>
+            <if test="idCard != null">id_card = #{idCard},</if>
+            <if test="phoneNum != null">phone_num = #{phoneNum},</if>
+            <if test="collectTime != null">collect_time = #{collectTime},</if>
+            <if test="collectSite != null">collect_site = #{collectSite},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteAkmDataById" parameterType="Long">
+        delete from akm_data where id = #{id}
+    </delete>
+
+    <delete id="deleteAkmDataByIds" parameterType="String">
+        delete from akm_data where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 9 - 1
ruoyi-system/src/main/resources/mapper/system/KeyPeopleInfoMapper.xml

@@ -10,6 +10,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="idCard"    column="id_card"    />
         <result property="phoneNum"    column="phone_num"    />
         <result property="deptId"    column="dept_id"    />
+        <result property="jobStyle"    column="job_style"    />
+        <result property="focusCrowdStyle"    column="focus_crowd_style"    />
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateBy"    column="update_by"    />
@@ -18,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectKeyPeopleInfoVo">
-        select id, name, id_card, phone_num, dept_id, create_by, create_time, update_by, update_time, remark from key_people_info
+        select id, name, id_card, phone_num, dept_id,job_style,focus_crowd_style, create_by, create_time, update_by, update_time, remark from key_people_info
     </sql>
 
     <select id="selectKeyPeopleInfoList" parameterType="KeyPeopleInfo" resultMap="KeyPeopleInfoResult">
@@ -28,6 +30,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="idCard != null  and idCard != ''"> and id_card = #{idCard}</if>
             <if test="phoneNum != null  and phoneNum != ''"> and phone_num = #{phoneNum}</if>
             <if test="deptId != null  and deptId != ''"> and dept_id = #{deptId}</if>
+            <if test="deptIdList!= null and deptIdList.size()>0" >
+            and dept_id in
+            <foreach item="deptId" collection="deptIdList" open="(" separator="," close=")">
+                #{deptId}
+            </foreach>
+            </if>
         </where>
     </select>
     

+ 83 - 0
ruoyi-system/src/main/resources/mapper/system/SysHesuanConfigurationMapper.xml

@@ -0,0 +1,83 @@
+<?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.SysHesuanConfigurationMapper">
+    
+    <resultMap type="SysHesuanConfiguration" id="SysHesuanConfigurationResult">
+        <result property="id"    column="id"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="jobStyle"    column="job_style"    />
+        <result property="focusCrowdStyle"    column="focus_crowd_style"    />
+        <result property="detectionNumber"    column="detection_number"    />
+        <result property="detectionScope"    column="detection_scope"    />
+    </resultMap>
+
+    <sql id="selectSysHesuanConfigurationVo">
+        select id, dept_id, job_style, focus_crowd_style, detection_number, detection_scope from sys_hesuan_configuration
+    </sql>
+
+    <select id="selectSysHesuanConfigurationList" parameterType="SysHesuanConfiguration" resultMap="SysHesuanConfigurationResult">
+        <include refid="selectSysHesuanConfigurationVo"/>
+        <where>  
+            <if test="jobStyle != null  and jobStyle != ''"> and job_style = #{jobStyle}</if>
+            <if test="focusCrowdStyle != null  and focusCrowdStyle != ''"> and focus_crowd_style = #{focusCrowdStyle}</if>
+            <if test="detectionNumber != null  and detectionNumber != ''"> and detection_number = #{detectionNumber}</if>
+            <if test="detectionScope != null  and detectionScope != ''"> and detection_scope = #{detectionScope}</if>
+            <if test="deptId != null  and deptId != ''"> and dept_id = #{deptId}</if>
+            <if test="deptIdList!= null and deptIdList.size()>0" >
+                and dept_id in
+                <foreach item="deptId" collection="deptIdList" open="(" separator="," close=")">
+                    #{deptId}
+                </foreach>
+            </if>
+
+        </where>
+    </select>
+    
+    <select id="selectSysHesuanConfigurationById" parameterType="Long" resultMap="SysHesuanConfigurationResult">
+        <include refid="selectSysHesuanConfigurationVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertSysHesuanConfiguration" parameterType="SysHesuanConfiguration" useGeneratedKeys="true" keyProperty="id">
+        insert into sys_hesuan_configuration
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="deptId != null">dept_id,</if>
+            <if test="jobStyle != null">job_style,</if>
+            <if test="focusCrowdStyle != null">focus_crowd_style,</if>
+            <if test="detectionNumber != null">detection_number,</if>
+            <if test="detectionScope != null">detection_scope,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="deptId != null">#{deptId},</if>
+            <if test="jobStyle != null">#{jobStyle},</if>
+            <if test="focusCrowdStyle != null">#{focusCrowdStyle},</if>
+            <if test="detectionNumber != null">#{detectionNumber},</if>
+            <if test="detectionScope != null">#{detectionScope},</if>
+         </trim>
+    </insert>
+
+    <update id="updateSysHesuanConfiguration" parameterType="SysHesuanConfiguration">
+        update sys_hesuan_configuration
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="jobStyle != null">job_style = #{jobStyle},</if>
+            <if test="focusCrowdStyle != null">focus_crowd_style = #{focusCrowdStyle},</if>
+            <if test="detectionNumber != null">detection_number = #{detectionNumber},</if>
+            <if test="detectionScope != null">detection_scope = #{detectionScope},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteSysHesuanConfigurationById" parameterType="Long">
+        delete from sys_hesuan_configuration where id = #{id}
+    </delete>
+
+    <delete id="deleteSysHesuanConfigurationByIds" parameterType="String">
+        delete from sys_hesuan_configuration where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 8 - 0
ruoyi-system/src/main/resources/mapper/system/UserInfoMapper.xml

@@ -53,6 +53,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="startTime != null  and startTime != ''"> and start_time = #{startTime}</if>
             <if test="endTime != null  and endTime != ''"> and #{endTime} = end_time</if>
             <if test="detectionResult != null  and detectionResult != ''"> and #{detectionResult} = detection_result</if>
+
+            <if test="deptIdList!= null and deptIdList.size()>0" >
+                and dept_id in
+                <foreach item="deptId" collection="deptIdList" open="(" separator="," close=")">
+                    #{deptId}
+                </foreach>
+            </if>
+
         </where>
         order by create_time DESC
     </select>

+ 6 - 0
ruoyi-system/src/main/resources/mapper/system/UserInfoOneMapper.xml

@@ -60,6 +60,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="startTime != null  and startTime != ''"> and start_time = #{startTime}</if>
             <if test="endTime != null  and endTime != ''"> and end_time = #{endTime}</if>
             <if test="detectionResult != null  and detectionResult != ''"> and detection_result = #{detectionResult}</if>
+            <if test="deptIdList!= null and deptIdList.size()>0" >
+                and dept_id in
+                <foreach item="deptId" collection="deptIdList" open="(" separator="," close=")">
+                    #{deptId}
+                </foreach>
+            </if>
         </where>
         order by create_time desc
     </select>