Commit 31eb8e62 authored by zhuangxinwei's avatar zhuangxinwei

Merge remote-tracking branch 'origin/master' into master

parents fd5afe93 b2f77578
...@@ -20,6 +20,7 @@ import com.ruoyi.system.domain.Ycsb; ...@@ -20,6 +20,7 @@ import com.ruoyi.system.domain.Ycsb;
import com.ruoyi.system.service.IYcsbService; import com.ruoyi.system.service.IYcsbService;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
/** /**
* 抗原异常上报Controller * 抗原异常上报Controller
...@@ -101,4 +102,35 @@ public class YcsbController extends BaseController ...@@ -101,4 +102,35 @@ public class YcsbController extends BaseController
{ {
return toAjax(ycsbService.deleteYcsbByIds(ids)); return toAjax(ycsbService.deleteYcsbByIds(ids));
} }
/**
* 抗原异常上报导入空模板下载
*/
@PostMapping("/importTemplate")
@PreAuthorize("@ss.hasPermi('system:ycsb:import')")
@Log(title = "下载抗原异常上报模板", businessType = BusinessType.IMPORT)
public void importTemplate(HttpServletResponse response) throws Exception {
ExcelUtil<Ycsb> util = new ExcelUtil<>(Ycsb.class);
Class<? extends Ycsb> clazz = new Ycsb().getClass();
// 是否做核酸
String[] hasAcid = new String[]{"是", "否"};
ExcelUtil.setClassExcelAttribute( clazz,"hasAcid","combo",hasAcid);
util.importTemplateExcel(response,"抗原异常上报");
}
/**
* 导入接口
* @param file 导入的excel文件
* @param response
* @throws Exception
*/
@Log(title = "导入抗原异常上报", businessType = BusinessType.IMPORT)
@PreAuthorize("@ss.hasPermi('system:ycsb:import')")
@PostMapping("/importData")
public void importData(MultipartFile file, HttpServletResponse response) throws Exception {
ExcelUtil<Ycsb> util = new ExcelUtil<>(Ycsb.class);
List<Ycsb> list = util.importExcel(file.getInputStream());
ycsbService.importList(list, response);
}
} }
...@@ -20,15 +20,19 @@ public class Ycsb extends BaseEntity ...@@ -20,15 +20,19 @@ public class Ycsb extends BaseEntity
/** 主键 */ /** 主键 */
private Long id; private Long id;
/** 日期 */ /** 上报日期 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") @Excel(name = "时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date sbDate; private Date sbDate;
/** 姓名 */ /** 异常人员姓名 */
@Excel(name = "姓名") @Excel(name = "姓名")
private String userName; private String userName;
/** 是否做核酸 */
@Excel(name = "是否做核酸")
private String hasAcid;
/** 身份证号码 */ /** 身份证号码 */
@Excel(name = "身份证号") @Excel(name = "身份证号")
private String cardNo; private String cardNo;
...@@ -37,20 +41,16 @@ public class Ycsb extends BaseEntity ...@@ -37,20 +41,16 @@ public class Ycsb extends BaseEntity
@Excel(name = "联系电话") @Excel(name = "联系电话")
private String phone; private String phone;
/** 联系方式 */
@Excel(name = "家庭现住址")
private String address;
/** 居住地所在区 */ /** 居住地所在区 */
// @Excel(name = "居住地所在区") @Excel(name = "居住地所在区", dictType = "residential_area")
private String area; private String area;
/** 街道/镇 */ /** 街道/镇 */
@Excel(name = "单位") @Excel(name = "单位", dictType = "street_town")
private String street; private String street;
// 新增字段 /** 居委会 */
@Excel(name = "居委会") @Excel(name = "居委会", dictType = "committee")
private String committee; private String committee;
/** 小区/村名称 */ /** 小区/村名称 */
...@@ -69,20 +69,30 @@ public class Ycsb extends BaseEntity ...@@ -69,20 +69,30 @@ public class Ycsb extends BaseEntity
@Excel(name = "门牌号") @Excel(name = "门牌号")
private String house; private String house;
/** 是否做核酸 */ /** 联系方式 */
// @Excel(name = "是否做核酸") @Excel(name = "家庭现住址")
private String hasAcid; private String address;
/** 备注 */
@Excel(name = "备注")
private String remark;
/** 状态(0正常 1停用) */ /** 状态(0正常 1停用) */
// @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status; private String status;
/** 删除标志(0代表存在 2代表删除) */ /** 删除标志(0代表存在 2代表删除) */
private String delFlag; private String delFlag;
/** 备注 */ private String checkCard;
@Excel(name = "备注")
private String remark;
public String getCheckCard() {
return checkCard;
}
public void setCheckCard(String checkCard) {
this.checkCard = checkCard;
}
public void setId(Long id) public void setId(Long id)
{ {
......
...@@ -58,4 +58,11 @@ public interface YcsbMapper ...@@ -58,4 +58,11 @@ public interface YcsbMapper
* @return 结果 * @return 结果
*/ */
public int deleteYcsbByIds(Long[] ids); public int deleteYcsbByIds(Long[] ids);
/**
* 根据身份证号查询
* @param cardNo 身份证号
* @return
*/
List<Ycsb> selectYcsbByCard(String cardNo);
} }
...@@ -3,6 +3,8 @@ package com.ruoyi.system.service; ...@@ -3,6 +3,8 @@ package com.ruoyi.system.service;
import java.util.List; import java.util.List;
import com.ruoyi.system.domain.Ycsb; import com.ruoyi.system.domain.Ycsb;
import javax.servlet.http.HttpServletResponse;
/** /**
* 抗原异常上报Service接口 * 抗原异常上报Service接口
* *
...@@ -58,4 +60,11 @@ public interface IYcsbService ...@@ -58,4 +60,11 @@ public interface IYcsbService
* @return 结果 * @return 结果
*/ */
public int deleteYcsbById(Long id); public int deleteYcsbById(Long id);
/**
* 导入抗原异常上报信息
* @param list 导入的list数据
* @param response
*/
void importList(List<Ycsb> list, HttpServletResponse response);
} }
package com.ruoyi.system.service.impl; package com.ruoyi.system.service.impl;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DataUtils; import com.ruoyi.common.utils.*;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.Yxry;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.system.mapper.YcsbMapper; import com.ruoyi.system.mapper.YcsbMapper;
import com.ruoyi.system.domain.Ycsb; import com.ruoyi.system.domain.Ycsb;
import com.ruoyi.system.service.IYcsbService; import com.ruoyi.system.service.IYcsbService;
import javax.servlet.http.HttpServletResponse;
/** /**
* 抗原异常上报Service业务层处理 * 抗原异常上报Service业务层处理
* *
...@@ -107,4 +112,76 @@ public class YcsbServiceImpl implements IYcsbService ...@@ -107,4 +112,76 @@ public class YcsbServiceImpl implements IYcsbService
{ {
return ycsbMapper.deleteYcsbById(id); return ycsbMapper.deleteYcsbById(id);
} }
/**
* 导入
* @param list 导入的list数据
* @param response
*/
@Override
public void importList(List<Ycsb> list, HttpServletResponse response) {
if (StringUtils.isNull(list) || list.size() == 0) {
throw new ServiceException("导入数据不能为空!");
}
List<Ycsb> trueList = new ArrayList<>();
List<Ycsb> failureList = new ArrayList<>();
for (Ycsb ycsb : list) {
if (StringUtils.isNotEmpty(ycsb.getUserName())
&& StringUtils.isNotEmpty(ycsb.getCardNo())
&& StringUtils.isNotEmpty(ycsb.getArea())
&& StringUtils.isNotEmpty(ycsb.getStreet())
&& StringUtils.isNotEmpty(ycsb.getCommittee())
&& StringUtils.isNotEmpty(ycsb.getSbDate().toString())) {
// 校验身份证号是否重复(同excel表验证)
List<Ycsb> ycsbList = list.stream().filter(i -> ycsb.getCardNo().equals(i.getCardNo())).collect(Collectors.toList());
if (ycsbList.size() > 1) {
failureList.add(ycsb);
} else {
// 校验身份证格式
if (CheckUtils.checkCard(ycsb.getCardNo())) {
ycsb.setCheckCard("1");
// 校验手机号格式
if (!CheckUtils.checkPhone(ycsb.getPhone())) {
failureList.add(ycsb);
} else {
// 匹配小区参数
if (StringUtils.isNotEmpty(ycsb.getCommunity())) {
List<SysDictData> communities = DictUtils.getDictCache("community");
List<String> values = communities.stream().map(SysDictData::getDictValue)
.filter(dictValue -> ycsb.getCommunity().equals(dictValue)).collect(Collectors.toList());
if (!values.isEmpty()) {
ycsb.setCommunity(values.get(0));
String createBy = DataUtils.getValue(ycsb.getArea(), ycsb.getStreet(), ycsb.getCommittee());
ycsb.setCreateBy(createBy);
ycsb.setCreateTime(DateUtils.getNowDate());
trueList.add(ycsb);
} else {
failureList.add(ycsb);
}
}
}
} else {
ycsb.setCheckCard("0");
failureList.add(ycsb);
}
}
} else {
failureList.add(ycsb);
}
}
if (!trueList.isEmpty()) {
for (Ycsb ycsb : trueList) {
// 校验身份证号是否重复(数据库验证)
List<Ycsb> ycsbList = ycsbMapper.selectYcsbByCard(ycsb.getCardNo());
if (ycsbList.size() > 0) {
ycsbMapper.updateYcsb(ycsb);
}
ycsbMapper.insertYcsb(ycsb);
}
}
if (!failureList.isEmpty()) {
ExcelUtil<Ycsb> util = new ExcelUtil<>(Ycsb.class);
util.exportExcel(response, failureList, "抗原异常上报错误数据");
}
}
} }
...@@ -70,13 +70,15 @@ ...@@ -70,13 +70,15 @@
create_time, create_time,
update_by, update_by,
update_time, update_time,
remark remark,
committee,
cj_result
from hscj from hscj
</sql> </sql>
<select id="selectHscjList" parameterType="Hscj" resultMap="HscjResult"> <select id="selectHscjList" parameterType="Hscj" resultMap="HscjResult">
select a.id, a.province, a.city, a.area, a.street, a.community, a.cj_place, a.cjgh, a.user_name, a.card_no, select a.id, a.province, a.city, a.area, a.street, a.community, a.cj_place, a.cjgh, a.user_name, a.card_no,
a.phone, a.phone,a.committee,a.cj_result,
a.sex, a.address, a.age, a.category, a.cj_time, a.cj_name, a.cj_phone, a.b_type, a.laboratory, a.jc_time, a.sex, a.address, a.age, a.category, a.cj_time, a.cj_name, a.cj_phone, a.b_type, a.laboratory, a.jc_time,
a.rygx, a.boxhao, a.status, a.del_flag, a.create_by, a.create_time, a.update_by, a.update_time, a.remark from a.rygx, a.boxhao, a.status, a.del_flag, a.create_by, a.create_time, a.update_by, a.update_time, a.remark from
hscj a hscj a
......
...@@ -74,6 +74,10 @@ ...@@ -74,6 +74,10 @@
<include refid="selectYcsbVo"/> <include refid="selectYcsbVo"/>
where id = #{id} where id = #{id}
</select> </select>
<select id="selectYcsbByCard" resultType="com.ruoyi.system.domain.Ycsb">
<include refid="selectYcsbVo"/>
where del_flag = '0' and card_no = #{cardNo}
</select>
<insert id="insertYcsb" parameterType="Ycsb" useGeneratedKeys="true" keyProperty="id"> <insert id="insertYcsb" parameterType="Ycsb" useGeneratedKeys="true" keyProperty="id">
insert into ycsb insert into ycsb
......
...@@ -42,3 +42,23 @@ export function delYcsb(id) { ...@@ -42,3 +42,23 @@ export function delYcsb(id) {
method: 'delete' method: 'delete'
}) })
} }
// 下载抗原异常上报导入模板
export function importTemplate(params) {
return request({
url: '/system/ycsb/importTemplate',
method: 'post',
responseType: 'blob',
params
})
}
// 导入抗原异常上报信息
export function importExcel(data) {
return request({
url: '/system/ycsb/importData',
method: 'post',
responseType: 'blob',
data
})
}
...@@ -421,7 +421,7 @@ ...@@ -421,7 +421,7 @@
<script> <script>
import { listYcsb, getYcsb, delYcsb, addYcsb, updateYcsb } from "@/api/system/ycsb"; import { listYcsb, getYcsb, delYcsb, addYcsb, updateYcsb } from "@/api/system/ycsb";
import { getToken } from '@/utils/auth' import { getToken } from '@/utils/auth'
import { importTemplate, importExcel } from "@/api/system/zlqk"; import { importTemplate, importExcel } from "@/api/system/ycsb";
export default { export default {
name: "Ycsb", name: "Ycsb",
...@@ -677,7 +677,7 @@ export default { ...@@ -677,7 +677,7 @@ export default {
// 设置上传的请求头部 // 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() }, headers: { Authorization: "Bearer " + getToken() },
// 上传的地址 // 上传的地址
url: process.env.VUE_APP_BASE_API + "/system/zlqk/importTemplate" url: process.env.VUE_APP_BASE_API + "/system/ycbs/importTemplate"
}, },
// 遮罩层 // 遮罩层
loading: true, loading: true,
...@@ -849,7 +849,7 @@ export default { ...@@ -849,7 +849,7 @@ export default {
/** 导入按钮操作 */ /** 导入按钮操作 */
handleImport() { handleImport() {
this.importLoading = false this.importLoading = false
this.upload.title = "治疗情况导入"; this.upload.title = "抗原异常上报导入";
this.upload.open = true; this.upload.open = true;
}, },
/** 下载模板操作 */ /** 下载模板操作 */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment