Browse Source

Merge branch 'pt' of dd.tall.wiki:ccsens_wiki/ccsenscloud into pt

recovery
zy_Java 4 years ago
parent
commit
1a11bd8ba1
  1. 11
      tall/src/main/java/com/ccsens/tall/bean/vo/MessageVo.java
  2. 68
      tall/src/main/java/com/ccsens/tall/service/IRobotService.java
  3. 9
      tall/src/main/java/com/ccsens/tall/service/ProRoleService.java
  4. 61
      tall/src/main/java/com/ccsens/tall/service/RobotService.java
  5. 14
      tall/src/main/java/com/ccsens/tall/util/WxTemplateUtil.java
  6. 5
      tall/src/main/java/com/ccsens/tall/web/MemberController.java
  7. 4
      tall/src/main/java/com/ccsens/tall/web/RoleController.java
  8. 16
      tcm/src/main/java/com/ccsens/tcm/api/ImportController.java
  9. 15
      tcm/src/main/java/com/ccsens/tcm/bean/dto/PatientDto.java
  10. 15
      tcm/src/main/java/com/ccsens/tcm/bean/dto/QuestionDto.java
  11. 22
      tcm/src/main/java/com/ccsens/tcm/bean/po/PatientInformation.java
  12. 130
      tcm/src/main/java/com/ccsens/tcm/bean/po/PatientInformationExample.java
  13. 11
      tcm/src/main/java/com/ccsens/tcm/bean/po/Question.java
  14. 60
      tcm/src/main/java/com/ccsens/tcm/bean/po/QuestionExample.java
  15. 6
      tcm/src/main/java/com/ccsens/tcm/bean/vo/QuestionVo.java
  16. 16
      tcm/src/main/java/com/ccsens/tcm/persist/dao/QuestionDao.java
  17. 13
      tcm/src/main/java/com/ccsens/tcm/persist/dao/QuestionHospitalDao.java
  18. 7
      tcm/src/main/java/com/ccsens/tcm/persist/dao/ReportCodeDao.java
  19. 2
      tcm/src/main/java/com/ccsens/tcm/service/IImportService.java
  20. 124
      tcm/src/main/java/com/ccsens/tcm/service/ImportService.java
  21. 24
      tcm/src/main/java/com/ccsens/tcm/service/PatientService.java
  22. 7
      tcm/src/main/java/com/ccsens/tcm/service/QuestionService.java
  23. 71
      tcm/src/main/resources/mapper_dao/QuestionDao.xml
  24. 18
      tcm/src/main/resources/mapper_dao/QuestionHospitalDao.xml
  25. 2
      tcm/src/main/resources/mapper_dao/QuestionOcrDao.xml
  26. 10
      tcm/src/main/resources/mapper_dao/ReportCodeDao.xml
  27. 50
      tcm/src/main/resources/mapper_raw/PatientInformationMapper.xml
  28. 35
      tcm/src/main/resources/mapper_raw/QuestionMapper.xml
  29. 2
      util/src/main/java/com/ccsens/util/WebConstant.java

11
tall/src/main/java/com/ccsens/tall/bean/vo/MessageVo.java

@ -281,4 +281,15 @@ public class MessageVo {
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Deliverable.value,deliverName));
return inform;
}
/**
* 添加角色
*/
public static Inform addRoleComment(Long userId,String userName,Long projectId,String projectName,String roleName) {
MessageVo.Inform inform = new MessageVo.Inform(projectId, userId);
inform.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Operator.value, userName))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value, projectName, WebConstant.Message.TYPE_LINK, Message.getProjectSettings(projectId)))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.RoleName.value,roleName));
return inform;
}
}

68
tall/src/main/java/com/ccsens/tall/service/IRobotService.java

@ -18,85 +18,93 @@ public interface IRobotService {
/**
* 添加任务消息
* @param currentUserId
* @param project
* @param taskName
* @param executorId
* @param currentUserId 登录用户id
* @param project 项目
* @param taskName 任务名称
* @param executorId 负责人
*/
void addTaskRobotSend(Long currentUserId, SysProject project, String taskName, Long executorId) throws Exception;
/**
* 删除任务消息
* @param currentUserId
* @param taskDetail
* @param currentUserId 登录用户id
* @param taskDetail 任务详情
*/
void deleteTaskRobotSend(Long currentUserId, ProTaskDetail taskDetail) throws Exception;
/**
* 修改任务信息
* @param currentUserId
* @param normalTask
* @param currentUserId 登录用户id
* @param normalTask 任务
*/
void changeTaskRobotSend(Long currentUserId, TaskVo.NormalTask normalTask) throws Exception;
/**
* 上传交付物信息
* @param currentUserId
* @param subTimeId
* @param currentUserId 登录用户id
* @param subTimeId 分解任务id
*/
void addDeliverRobotSend(Long currentUserId,String deliverName, Long subTimeId,SysProject project) throws Exception;
/**
* 删除交付物信息
* @param currentUserId
* @param name
* @param subTimeId
* @param currentUserId 登录用户id
* @param name 交付物名称
* @param subTimeId 分解任务id
*/
void deleteDeliverRobotSend(Long currentUserId, String name, Long subTimeId) throws Exception;
/**
* 检查交付物信息
* @param currentUserId
* @param task
* @param userIdSet
* @param name
* @param currentUserId 当前登录用户id
* @param task 任务
* @param userIdSet 上传用户id
* @param name 交付物名称
*/
void checkDeliverRobotSend(Long currentUserId, ProTaskDetail task, Long userIdSet, String name,Boolean flag) throws Exception;
/**
* 评论任务信息
* @param userId
* @param proTaskDetail
* @param userId 用户id
* @param proTaskDetail 项目详情
*/
void addCommentRobotSend(Long userId, ProTaskDetail proTaskDetail) throws Exception;
/**
* 上传输入文档的文件消息记录
* @param currentUserId
* @param task
* @param deliverable
* @throws Exception
* @param currentUserId 登录用户id
* @param task 任务详情
* @param deliverable 交付物
* @throws Exception 异常
*/
void uploadForDocRobotSend(Long currentUserId,ProTaskDetail task,String deliverable) throws Exception;
/**
* 删除输入文档中的文件消息记录
* @param userId
* @param taskDetail
* @param name
* @param userId 登录用户id
* @param taskDetail 任务详情
* @param name 交付物名称
* @throws Exception
*/
void delDocRobotSend(Long userId, ProTaskDetail taskDetail, String name) throws Exception;
/**
* 修改输入文档中的备注 消息记录
* @param userId
* @param taskDetail
* @param name
* @throws Exception
* @param userId 登录用户id
* @param taskDetail 任务详情
* @param name 交付物名称
* @throws Exception 异常
*/
void updateRemarkRobotSend(Long userId, ProTaskDetail taskDetail, String name) throws Exception;
/**
* 添加角色 消息记录
* @param currentUserId 当前用户id
* @param projectId 项目id
* @param roleName 角色名称
*/
void addRoleRobotSend(Long currentUserId, Long projectId, String roleName,Long roleId) throws Exception;
/**
* 查询模板
* @param code

9
tall/src/main/java/com/ccsens/tall/service/ProRoleService.java

@ -74,6 +74,8 @@ public class ProRoleService implements IProRoleService {
private ProRoleMapper proRoleMapper;
@Resource
private ProRoleExcludeMapper proRoleExcludeMapper;
@Resource
private RobotService robotService;
@Override
public void saveProRole(ProRole proRole) {
proRoleDao.insertSelective(proRole);
@ -579,6 +581,13 @@ public class ProRoleService implements IProRoleService {
RoleVo.RoleByProjectId roleInfo = new RoleVo.RoleByProjectId();
roleInfo.setRoleId(role.getId());
roleInfo.setRoleName(role.getName());
//发送系统消息
try {
robotService.addRoleRobotSend(currentUserId,saveRole.getProjectId(),saveRole.getRoleName(),roleInfo.getRoleId());
}catch (Exception e){
log.info("发送系统消息异常",e);
}
return roleInfo;
}

61
tall/src/main/java/com/ccsens/tall/service/RobotService.java

@ -253,11 +253,11 @@ public class RobotService implements IRobotService{
/**
* 上传交付物信息 消息
* @param currentUserId
* @param deliverName
* @param subTimeId
* @param project
* @throws Exception
* @param currentUserId 当前用户id
* @param deliverName 交付物名称
* @param subTimeId 分解任务id
* @param project 项目
* @throws Exception 异常
*/
@Override
public void addDeliverRobotSend(Long currentUserId, String deliverName, Long subTimeId,SysProject project) throws Exception {
@ -334,11 +334,11 @@ public class RobotService implements IRobotService{
/**
* 检查交付物 消息
* @param currentUserId
* @param task
* @param uploadUserId
* @param deliverName
* @throws Exception
* @param currentUserId 当前登录用户id
* @param task 任务详情
* @param uploadUserId 上传用户id
* @param deliverName 交付物名称
* @throws Exception 异常
*/
@Override
public void checkDeliverRobotSend(Long currentUserId, ProTaskDetail task, Long uploadUserId, String deliverName,Boolean flag) throws Exception {
@ -436,7 +436,6 @@ public class RobotService implements IRobotService{
RobotUtil.setInform(inform);
// 添加wx消息通知
RobotUtil.setWxTemplate(WxTemplateUtil.uploadFileForDoc(project.getId(), userName,project.getName(),task.getName(),deliverable));
}
/**
@ -477,10 +476,10 @@ public class RobotService implements IRobotService{
/**
* 修改输入文档备注 消息记录
* @param userId
* @param taskDetail
* @param name
* @throws Exception
* @param userId 当前用户id
* @param taskDetail 任务详情
* @param name 交付物名称
* @throws Exception 异常
*/
@Override
public void updateRemarkRobotSend(Long userId, ProTaskDetail taskDetail, String name) throws Exception {
@ -548,4 +547,36 @@ public class RobotService implements IRobotService{
/**
*新增角色 系统消息
*/
@Override
public void addRoleRobotSend(Long currentUserId, Long projectId, String roleName,Long roleId) throws Exception {
String userName = userService.getUserNameByUserId(currentUserId);
String projectName = "";
SysProject project = sysProjectDao.selectByPrimaryKey(projectId);
if (ObjectUtil.isNotNull(project)){
projectName = project.getName();
}
//生成消息
RobotUtil.Message message = new RobotUtil.Message(project.getId());
message.appendParams(
new MessageVo.Message(WebConstant.TemplateParam.Operator.value,userName),
new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value,projectName),
new MessageVo.Message(WebConstant.TemplateParam.RoleName.value,roleName)
);
//获取角色内成员的手机号
String[] memberPhone = getMemberPhonesByRoleId(roleId);
if(memberPhone.length != 0){
message.appendMentionedMobileList(memberPhone);
}
RobotUtil.setRobotMessage(message);
MessageVo.Inform inform = MessageVo.addRoleComment(currentUserId, userName, project.getId(), project.getName(),roleName);
RobotUtil.setInform(inform);
// 添加wx消息通知
RobotUtil.setWxTemplate(WxTemplateUtil.addRoleRemark(project.getId(), userName,project.getName(),roleName));
}
}

14
tall/src/main/java/com/ccsens/tall/util/WxTemplateUtil.java

@ -221,4 +221,18 @@ public class WxTemplateUtil {
message.setData(data);
return message;
}
/**
* 添加角色
*/
public static WxTemplateMessage addRoleRemark(Long projectId, String userName,String projectName,String roleName) {
WxTemplateMessage message = getWxTemplateMessage(projectId);
message.setTemplate_id(WxGzhUtil.Template.TASK_PROGRESS.templateId);
WxTemplateMessage.TemplateData data = new WxTemplateMessage.TemplateData();
data.setFirst(new WxTemplateMessage.TemplateSettings(""));
data.setKeyword1(new WxTemplateMessage.TemplateSettings(userName + "在项目《"+projectName+"》内的新增了角色" + roleName));
data.setKeyword2(new WxTemplateMessage.TemplateSettings("新增角色"));
message.setData(data);
return message;
}
}

5
tall/src/main/java/com/ccsens/tall/web/MemberController.java

@ -7,6 +7,7 @@ import com.ccsens.tall.bean.vo.RoleVo;
import com.ccsens.tall.service.IProMemberService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.WebConstant;
import com.ccsens.util.annotation.OperateType;
import io.jsonwebtoken.Claims;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParams;
@ -34,7 +35,7 @@ public class MemberController {
@Resource
private IProMemberService proMemberService;
@OperateType(value = 20)
@ApiOperation(value = "添加成员",notes = "")
@ApiImplicitParams({
})
@ -47,6 +48,7 @@ public class MemberController {
return JsonResponse.newInstance().ok(memberInfo);
}
@OperateType(value = 21)
@ApiOperation(value = "删除成员",notes = "")
@ApiImplicitParams({
})
@ -58,6 +60,7 @@ public class MemberController {
return JsonResponse.newInstance().ok();
}
@OperateType(value = 22)
@ApiOperation(value = "修改成员信息",notes = "")
@ApiImplicitParams({
})

4
tall/src/main/java/com/ccsens/tall/web/RoleController.java

@ -12,6 +12,7 @@ import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.tall.service.IProRoleService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.WebConstant;
import com.ccsens.util.annotation.OperateType;
import com.ccsens.util.bean.dto.QueryDto;
import io.jsonwebtoken.Claims;
import io.swagger.annotations.*;
@ -35,6 +36,7 @@ public class RoleController {
@Resource
private IProRoleService proRoleService;
@OperateType(value = 18)
@ApiOperation(value = "删除角色",notes = "")
@ApiImplicitParams({
})
@ -46,6 +48,7 @@ public class RoleController {
return JsonResponse.newInstance().ok();
}
@OperateType(value = 17)
@ApiOperation(value = "添加角色",notes = "")
@ApiImplicitParams({
})
@ -57,6 +60,7 @@ public class RoleController {
return JsonResponse.newInstance().ok(roleInfo);
}
@OperateType(value = 19)
@ApiOperation(value = "修改角色信息",notes = "")
@ApiImplicitParams({
})

16
tcm/src/main/java/com/ccsens/tcm/api/ImportController.java

@ -1,22 +1,14 @@
package com.ccsens.tcm.api;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ccsens.cloudutil.feign.TallFeignClient;
import com.ccsens.tcm.bean.po.CommonFile;
import com.ccsens.tcm.bean.vo.FileVo;
import com.ccsens.tcm.service.IImportService;
import com.ccsens.tcm.uitl.Constant;
import com.ccsens.util.*;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;
import java.io.File;
import java.util.List;
/**
* @author
@ -48,8 +40,8 @@ public class ImportController {
@ApiOperation(value = "导入病史相关",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx")
@ApiImplicitParams({})
@RequestMapping(value = "/BSXG", method = RequestMethod.POST)
public JsonResponse importBsxg(@RequestParam(required = true) Part file) throws Exception{
@RequestMapping(value = "/specialCode", method = RequestMethod.POST)
public JsonResponse importCode(@RequestParam(required = true) Part file, String code) throws Exception{
//1.上传文件
String allowedExts = "xls,xlsx";
@ -57,13 +49,13 @@ public class ImportController {
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File excelFile = new File(dir+path);
importService.importBsxg(excelFile, Constant.Report.CODE_BSXG);
importService.importQuestion(excelFile, code);
log.info("导入病史相关成功");
return JsonResponse.newInstance().ok();
}
@ApiOperation(value = "导入病史相关",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx")
@ApiOperation(value = "导入全部试题",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx")
@ApiImplicitParams({})
@RequestMapping(value = "/all", method = RequestMethod.POST)
public JsonResponse importAll(@RequestParam(required = true) Part file) throws Exception{

15
tcm/src/main/java/com/ccsens/tcm/bean/dto/PatientDto.java

@ -5,10 +5,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.*;
import java.util.Date;
import java.util.List;
@ -20,14 +17,16 @@ public class PatientDto {
@Data
@ApiModel("保存患者基本信息")
public static class SavePatient {
// @ApiModelProperty("住院号")
// private String hospitalization;
@NotBlank(message = "请输入住院号")
@ApiModelProperty("住院号")
private String hospitalization;
@NotNull(message = "请选择对照组")
@ApiModelProperty("对照组id")
private Long inpatientId;
@ApiModelProperty("录入状态:0:新建 1:数据搜集中 2数据搜集完成 3数据搜集超时 4:废弃")
private Byte inputStatus=0;
@ApiModelProperty("医院id")
private Long hospitalId;
// @ApiModelProperty("医院id")
// private Long hospitalId;
}
@Data
@ApiModel("查询患者基本信息")

15
tcm/src/main/java/com/ccsens/tcm/bean/dto/QuestionDto.java

@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author
@ -22,4 +23,18 @@ public class QuestionDto {
@ApiModelProperty("第几次录入信息,默认为0查询第一次")
private Integer nums = 0;
}
@Data
public static class QuestionHospitalDel{
private Long questionId;
private List<Long> hospitalIds;
public QuestionHospitalDel(){}
public QuestionHospitalDel(Long questionId, List<Long> hospitalIds) {
this.questionId = questionId;
this.hospitalIds = hospitalIds;
}
}
}

22
tcm/src/main/java/com/ccsens/tcm/bean/po/PatientInformation.java

@ -8,8 +8,12 @@ public class PatientInformation implements Serializable {
private String hospitalization;
private String code;
private Long inpatientId;
private Integer age;
private Byte inputStatus;
private Long hospitalId;
@ -40,6 +44,14 @@ public class PatientInformation implements Serializable {
this.hospitalization = hospitalization == null ? null : hospitalization.trim();
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code == null ? null : code.trim();
}
public Long getInpatientId() {
return inpatientId;
}
@ -48,6 +60,14 @@ public class PatientInformation implements Serializable {
this.inpatientId = inpatientId;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Byte getInputStatus() {
return inputStatus;
}
@ -104,7 +124,9 @@ public class PatientInformation implements Serializable {
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", hospitalization=").append(hospitalization);
sb.append(", code=").append(code);
sb.append(", inpatientId=").append(inpatientId);
sb.append(", age=").append(age);
sb.append(", inputStatus=").append(inputStatus);
sb.append(", hospitalId=").append(hospitalId);
sb.append(", userId=").append(userId);

130
tcm/src/main/java/com/ccsens/tcm/bean/po/PatientInformationExample.java

@ -235,6 +235,76 @@ public class PatientInformationExample {
return (Criteria) this;
}
public Criteria andCodeIsNull() {
addCriterion("code is null");
return (Criteria) this;
}
public Criteria andCodeIsNotNull() {
addCriterion("code is not null");
return (Criteria) this;
}
public Criteria andCodeEqualTo(String value) {
addCriterion("code =", value, "code");
return (Criteria) this;
}
public Criteria andCodeNotEqualTo(String value) {
addCriterion("code <>", value, "code");
return (Criteria) this;
}
public Criteria andCodeGreaterThan(String value) {
addCriterion("code >", value, "code");
return (Criteria) this;
}
public Criteria andCodeGreaterThanOrEqualTo(String value) {
addCriterion("code >=", value, "code");
return (Criteria) this;
}
public Criteria andCodeLessThan(String value) {
addCriterion("code <", value, "code");
return (Criteria) this;
}
public Criteria andCodeLessThanOrEqualTo(String value) {
addCriterion("code <=", value, "code");
return (Criteria) this;
}
public Criteria andCodeLike(String value) {
addCriterion("code like", value, "code");
return (Criteria) this;
}
public Criteria andCodeNotLike(String value) {
addCriterion("code not like", value, "code");
return (Criteria) this;
}
public Criteria andCodeIn(List<String> values) {
addCriterion("code in", values, "code");
return (Criteria) this;
}
public Criteria andCodeNotIn(List<String> values) {
addCriterion("code not in", values, "code");
return (Criteria) this;
}
public Criteria andCodeBetween(String value1, String value2) {
addCriterion("code between", value1, value2, "code");
return (Criteria) this;
}
public Criteria andCodeNotBetween(String value1, String value2) {
addCriterion("code not between", value1, value2, "code");
return (Criteria) this;
}
public Criteria andInpatientIdIsNull() {
addCriterion("inpatient_id is null");
return (Criteria) this;
@ -295,6 +365,66 @@ public class PatientInformationExample {
return (Criteria) this;
}
public Criteria andAgeIsNull() {
addCriterion("age is null");
return (Criteria) this;
}
public Criteria andAgeIsNotNull() {
addCriterion("age is not null");
return (Criteria) this;
}
public Criteria andAgeEqualTo(Integer value) {
addCriterion("age =", value, "age");
return (Criteria) this;
}
public Criteria andAgeNotEqualTo(Integer value) {
addCriterion("age <>", value, "age");
return (Criteria) this;
}
public Criteria andAgeGreaterThan(Integer value) {
addCriterion("age >", value, "age");
return (Criteria) this;
}
public Criteria andAgeGreaterThanOrEqualTo(Integer value) {
addCriterion("age >=", value, "age");
return (Criteria) this;
}
public Criteria andAgeLessThan(Integer value) {
addCriterion("age <", value, "age");
return (Criteria) this;
}
public Criteria andAgeLessThanOrEqualTo(Integer value) {
addCriterion("age <=", value, "age");
return (Criteria) this;
}
public Criteria andAgeIn(List<Integer> values) {
addCriterion("age in", values, "age");
return (Criteria) this;
}
public Criteria andAgeNotIn(List<Integer> values) {
addCriterion("age not in", values, "age");
return (Criteria) this;
}
public Criteria andAgeBetween(Integer value1, Integer value2) {
addCriterion("age between", value1, value2, "age");
return (Criteria) this;
}
public Criteria andAgeNotBetween(Integer value1, Integer value2) {
addCriterion("age not between", value1, value2, "age");
return (Criteria) this;
}
public Criteria andInputStatusIsNull() {
addCriterion("input_status is null");
return (Criteria) this;

11
tcm/src/main/java/com/ccsens/tcm/bean/po/Question.java

@ -17,6 +17,8 @@ public class Question implements Serializable {
private Byte type;
private Byte fillStatus;
private BigDecimal referenceLower;
private BigDecimal referenceUpper;
@ -85,6 +87,14 @@ public class Question implements Serializable {
this.type = type;
}
public Byte getFillStatus() {
return fillStatus;
}
public void setFillStatus(Byte fillStatus) {
this.fillStatus = fillStatus;
}
public BigDecimal getReferenceLower() {
return referenceLower;
}
@ -169,6 +179,7 @@ public class Question implements Serializable {
sb.append(", sort=").append(sort);
sb.append(", units=").append(units);
sb.append(", type=").append(type);
sb.append(", fillStatus=").append(fillStatus);
sb.append(", referenceLower=").append(referenceLower);
sb.append(", referenceUpper=").append(referenceUpper);
sb.append(", relevanceOptionId=").append(relevanceOptionId);

60
tcm/src/main/java/com/ccsens/tcm/bean/po/QuestionExample.java

@ -496,6 +496,66 @@ public class QuestionExample {
return (Criteria) this;
}
public Criteria andFillStatusIsNull() {
addCriterion("fill_status is null");
return (Criteria) this;
}
public Criteria andFillStatusIsNotNull() {
addCriterion("fill_status is not null");
return (Criteria) this;
}
public Criteria andFillStatusEqualTo(Byte value) {
addCriterion("fill_status =", value, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusNotEqualTo(Byte value) {
addCriterion("fill_status <>", value, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusGreaterThan(Byte value) {
addCriterion("fill_status >", value, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusGreaterThanOrEqualTo(Byte value) {
addCriterion("fill_status >=", value, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusLessThan(Byte value) {
addCriterion("fill_status <", value, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusLessThanOrEqualTo(Byte value) {
addCriterion("fill_status <=", value, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusIn(List<Byte> values) {
addCriterion("fill_status in", values, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusNotIn(List<Byte> values) {
addCriterion("fill_status not in", values, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusBetween(Byte value1, Byte value2) {
addCriterion("fill_status between", value1, value2, "fillStatus");
return (Criteria) this;
}
public Criteria andFillStatusNotBetween(Byte value1, Byte value2) {
addCriterion("fill_status not between", value1, value2, "fillStatus");
return (Criteria) this;
}
public Criteria andReferenceLowerIsNull() {
addCriterion("reference_lower is null");
return (Criteria) this;

6
tcm/src/main/java/com/ccsens/tcm/bean/vo/QuestionVo.java

@ -117,8 +117,10 @@ public class QuestionVo {
private int sort;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("记录类型 0:只记录1次数据,1:记录3次,分别为0,14,90天 ,2:记录两次,分别是180,365")
private byte reportType;
// @ApiModelProperty("记录类型 0:只记录1次数据,1:记录3次,分别为0,14,90天 ,2:记录两次,分别是180,365")
// private byte reportType;
@ApiModelProperty("记录天数列表")
private List<Byte> reportTypes;
@ApiModelProperty("题目信息")
private List<PatientQuestion> questionVos;
@ApiModelProperty("子类型")

16
tcm/src/main/java/com/ccsens/tcm/persist/dao/QuestionDao.java

@ -59,4 +59,20 @@ public interface QuestionDao extends QuestionMapper {
List<QuestionVo.SubjectLists> queryQuestion();
List<QuestionVo.SubjectLists> queryQuestion1();
/**
* 根据code和医院查询试题
* @param code 试题编码
* @param sort 排序
* @param hospitalIds 医院ID
* @return 试题
*/
Question getByCodeAndHospitals(@Param("code") String code, @Param("sort") int sort, @Param("hospitalIds") List<Long> hospitalIds);
/**
* 查询记录时间
* @param code code
* @return 记录时间
*/
List<Byte> queryTimesByCode(@Param("code") String code);
}

13
tcm/src/main/java/com/ccsens/tcm/persist/dao/QuestionHospitalDao.java

@ -1,5 +1,6 @@
package com.ccsens.tcm.persist.dao;
import com.ccsens.tcm.bean.dto.QuestionDto;
import com.ccsens.tcm.bean.po.QuestionHospital;
import com.ccsens.tcm.persist.mapper.QuestionHospitalMapper;
import org.apache.ibatis.annotations.Param;
@ -14,4 +15,16 @@ public interface QuestionHospitalDao extends QuestionHospitalMapper {
* @return 医院ID
*/
List<QuestionHospital> queryAll(@Param("type") Byte type);
/**
* 批量删除
* @param questionHospitalDelList 试题ID 和医院ID
*/
void deleteBatch(@Param("list") List<QuestionDto.QuestionHospitalDel> questionHospitalDelList);
/**
* 批量添加
* @param questionHospitals 试题ID和医院ID
*/
void insertBatch(@Param("list") List<QuestionHospital> questionHospitals);
}

7
tcm/src/main/java/com/ccsens/tcm/persist/dao/ReportCodeDao.java

@ -1,5 +1,6 @@
package com.ccsens.tcm.persist.dao;
import com.ccsens.tcm.bean.po.QuestionRecordTime;
import com.ccsens.tcm.bean.po.ReportCode;
import com.ccsens.tcm.bean.vo.QuestionVo;
import com.ccsens.tcm.persist.mapper.ReportCodeMapper;
@ -37,4 +38,10 @@ public interface ReportCodeDao extends ReportCodeMapper {
* @return
*/
List<String> queryCodeAll();
/**
* 存储关联关系
* @param recordTimes 题目记录时间表
*/
void insertTimesBatch(@Param("list") List<QuestionRecordTime> recordTimes);
}

2
tcm/src/main/java/com/ccsens/tcm/service/IImportService.java

@ -21,7 +21,7 @@ public interface IImportService {
* @param excelFile excel文件
* @param codeBsxg sheet名
*/
void importBsxg(File excelFile, String codeBsxg) throws Exception;
void importQuestion(File excelFile, String codeBsxg) throws Exception;
/**
* 更新redis内的试题

124
tcm/src/main/java/com/ccsens/tcm/service/ImportService.java

@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.StrUtil;
import com.ccsens.tcm.bean.dto.CodeVo;
import com.ccsens.tcm.bean.dto.QuestionDto;
import com.ccsens.tcm.bean.po.*;
import com.ccsens.tcm.bean.vo.QuestionVo;
import com.ccsens.tcm.persist.dao.QuestionDao;
@ -15,6 +16,7 @@ import com.ccsens.tcm.persist.mapper.QuestionRecordTimeMapper;
import com.ccsens.tcm.uitl.Constant;
import com.ccsens.util.*;
import com.ccsens.util.exception.BaseException;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@ -58,27 +60,31 @@ public class ImportService implements IImportService {
List<Object[]> reports = PoiUtil.readExce(excelFile, 0, null,1, false);
log.info("读取数据完成");
List<ReportCode> reportList = new ArrayList<>();
List<QuestionRecordTime> recordTimes = new ArrayList<>();
for (Object[] objs: reports) {
if (!(objs != null && objs.length >= 2 && !StringUtils.isEmpty(objs[0]) && !StringUtils.isEmpty(objs[1]))) {
log.info("测评报告单数据不足,跳转下一行");
continue;
}
ReportCode report = initReport(objs);
ReportCode report = initReport(objs, recordTimes);
reportList.add(report);
}
if (!reportList.isEmpty()) {
reportCodeDao.insertBatch(reportList);
}
if (CollectionUtil.isNotEmpty(recordTimes)) {
reportCodeDao.insertTimesBatch(recordTimes);
}
}
@Override
public void importBsxg(File excelFile, String codeBsxg) throws Exception {
log.info("导入试题参数:{}, {}", excelFile, codeBsxg);
public void importQuestion(File excelFile, String code) throws Exception {
log.info("导入试题参数:{}, {}", excelFile, code);
List<String> types = new ArrayList<>();
if (Constant.Question.ALL.equalsIgnoreCase(codeBsxg)) {
if (Constant.Question.ALL.equalsIgnoreCase(code)) {
types.addAll(Constant.Question.QUESTION_TYPE);
} else {
types.add(codeBsxg);
types.add(code);
}
log.info("导入试题类型:{}", types);
for (String sheetName: types) {
@ -106,10 +112,9 @@ public class ImportService implements IImportService {
}
// 医院
Map<String, Long> hospitalMap = new HashMap<>();
hospitals.forEach(hospital -> {
hospitalMap.put(hospital.getCode(), hospital.getId());
});
hospitals.forEach(hospital -> hospitalMap.put(hospital.getCode(), hospital.getId()));
List<QuestionHospital> questionHospitals = new ArrayList<>();
List<QuestionDto.QuestionHospitalDel> questionHospitalDelList = new ArrayList<>();
for(Object[] objs : questions) {
if (objs == null || objs.length < 4 || StringUtils.isEmpty(objs[2])) {
@ -121,7 +126,7 @@ public class ImportService implements IImportService {
String type = String.valueOf(objs[0]);
switch (type) {
case "题目" :
Question question = initQuestion(objs, code, sort,null, hospitalMap);
Question question = initQuestion(objs, code, sort,null, hospitalMap, questionHospitals, questionHospitalDelList);
questionId = question.getId();
questionList.add(question);
break;
@ -137,7 +142,7 @@ public class ImportService implements IImportService {
if (optionList.isEmpty()) {
break;
}
Question relevanceQuestion = initQuestion(objs, code, sort, optionId, hospitalMap);
Question relevanceQuestion = initQuestion(objs, code, sort, optionId, hospitalMap, questionHospitals, questionHospitalDelList);
questionList.add(relevanceQuestion);
optionQuestionId = relevanceQuestion.getId();
break;
@ -159,6 +164,14 @@ public class ImportService implements IImportService {
if (!optionList.isEmpty()) {
questionOptionDao.insertBatch(optionList);
}
if (CollectionUtil.isNotEmpty(questionHospitalDelList)) {
questionHospitalDao.deleteBatch(questionHospitalDelList);
log.info("删除试题和医院的旧关联");
}
if (CollectionUtil.isNotEmpty(questionHospitals)) {
questionHospitalDao.insertBatch(questionHospitals);
log.info("批量添加试题和医院的关联");
}
}
/**
@ -195,9 +208,10 @@ public class ImportService implements IImportService {
/**
* 初始化报告单对象若该对象已存在则返回null
* @param objs 表格内读取的数据
* @param recordTimes
* @return 返回测试类型
*/
private ReportCode initReport(Object[] objs) {
private ReportCode initReport(Object[] objs, List<QuestionRecordTime> recordTimes) {
ReportCodeExample example = new ReportCodeExample();
example.createCriteria().andCodeEqualTo((String) objs[0]);
List<ReportCode> list = reportCodeDao.selectByExample(example);
@ -216,9 +230,9 @@ public class ImportService implements IImportService {
report.setCode((String) objs[0]);
report.setName((String) objs[1]);
report.setParentCode(objs.length > 2 && !StringUtils.isEmpty(objs[2]) ? (String) objs[2] : Constant.STRING_DEFAULT);
if (objs.length > 3 && objs[3] != null && ((String)objs[3]).length() > 0) {
// report.setReportType(objs.length > 3 && StringUtil.checkNum(String.valueOf(objs[3]),false)? Byte.parseByte((String) objs[3]) : Constant.NUMBER_DEFAULT);
String types = (String)objs[3];
int typeIndex = 3;
if (objs.length > typeIndex && objs[typeIndex] != null && ((String)objs[typeIndex]).length() > 0) {
String types = (String)objs[typeIndex];
String[] split = types.split("[,,]");
for (String type: split) {
@ -228,7 +242,7 @@ public class ImportService implements IImportService {
time.setId(snowflake.nextId());
time.setCode(report.getCode());
time.setRecodeTime(Integer.parseInt(type));
questionRecordTimeMapper.insertSelective(time);
recordTimes.add(time);
}
}
@ -242,25 +256,42 @@ public class ImportService implements IImportService {
return report;
}
/**
* 初始化试题
* @param objs 表格内读取的数据
* @param evaluationCode 试题类型
* @param code 试题类型
* @param sort 排序
* @param hospitalMap
* @param hospitalMap 医院code和ID
* @param questionHospitals 试题医院关联
* @param QuestionHospitalDelList 要删除的条件
* @return 返回试题
*/
private Question initQuestion(Object[] objs, String evaluationCode, int sort, Long optionId, Map<String, Long> hospitalMap) {
private Question initQuestion(Object[] objs, String code, int sort, Long optionId, Map<String, Long> hospitalMap, List<QuestionHospital> questionHospitals, List<QuestionDto.QuestionHospitalDel> QuestionHospitalDelList) {
// 查询关联医院
List<Long> hospitalIds = new ArrayList<>();
int hospitalIndex = 10;
if (objs.length > hospitalIndex && !StringUtils.isEmpty(objs[hospitalIndex])) {
String[] hospitalCodes = ((String) objs[hospitalIndex]).split("[,,]");
for (String hospitalCode:hospitalCodes) {
hospitalIds.add(hospitalMap.get(hospitalCode));
}
} else {
hospitalMap.forEach((key, value)->hospitalIds.add(value));
}
// 查询试题是否已经存在
QuestionExample example = new QuestionExample();
example.createCriteria().andCodeEqualTo(evaluationCode).andSortEqualTo(sort);
List<Question> questions = questionDao.selectByExample(example);
Question question;
if (CollectionUtils.isEmpty(questions)) {
example.createCriteria().andCodeEqualTo(code).andSortEqualTo(sort);
Question question = questionDao.getByCodeAndHospitals(code, sort, hospitalIds);
if (question == null) {
question = new Question();
question.setId(snowflake.nextId());
} else {
question = questions.get(0);
// 题存在 -->删除原有关联关系
QuestionHospitalDelList.add(new QuestionDto.QuestionHospitalDel(question.getId(), hospitalIds));
}
question.setCode(StringUtils.isEmpty(objs[1]) ? Constant.STRING_DEFAULT : String.valueOf(objs[1]));
question.setQuestion(StringUtils.isEmpty(objs[2]) ? Constant.STRING_DEFAULT : String.valueOf(objs[2]));
question.setSort(sort);
@ -282,28 +313,20 @@ public class ImportService implements IImportService {
}
}
question.setRelevanceOptionId(optionId == null ? 0 : optionId);
// 设置是否必填
int fillStatusIndex = 11;
boolean hasFillStatus = objs.length > fillStatusIndex && objs[fillStatusIndex] != null
&& StringUtil.isMatch((String)objs[fillStatusIndex], StringUtil.NUMBER_DOUBLE);
byte fillType = hasFillStatus ? Byte.parseByte((String)objs[fillStatusIndex]) : 1;
// 设置关联那个医院
List<Long> hospitalIds = new ArrayList<>();
int hospitalIndex = 10;
if (objs.length > hospitalIndex && !StringUtils.isEmpty(objs[hospitalIndex])) {
String[] codes = ((String) objs[hospitalIndex]).split("[,,]");
for (String code:codes) {
hospitalIds.add(hospitalMap.get(code));
}
} else {
hospitalMap.forEach((key, value)->{
hospitalIds.add(value);
});
}
hospitalIds.forEach(id->{
for (Long id: hospitalIds) {
QuestionHospital questionHospital = new QuestionHospital();
questionHospital.setId(snowflake.nextId());
questionHospital.setQuestionId(question.getId());
questionHospital.setHospitalId(id);
questionHospitalDao.insertSelective(questionHospital);
});
questionHospital.setFillType(fillType);
questionHospitals.add(questionHospital);
}
log.info("导入试题:{}", question);
return question;
}
@ -341,6 +364,10 @@ public class ImportService implements IImportService {
*/
private List<QuestionVo.CodeQuestionVo> getQuestionByCode(String code) {
List<QuestionVo.CodeQuestionVo> subCodeQuestionVos = questionDao.queryQuestionByCode(code);
return getCodeQuestionVos(subCodeQuestionVos);
}
private List<QuestionVo.CodeQuestionVo> getCodeQuestionVos(List<QuestionVo.CodeQuestionVo> subCodeQuestionVos) {
if(CollectionUtil.isNotEmpty(subCodeQuestionVos)){
subCodeQuestionVos.forEach(question -> {
if(CollectionUtil.isNotEmpty(question.getOptionVos())){
@ -360,24 +387,13 @@ public class ImportService implements IImportService {
*/
private List<QuestionVo.CodeQuestionVo> queryOptionQuestion(Long optionId){
List<QuestionVo.CodeQuestionVo> questionVos = questionDao.queryQuestionByOption(optionId);
if(CollectionUtil.isNotEmpty(questionVos)){
questionVos.forEach(question -> {
if(CollectionUtil.isNotEmpty(question.getOptionVos())){
question.getOptionVos().forEach(option -> {
if(option.getAfterOperation() == Constant.AFTER_OPERATION){
option.setQuestionVos(queryOptionQuestion(option.getId()));
}
});
}
});
}
return questionVos;
return getCodeQuestionVos(questionVos);
}
/**
* 查看类型下的试题信息
* @param param
* @param param 试题类型
*/
@Override
public List<QuestionVo.ReportCodeVo> getQuestion(CodeVo.QuestionCode param) {

24
tcm/src/main/java/com/ccsens/tcm/service/PatientService.java

@ -74,28 +74,31 @@ public class PatientService implements IPatientService {
@Override
public void savePatient(PatientDto.SavePatient param, Long userId) {
// PatientInformationExample patientInformationExample=new PatientInformationExample();
// patientInformationExample.createCriteria().andHospitalizationEqualTo(param.getHospitalization()).andRecStatusEqualTo((byte)0);
// long l = patientInformationMapper.countByExample(patientInformationExample);
// if(l>0){
// throw new BaseException(CodeEnum.ZHUYUANIDCHONGFU);
// }
Hospital hospital = selUserIdToHosId(userId);
// 判断住院号是否存在
PatientInformationExample patientInformationExample=new PatientInformationExample();
patientInformationExample.createCriteria().andHospitalizationEqualTo(param.getHospitalization())
.andHospitalIdEqualTo(hospital.getId()).andRecStatusEqualTo((byte)0);
long l = patientInformationMapper.countByExample(patientInformationExample);
if(l>0){
throw new BaseException(CodeEnum.ZHUYUANIDCHONGFU);
}
Inpatient inpatient = inpatientMapper.selectByPrimaryKey(param.getInpatientId());
if (inpatient == null) {
throw new BaseException(CodeEnum.PARAM_ERROR);
}
log.info("医院:{},对照组:{}", hospital, inpatient);
param.setHospitalId(hospital.getId());
PatientInformation patientInformation=new PatientInformation();
BeanUtils.copyProperties(param,patientInformation);
patientInformation.setId(snowflake.nextId());
patientInformation.setHospitalId(hospital.getId());
// 生成编号
long incr = redisUtil.incr(Constant.Redis.HOSPITAL_NUM + hospital.getCode(), 1) + 1;
DecimalFormat df=new DecimalFormat("000");
String num = hospital.getCode() + "" + inpatient.getCode() + df.format(incr);
String num = hospital.getCode() + inpatient.getCode() + df.format(incr);
log.info("编号:{}", num);
patientInformation.setHospitalization(num);
patientInformation.setCode(num);
patientInformationMapper.insertSelective(patientInformation);
}
@ -107,14 +110,13 @@ public class PatientService implements IPatientService {
*/
@Override
public Hospital selUserIdToHosId(Long userId) {
Doctor doctor=null;
DoctorExample doctorExample=new DoctorExample();
doctorExample.createCriteria().andUserIdEqualTo(userId).andRecStatusEqualTo((byte)0);
List<Doctor> doctors = doctorMapper.selectByExample(doctorExample);
if(doctors.size()!=1){
throw new BaseException(CodeEnum.MEIYOUGAIYISHENG);
}
doctor=doctors.get(0);
Doctor doctor=doctors.get(0);
return hospitalMapper.selectByPrimaryKey(doctor.getHospitalId());
}

7
tcm/src/main/java/com/ccsens/tcm/service/QuestionService.java

@ -1,12 +1,14 @@
package com.ccsens.tcm.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.tcm.bean.dto.QuestionDto;
import com.ccsens.tcm.bean.po.PatientInformation;
import com.ccsens.tcm.bean.vo.QuestionVo;
import com.ccsens.tcm.persist.dao.QuestionDao;
import com.ccsens.tcm.persist.dao.ReportCodeDao;
import com.ccsens.tcm.persist.mapper.PatientInformationMapper;
import com.ccsens.tcm.persist.mapper.QuestionRecordTimeMapper;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.RedisUtil;
import com.ccsens.util.exception.BaseException;
@ -48,6 +50,11 @@ public class QuestionService implements IQuestionService{
// if(patientCode.getReportType() == 0){
// param.setNums(0);
// }
if (StrUtil.isNotEmpty(param.getCode())) {
// 当查询某一code的题目时,查询该code共有多少天的测评
patientCode.setReportTypes(questionDao.queryTimesByCode(param.getCode()));
}
//根据一级code查询试题及答案
List<QuestionVo.PatientQuestion> patientQuestionNumList = questionDao.getQuestionByCodeAndPatientId(patientCode.getCode(),param.getId(),param.getNums(), patient.getHospitalId());
//查询选项关联的试题及答案

71
tcm/src/main/resources/mapper_dao/QuestionDao.xml

@ -1,21 +1,7 @@
<?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.ccsens.tcm.persist.dao.QuestionDao">
<resultMap id="BaseResultMap" type="com.ccsens.tcm.bean.po.Question">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="question" jdbcType="VARCHAR" property="question" />
<result column="code" jdbcType="VARCHAR" property="code" />
<result column="sort" jdbcType="INTEGER" property="sort" />
<result column="units" jdbcType="VARCHAR" property="units" />
<result column="type" jdbcType="TINYINT" property="type" />
<result column="relevance_option_id" jdbcType="BIGINT" property="relevanceOptionId" />
<result column="search_criteria" jdbcType="TINYINT" property="searchCriteria" />
<result column="remark" jdbcType="VARCHAR" property="remark" />
<result column="operator" jdbcType="BIGINT" property="operator" />
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
</resultMap>
<insert id="insertBatch">
replace into t_question (id, question, code,
sort, units, type,
@ -310,20 +296,45 @@
<result column="question" property="name"/>
</collection>
</resultMap>
<select id="queryQuestion1" resultMap="queryQuestion1Map">
select trc.id,
trc.`code`,
trc.`name`,
tq.id AS id2,
tq.question
FROM
t_report_code trc, t_question tq
WHERE
trc.LEVEL = 1
AND trc.rec_status =0
and tq.CODE = trc.CODE
AND tq.rec_status = 0
order by trc.sort,tq.sort
</select>
<select id="queryQuestion1" resultMap="queryQuestion1Map">
select
trc.id,
trc.`code`,
trc.`name`,
tq.id AS id2,
tq.question
FROM
t_report_code trc, t_question tq
WHERE
trc.LEVEL = 1
AND trc.rec_status =0
and tq.CODE = trc.CODE
AND tq.rec_status = 0
order by trc.sort,tq.sort
</select>
<select id="getByCodeAndHospitals" resultMap="com.ccsens.tcm.persist.mapper.QuestionMapper.BaseResultMap">
SELECT DISTINCT
q.*
FROM
t_question q,
t_question_hospital h
WHERE
q.id = h.question_id
AND q.CODE = #{code}
AND q.sort = #{sort}
<if test="hospitalIds != null and hospitalIds.size() > 0">
AND h.hospital_id IN
<foreach collection="hospitalIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
ORDER BY
created_at DESC
LIMIT 1
</select>
<select id="queryTimesByCode" resultType="java.lang.Byte">
select distinct recode_time from t_question_record_time
where code = #{code} and rec_status = 0;
</select>
</mapper>

18
tcm/src/main/resources/mapper_dao/QuestionHospitalDao.xml

@ -1,6 +1,24 @@
<?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.ccsens.tcm.persist.dao.QuestionHospitalDao">
<insert id="insertBatch">
insert into t_question_hospital(id, question_id, hospital_id, fill_type) values
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.questionId}, #{item.hospitalId}, #{item.fillType})
</foreach>
</insert>
<delete id="deleteBatch">
update t_question_hospital set rec_status = 2
where
<foreach collection="list" item="delItem" separator="or">
(question_id = #{delItem.questionId} and hospital_id in
<foreach collection="delItem.hospitalIds" item="item" separator="," open="(" close=")" >
#{item}
</foreach>
and rec_status = 0
)
</foreach>
</delete>
<select id="queryAll" resultType="com.ccsens.tcm.bean.po.QuestionHospital">
select id from t_hospital where rec_status = 0
<if test="type != null and type != ''">

2
tcm/src/main/resources/mapper_dao/QuestionOcrDao.xml

@ -8,7 +8,7 @@
o.id,
o.CODE,
o.sort,
o.hospital,
o.hospital_id as hospital,
o.START,
o.END
FROM

10
tcm/src/main/resources/mapper_dao/ReportCodeDao.xml

@ -27,9 +27,15 @@
#{report.sort,jdbcType=INTEGER}, #{report.remark,jdbcType=VARCHAR}, #{report.reportType,jdbcType=TINYINT})
</foreach>
</insert>
<insert id="insertTimesBatch">
insert into t_question_record_time(id, code, recode_time) values
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.code}, #{item.recodeTime})
</foreach>
</insert>
<resultMap id="selectCodeAll" type="com.ccsens.tcm.bean.vo.QuestionVo$ReportCodeVo">
<resultMap id="selectCodeAll" type="com.ccsens.tcm.bean.vo.QuestionVo$ReportCodeVo">
<id column="fId" jdbcType="BIGINT" property="id" />
<result column="fCode" jdbcType="VARCHAR" property="code" />
<result column="fName" jdbcType="VARCHAR" property="name" />
@ -105,7 +111,7 @@
<result column="sSort" jdbcType="INTEGER" property="sort" />
<result column="sRecordType" jdbcType="TINYINT" property="recordType" />
<result column="sRemark" jdbcType="VARCHAR" property="remark" />
<result column="sReportType" jdbcType="TINYINT" property="reportType" />
<!--<result column="sReportType" jdbcType="TINYINT" property="reportType" />-->
</collection>
</resultMap>

50
tcm/src/main/resources/mapper_raw/PatientInformationMapper.xml

@ -4,7 +4,9 @@
<resultMap id="BaseResultMap" type="com.ccsens.tcm.bean.po.PatientInformation">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="hospitalization" jdbcType="VARCHAR" property="hospitalization" />
<result column="code" jdbcType="VARCHAR" property="code" />
<result column="inpatient_id" jdbcType="BIGINT" property="inpatientId" />
<result column="age" jdbcType="INTEGER" property="age" />
<result column="input_status" jdbcType="TINYINT" property="inputStatus" />
<result column="hospital_id" jdbcType="BIGINT" property="hospitalId" />
<result column="user_id" jdbcType="BIGINT" property="userId" />
@ -71,8 +73,8 @@
</where>
</sql>
<sql id="Base_Column_List">
id, hospitalization, inpatient_id, input_status, hospital_id, user_id, created_at,
update_at, rec_status
id, hospitalization, code, inpatient_id, age, input_status, hospital_id, user_id,
created_at, update_at, rec_status
</sql>
<select id="selectByExample" parameterType="com.ccsens.tcm.bean.po.PatientInformationExample" resultMap="BaseResultMap">
select
@ -105,14 +107,14 @@
</if>
</delete>
<insert id="insert" parameterType="com.ccsens.tcm.bean.po.PatientInformation">
insert into t_patient_information (id, hospitalization, inpatient_id,
input_status, hospital_id, user_id,
created_at, update_at, rec_status
)
values (#{id,jdbcType=BIGINT}, #{hospitalization,jdbcType=VARCHAR}, #{inpatientId,jdbcType=BIGINT},
#{inputStatus,jdbcType=TINYINT}, #{hospitalId,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT},
#{createdAt,jdbcType=TIMESTAMP}, #{updateAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}
)
insert into t_patient_information (id, hospitalization, code,
inpatient_id, age, input_status,
hospital_id, user_id, created_at,
update_at, rec_status)
values (#{id,jdbcType=BIGINT}, #{hospitalization,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR},
#{inpatientId,jdbcType=BIGINT}, #{age,jdbcType=INTEGER}, #{inputStatus,jdbcType=TINYINT},
#{hospitalId,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, #{createdAt,jdbcType=TIMESTAMP},
#{updateAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT})
</insert>
<insert id="insertSelective" parameterType="com.ccsens.tcm.bean.po.PatientInformation">
insert into t_patient_information
@ -123,9 +125,15 @@
<if test="hospitalization != null">
hospitalization,
</if>
<if test="code != null">
code,
</if>
<if test="inpatientId != null">
inpatient_id,
</if>
<if test="age != null">
age,
</if>
<if test="inputStatus != null">
input_status,
</if>
@ -152,9 +160,15 @@
<if test="hospitalization != null">
#{hospitalization,jdbcType=VARCHAR},
</if>
<if test="code != null">
#{code,jdbcType=VARCHAR},
</if>
<if test="inpatientId != null">
#{inpatientId,jdbcType=BIGINT},
</if>
<if test="age != null">
#{age,jdbcType=INTEGER},
</if>
<if test="inputStatus != null">
#{inputStatus,jdbcType=TINYINT},
</if>
@ -190,9 +204,15 @@
<if test="record.hospitalization != null">
hospitalization = #{record.hospitalization,jdbcType=VARCHAR},
</if>
<if test="record.code != null">
code = #{record.code,jdbcType=VARCHAR},
</if>
<if test="record.inpatientId != null">
inpatient_id = #{record.inpatientId,jdbcType=BIGINT},
</if>
<if test="record.age != null">
age = #{record.age,jdbcType=INTEGER},
</if>
<if test="record.inputStatus != null">
input_status = #{record.inputStatus,jdbcType=TINYINT},
</if>
@ -220,7 +240,9 @@
update t_patient_information
set id = #{record.id,jdbcType=BIGINT},
hospitalization = #{record.hospitalization,jdbcType=VARCHAR},
code = #{record.code,jdbcType=VARCHAR},
inpatient_id = #{record.inpatientId,jdbcType=BIGINT},
age = #{record.age,jdbcType=INTEGER},
input_status = #{record.inputStatus,jdbcType=TINYINT},
hospital_id = #{record.hospitalId,jdbcType=BIGINT},
user_id = #{record.userId,jdbcType=BIGINT},
@ -237,9 +259,15 @@
<if test="hospitalization != null">
hospitalization = #{hospitalization,jdbcType=VARCHAR},
</if>
<if test="code != null">
code = #{code,jdbcType=VARCHAR},
</if>
<if test="inpatientId != null">
inpatient_id = #{inpatientId,jdbcType=BIGINT},
</if>
<if test="age != null">
age = #{age,jdbcType=INTEGER},
</if>
<if test="inputStatus != null">
input_status = #{inputStatus,jdbcType=TINYINT},
</if>
@ -264,7 +292,9 @@
<update id="updateByPrimaryKey" parameterType="com.ccsens.tcm.bean.po.PatientInformation">
update t_patient_information
set hospitalization = #{hospitalization,jdbcType=VARCHAR},
code = #{code,jdbcType=VARCHAR},
inpatient_id = #{inpatientId,jdbcType=BIGINT},
age = #{age,jdbcType=INTEGER},
input_status = #{inputStatus,jdbcType=TINYINT},
hospital_id = #{hospitalId,jdbcType=BIGINT},
user_id = #{userId,jdbcType=BIGINT},

35
tcm/src/main/resources/mapper_raw/QuestionMapper.xml

@ -8,6 +8,7 @@
<result column="sort" jdbcType="INTEGER" property="sort" />
<result column="units" jdbcType="VARCHAR" property="units" />
<result column="type" jdbcType="TINYINT" property="type" />
<result column="fill_status" jdbcType="TINYINT" property="fillStatus" />
<result column="reference_lower" jdbcType="DECIMAL" property="referenceLower" />
<result column="reference_upper" jdbcType="DECIMAL" property="referenceUpper" />
<result column="relevance_option_id" jdbcType="BIGINT" property="relevanceOptionId" />
@ -77,8 +78,8 @@
</where>
</sql>
<sql id="Base_Column_List">
id, question, code, sort, units, type, reference_lower, reference_upper, relevance_option_id,
search_criteria, remark, operator, created_at, updated_at, rec_status
id, question, code, sort, units, type, fill_status, reference_lower, reference_upper,
relevance_option_id, search_criteria, remark, operator, created_at, updated_at, rec_status
</sql>
<select id="selectByExample" parameterType="com.ccsens.tcm.bean.po.QuestionExample" resultMap="BaseResultMap">
select
@ -113,16 +114,16 @@
<insert id="insert" parameterType="com.ccsens.tcm.bean.po.Question">
insert into t_question (id, question, code,
sort, units, type,
reference_lower, reference_upper, relevance_option_id,
search_criteria, remark, operator,
created_at, updated_at, rec_status
)
fill_status, reference_lower, reference_upper,
relevance_option_id, search_criteria, remark,
operator, created_at, updated_at,
rec_status)
values (#{id,jdbcType=BIGINT}, #{question,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR},
#{sort,jdbcType=INTEGER}, #{units,jdbcType=VARCHAR}, #{type,jdbcType=TINYINT},
#{referenceLower,jdbcType=DECIMAL}, #{referenceUpper,jdbcType=DECIMAL}, #{relevanceOptionId,jdbcType=BIGINT},
#{searchCriteria,jdbcType=TINYINT}, #{remark,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT},
#{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}
)
#{fillStatus,jdbcType=TINYINT}, #{referenceLower,jdbcType=DECIMAL}, #{referenceUpper,jdbcType=DECIMAL},
#{relevanceOptionId,jdbcType=BIGINT}, #{searchCriteria,jdbcType=TINYINT}, #{remark,jdbcType=VARCHAR},
#{operator,jdbcType=BIGINT}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP},
#{recStatus,jdbcType=TINYINT})
</insert>
<insert id="insertSelective" parameterType="com.ccsens.tcm.bean.po.Question">
insert into t_question
@ -145,6 +146,9 @@
<if test="type != null">
type,
</if>
<if test="fillStatus != null">
fill_status,
</if>
<if test="referenceLower != null">
reference_lower,
</if>
@ -192,6 +196,9 @@
<if test="type != null">
#{type,jdbcType=TINYINT},
</if>
<if test="fillStatus != null">
#{fillStatus,jdbcType=TINYINT},
</if>
<if test="referenceLower != null">
#{referenceLower,jdbcType=DECIMAL},
</if>
@ -248,6 +255,9 @@
<if test="record.type != null">
type = #{record.type,jdbcType=TINYINT},
</if>
<if test="record.fillStatus != null">
fill_status = #{record.fillStatus,jdbcType=TINYINT},
</if>
<if test="record.referenceLower != null">
reference_lower = #{record.referenceLower,jdbcType=DECIMAL},
</if>
@ -288,6 +298,7 @@
sort = #{record.sort,jdbcType=INTEGER},
units = #{record.units,jdbcType=VARCHAR},
type = #{record.type,jdbcType=TINYINT},
fill_status = #{record.fillStatus,jdbcType=TINYINT},
reference_lower = #{record.referenceLower,jdbcType=DECIMAL},
reference_upper = #{record.referenceUpper,jdbcType=DECIMAL},
relevance_option_id = #{record.relevanceOptionId,jdbcType=BIGINT},
@ -319,6 +330,9 @@
<if test="type != null">
type = #{type,jdbcType=TINYINT},
</if>
<if test="fillStatus != null">
fill_status = #{fillStatus,jdbcType=TINYINT},
</if>
<if test="referenceLower != null">
reference_lower = #{referenceLower,jdbcType=DECIMAL},
</if>
@ -356,6 +370,7 @@
sort = #{sort,jdbcType=INTEGER},
units = #{units,jdbcType=VARCHAR},
type = #{type,jdbcType=TINYINT},
fill_status = #{fillStatus,jdbcType=TINYINT},
reference_lower = #{referenceLower,jdbcType=DECIMAL},
reference_upper = #{referenceUpper,jdbcType=DECIMAL},
relevance_option_id = #{relevanceOptionId,jdbcType=BIGINT},

2
util/src/main/java/com/ccsens/util/WebConstant.java

@ -71,6 +71,8 @@ public class WebConstant {
Deliverable("{{deliverable}}", "交付物"),
Operate("{{operate}}", "操作"),
Principal("{{principal}}", "负责人"),
RoleName("{{roleName}}", "角色名"),
MemberName("{{memberName}}", "成员名"),
;
public String value;

Loading…
Cancel
Save