Browse Source

权限

master
zhizhi wu 4 years ago
parent
commit
3ae2a23850
  1. 9
      src/main/java/com/ccsens/carbasics/bean/dto/QuestionnaireDto.java
  2. 33
      src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireDetail.java
  3. 190
      src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireDetailExample.java
  4. 2
      src/main/java/com/ccsens/carbasics/bean/vo/QuestionnaireVo.java
  5. 7
      src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDao.java
  6. 18
      src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDepartmentDao.java
  7. 15
      src/main/java/com/ccsens/carbasics/persist/dao/OrganizationProjectDao.java
  8. 5
      src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDao.java
  9. 143
      src/main/java/com/ccsens/carbasics/service/AsyncService.java
  10. 10
      src/main/java/com/ccsens/carbasics/service/IAsyncService.java
  11. 8
      src/main/java/com/ccsens/carbasics/service/IQuestionnaireService.java
  12. 107
      src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java
  13. 19
      src/main/java/com/ccsens/carbasics/util/Constant.java
  14. 2
      src/main/java/com/ccsens/carbasics/util/DefaultCodeError.java
  15. 18
      src/main/resources/mapper_dao/OrganizationDao.xml
  16. 22
      src/main/resources/mapper_dao/OrganizationDepartmentDao.xml
  17. 19
      src/main/resources/mapper_dao/OrganizationProjectDao.xml
  18. 28
      src/main/resources/mapper_dao/QuestionnaireDao.xml
  19. 58
      src/main/resources/mapper_raw/QuestionnaireDetailMapper.xml
  20. 2
      src/main/resources/mbg.xml

9
src/main/java/com/ccsens/carbasics/bean/dto/QuestionnaireDto.java

@ -33,6 +33,9 @@ public class QuestionnaireDto {
@NotBlank(message = "请选择市")
@ApiModelProperty("市")
private String city;
@NotBlank(message = "请选择省")
@ApiModelProperty("省")
private String province;
@NotBlank(message = "请选择县/区")
@ApiModelProperty("县/区")
private String county;
@ -103,6 +106,12 @@ public class QuestionnaireDto {
private Long questionnaireId;
@ApiModelProperty("类型")
private Byte type;
@ApiModelProperty("是否介入治疗(0-否,1-是)")
private Byte pciStatus;
@ApiModelProperty("问卷详情id")
private Long detailId;
@ApiModelProperty("提交状态(0-保存,1-修改)")
private Byte submitStatus;
}
@Data

33
src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireDetail.java

@ -66,6 +66,12 @@ public class QuestionnaireDetail implements Serializable {
private Byte recStatus;
private Byte pciStatus;
private Byte submitStatus;
private String province;
private static final long serialVersionUID = 1L;
public Long getId() {
@ -316,6 +322,30 @@ public class QuestionnaireDetail implements Serializable {
this.recStatus = recStatus;
}
public Byte getPciStatus() {
return pciStatus;
}
public void setPciStatus(Byte pciStatus) {
this.pciStatus = pciStatus;
}
public Byte getSubmitStatus() {
return submitStatus;
}
public void setSubmitStatus(Byte submitStatus) {
this.submitStatus = submitStatus;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province == null ? null : province.trim();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@ -353,6 +383,9 @@ public class QuestionnaireDetail implements Serializable {
sb.append(", createdAt=").append(createdAt);
sb.append(", updatedAt=").append(updatedAt);
sb.append(", recStatus=").append(recStatus);
sb.append(", pciStatus=").append(pciStatus);
sb.append(", submitStatus=").append(submitStatus);
sb.append(", province=").append(province);
sb.append("]");
return sb.toString();
}

190
src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireDetailExample.java

@ -2024,6 +2024,196 @@ public class QuestionnaireDetailExample {
addCriterion("rec_status not between", value1, value2, "recStatus");
return (Criteria) this;
}
public Criteria andPciStatusIsNull() {
addCriterion("pci_status is null");
return (Criteria) this;
}
public Criteria andPciStatusIsNotNull() {
addCriterion("pci_status is not null");
return (Criteria) this;
}
public Criteria andPciStatusEqualTo(Byte value) {
addCriterion("pci_status =", value, "pciStatus");
return (Criteria) this;
}
public Criteria andPciStatusNotEqualTo(Byte value) {
addCriterion("pci_status <>", value, "pciStatus");
return (Criteria) this;
}
public Criteria andPciStatusGreaterThan(Byte value) {
addCriterion("pci_status >", value, "pciStatus");
return (Criteria) this;
}
public Criteria andPciStatusGreaterThanOrEqualTo(Byte value) {
addCriterion("pci_status >=", value, "pciStatus");
return (Criteria) this;
}
public Criteria andPciStatusLessThan(Byte value) {
addCriterion("pci_status <", value, "pciStatus");
return (Criteria) this;
}
public Criteria andPciStatusLessThanOrEqualTo(Byte value) {
addCriterion("pci_status <=", value, "pciStatus");
return (Criteria) this;
}
public Criteria andPciStatusIn(List<Byte> values) {
addCriterion("pci_status in", values, "pciStatus");
return (Criteria) this;
}
public Criteria andPciStatusNotIn(List<Byte> values) {
addCriterion("pci_status not in", values, "pciStatus");
return (Criteria) this;
}
public Criteria andPciStatusBetween(Byte value1, Byte value2) {
addCriterion("pci_status between", value1, value2, "pciStatus");
return (Criteria) this;
}
public Criteria andPciStatusNotBetween(Byte value1, Byte value2) {
addCriterion("pci_status not between", value1, value2, "pciStatus");
return (Criteria) this;
}
public Criteria andSubmitStatusIsNull() {
addCriterion("submit_status is null");
return (Criteria) this;
}
public Criteria andSubmitStatusIsNotNull() {
addCriterion("submit_status is not null");
return (Criteria) this;
}
public Criteria andSubmitStatusEqualTo(Byte value) {
addCriterion("submit_status =", value, "submitStatus");
return (Criteria) this;
}
public Criteria andSubmitStatusNotEqualTo(Byte value) {
addCriterion("submit_status <>", value, "submitStatus");
return (Criteria) this;
}
public Criteria andSubmitStatusGreaterThan(Byte value) {
addCriterion("submit_status >", value, "submitStatus");
return (Criteria) this;
}
public Criteria andSubmitStatusGreaterThanOrEqualTo(Byte value) {
addCriterion("submit_status >=", value, "submitStatus");
return (Criteria) this;
}
public Criteria andSubmitStatusLessThan(Byte value) {
addCriterion("submit_status <", value, "submitStatus");
return (Criteria) this;
}
public Criteria andSubmitStatusLessThanOrEqualTo(Byte value) {
addCriterion("submit_status <=", value, "submitStatus");
return (Criteria) this;
}
public Criteria andSubmitStatusIn(List<Byte> values) {
addCriterion("submit_status in", values, "submitStatus");
return (Criteria) this;
}
public Criteria andSubmitStatusNotIn(List<Byte> values) {
addCriterion("submit_status not in", values, "submitStatus");
return (Criteria) this;
}
public Criteria andSubmitStatusBetween(Byte value1, Byte value2) {
addCriterion("submit_status between", value1, value2, "submitStatus");
return (Criteria) this;
}
public Criteria andSubmitStatusNotBetween(Byte value1, Byte value2) {
addCriterion("submit_status not between", value1, value2, "submitStatus");
return (Criteria) this;
}
public Criteria andProvinceIsNull() {
addCriterion("province is null");
return (Criteria) this;
}
public Criteria andProvinceIsNotNull() {
addCriterion("province is not null");
return (Criteria) this;
}
public Criteria andProvinceEqualTo(String value) {
addCriterion("province =", value, "province");
return (Criteria) this;
}
public Criteria andProvinceNotEqualTo(String value) {
addCriterion("province <>", value, "province");
return (Criteria) this;
}
public Criteria andProvinceGreaterThan(String value) {
addCriterion("province >", value, "province");
return (Criteria) this;
}
public Criteria andProvinceGreaterThanOrEqualTo(String value) {
addCriterion("province >=", value, "province");
return (Criteria) this;
}
public Criteria andProvinceLessThan(String value) {
addCriterion("province <", value, "province");
return (Criteria) this;
}
public Criteria andProvinceLessThanOrEqualTo(String value) {
addCriterion("province <=", value, "province");
return (Criteria) this;
}
public Criteria andProvinceLike(String value) {
addCriterion("province like", value, "province");
return (Criteria) this;
}
public Criteria andProvinceNotLike(String value) {
addCriterion("province not like", value, "province");
return (Criteria) this;
}
public Criteria andProvinceIn(List<String> values) {
addCriterion("province in", values, "province");
return (Criteria) this;
}
public Criteria andProvinceNotIn(List<String> values) {
addCriterion("province not in", values, "province");
return (Criteria) this;
}
public Criteria andProvinceBetween(String value1, String value2) {
addCriterion("province between", value1, value2, "province");
return (Criteria) this;
}
public Criteria andProvinceNotBetween(String value1, String value2) {
addCriterion("province not between", value1, value2, "province");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {

2
src/main/java/com/ccsens/carbasics/bean/vo/QuestionnaireVo.java

@ -48,7 +48,7 @@ public class QuestionnaireVo {
private String questionnaireName;
@ApiModelProperty("问卷类型(0-卒中)")
private Byte type;
@ApiModelProperty("是否填写(0-否,1-是)")
@ApiModelProperty("填写状态(-1-未填写,0-保存,1-修改)")
private Byte isWrite;
@JsonIgnore
@ApiModelProperty("详情id")

7
src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDao.java

@ -88,4 +88,11 @@ public interface OrganizationDao extends OrganizationMapper {
* @return 医院和权限
*/
OrganizationVo.Template queryTemplate(@Param("projectId") Long projectId, @Param("userId") Long userId);
/**
* 根据医院名称查询医院
* @param hospitalName 医院名称
* @return 医院信息
*/
Organization queryByName(@Param("name") String hospitalName);
}

18
src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDepartmentDao.java

@ -0,0 +1,18 @@
package com.ccsens.carbasics.persist.dao;
import com.ccsens.carbasics.bean.po.OrganizationDepartment;
import com.ccsens.carbasics.persist.mapper.OrganizationDepartmentMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface OrganizationDepartmentDao extends OrganizationDepartmentMapper {
/**
* 根据机构id和部门code查询机构下的所有部门
* @param organizationId 机构id
* @param code 部门code
* @return 部门列表
*/
OrganizationDepartment queryByOrganization(@Param("organizationId") Long organizationId,@Param("code")String code);
}

15
src/main/java/com/ccsens/carbasics/persist/dao/OrganizationProjectDao.java

@ -0,0 +1,15 @@
package com.ccsens.carbasics.persist.dao;
import com.ccsens.carbasics.bean.po.OrganizationProject;
import com.ccsens.carbasics.persist.mapper.OrganizationProjectMapper;
import org.apache.ibatis.annotations.Param;
public interface OrganizationProjectDao extends OrganizationProjectMapper {
/**
* 查询机构是否有项目
* @param organizationId 机构id
* @return 项目
*/
OrganizationProject queryByOrganizationId(@Param("oid") Long organizationId);
}

5
src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDao.java

@ -31,9 +31,8 @@ public interface QuestionnaireDao extends QuestionnaireMapper {
/**
* 查询医院是否重复提交
* @param hospitalName 医院名称
* @param time 当前时间
* @param type
* @param qid 问卷id
* @return 数据
*/
QuestionnaireVo.QuestionnaireInfo queryRepeat(@Param("name") String hospitalName,@Param("time") Long time,@Param("type") Byte type);
QuestionnaireVo.QuestionnaireInfo queryRepeat(@Param("name") String hospitalName,@Param("qid") Long qid);
}

143
src/main/java/com/ccsens/carbasics/service/AsyncService.java

@ -1,6 +1,24 @@
package com.ccsens.carbasics.service;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.carbasics.bean.dto.ProjectDto;
import com.ccsens.carbasics.bean.dto.QuestionnaireDto;
import com.ccsens.carbasics.bean.po.Organization;
import com.ccsens.carbasics.bean.po.OrganizationDepartment;
import com.ccsens.carbasics.bean.po.OrganizationMember;
import com.ccsens.carbasics.bean.po.OrganizationProject;
import com.ccsens.carbasics.persist.dao.OrganizationDao;
import com.ccsens.carbasics.persist.dao.OrganizationDepartmentDao;
import com.ccsens.carbasics.persist.dao.OrganizationMemberDao;
import com.ccsens.carbasics.persist.dao.OrganizationProjectDao;
import com.ccsens.carbasics.util.Constant;
import com.ccsens.common.bean.dto.CMemberDto;
import com.ccsens.common.bean.dto.CProjectDto;
import com.ccsens.common.bean.vo.CProjectVo;
import com.ccsens.common.service.IMemberService;
import com.ccsens.common.service.IProjectService;
import com.ccsens.util.RedisUtil;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.util.message.SwitchoverProjectUtil;
import lombok.extern.slf4j.Slf4j;
@ -9,8 +27,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
/**
* @description:
@ -22,6 +42,25 @@ import java.util.Set;
@Async
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class AsyncService implements IAsyncService {
@Resource
private OrganizationDao organizationDao;
@Resource
private OrganizationDepartmentDao departmentDao;
@Resource
private OrganizationMemberDao organizationMemberDao;
@Resource
private Snowflake snowflake;
@Resource
private IProjectService projectService;
@Resource
private IMemberService memberService;
@Resource
private OrganizationProjectDao organizationProjectDao;
@Resource
private RedisUtil redisUtil;
@Override
public void switchProject(QueryDto<ProjectDto.SwitchProject> params) throws Exception {
log.info("开始接受切换项目");
@ -32,4 +71,108 @@ public class AsyncService implements IAsyncService {
ProjectDto.SwitchProject param = params.getParam();
SwitchoverProjectUtil.switchoverProject(userIds,param.getProjectId(), param.getUrl());
}
@Override
public void createHospitalOfNotExit(QuestionnaireDto.SaveQuestionnaire param, Long userId) throws Exception {
String departmentCode = "";
if (Constant.DepartmentAndCode.SHEN_JING.name.equals(param.getDepartments())) {
departmentCode = Constant.DepartmentAndCode.SHEN_JING.code;
}
if (Constant.DepartmentAndCode.NEI_KE.name.equals(param.getDepartments())) {
departmentCode = Constant.DepartmentAndCode.NEI_KE.code;
}
Organization organization = organizationDao.queryByName(param.getHospitalName());
if (ObjectUtil.isNull(organization)) {
//创建医院
Organization newOrganization = new Organization();
newOrganization.setId(snowflake.nextId());
newOrganization.setName(param.getHospitalName());
newOrganization.setLevel(param.getHospitalLevel());
organizationDao.insertSelective(newOrganization);
//创建部门
OrganizationDepartment department = new OrganizationDepartment();
department.setId(snowflake.nextId());
department.setName(param.getDepartments());
department.setCode(departmentCode);
department.setOrganizationId(newOrganization.getId());
departmentDao.insertSelective(department);
//创建用户
OrganizationMember member = new OrganizationMember();
member.setId(snowflake.nextId());
member.setUserId(userId);
member.setName(param.getName());
member.setContact(param.getPhone());
member.setPositionId(2L);
member.setDepartmentId(department.getId());
organizationMemberDao.insertSelective(member);
//创建项目
createProject(newOrganization.getId(),param,userId);
}else {
OrganizationDepartment department = departmentDao.queryByOrganization(organization.getId(),departmentCode);
if (ObjectUtil.isNull(department)) {
//创建部门
OrganizationDepartment newDepartment = new OrganizationDepartment();
newDepartment.setId(snowflake.nextId());
newDepartment.setCode(departmentCode);
newDepartment.setName(param.getDepartments());
newDepartment.setOrganizationId(organization.getId());
departmentDao.insertSelective(newDepartment);
//添加人员
OrganizationMember member = new OrganizationMember();
member.setId(snowflake.nextId());
member.setUserId(userId);
member.setName(param.getName());
member.setContact(param.getPhone());
member.setPositionId(2L);
member.setDepartmentId(newDepartment.getId());
organizationMemberDao.insertSelective(member);
//创建项目
createProject(organization.getId(),param,userId);
}else {
OrganizationMember member = new OrganizationMember();
member.setId(snowflake.nextId());
member.setUserId(userId);
member.setName(param.getName());
member.setContact(param.getPhone());
member.setPositionId(2L);
member.setDepartmentId(department.getId());
organizationMemberDao.insertSelective(member);
//创建项目
createProject(organization.getId(),param,userId);
}
}
}
public void createProject(Long organizationId,QuestionnaireDto.SaveQuestionnaire param,Long userId) {
OrganizationProject project = organizationProjectDao.queryByOrganizationId(organizationId);
if (ObjectUtil.isNull(project)) {
//创建项目
CProjectDto.CopyProject copyProject = new CProjectDto.CopyProject();
copyProject.setProjectId((Long) redisUtil.get(Constant.TEMPLATE_PROJECT_KEY_ORGANIZATION));
copyProject.setProjectName(param.getHospitalName());
CProjectVo.CopyProjectInfo copyProjectInfo = projectService.copyProject(copyProject, userId);
//添加角色
CMemberDto.SaveMember saveMember = new CMemberDto.SaveMember();
saveMember.setProjectId(copyProjectInfo.getId());
saveMember.setRoleName(Constant.RoleName.SHEN_NEI);
saveMember.setName(param.getName());
saveMember.setPhone(param.getPhone());
saveMember.setUserId(userId);
memberService.addMemberForProject(saveMember);
}else {
CMemberDto.SaveMember saveMember = new CMemberDto.SaveMember();
saveMember.setProjectId(project.getProjectId());
saveMember.setRoleName(Constant.RoleName.SHEN_NEI);
saveMember.setName(param.getName());
saveMember.setPhone(param.getPhone());
saveMember.setUserId(userId);
memberService.addMemberForProject(saveMember);
}
}
}

10
src/main/java/com/ccsens/carbasics/service/IAsyncService.java

@ -1,6 +1,7 @@
package com.ccsens.carbasics.service;
import com.ccsens.carbasics.bean.dto.ProjectDto;
import com.ccsens.carbasics.bean.dto.QuestionnaireDto;
import com.ccsens.util.bean.dto.QueryDto;
public interface IAsyncService {
@ -8,4 +9,13 @@ public interface IAsyncService {
* 通知TALL切换项目
* */
void switchProject(QueryDto<ProjectDto.SwitchProject> params) throws Exception;
/**
* 创建不存在的医院/部门/用户
* @param param 问卷调查信息
* @param userId 用户id
* @throws Exception 异常
*/
void createHospitalOfNotExit(QuestionnaireDto.SaveQuestionnaire param,Long userId) throws Exception;
}

8
src/main/java/com/ccsens/carbasics/service/IQuestionnaireService.java

@ -24,11 +24,13 @@ public interface IQuestionnaireService {
QuestionnaireVo.QuestionnaireInfo queryQuestionnaire(QuestionnaireDto.QueryQuestionnaire param, Long userId);
/**
* 保存问卷调查信息
* @param param 参数
*
* 保存问卷调查信息
* @param param 参数
* @param userId 用户id
* @throws Exception 异常
*/
void saveQuestionnaire(QuestionnaireDto.SaveQuestionnaire param, Long userId);
void saveQuestionnaire(QuestionnaireDto.SaveQuestionnaire param, Long userId) throws Exception;
/**
* 查询当前医院问卷是否填写

107
src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java

@ -14,6 +14,7 @@ import com.ccsens.carbasics.persist.dao.OrganizationDao;
import com.ccsens.carbasics.persist.dao.QuestionnaireDao;
import com.ccsens.carbasics.persist.dao.QuestionnaireDetailDao;
import com.ccsens.carbasics.persist.mapper.OrganizationProjectMapper;
import com.ccsens.carbasics.util.Constant;
import com.ccsens.carbasics.util.DefaultCodeError;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
@ -22,6 +23,7 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@ -40,6 +42,8 @@ public class QuestionnaireService implements IQuestionnaireService{
private Snowflake snowflake;
@Resource
private OrganizationDao organizationDao;
@Resource
private IAsyncService asyncService;
@Override
public List<QuestionnaireVo.AreaInfo> queryArea(QuestionnaireDto.QueryArea param, Long userId) {
@ -56,19 +60,86 @@ public class QuestionnaireService implements IQuestionnaireService{
}
@Override
public void saveQuestionnaire(QuestionnaireDto.SaveQuestionnaire param, Long userId) {
//查询是否重复提交
public void saveQuestionnaire(QuestionnaireDto.SaveQuestionnaire param, Long userId) throws Exception {
// TODO 校验介入治疗字段
//查询是否有已提交的,如果有只能保存
Long time = System.currentTimeMillis();
QuestionnaireVo.QuestionnaireInfo questionnaireInfo = questionnaireDao.queryRepeat(param.getHospitalName(),time,param.getType());
QuestionnaireVo.QuestionnaireInfo questionnaireInfo = questionnaireDao.queryRepeat(param.getHospitalName(),param.getQuestionnaireId());
if (ObjectUtil.isNotNull(questionnaireInfo.getDetail())) {
throw new BaseException(DefaultCodeError.HOSPITAL_REPEAT_SUBMIT);
//1.提交数据,2.不是修改
if (1 == param.getSubmitStatus() && ObjectUtil.isNull(param.getDetailId())) {
QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
BeanUtil.copyProperties(param,questionnaireDetail);
questionnaireDetail.setId(snowflake.nextId());
questionnaireDetail.setQuestionnaireId(param.getQuestionnaireId());
questionnaireDetail.setUserId(userId);
questionnaireDetail.setSubmitStatus((byte)0);
questionnaireDetailDao.insertSelective(questionnaireDetail);
}
//1.提交数据,2.修改,3.与库中已有提交人一致
if (1 == param.getSubmitStatus() && ObjectUtil.isNotNull(param.getDetailId()) && userId.equals(questionnaireInfo.getDetail().getUserId())) {
throw new BaseException(DefaultCodeError.HOSPITAL_REPEAT_SUBMIT);
}
//1.提交数据,2.修改,3.与库中已有提交人不一致
if (1 == param.getSubmitStatus() && ObjectUtil.isNotNull(param.getDetailId()) && !userId.equals(questionnaireInfo.getDetail().getUserId())) {
QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
BeanUtil.copyProperties(param,questionnaireDetail);
questionnaireDetail.setId(param.getDetailId());
questionnaireDetail.setQuestionnaireId(param.getQuestionnaireId());
questionnaireDetail.setUserId(userId);
questionnaireDetail.setSubmitStatus((byte)0);
questionnaireDetailDao.updateByPrimaryKeySelective(questionnaireDetail);
}
//1.保存数据,2.修改的数据为已提交数据
if (0 == param.getSubmitStatus() & ObjectUtil.isNotNull(param.getDetailId()) & param.getDetailId().equals(questionnaireInfo.getDetail().getId())) {
throw new BaseException(DefaultCodeError.HOSPITAL_REPEAT_SUBMIT);
}
//1.保存数据,2.非修改
if (0 == param.getSubmitStatus() && ObjectUtil.isNull(param.getDetailId())) {
QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
BeanUtil.copyProperties(param,questionnaireDetail);
questionnaireDetail.setId(snowflake.nextId());
questionnaireDetail.setQuestionnaireId(param.getQuestionnaireId());
questionnaireDetail.setUserId(userId);
questionnaireDetail.setSubmitStatus((byte)0);
questionnaireDetailDao.insertSelective(questionnaireDetail);
}
//1.保存数据,2.修改
if (0 == param.getSubmitStatus() && ObjectUtil.isNotNull(param.getDetailId())) {
QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
BeanUtil.copyProperties(param,questionnaireDetail);
questionnaireDetail.setId(param.getDetailId());
questionnaireDetail.setQuestionnaireId(param.getQuestionnaireId());
questionnaireDetail.setUserId(userId);
questionnaireDetail.setSubmitStatus((byte)0);
questionnaireDetailDao.updateByPrimaryKeySelective(questionnaireDetail);
}
}else {
// 新加数据
if (ObjectUtil.isNull(param.getDetailId())) {
QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
BeanUtil.copyProperties(param,questionnaireDetail);
questionnaireDetail.setId(snowflake.nextId());
questionnaireDetail.setQuestionnaireId(param.getQuestionnaireId());
questionnaireDetail.setUserId(userId);
questionnaireDetailDao.insertSelective(questionnaireDetail);
}
// 修改数据
if (ObjectUtil.isNotNull(param.getDetailId())) {
QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
BeanUtil.copyProperties(param,questionnaireDetail);
questionnaireDetail.setId(param.getDetailId());
questionnaireDetail.setUserId(userId);
questionnaireDetailDao.updateByPrimaryKeySelective(questionnaireDetail);
}
}
QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
BeanUtil.copyProperties(param,questionnaireDetail);
questionnaireDetail.setId(snowflake.nextId());
questionnaireDetail.setQuestionnaireId(param.getQuestionnaireId());
questionnaireDetailDao.insertSelective(questionnaireDetail);
//如果医院/部门/用户不存在,则创建对应内容
// asyncService.createHospitalOfNotExit(param,userId);
}
@ -78,15 +149,19 @@ public class QuestionnaireService implements IQuestionnaireService{
if (ObjectUtil.isNull(organization)) {
throw new BaseException(DefaultCodeError.NOT_ORGANIZATION);
}
List<QuestionnaireVo.WriteStatus> writeStatusList = questionnaireDao.queryNotWrite(organization.getName(),param.getTime());
for (QuestionnaireVo.WriteStatus writeStatus : writeStatusList) {
if (ObjectUtil.isNull(writeStatus.getDetailId())) {
writeStatus.setIsWrite((byte) 0);
}else {
writeStatus.setIsWrite((byte) 1);
//是否医院 否:返回null
if (3 == organization.getOrganizationType()){
List<QuestionnaireVo.WriteStatus> writeStatusList = questionnaireDao.queryNotWrite(organization.getName(),param.getTime());
for (QuestionnaireVo.WriteStatus writeStatus : writeStatusList) {
if (ObjectUtil.isNull(writeStatus.getIsWrite())) {
writeStatus.setIsWrite((byte) -1);
}else {
writeStatus.setIsWrite(writeStatus.getIsWrite());
}
}
return writeStatusList;
}
return writeStatusList;
return new ArrayList<>();
}
}

19
src/main/java/com/ccsens/carbasics/util/Constant.java

@ -119,6 +119,21 @@ public class Constant {
public static final String SHEN_WAI = "ShenWai";
}
public enum DepartmentAndCode {
/**
* 部门与code
*/
SHEN_JING("ShenJing","神经科"),
NEI_KE("NeiKe","内科");
public String name;
public String code;
DepartmentAndCode (String name, String code) {
this.name = name;
this.code = code;
}
}
/**职位相关*/
public static final class Position {
/**护士*/
@ -266,6 +281,10 @@ public class Constant {
* 创建病例:模板项目id神外
*/
public static final String TEMPLATE_PROJECT_KEY_SHENWAI = "template_project_key_shenwai";
/**
* 创建项目,机构项目
*/
public static final String TEMPLATE_PROJECT_KEY_ORGANIZATION = "template_project_key_organization";
/**

2
src/main/java/com/ccsens/carbasics/util/DefaultCodeError.java

@ -41,7 +41,7 @@ public class DefaultCodeError extends CodeError {
public static final Code SURPASS_MAX_NUMBER = new Code(32,"超过最大申请修改次数", true);
public static final Code DATA_STATUS_SAME = new Code(33,"状态一致无需修改", true);
public static final Code NOT_APPLY_FOR = new Code(34,"未申请修改,无法修改状态", true);
public static final Code HOSPITAL_REPEAT_SUBMIT = new Code(35,"当前医院已提交过问卷调查,请勿重复操作", true);
public static final Code HOSPITAL_REPEAT_SUBMIT = new Code(35,"数据已提交,无法修改", true);

18
src/main/resources/mapper_dao/OrganizationDao.xml

@ -341,4 +341,22 @@
AND t.rec_status = 0
</select>
<select id="queryByName" resultType="com.ccsens.carbasics.bean.po.Organization">
SELECT
id,
organization_type,
`code`,
`name`,
short_name,
introduce,
`level`,
operator
FROM
t_organization
WHERE
rec_status = 0
AND organization_type = 3
AND `name` = #{name}
</select>
</mapper>

22
src/main/resources/mapper_dao/OrganizationDepartmentDao.xml

@ -0,0 +1,22 @@
<?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.carbasics.persist.dao.OrganizationDepartmentDao">
<select id="queryByOrganization" resultType="com.ccsens.carbasics.bean.po.OrganizationDepartment">
SELECT
id,
`code`,
`name`,
introduce,
parent_id,
organization_id,
operator
FROM
t_organization_department
WHERE
rec_status = 0
AND organization_id = #{organizationId}
AND `code` = #{code}
</select>
</mapper>

19
src/main/resources/mapper_dao/OrganizationProjectDao.xml

@ -0,0 +1,19 @@
<?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.carbasics.persist.dao.OrganizationProjectDao">
<select id="queryByOrganizationId" resultType="com.ccsens.carbasics.bean.po.OrganizationProject">
SELECT
id,
organization_id,
project_id,
operator
FROM
t_organization_project
WHERE
rec_status = 0
AND organization_id = #{oid}
LIMIT 1
</select>
</mapper>

28
src/main/resources/mapper_dao/QuestionnaireDao.xml

@ -9,6 +9,7 @@
<result column="end" property="end"/>
<result column="type" property="type"/>
<collection property="detail" ofType="com.ccsens.carbasics.bean.po.QuestionnaireDetail">
<result column="detailId" property="id"/>
<result column="city" property="city"/>
<result column="county" property="county"/>
<result column="hospital_level" property="hospitalLevel"/>
@ -34,6 +35,7 @@
<result column="prt_median_number" property="prtMedianNumber"/>
<result column="jmrs_number_two" property="jmrsNumberTwo"/>
<result column="death_number" property="deathNumber"/>
<result column="submit_status" property="submitStatus"/>
</collection>
</resultMap>
@ -44,6 +46,8 @@
q.start_time AS `start`,
q.end_time AS `end`,
q.type,
qd.id AS detailId,
qd.province,
qd.city,
qd.county,
qd.hospital_level,
@ -68,7 +72,8 @@
qd.dpt_median_number,
qd.prt_median_number,
qd.jmrs_number_two,
qd.death_number
qd.death_number,
qd.submit_status
FROM
t_qcp_questionnaire AS q
LEFT JOIN t_qcp_questionnaire_detail AS qd ON q.id = qd.questionnaire_id
@ -89,7 +94,8 @@
q.type,
q.write_start_time,
q.write_end_time,
qd.id AS detailId
qd.id AS detailId,
qd.submit_status AS isWrite
FROM
t_qcp_questionnaire AS q
LEFT JOIN t_qcp_questionnaire_detail AS qd ON q.id = qd.questionnaire_id
@ -100,13 +106,14 @@
AND q.rec_status = 0
</select>
<select id="queryRepeat" resultType="com.ccsens.carbasics.bean.vo.QuestionnaireVo$QuestionnaireInfo">
<select id="queryRepeat" resultMap="questionnaire">
SELECT
q.id,
q.questionnaire_name AS questionnaire_name,
q.start_time AS `start`,
q.end_time AS `end`,
q.type,
qd.id AS detailId,
qd.city,
qd.county,
qd.hospital_level,
@ -131,16 +138,17 @@
qd.dpt_median_number,
qd.prt_median_number,
qd.jmrs_number_two,
qd.death_number
qd.death_number,
qd.submit_status
FROM
t_qcp_questionnaire AS q
LEFT JOIN t_qcp_questionnaire_detail AS qd ON q.id = qd.questionnaire_id
AND qd.user_id = #{name} AND qd.rec_status = 0
LEFT JOIN t_qcp_questionnaire_detail AS qd ON q.id = qd.questionnaire_id
AND qd.rec_status = 0
WHERE
q.write_start_time &lt; #{time}
AND q.write_end_time &gt; #{time}
AND type = #{type}
AND q.rec_status = 0
q.rec_status = 0
AND qd.hospital_name = #{name}
AND submit_status = 1
AND q.id = #{qid}
</select>

58
src/main/resources/mapper_raw/QuestionnaireDetailMapper.xml

@ -33,6 +33,9 @@
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
<result column="pci_status" jdbcType="TINYINT" property="pciStatus" />
<result column="submit_status" jdbcType="TINYINT" property="submitStatus" />
<result column="province" jdbcType="VARCHAR" property="province" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
@ -97,7 +100,8 @@
stroke_center, map_hospital, stroke_number, ais_number_four, jmrs_number_four, rtpa_number,
dnt_number, dnt_number_four, dnt_number_six, sich_number, jmrs_number_one, ais_number_six,
should_directly, dpt_median_number, prt_median_number, jmrs_number_two, death_number,
user_id, questionnaire_id, created_at, updated_at, rec_status
user_id, questionnaire_id, created_at, updated_at, rec_status, pci_status, submit_status,
province
</sql>
<select id="selectByExample" parameterType="com.ccsens.carbasics.bean.po.QuestionnaireDetailExample" resultMap="BaseResultMap">
select
@ -140,7 +144,8 @@
should_directly, dpt_median_number, prt_median_number,
jmrs_number_two, death_number, user_id,
questionnaire_id, created_at, updated_at,
rec_status)
rec_status, pci_status, submit_status,
province)
values (#{id,jdbcType=BIGINT}, #{city,jdbcType=VARCHAR}, #{county,jdbcType=VARCHAR},
#{hospitalLevel,jdbcType=TINYINT}, #{hospitalName,jdbcType=VARCHAR}, #{departments,jdbcType=VARCHAR},
#{name,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{advancedStrokeCenter,jdbcType=TINYINT},
@ -151,7 +156,8 @@
#{shouldDirectly,jdbcType=INTEGER}, #{dptMedianNumber,jdbcType=INTEGER}, #{prtMedianNumber,jdbcType=INTEGER},
#{jmrsNumberTwo,jdbcType=INTEGER}, #{deathNumber,jdbcType=INTEGER}, #{userId,jdbcType=BIGINT},
#{questionnaireId,jdbcType=BIGINT}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP},
#{recStatus,jdbcType=TINYINT})
#{recStatus,jdbcType=TINYINT}, #{pciStatus,jdbcType=TINYINT}, #{submitStatus,jdbcType=TINYINT},
#{province,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.ccsens.carbasics.bean.po.QuestionnaireDetail">
insert into t_qcp_questionnaire_detail
@ -249,6 +255,15 @@
<if test="recStatus != null">
rec_status,
</if>
<if test="pciStatus != null">
pci_status,
</if>
<if test="submitStatus != null">
submit_status,
</if>
<if test="province != null">
province,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -344,6 +359,15 @@
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
<if test="pciStatus != null">
#{pciStatus,jdbcType=TINYINT},
</if>
<if test="submitStatus != null">
#{submitStatus,jdbcType=TINYINT},
</if>
<if test="province != null">
#{province,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.ccsens.carbasics.bean.po.QuestionnaireDetailExample" resultType="java.lang.Long">
@ -448,6 +472,15 @@
<if test="record.recStatus != null">
rec_status = #{record.recStatus,jdbcType=TINYINT},
</if>
<if test="record.pciStatus != null">
pci_status = #{record.pciStatus,jdbcType=TINYINT},
</if>
<if test="record.submitStatus != null">
submit_status = #{record.submitStatus,jdbcType=TINYINT},
</if>
<if test="record.province != null">
province = #{record.province,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
@ -485,7 +518,10 @@
questionnaire_id = #{record.questionnaireId,jdbcType=BIGINT},
created_at = #{record.createdAt,jdbcType=TIMESTAMP},
updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
rec_status = #{record.recStatus,jdbcType=TINYINT}
rec_status = #{record.recStatus,jdbcType=TINYINT},
pci_status = #{record.pciStatus,jdbcType=TINYINT},
submit_status = #{record.submitStatus,jdbcType=TINYINT},
province = #{record.province,jdbcType=VARCHAR}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
@ -583,6 +619,15 @@
<if test="recStatus != null">
rec_status = #{recStatus,jdbcType=TINYINT},
</if>
<if test="pciStatus != null">
pci_status = #{pciStatus,jdbcType=TINYINT},
</if>
<if test="submitStatus != null">
submit_status = #{submitStatus,jdbcType=TINYINT},
</if>
<if test="province != null">
province = #{province,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
@ -617,7 +662,10 @@
questionnaire_id = #{questionnaireId,jdbcType=BIGINT},
created_at = #{createdAt,jdbcType=TIMESTAMP},
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
rec_status = #{recStatus,jdbcType=TINYINT}
rec_status = #{recStatus,jdbcType=TINYINT},
pci_status = #{pciStatus,jdbcType=TINYINT},
submit_status = #{submitStatus,jdbcType=TINYINT},
province = #{province,jdbcType=VARCHAR}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>

2
src/main/resources/mbg.xml

@ -60,7 +60,7 @@
<!-- <table tableName="t_qcp_ocr_keyword" domainObjectName="OcrKeyword"></table>-->
<!-- <table tableName="t_qcp_ocr_keyword_option" domainObjectName="OcrKeywordOption"></table>-->
<!-- <table tableName="t_qcp_questionnaire" domainObjectName="Questionnaire"></table>-->
<!-- <table tableName="t_qcp_questionnaire_detail" domainObjectName="QuestionnaireDetail"></table>-->
<table tableName="t_qcp_questionnaire_detail" domainObjectName="QuestionnaireDetail"></table>
<!-- <table tableName="t_area" domainObjectName="Area"></table>-->
<!-- <table tableName="t_organization_department" domainObjectName="OrganizationDepartment"></table>-->
<!-- <table tableName="t_organization_member" domainObjectName="OrganizationMember"></table>-->

Loading…
Cancel
Save