LIVE_YE 2 anni fa
parent
commit
ec6367e8cc

+ 133 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/UserInfoController.java

@@ -0,0 +1,133 @@
+package com.ruoyi.web.controller.info;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.system.domain.UserInfo;
+import com.ruoyi.system.service.IUserInfoService;
+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.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 导入人员信息Controller
+ * 
+ * @author ruoyi
+ * @date 2022-08-11
+ */
+@RestController
+@RequestMapping("/system/info")
+public class UserInfoController extends BaseController
+{
+    @Autowired
+    private IUserInfoService userInfoService;
+
+    /**
+     * 查询导入人员信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:info:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(UserInfo userInfo)
+    {
+        startPage();
+        List<UserInfo> list = userInfoService.selectUserInfoList(userInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出导入人员信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:info:export')")
+    @Log(title = "导入人员信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, UserInfo userInfo)
+    {
+        List<UserInfo> list = userInfoService.selectUserInfoList(userInfo);
+        ExcelUtil<UserInfo> util = new ExcelUtil<UserInfo>(UserInfo.class);
+        util.exportExcel(response, list, "导入人员信息数据");
+    }
+
+
+    /**
+     * 核酸比对人员导入
+     * @param file
+     * @param jobStyle  jobStyle
+     * @param focusCrowdStyle focusCrowdStyle
+     * @param detectionNumber detectionNumber
+     * @param detectionScope detectionScope
+     * @param startTime startTime
+     * @param endTime 比对结束时间
+     * @return
+     * @throws Exception
+     */
+    @Log(title = "导入人员信息", businessType = BusinessType.IMPORT)
+    @PreAuthorize("@ss.hasPermi('system:info:import')")
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file, String jobStyle, String focusCrowdStyle, String detectionNumber,
+                                 String detectionScope,String startTime,String endTime) throws Exception
+    {
+        ExcelUtil<UserInfo> util = new ExcelUtil<UserInfo>(UserInfo.class);
+        List<UserInfo> userList = util.importExcel(file.getInputStream());
+        //String operName = getUsername();
+        String message = userInfoService.importUser(userList, jobStyle, focusCrowdStyle, detectionNumber, detectionScope,startTime,endTime);
+        return AjaxResult.success(message);
+    }
+
+    /**
+     * 获取导入人员信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:info:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(userInfoService.selectUserInfoById(id));
+    }
+
+    /**
+     * 新增导入人员信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:info:add')")
+    @Log(title = "导入人员信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody UserInfo userInfo)
+    {
+        return toAjax(userInfoService.insertUserInfo(userInfo));
+    }
+
+    /**
+     * 修改导入人员信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:info:edit')")
+    @Log(title = "导入人员信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody UserInfo userInfo)
+    {
+        return toAjax(userInfoService.updateUserInfo(userInfo));
+    }
+
+    /**
+     * 删除导入人员信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:info:remove')")
+    @Log(title = "导入人员信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(userInfoService.deleteUserInfoByIds(ids));
+    }
+}

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

@@ -1,7 +1,7 @@
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8080
-  port: 9000
+  port: 9001
   servlet:
     # 应用的访问路径
     context-path: /

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

@@ -0,0 +1,262 @@
+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;
+
+/**
+ * 导入人员信息对象 user_info
+ * 
+ * @author ruoyi
+ * @date 2022-08-11
+ */
+public class UserInfo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /**  */
+    private Long id;
+
+    /** 姓名 */
+    @Excel(name = "姓名")
+    private String name;
+
+    /** 性别 */
+    @Excel(name = "性别")
+    private String gender;
+
+    /** 年龄 */
+    @Excel(name = "年龄")
+    private Integer age;
+
+    /** 身份证号码 */
+    @Excel(name = "身份证号码")
+    private String idCard;
+
+    /** 联系号码 */
+    @Excel(name = "联系号码")
+    private String phoneNum;
+
+    /** 部门id */
+    @Excel(name = "部门id")
+    private String deptId;
+
+
+    /** 采集地点 */
+    @Excel(name = "采集地点")
+    private String collectPlace;
+
+    /** 核酸采集时间 */
+    @Excel(name = "核酸采集时间")
+    private String nucleicCollectTime;
+
+    /** 核酸结果时间 */
+    @Excel(name = "核酸结果时间")
+    private String nucleicResultsTime;
+
+    /** 职业类别 */
+    @Excel(name = "职业类别")
+    private String jobStyle;
+
+    /** 重点人群分类 */
+    @Excel(name = "重点人群分类")
+    private String focusCrowdStyle;
+
+    /** 检测频次(汉字拼接后) */
+    @Excel(name = "检测频次(汉字拼接后)")
+    private String detectionFrequency;
+
+    /** 检测频次(次数) */
+    private String detectionNumber;
+
+    /** 检测频次(时间范围) */
+    private String detectionScope;
+
+    /** 部门名称 */
+    private String deptName;
+
+    /** 比对开始时间 */
+    @Excel(name = "比对开始时间")
+    private String startTime;
+
+    /** 比对结束时间 */
+    @Excel(name = "比对结束时间")
+    private String endTime;
+
+    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 setGender(String gender) 
+    {
+        this.gender = gender;
+    }
+
+    public String getGender() 
+    {
+        return gender;
+    }
+    public void setAge(Integer age) 
+    {
+        this.age = age;
+    }
+
+    public Integer getAge() 
+    {
+        return age;
+    }
+    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 setNucleicCollectTime(String nucleicCollectTime) 
+    {
+        this.nucleicCollectTime = nucleicCollectTime;
+    }
+
+    public String getNucleicCollectTime() 
+    {
+        return nucleicCollectTime;
+    }
+    public void setNucleicResultsTime(String nucleicResultsTime) 
+    {
+        this.nucleicResultsTime = nucleicResultsTime;
+    }
+
+    public String getNucleicResultsTime() 
+    {
+        return nucleicResultsTime;
+    }
+    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 setDetectionFrequency(String detectionFrequency) 
+    {
+        this.detectionFrequency = detectionFrequency;
+    }
+
+    public String getDetectionFrequency() 
+    {
+        return detectionFrequency;
+    }
+    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;
+    }
+    public void setDeptName(String deptName) 
+    {
+        this.deptName = deptName;
+    }
+
+    public String getDeptName() 
+    {
+        return deptName;
+    }
+    public void setStartTime(String startTime) 
+    {
+        this.startTime = startTime;
+    }
+
+    public String getStartTime() 
+    {
+        return startTime;
+    }
+    public void setEndTime(String endTime) 
+    {
+        this.endTime = endTime;
+    }
+
+    public String getEndTime() 
+    {
+        return endTime;
+    }
+
+    public String getCollectPlace() {
+        return collectPlace;
+    }
+
+    public void setCollectPlace(String collectPlace) {
+        this.collectPlace = collectPlace;
+    }
+
+    @Override
+    public String toString() {
+        return "UserInfo{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", gender='" + gender + '\'' +
+                ", age=" + age +
+                ", idCard='" + idCard + '\'' +
+                ", phoneNum='" + phoneNum + '\'' +
+                ", collectPlace='" + collectPlace + '\'' +
+                ", nucleicCollectTime='" + nucleicCollectTime + '\'' +
+                ", nucleicResultsTime='" + nucleicResultsTime + '\'' +
+                ", jobStyle='" + jobStyle + '\'' +
+                ", focusCrowdStyle='" + focusCrowdStyle + '\'' +
+                ", detectionFrequency='" + detectionFrequency + '\'' +
+                ", detectionNumber='" + detectionNumber + '\'' +
+                ", detectionScope='" + detectionScope + '\'' +
+                ", deptName='" + deptName + '\'' +
+                ", startTime='" + startTime + '\'' +
+                ", endTime='" + endTime + '\'' +
+                '}';
+    }
+}

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

@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.UserInfo;
+
+/**
+ * 导入人员信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2022-08-11
+ */
+public interface UserInfoMapper 
+{
+    /**
+     * 查询导入人员信息
+     * 
+     * @param id 导入人员信息主键
+     * @return 导入人员信息
+     */
+    public UserInfo selectUserInfoById(Long id);
+
+    /**
+     * 查询导入人员信息列表
+     * 
+     * @param userInfo 导入人员信息
+     * @return 导入人员信息集合
+     */
+    public List<UserInfo> selectUserInfoList(UserInfo userInfo);
+
+    /**
+     * 新增导入人员信息
+     * 
+     * @param userInfo 导入人员信息
+     * @return 结果
+     */
+    public int insertUserInfo(UserInfo userInfo);
+
+    /**
+     * 修改导入人员信息
+     * 
+     * @param userInfo 导入人员信息
+     * @return 结果
+     */
+    public int updateUserInfo(UserInfo userInfo);
+
+    /**
+     * 删除导入人员信息
+     * 
+     * @param id 导入人员信息主键
+     * @return 结果
+     */
+    public int deleteUserInfoById(Long id);
+
+    /**
+     * 批量删除导入人员信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteUserInfoByIds(Long[] ids);
+}

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

@@ -0,0 +1,63 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.UserInfo;
+
+/**
+ * 导入人员信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2022-08-11
+ */
+public interface IUserInfoService
+{
+    /**
+     * 查询导入人员信息
+     * 
+     * @param id 导入人员信息主键
+     * @return 导入人员信息
+     */
+    public UserInfo selectUserInfoById(Long id);
+
+    /**
+     * 查询导入人员信息列表
+     * 
+     * @param userInfo 导入人员信息
+     * @return 导入人员信息集合
+     */
+    public List<UserInfo> selectUserInfoList(UserInfo userInfo);
+
+    /**
+     * 新增导入人员信息
+     * 
+     * @param userInfo 导入人员信息
+     * @return 结果
+     */
+    public int insertUserInfo(UserInfo userInfo);
+
+    /**
+     * 修改导入人员信息
+     * 
+     * @param userInfo 导入人员信息
+     * @return 结果
+     */
+    public int updateUserInfo(UserInfo userInfo);
+
+    /**
+     * 批量删除导入人员信息
+     * 
+     * @param ids 需要删除的导入人员信息主键集合
+     * @return 结果
+     */
+    public int deleteUserInfoByIds(Long[] ids);
+
+    /**
+     * 删除导入人员信息信息
+     * 
+     * @param id 导入人员信息主键
+     * @return 结果
+     */
+    public int deleteUserInfoById(Long id);
+
+    String importUser(List<UserInfo> userList, String jobStyle, String focusCrowdStyle, String detectionNumber, String detectionScope, String startTime, String endTime);
+}

+ 125 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserInfoServiceImpl.java

@@ -0,0 +1,125 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import com.ruoyi.common.core.domain.entity.SysDictType;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.system.mapper.SysDictTypeMapper;
+import com.ruoyi.system.service.ISysDictTypeService;
+import com.ruoyi.system.service.IUserInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.UserInfoMapper;
+import com.ruoyi.system.domain.UserInfo;
+
+/**
+ * 导入人员信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2022-08-11
+ */
+@Service
+public class UserInfoServiceImpl implements IUserInfoService
+{
+    @Autowired
+    private UserInfoMapper userInfoMapper;
+    @Autowired
+    private SysDictTypeMapper dictTypeMapper;
+
+    /**
+     * 查询导入人员信息
+     * 
+     * @param id 导入人员信息主键
+     * @return 导入人员信息
+     */
+    @Override
+    public UserInfo selectUserInfoById(Long id)
+    {
+        return userInfoMapper.selectUserInfoById(id);
+    }
+
+    /**
+     * 查询导入人员信息列表
+     * 
+     * @param userInfo 导入人员信息
+     * @return 导入人员信息
+     */
+    @Override
+    public List<UserInfo> selectUserInfoList(UserInfo userInfo)
+    {
+        return userInfoMapper.selectUserInfoList(userInfo);
+    }
+
+    /**
+     * 新增导入人员信息
+     * 
+     * @param userInfo 导入人员信息
+     * @return 结果
+     */
+    @Override
+    public int insertUserInfo(UserInfo userInfo)
+    {
+        userInfo.setCreateTime(DateUtils.getNowDate());
+        return userInfoMapper.insertUserInfo(userInfo);
+    }
+
+    /**
+     * 修改导入人员信息
+     * 
+     * @param userInfo 导入人员信息
+     * @return 结果
+     */
+    @Override
+    public int updateUserInfo(UserInfo userInfo)
+    {
+        userInfo.setUpdateTime(DateUtils.getNowDate());
+        return userInfoMapper.updateUserInfo(userInfo);
+    }
+
+    /**
+     * 批量删除导入人员信息
+     * 
+     * @param ids 需要删除的导入人员信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteUserInfoByIds(Long[] ids)
+    {
+        return userInfoMapper.deleteUserInfoByIds(ids);
+    }
+
+    /**
+     * 删除导入人员信息信息
+     * 
+     * @param id 导入人员信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteUserInfoById(Long id)
+    {
+        return userInfoMapper.deleteUserInfoById(id);
+    }
+
+    @Override
+    public String importUser(List<UserInfo> userList, String jobStyle, String focusCrowdStyle, String detectionNumber,
+                             String detectionScope, String startTime, String endTime) {
+
+        //todo 获取当前上传人员部门id
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        String deptId = String.valueOf(user.getDeptId());
+
+        //todo 向医院查询上传名单人员核酸数据(将时间段内所有人员数据查询出来),之后与上传人员名单比较,提取身份证号相同的数据
+        List<Map<String,Object>> yyMap = new ArrayList<>();
+
+        for (UserInfo userInfo : userList) {
+            for (Map<String, Object> yMap : yyMap) {
+
+            }
+        }
+        return "操作成功";
+    }
+}

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

@@ -0,0 +1,145 @@
+<?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.UserInfoMapper">
+    
+    <resultMap type="UserInfo" id="UserInfoResult">
+        <result property="id"    column="id"    />
+        <result property="name"    column="name"    />
+        <result property="gender"    column="gender"    />
+        <result property="age"    column="age"    />
+        <result property="idCard"    column="id_card"    />
+        <result property="phoneNum"    column="phone_num"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="nucleicCollectTime"    column="nucleic_collect_time"    />
+        <result property="nucleicResultsTime"    column="nucleic_results_time"    />
+        <result property="jobStyle"    column="job_style"    />
+        <result property="focusCrowdStyle"    column="focus_crowd_style"    />
+        <result property="collectPlace"    column="collect_place"    />
+        <result property="detectionFrequency"    column="detection_frequency"    />
+        <result property="detectionNumber"    column="detection_number"    />
+        <result property="detectionScope"    column="detection_scope"    />
+        <result property="deptName"    column="dept_name"    />
+        <result property="startTime"    column="start_time"    />
+        <result property="endTime"    column="end_time"    />
+        <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="selectUserInfoVo">
+        select id, name, gender, age, id_card, phone_num, dept_id, collect_place, nucleic_collect_time, nucleic_results_time, job_style, focus_crowd_style, detection_frequency, detection_number, detection_scope, dept_name, start_time, end_time, create_by, create_time, update_by, update_time, remark from user_info
+    </sql>
+
+    <select id="selectUserInfoList" parameterType="UserInfo" resultMap="UserInfoResult">
+        <include refid="selectUserInfoVo"/>
+        <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="nucleicCollectTime != null  and nucleicCollectTime != ''"> and nucleic_collect_time = #{nucleicCollectTime}</if>
+            <if test="nucleicResultsTime != null  and nucleicResultsTime != ''"> and nucleic_results_time = #{nucleicResultsTime}</if>
+            <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="detectionFrequency != null  and detectionFrequency != ''"> and detection_frequency = #{detectionFrequency}</if>
+            <if test="startTime != null  and startTime != ''"> and start_time = #{startTime}</if>
+            <if test="endTime != null  and endTime != ''"> and end_time = #{endTime}</if>
+        </where>
+    </select>
+    
+    <select id="selectUserInfoById" parameterType="Long" resultMap="UserInfoResult">
+        <include refid="selectUserInfoVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertUserInfo" parameterType="UserInfo">
+        insert into user_info
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="name != null">name,</if>
+            <if test="gender != null">gender,</if>
+            <if test="age != null">age,</if>
+            <if test="idCard != null">id_card,</if>
+            <if test="phoneNum != null">phone_num,</if>
+            <if test="nucleicCollectTime != null">nucleic_collect_time,</if>
+            <if test="nucleicResultsTime != null">nucleic_results_time,</if>
+            <if test="jobStyle != null">job_style,</if>
+            <if test="focusCrowdStyle != null">focus_crowd_style,</if>
+            <if test="detectionFrequency != null">detection_frequency,</if>
+            <if test="detectionNumber != null">detection_number,</if>
+            <if test="detectionScope != null">detection_scope,</if>
+            <if test="deptName != null">dept_name,</if>
+            <if test="startTime != null">start_time,</if>
+            <if test="endTime != null">end_time,</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="id != null">#{id},</if>
+            <if test="name != null">#{name},</if>
+            <if test="gender != null">#{gender},</if>
+            <if test="age != null">#{age},</if>
+            <if test="idCard != null">#{idCard},</if>
+            <if test="phoneNum != null">#{phoneNum},</if>
+            <if test="nucleicCollectTime != null">#{nucleicCollectTime},</if>
+            <if test="nucleicResultsTime != null">#{nucleicResultsTime},</if>
+            <if test="jobStyle != null">#{jobStyle},</if>
+            <if test="focusCrowdStyle != null">#{focusCrowdStyle},</if>
+            <if test="detectionFrequency != null">#{detectionFrequency},</if>
+            <if test="detectionNumber != null">#{detectionNumber},</if>
+            <if test="detectionScope != null">#{detectionScope},</if>
+            <if test="deptName != null">#{deptName},</if>
+            <if test="startTime != null">#{startTime},</if>
+            <if test="endTime != null">#{endTime},</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="updateUserInfo" parameterType="UserInfo">
+        update user_info
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="name != null">name = #{name},</if>
+            <if test="gender != null">gender = #{gender},</if>
+            <if test="age != null">age = #{age},</if>
+            <if test="idCard != null">id_card = #{idCard},</if>
+            <if test="phoneNum != null">phone_num = #{phoneNum},</if>
+            <if test="nucleicCollectTime != null">nucleic_collect_time = #{nucleicCollectTime},</if>
+            <if test="nucleicResultsTime != null">nucleic_results_time = #{nucleicResultsTime},</if>
+            <if test="jobStyle != null">job_style = #{jobStyle},</if>
+            <if test="focusCrowdStyle != null">focus_crowd_style = #{focusCrowdStyle},</if>
+            <if test="detectionFrequency != null">detection_frequency = #{detectionFrequency},</if>
+            <if test="detectionNumber != null">detection_number = #{detectionNumber},</if>
+            <if test="detectionScope != null">detection_scope = #{detectionScope},</if>
+            <if test="deptName != null">dept_name = #{deptName},</if>
+            <if test="startTime != null">start_time = #{startTime},</if>
+            <if test="endTime != null">end_time = #{endTime},</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="deleteUserInfoById" parameterType="Long">
+        delete from user_info where id = #{id}
+    </delete>
+
+    <delete id="deleteUserInfoByIds" parameterType="String">
+        delete from user_info where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>