|
@ -1,20 +1,45 @@
|
|
|
package com.yihu.jw.base.endpoint.patient;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
import com.yihu.jw.base.dao.servicePackage.ServicePackageRecordDao;
|
|
|
import com.yihu.jw.base.dao.servicePackage.ServicePackageSignRecordDao;
|
|
|
import com.yihu.jw.base.dao.sign.ArchiveDao;
|
|
|
import com.yihu.jw.base.dao.team.BaseTeamDao;
|
|
|
import com.yihu.jw.base.dao.team.WlyyPatientLabelDao;
|
|
|
import com.yihu.jw.base.util.ConstantUtils;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorDao;
|
|
|
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
|
|
|
import com.yihu.jw.entity.base.patient.BasePatientDO;
|
|
|
import com.yihu.jw.entity.base.servicePackage.ServicePackageRecordDO;
|
|
|
import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
|
|
|
import com.yihu.jw.entity.base.team.BaseTeamDO;
|
|
|
import com.yihu.jw.entity.care.archive.ArchiveDO;
|
|
|
import com.yihu.jw.entity.care.device.DeviceDetail;
|
|
|
import com.yihu.jw.entity.care.label.WlyyPatientLabelDO;
|
|
|
import com.yihu.jw.patient.dao.BasePatientDao;
|
|
|
import com.yihu.jw.patient.service.BasePatientService;
|
|
|
import com.yihu.jw.restmodel.base.patient.BasePatientVO;
|
|
|
import com.yihu.jw.restmodel.web.*;
|
|
|
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
|
|
|
import com.yihu.jw.rm.base.BaseRequestMapping;
|
|
|
import com.yihu.utils.date.DateUtil;
|
|
|
import com.yihu.utils.security.MD5;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
import jxl.Sheet;
|
|
|
import jxl.Workbook;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.util.List;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import java.io.InputStream;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* 居民信息控制器
|
|
@ -33,6 +58,20 @@ public class BasePatientEndpoint extends EnvelopRestEndpoint {
|
|
|
|
|
|
@Autowired
|
|
|
private BasePatientService basePatientService;
|
|
|
@Autowired
|
|
|
private BasePatientDao basePatientDao;
|
|
|
@Autowired
|
|
|
private ServicePackageSignRecordDao servicePackageSignRecordDao;
|
|
|
@Autowired
|
|
|
private BaseDoctorDao baseDoctorDao;
|
|
|
@Autowired
|
|
|
private BaseTeamDao baseTeamDao;
|
|
|
@Autowired
|
|
|
private ServicePackageRecordDao servicePackageRecordDao;
|
|
|
@Autowired
|
|
|
private ArchiveDao archiveDao;
|
|
|
@Autowired
|
|
|
private WlyyPatientLabelDao patientLabelDao;
|
|
|
|
|
|
@PostMapping(value = BaseRequestMapping.BasePatient.CREATE)
|
|
|
@ApiOperation(value = "创建")
|
|
@ -175,4 +214,208 @@ public class BasePatientEndpoint extends EnvelopRestEndpoint {
|
|
|
}
|
|
|
return success(msg);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 如果添加失败,注释MultipartConfig配置
|
|
|
* 如果导入失败,将Excel修改为97-2003版本.xls
|
|
|
* 签约服务包id固定
|
|
|
* 签约日期 开始时间为当前时间,结束时间为2023-12-31 23:59:59
|
|
|
* patientLabelDO.setLabelType("1"); 居民标签类型 固定为能力完好
|
|
|
* patientLabelDO.setLabelCode("0"); 居民标签类型 固定为能力完好
|
|
|
* 姓名 性别 年龄 身份证号 联系方式 小区 地址 签约团队 能力类型
|
|
|
* 沈xxx 女 88 330103xxxxxxxx0720 1525xxxx711 朝晖九区 朝晖九区10幢4单元103 虹园/稻香园服务团队 能力完好
|
|
|
* 沈xxx 女 86 330103xxxxxxxx0720 1525xxxx711 朝晖九区 朝晖九区天盛居4幢1202室 大木桥服务团队 能力完好
|
|
|
* @param request
|
|
|
* @param file
|
|
|
* @return
|
|
|
*/
|
|
|
@RequestMapping(value = "/importPatientFromExcel", produces = "application/json;charset=UTF-8",method = RequestMethod.POST)
|
|
|
@ResponseBody
|
|
|
public ObjEnvelop importPatientFromExcel(HttpServletRequest request, @ApiParam(value = "文件", required = true)
|
|
|
@RequestParam(value = "file", required = true) MultipartFile file) {
|
|
|
Calendar c1 = Calendar.getInstance();
|
|
|
/**
|
|
|
* c1 签约结束时间
|
|
|
*/
|
|
|
c1.set(2023, 12 - 1, 31,23,59,59);
|
|
|
List errorLs = new ArrayList<>();
|
|
|
List correctLs = new ArrayList<>();
|
|
|
List idcardList = new ArrayList<>();
|
|
|
Map<String, String> errorMsgMap = new HashMap<>();
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
List<String> deviceCodes = new ArrayList<>();
|
|
|
try {
|
|
|
request.setCharacterEncoding("UTF-8");
|
|
|
InputStream inputStream = file.getInputStream();
|
|
|
Workbook rwb = Workbook.getWorkbook(inputStream);
|
|
|
Sheet[] sheets = rwb.getSheets();
|
|
|
int rows;
|
|
|
int row;
|
|
|
String name=null;//用户姓名
|
|
|
String sex; //性别
|
|
|
String age; //年龄
|
|
|
String idcard; //身份证号
|
|
|
String mobile; //联系方式
|
|
|
String residentialArea; //居住小区
|
|
|
String address; //居住地址
|
|
|
String signTeam; //签约团队
|
|
|
String label; //能力类型
|
|
|
Sheet sheet = sheets[0]; //第一张表
|
|
|
rows = sheet.getRows();
|
|
|
for (int j = 1; j < rows; j++) {
|
|
|
if (sheet.getRow(j).length == 0) {
|
|
|
continue;
|
|
|
}
|
|
|
BasePatientDO basePatientVO = new BasePatientDO();
|
|
|
JSONObject infoMap = new JSONObject();
|
|
|
row = j;
|
|
|
name = sheet.getCell(0, row).getContents().trim(); //0 用户姓名
|
|
|
sex = sheet.getCell(1, row).getContents().trim(); //1 性别
|
|
|
age = sheet.getCell(2, row).getContents().trim(); //2 年龄
|
|
|
idcard = sheet.getCell(3, row).getContents().trim(); //3 身份证号
|
|
|
mobile = sheet.getCell(4, row).getContents().trim(); //4 联系方式
|
|
|
residentialArea = sheet.getCell(5, row).getContents().trim(); //5 居住小区
|
|
|
address = sheet.getCell(6, row).getContents().trim(); //6 居住地址
|
|
|
signTeam = sheet.getCell(7, row).getContents().trim();; //签约团队
|
|
|
label = sheet.getCell(8, row).getContents().trim();; //能力类型
|
|
|
if (StringUtils.isBlank(idcard)){
|
|
|
continue;
|
|
|
}
|
|
|
if (StringUtils.isBlank(name)){
|
|
|
errorMsgMap.put(idcard,"姓名不能为空");
|
|
|
continue;
|
|
|
}
|
|
|
if (basePatientService.findByIdCard(idcard)){
|
|
|
errorMsgMap.put(idcard,"身份证号重复");
|
|
|
continue;
|
|
|
}
|
|
|
if (StringUtils.isBlank(sex)){
|
|
|
sex = "3";
|
|
|
} else {
|
|
|
if (sex.equals("男")) {
|
|
|
sex = "1";
|
|
|
} else {
|
|
|
sex = "2";
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.isBlank(signTeam)){
|
|
|
errorMsgMap.put(idcard,"签约团队不能为空");
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isBlank(label)){
|
|
|
errorMsgMap.put(idcard,"能力类型不能为空");
|
|
|
continue;
|
|
|
}
|
|
|
basePatientVO.setAddress(address);
|
|
|
basePatientVO.setDel("1");
|
|
|
basePatientVO.setEnabled(1);
|
|
|
basePatientVO.setIdcard(idcard);
|
|
|
basePatientVO.setSex(new Integer(sex));
|
|
|
basePatientVO.setName(name);
|
|
|
basePatientVO.setMobile(mobile);
|
|
|
basePatientVO.setArchiveStatus(3);
|
|
|
basePatientVO.setArchiveType(1); //默认添加老人
|
|
|
String pw = idcard.substring(idcard.length()-6);
|
|
|
String salt = UUID.randomUUID().toString().substring(0,5);
|
|
|
basePatientVO.setPassword(MD5.md5Hex(pw + "{" + salt + "}"));
|
|
|
basePatientVO.setSalt(salt);
|
|
|
basePatientVO.setResidentialArea(residentialArea);
|
|
|
infoMap.put("idcard",idcard);
|
|
|
infoMap.put("signTeam",signTeam);
|
|
|
infoMap.put("label",label);
|
|
|
correctLs.add(basePatientVO);
|
|
|
idcardList.add(infoMap);
|
|
|
}
|
|
|
basePatientDao.save(correctLs);
|
|
|
String patient= "";
|
|
|
/**
|
|
|
* 添加签约数据
|
|
|
*/
|
|
|
if (idcardList.size() > 0) {
|
|
|
for (int i=0;i<idcardList.size();i++) {
|
|
|
ServicePackageSignRecordDO signRecordDO = new ServicePackageSignRecordDO();
|
|
|
BasePatientDO basePatientVO = new BasePatientDO();
|
|
|
try {
|
|
|
idcard = retOne(idcardList.get(i).toString(),"idcard").toString();
|
|
|
signTeam = retOne(idcardList.get(i).toString(),"signTeam").toString();
|
|
|
label = retOne(idcardList.get(i).toString(),"label").toString();
|
|
|
basePatientVO = basePatientDao.findByIdcardAndDel(idcard,"1");
|
|
|
if (basePatientVO == null) {
|
|
|
errorMsgMap.put(idcard,"居民信息获取失败");
|
|
|
continue;
|
|
|
}
|
|
|
patient = basePatientVO.getId();
|
|
|
name = basePatientVO.getName();
|
|
|
signRecordDO.setPatient(patient);
|
|
|
signRecordDO.setName(name);
|
|
|
signRecordDO.setStatus(1);
|
|
|
signRecordDO.setStartTime(new Date());
|
|
|
signRecordDO.setEndTime(c1.getTime());
|
|
|
BaseTeamDO teamDO = baseTeamDao.findByName(signTeam);
|
|
|
if (teamDO == null) {
|
|
|
errorMsgMap.put(idcard,"团队信息获取失败");
|
|
|
continue;
|
|
|
}
|
|
|
BaseDoctorDO doctorDO = baseDoctorDao.findById(teamDO.getLeaderCode());
|
|
|
if (doctorDO == null) {
|
|
|
errorMsgMap.put(idcard,"医生信息获取失败");
|
|
|
continue;
|
|
|
}
|
|
|
signRecordDO.setSignDoctor(doctorDO.getId());
|
|
|
signRecordDO.setSignDoctorName(doctorDO.getName());
|
|
|
signRecordDO = servicePackageSignRecordDao.save(signRecordDO);
|
|
|
ServicePackageRecordDO packageRecordDO = new ServicePackageRecordDO();
|
|
|
packageRecordDO.setSignId(signRecordDO.getId());
|
|
|
packageRecordDO.setServicePackageId("8a92aba97b48824a017b56c5ee710019");
|
|
|
packageRecordDO.setPatient(patient);
|
|
|
packageRecordDO.setCreateTime(new Date());
|
|
|
packageRecordDO.setTeamCode(teamDO.getId());
|
|
|
servicePackageRecordDao.save(packageRecordDO);
|
|
|
//建档状态
|
|
|
ArchiveDO archiveDO = new ArchiveDO();
|
|
|
archiveDO.setCreateTime(new Date());
|
|
|
archiveDO.setArchiveOperatorName(doctorDO.getName());
|
|
|
archiveDO.setDoctorCode(doctorDO.getId());
|
|
|
archiveDO.setPatient(patient);
|
|
|
archiveDO.setSickName(name);
|
|
|
archiveDO.setIdcard(idcard);
|
|
|
archiveDO.setSignStatus(1);
|
|
|
archiveDao.save(archiveDO);
|
|
|
//居民标签
|
|
|
WlyyPatientLabelDO patientLabelDO = new WlyyPatientLabelDO();
|
|
|
patientLabelDO.setCzrq(new Date());
|
|
|
patientLabelDO.setLabelType("1");
|
|
|
patientLabelDO.setPatient(patient);
|
|
|
patientLabelDO.setLabelCode("0");
|
|
|
patientLabelDO.setLabelName(label);
|
|
|
patientLabelDao.save(patientLabelDO);
|
|
|
basePatientVO.setSignStatus(1);
|
|
|
basePatientDao.save(basePatientVO);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
//包装导入结果(导入成功数量、错误对象集合)
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
map.put("successNum", correctLs.size());
|
|
|
map.put("failedNum", rows-1 - correctLs.size() );
|
|
|
map.put("errorData", JSON.toJSONString(errorMsgMap, SerializerFeature.WriteMapNullValue));
|
|
|
System.out.println(map);
|
|
|
return ObjEnvelop.getSuccess("获取成功",map);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return failedObjEnvelopException(e);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public Object retOne(String str,String name){
|
|
|
JSONObject object = JSONObject.parseObject(str);
|
|
|
return object.get(""+name+"");
|
|
|
}
|
|
|
|
|
|
}
|