Forráskód Böngészése

质控类型维护

zhoutg 5 éve
szülő
commit
7fa65fac78
31 módosított fájl, 985 hozzáadás és 3 törlés
  1. 4 0
      docs/035.20200514运行质控1.0.0/init_qc.sql
  2. 28 0
      mrman-service/src/main/java/com/diagbot/dto/QcCasesEntrySimpleDTO.java
  3. 24 0
      mrman-service/src/main/java/com/diagbot/dto/QcTypeDTO.java
  4. 66 0
      mrman-service/src/main/java/com/diagbot/dto/QcTypePageDTO.java
  5. 69 0
      mrman-service/src/main/java/com/diagbot/entity/QcType.java
  6. 69 0
      mrman-service/src/main/java/com/diagbot/entity/QcTypeCasesEntry.java
  7. 1 1
      mrman-service/src/main/java/com/diagbot/facade/CacheFacade.java
  8. 21 0
      mrman-service/src/main/java/com/diagbot/facade/QcTypeCasesEntryFacade.java
  9. 236 0
      mrman-service/src/main/java/com/diagbot/facade/QcTypeFacade.java
  10. 4 0
      mrman-service/src/main/java/com/diagbot/mapper/QcCasesEntryMapper.java
  11. 21 0
      mrman-service/src/main/java/com/diagbot/mapper/QcTypeCasesEntryMapper.java
  12. 26 0
      mrman-service/src/main/java/com/diagbot/mapper/QcTypeMapper.java
  13. 4 0
      mrman-service/src/main/java/com/diagbot/service/QcCasesEntryService.java
  14. 21 0
      mrman-service/src/main/java/com/diagbot/service/QcTypeCasesEntryService.java
  15. 20 0
      mrman-service/src/main/java/com/diagbot/service/QcTypeService.java
  16. 7 0
      mrman-service/src/main/java/com/diagbot/service/impl/QcCasesEntryServiceImpl.java
  17. 28 0
      mrman-service/src/main/java/com/diagbot/service/impl/QcTypeCasesEntryServiceImpl.java
  18. 27 0
      mrman-service/src/main/java/com/diagbot/service/impl/QcTypeServiceImpl.java
  19. 19 0
      mrman-service/src/main/java/com/diagbot/vo/DeleteQcTypeVO.java
  20. 15 0
      mrman-service/src/main/java/com/diagbot/vo/QcTypeCasesEntryVO.java
  21. 22 0
      mrman-service/src/main/java/com/diagbot/vo/QcTypeIndexVO.java
  22. 20 0
      mrman-service/src/main/java/com/diagbot/vo/QcTypePageVO.java
  23. 24 0
      mrman-service/src/main/java/com/diagbot/vo/QcTypeSaveVO.java
  24. 15 0
      mrman-service/src/main/java/com/diagbot/vo/QcTypeVO.java
  25. 1 0
      mrman-service/src/main/java/com/diagbot/web/QcQuestionInfoController.java
  26. 99 0
      mrman-service/src/main/java/com/diagbot/web/QcTypeController.java
  27. 24 0
      mrman-service/src/main/resources/mapper/QcCasesEntryMapper.xml
  28. 0 1
      mrman-service/src/main/resources/mapper/QcQuestionInfoMapper.xml
  29. 39 0
      mrman-service/src/main/resources/mapper/QcTypeCasesEntryMapper.xml
  30. 30 0
      mrman-service/src/main/resources/mapper/QcTypeMapper.xml
  31. 1 1
      mrman-service/src/test/java/com/diagbot/CodeGeneration.java

+ 4 - 0
docs/035.20200514运行质控1.0.0/init_qc.sql

@@ -0,0 +1,4 @@
+use `qc`;
+
+alter table qc_type_cases_entry add index `case_entry_id` (`case_entry_id`);
+alter table qc_type_cases_entry add index `type_id` (`type_id`);

+ 28 - 0
mrman-service/src/main/java/com/diagbot/dto/QcCasesEntrySimpleDTO.java

@@ -0,0 +1,28 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author zhoutg
+ * @Description:
+ * @date 2020-04-27 10:09
+ */
+@Setter
+@Getter
+public class QcCasesEntrySimpleDTO {
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 条目
+     */
+    private String name;
+
+    /**
+     * 0-未启用 1-启用
+     */
+    private String isUsed;
+}

+ 24 - 0
mrman-service/src/main/java/com/diagbot/dto/QcTypeDTO.java

@@ -0,0 +1,24 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author: ztg
+ * @Date: 2018/10/24 16:11
+ */
+@Getter
+@Setter
+public class QcTypeDTO {
+    // 主键
+    private Long id;
+    // 医院ID
+    private Long hospitalId;
+    // 质控类型名称
+    private String name;
+    // 质控类型和质控条目对应关系
+    private List<QcCasesEntrySimpleDTO> qcCasesEntrySimpleDTOList;
+}

+ 66 - 0
mrman-service/src/main/java/com/diagbot/dto/QcTypePageDTO.java

@@ -0,0 +1,66 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 质控类型标准
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-14
+ */
+@Data
+public class QcTypePageDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 质控类型名称
+     */
+    private String name;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+}

+ 69 - 0
mrman-service/src/main/java/com/diagbot/entity/QcType.java

@@ -0,0 +1,69 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 质控类型标准
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-14
+ */
+@Data
+public class QcType implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 质控类型名称
+     */
+    private String name;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+}

+ 69 - 0
mrman-service/src/main/java/com/diagbot/entity/QcTypeCasesEntry.java

@@ -0,0 +1,69 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 质控类型和质控条目关联表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-14
+ */
+@Data
+public class QcTypeCasesEntry implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 质控类型ID
+     */
+    private Long typeId;
+
+    /**
+     * 条目数据ID
+     */
+    private Long caseEntryId;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+}

+ 1 - 1
mrman-service/src/main/java/com/diagbot/facade/CacheFacade.java

@@ -16,7 +16,7 @@ public class CacheFacade {
      *
      * @return
      */
-    @CacheEvict(value = "cache",  key = "'qcmodule'")
+    @CacheEvict(value = "cache",  allEntries = true)
     public void clear() {
 
     }

+ 21 - 0
mrman-service/src/main/java/com/diagbot/facade/QcTypeCasesEntryFacade.java

@@ -0,0 +1,21 @@
+package com.diagbot.facade;
+
+import com.diagbot.dto.QcCasesEntrySimpleDTO;
+import com.diagbot.service.impl.QcTypeCasesEntryServiceImpl;
+import com.diagbot.vo.QcTypeVO;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author zhoutg
+ * @Description:
+ * @date 2020-03-10 16:32
+ */
+@Component
+public class QcTypeCasesEntryFacade extends QcTypeCasesEntryServiceImpl {
+
+    public List<QcCasesEntrySimpleDTO> getByTypeIdFac(QcTypeVO qcTypeVO) {
+        return this.getByTypeId(qcTypeVO);
+    }
+}

+ 236 - 0
mrman-service/src/main/java/com/diagbot/facade/QcTypeFacade.java

@@ -0,0 +1,236 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.client.UserServiceClient;
+import com.diagbot.dto.QcCasesEntrySimpleDTO;
+import com.diagbot.dto.QcTypeDTO;
+import com.diagbot.dto.QcTypePageDTO;
+import com.diagbot.entity.CommonParam;
+import com.diagbot.entity.QcType;
+import com.diagbot.entity.QcTypeCasesEntry;
+import com.diagbot.enums.InsertOrUpdateEnum;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.QcTypeCasesEntryService;
+import com.diagbot.service.impl.QcTypeServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.UserUtils;
+import com.diagbot.vo.DeleteQcTypeVO;
+import com.diagbot.vo.QcTypeCasesEntryVO;
+import com.diagbot.vo.QcTypeIndexVO;
+import com.diagbot.vo.QcTypePageVO;
+import com.diagbot.vo.QcTypeSaveVO;
+import com.diagbot.vo.QcTypeVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2018/11/23 11:37
+ */
+@Component
+public class QcTypeFacade extends QcTypeServiceImpl {
+
+
+    @Autowired
+    @Qualifier("qcTypeCasesEntryServiceImpl")
+    QcTypeCasesEntryService qcTypeCasesEntryService;
+    @Autowired
+    UserServiceClient userServiceClient;
+    @Autowired
+    QcCacesEntryFacade qcCacesEntryFacade;
+    @Autowired
+    QcTypeCasesEntryFacade qcTypeCasesEntryFacade;
+
+    /**
+     * 保存
+     *
+     * @param qcTypeSaveVO
+     */
+    public void saveOrUpdate(QcTypeSaveVO qcTypeSaveVO) {
+        CommonParam param = initCommonParam();
+        // 保存主表
+        saveQcType(qcTypeSaveVO, param);
+        // 保存质控类型和质控条目映射关系
+        saveQcTypeCasesEntry(qcTypeSaveVO, param);
+    }
+
+    /**
+     * 初始化参数
+     *
+     * @return
+     */
+    public CommonParam initCommonParam() {
+        CommonParam param = new CommonParam();
+        String person = UserUtils.getCurrentPrincipleID();
+        param.setNow(DateUtil.now());
+        param.setPerson(person);
+        param.setInsertOrUpdate(InsertOrUpdateEnum.Insert.getKey());
+        return param;
+    }
+
+    /**
+     * 保存映射关系
+     *
+     * @param qcTypeSaveVO
+     * @param param
+     */
+    public void saveQcTypeCasesEntry(QcTypeSaveVO qcTypeSaveVO, CommonParam param) {
+        Date now = param.getNow();
+        String person = param.getPerson();
+        // 先删除原明细(物理删除)
+        qcTypeCasesEntryService.remove(new QueryWrapper<QcTypeCasesEntry>()
+            .eq("type_id", qcTypeSaveVO.getId())
+        );
+        // 再插入新明细
+        List<QcTypeCasesEntryVO> qcTypeCasesEntryVOList = qcTypeSaveVO.getQcTypeCasesEntryVOList();
+        if (ListUtil.isNotEmpty(qcTypeCasesEntryVOList)) {
+            List<QcTypeCasesEntry> saveQcTypeCasesEntry = new ArrayList<>();
+            for (QcTypeCasesEntryVO mapping : qcTypeCasesEntryVOList) {
+                QcTypeCasesEntry bean = new QcTypeCasesEntry();
+                bean.setCaseEntryId(mapping.getCaseEntryId());
+                bean.setCreator(person);
+                bean.setGmtCreate(now);
+                bean.setModifier(person);
+                bean.setGmtModified(now);
+                bean.setTypeId(qcTypeSaveVO.getId());
+                saveQcTypeCasesEntry.add(bean);
+            }
+            qcTypeCasesEntryService.saveBatch(saveQcTypeCasesEntry);
+        }
+    }
+
+    /**
+     * 保存主表
+     *
+     * @param qcTypeSaveVO
+     * @param param
+     */
+    public void saveQcType(QcTypeSaveVO qcTypeSaveVO, CommonParam param) {
+        QcType qcType = new QcType();
+        Long id = qcTypeSaveVO.getId();
+
+        // 保存主表
+        if (qcTypeSaveVO.getId() != null) {
+            qcType = this.getOne(new QueryWrapper<QcType>()
+                    .eq("id", id)
+                    .eq("is_deleted", IsDeleteEnum.N.getKey()), false);
+            if (qcType == null) { //校验
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "当前质控类型不存在【id=" + id + "】");
+            }
+        }
+        BeanUtil.copyProperties(qcTypeSaveVO, qcType);
+        List<QcType> qcTypeList = this.list(new QueryWrapper<QcType>()
+                .eq("name", qcTypeSaveVO.getName())
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", qcTypeSaveVO.getHospitalId())
+                .ne("id", id == null ? -1 : id));
+        // 质控类型hospitalId、name唯一
+        if (ListUtil.isNotEmpty(qcTypeList)) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "名称已存在");
+        }
+        if (InsertOrUpdateEnum.Insert.getKey() == param.getInsertOrUpdate()) {
+            qcType.setCreator(param.getPerson()); //创建人
+            qcType.setGmtCreate(param.getNow());//创建时间
+        }
+        qcType.setGmtModified(param.getNow());//修改时间
+        qcType.setModifier(param.getPerson());//修改人
+        this.saveOrUpdate(qcType);
+        qcTypeSaveVO.setId(qcType.getId());
+    }
+
+    /**
+     * 标签列表
+     *
+     * @param qcTypePageVO
+     * @return
+     */
+    public IPage<QcTypePageDTO> getListFac(QcTypePageVO qcTypePageVO) {
+        IPage<QcTypePageDTO> res = this.getList(qcTypePageVO);
+//        if (res.getTotal() <= 0) {
+//            return res;
+//        }
+//        List<String> personIds = res.getRecords().stream().map(row -> row.getModifier()).collect(Collectors.toList());
+//        RespDTO<Map<String, String>> mapRespDTO = userServiceClient.getUserInfoByIds(personIds);
+//        if (mapRespDTO == null || !CommonErrorCode.OK.getCode().equals(mapRespDTO.code)) {
+//            throw new CommonException(CommonErrorCode.RPC_ERROR, "获取操作人失败");
+//        }
+//        for (QuestionPageDTO bean : res.getRecords()) {
+//            bean.setModifier(mapRespDTO.data.get(bean.getModifier()));
+//        }
+        return res;
+    }
+
+    /**
+     * 检索
+     *
+     * @param qcTypeIndexVO
+     * @return
+     */
+    public List<QcCasesEntrySimpleDTO> indexFac(QcTypeIndexVO qcTypeIndexVO) {
+        List<QcCasesEntrySimpleDTO> res = qcCacesEntryFacade.index(qcTypeIndexVO);
+        return res;
+    }
+
+    /**
+     * 根据参数返回质控类型内容
+     *
+     * @param qcTypeVO 获取质控类型内容参数
+     * @return 标签内容
+     */
+    public QcTypeDTO getById(QcTypeVO qcTypeVO) {
+        QcTypeDTO qcTypeDTO = new QcTypeDTO();
+        QcType qcType = this.getOne(new QueryWrapper<QcType>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("id", qcTypeVO.getId()), false
+        );
+        if (qcType == null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+                    "当前质控类型不存在或已删除【id=" + qcTypeVO.getId() + "】");
+        }
+        BeanUtil.copyProperties(qcType, qcTypeDTO);
+        List<QcCasesEntrySimpleDTO> list = qcTypeCasesEntryFacade.getByTypeIdFac(qcTypeVO);
+        qcTypeDTO.setQcCasesEntrySimpleDTOList(list);
+        return qcTypeDTO;
+    }
+
+    /**
+     * 根据id删除质控类型
+     *
+     * @param deleteQcTypeVO
+     * @return
+     */
+    public Boolean deleteByIdsFac(DeleteQcTypeVO deleteQcTypeVO) {
+        Date now = DateUtil.now();
+        String person = UserUtils.getCurrentPrincipleID();
+        // 更新主表
+        this.update(new UpdateWrapper<QcType>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("id", deleteQcTypeVO.getIds())
+                .set("is_deleted", IsDeleteEnum.Y.getKey())
+                .set("gmt_modified", now)
+                .set("modifier", person)
+        );
+
+        // 删除明细表
+        qcTypeCasesEntryService.removeByIds(deleteQcTypeVO.getIds());
+        if (ListUtil.isNotEmpty(deleteQcTypeVO.getIds())) {
+            qcTypeCasesEntryService.remove(new QueryWrapper<QcTypeCasesEntry>()
+                    .in("type_id", deleteQcTypeVO.getIds())
+            );
+        }
+        return true;
+    }
+
+}

+ 4 - 0
mrman-service/src/main/java/com/diagbot/mapper/QcCasesEntryMapper.java

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.QcCasesEntryAllDTO;
 import com.diagbot.dto.QcCasesEntryDTO;
+import com.diagbot.dto.QcCasesEntrySimpleDTO;
 import com.diagbot.entity.QcCasesEntry;
 import com.diagbot.vo.QcCasesEntryAllVO;
 import com.diagbot.vo.QcCasesEntryIndexVO;
+import com.diagbot.vo.QcTypeIndexVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -34,4 +36,6 @@ public interface QcCasesEntryMapper extends BaseMapper<QcCasesEntry> {
     List<QcCasesEntryDTO> getByCasesEntryId( @Param("ids") List<Long> ids);
 
     List<QcCasesEntryDTO> getQcCasesEntryAll();
+
+    public List<QcCasesEntrySimpleDTO> index(QcTypeIndexVO qcTypeIndexVO);
 }

+ 21 - 0
mrman-service/src/main/java/com/diagbot/mapper/QcTypeCasesEntryMapper.java

@@ -0,0 +1,21 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.dto.QcCasesEntrySimpleDTO;
+import com.diagbot.entity.QcTypeCasesEntry;
+import com.diagbot.vo.QcTypeVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 质控类型和质控条目关联表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-14
+ */
+public interface QcTypeCasesEntryMapper extends BaseMapper<QcTypeCasesEntry> {
+
+    public List<QcCasesEntrySimpleDTO> getByTypeId(QcTypeVO qcTypeVO);
+}

+ 26 - 0
mrman-service/src/main/java/com/diagbot/mapper/QcTypeMapper.java

@@ -0,0 +1,26 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.QcTypePageDTO;
+import com.diagbot.entity.QcType;
+import com.diagbot.vo.QcTypePageVO;
+
+/**
+ * <p>
+ * 质控类型标准 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-14
+ */
+public interface QcTypeMapper extends BaseMapper<QcType> {
+
+    /**
+     * 获取标签列表
+     *
+     * @param qcTypePageVO
+     * @return
+     */
+    IPage<QcTypePageDTO> getList(QcTypePageVO qcTypePageVO);
+}

+ 4 - 0
mrman-service/src/main/java/com/diagbot/service/QcCasesEntryService.java

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.dto.QcCasesEntryAllDTO;
 import com.diagbot.dto.QcCasesEntryDTO;
+import com.diagbot.dto.QcCasesEntrySimpleDTO;
 import com.diagbot.entity.QcCasesEntry;
 import com.diagbot.vo.QcCasesEntryAllVO;
 import com.diagbot.vo.QcCasesEntryIndexVO;
+import com.diagbot.vo.QcTypeIndexVO;
 
 import java.util.List;
 
@@ -34,4 +36,6 @@ public interface QcCasesEntryService extends IService<QcCasesEntry> {
     List<QcCasesEntryDTO> getByCasesEntryId(List<Long> ids);
 
     List<QcCasesEntryDTO> getQcCasesEntryAll();
+
+    public List<QcCasesEntrySimpleDTO> index(QcTypeIndexVO qcTypeIndexVO);
 }

+ 21 - 0
mrman-service/src/main/java/com/diagbot/service/QcTypeCasesEntryService.java

@@ -0,0 +1,21 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.dto.QcCasesEntrySimpleDTO;
+import com.diagbot.entity.QcTypeCasesEntry;
+import com.diagbot.vo.QcTypeVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 质控类型和质控条目关联表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-14
+ */
+public interface QcTypeCasesEntryService extends IService<QcTypeCasesEntry> {
+
+    public List<QcCasesEntrySimpleDTO> getByTypeId(QcTypeVO qcTypeVO);
+}

+ 20 - 0
mrman-service/src/main/java/com/diagbot/service/QcTypeService.java

@@ -0,0 +1,20 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.dto.QcTypePageDTO;
+import com.diagbot.entity.QcType;
+import com.diagbot.vo.QcTypePageVO;
+
+/**
+ * <p>
+ * 质控类型标准 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-14
+ */
+public interface QcTypeService extends IService<QcType> {
+
+    IPage<QcTypePageDTO> getList(QcTypePageVO qcTypePageVO);
+}

+ 7 - 0
mrman-service/src/main/java/com/diagbot/service/impl/QcCasesEntryServiceImpl.java

@@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.dto.QcCasesEntryAllDTO;
 import com.diagbot.dto.QcCasesEntryDTO;
+import com.diagbot.dto.QcCasesEntrySimpleDTO;
 import com.diagbot.entity.QcCasesEntry;
 import com.diagbot.mapper.QcCasesEntryMapper;
 import com.diagbot.service.QcCasesEntryService;
 import com.diagbot.vo.QcCasesEntryAllVO;
 import com.diagbot.vo.QcCasesEntryIndexVO;
+import com.diagbot.vo.QcTypeIndexVO;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -43,4 +45,9 @@ public class QcCasesEntryServiceImpl extends ServiceImpl<QcCasesEntryMapper, QcC
     public List<QcCasesEntryDTO> getQcCasesEntryAll() {
         return baseMapper.getQcCasesEntryAll();
     }
+
+    @Override
+    public List<QcCasesEntrySimpleDTO> index(QcTypeIndexVO qcTypeIndexVO) {
+        return baseMapper.index(qcTypeIndexVO);
+    }
 }

+ 28 - 0
mrman-service/src/main/java/com/diagbot/service/impl/QcTypeCasesEntryServiceImpl.java

@@ -0,0 +1,28 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.dto.QcCasesEntrySimpleDTO;
+import com.diagbot.entity.QcTypeCasesEntry;
+import com.diagbot.mapper.QcTypeCasesEntryMapper;
+import com.diagbot.service.QcTypeCasesEntryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.QcTypeVO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 质控类型和质控条目关联表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-14
+ */
+@Service
+public class QcTypeCasesEntryServiceImpl extends ServiceImpl<QcTypeCasesEntryMapper, QcTypeCasesEntry> implements QcTypeCasesEntryService {
+
+    @Override
+    public List<QcCasesEntrySimpleDTO> getByTypeId(QcTypeVO qcTypeVO) {
+        return baseMapper.getByTypeId(qcTypeVO);
+    }
+}

+ 27 - 0
mrman-service/src/main/java/com/diagbot/service/impl/QcTypeServiceImpl.java

@@ -0,0 +1,27 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.QcTypePageDTO;
+import com.diagbot.entity.QcType;
+import com.diagbot.mapper.QcTypeMapper;
+import com.diagbot.service.QcTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.QcTypePageVO;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 质控类型标准 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-14
+ */
+@Service
+public class QcTypeServiceImpl extends ServiceImpl<QcTypeMapper, QcType> implements QcTypeService {
+
+    @Override
+    public IPage<QcTypePageDTO> getList(QcTypePageVO qcTypePageVO) {
+        return baseMapper.getList(qcTypePageVO);
+    }
+}

+ 19 - 0
mrman-service/src/main/java/com/diagbot/vo/DeleteQcTypeVO.java

@@ -0,0 +1,19 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: ztg
+ * @time: 2019/1/28 15:45
+ */
+@Getter
+@Setter
+public class DeleteQcTypeVO {
+    @NotEmpty(message = "ids不能为空")
+    private List<Long> ids;
+}

+ 15 - 0
mrman-service/src/main/java/com/diagbot/vo/QcTypeCasesEntryVO.java

@@ -0,0 +1,15 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+/**
+ * @Description:
+ * @Author: ztg
+ * @Date: 2018/10/24 16:11
+ */
+@Data
+public class QcTypeCasesEntryVO {
+
+    // 质控条目id
+    private Long caseEntryId;
+}

+ 22 - 0
mrman-service/src/main/java/com/diagbot/vo/QcTypeIndexVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2018/11/29 15:09
+ */
+@Getter
+@Setter
+public class QcTypeIndexVO {
+    // 界面输入
+    private String input;
+    // 医院id
+    private Long hospitalId;
+    // 过滤caseEntryId
+    private List<Long> notIds;
+}

+ 20 - 0
mrman-service/src/main/java/com/diagbot/vo/QcTypePageVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 质控类型列表入参
+ * @Author: ztg
+ * @Date: 2018/12/13 10:07
+ */
+@Getter
+@Setter
+public class QcTypePageVO extends Page {
+
+    // 名称
+    private String name;
+    // 医院id
+    private Long hospitalId;
+}

+ 24 - 0
mrman-service/src/main/java/com/diagbot/vo/QcTypeSaveVO.java

@@ -0,0 +1,24 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: 质控类型保存入参
+ * @Author: ztg
+ * @Date: 2018/10/24 16:11
+ */
+@Data
+public class QcTypeSaveVO {
+
+    // 主键
+    private Long id;
+    // 医院ID
+    private Long hospitalId;
+    // 质控类型名称
+    private String name;
+    // 质控类型和质控条目关联信息
+    private List<QcTypeCasesEntryVO> qcTypeCasesEntryVOList = new ArrayList<>();
+}

+ 15 - 0
mrman-service/src/main/java/com/diagbot/vo/QcTypeVO.java

@@ -0,0 +1,15 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2018/8/6 10:16
+ */
+@Getter
+@Setter
+public class QcTypeVO {
+    private Long id;
+}

+ 1 - 0
mrman-service/src/main/java/com/diagbot/web/QcQuestionInfoController.java

@@ -103,6 +103,7 @@ public class QcQuestionInfoController {
     @ApiOperation(value = "查询多个id返回标签内容[by:zhoutg]",
             notes = "ids: 多个questionId<br>")
     @PostMapping("/getByIds")
+    @SysLogger("getByIds")
     public RespDTO<Map<Long, QuestionDTO>> getByIds(@RequestBody QuestionIdsVO questionIdsVO) {
         Map<Long, QuestionDTO> data = qcQuestionFacade.getByIds(questionIdsVO);
         return RespDTO.onSuc(data);

+ 99 - 0
mrman-service/src/main/java/com/diagbot/web/QcTypeController.java

@@ -0,0 +1,99 @@
+package com.diagbot.web;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.QcCasesEntrySimpleDTO;
+import com.diagbot.dto.QcTypeDTO;
+import com.diagbot.dto.QcTypePageDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.QcQuestionInfo;
+import com.diagbot.facade.QcTypeFacade;
+import com.diagbot.vo.DeleteQcTypeVO;
+import com.diagbot.vo.QcTypeIndexVO;
+import com.diagbot.vo.QcTypePageVO;
+import com.diagbot.vo.QcTypeSaveVO;
+import com.diagbot.vo.QcTypeVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * <p>
+ * 质控类型标准 前端控制器
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-05-14
+ */
+@RestController
+@RequestMapping("/qc/qcType")
+@SuppressWarnings("unchecked")
+@Api(value = "质控类型相关API", tags = { "质控类型相关API" })
+public class QcTypeController {
+
+    @Autowired
+    QcTypeFacade qcTypeFacade;
+
+    @ApiOperation(value = "新增或更新[by:zhoutg]",
+            notes = "")
+    @PostMapping("/saveOrUpdate")
+    @SysLogger("saveOrUpdate")
+    @Transactional
+    public RespDTO<Boolean> saveOrUpdate(@RequestBody QcTypeSaveVO qcTypeSaveVO) {
+        qcTypeFacade.saveOrUpdate(qcTypeSaveVO);
+        return RespDTO.onSuc(true);
+    }
+
+    @ApiOperation(value = "分页列表[by:zhoutg]",
+            notes = "    // 名称\n" +
+                    "     String name;\n" +
+                    "    // 医院id\n" +
+                    "     Long hospitalId;")
+    @PostMapping("/page")
+    @SysLogger("page")
+    public RespDTO<IPage<QcTypePageDTO>> list(@RequestBody QcTypePageVO qcTypePageVO) {
+        IPage<QcTypePageDTO> data = qcTypeFacade.getListFac(qcTypePageVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "质控条目检索[by:zhoutg]",
+            notes = "    // 界面输入\n" +
+                    "     String input;\n" +
+                    "    // 医院id\n" +
+                    "     Long hospitalId;\n" +
+                    "    // 过滤caseEntryId\n" +
+                    "     List<Long> notIds;")
+    @PostMapping("/index")
+    @SysLogger("index")
+    public RespDTO<List<QcQuestionInfo>> index(@RequestBody QcTypeIndexVO qcTypeIndexVO) {
+        List<QcCasesEntrySimpleDTO> data = qcTypeFacade.indexFac(qcTypeIndexVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "删除[by:zhoutg]",
+            notes = "")
+    @PostMapping("/delete")
+    @SysLogger("delete")
+    @Transactional
+    public RespDTO<Boolean> delete(@Valid @RequestBody DeleteQcTypeVO deleteQcTypeVO) {
+        qcTypeFacade.deleteByIdsFac(deleteQcTypeVO);
+        return RespDTO.onSuc(true);
+    }
+
+    @ApiOperation(value = "根据id返回内容[by:zhoutg]",
+            notes = "id: qcTypeId<br>" )
+    @PostMapping("/getById")
+    @SysLogger("getById")
+    public RespDTO<QcTypeDTO> getById(@RequestBody QcTypeVO qcTypeVO) {
+        QcTypeDTO data = qcTypeFacade.getById(qcTypeVO);
+        return RespDTO.onSuc(data);
+    }
+}

+ 24 - 0
mrman-service/src/main/resources/mapper/QcCasesEntryMapper.xml

@@ -103,4 +103,28 @@
         WHERE a.is_deleted = 'N'
         ORDER BY a.cases_id,a.id
     </select>
+
+    <select id="index" resultType="com.diagbot.dto.QcCasesEntrySimpleDTO">
+        SELECT distinct t3.msg name, t2.id
+        FROM
+            qc_cases_entry t2,
+            qc_cases_entry_hospital t3
+        where t2.is_deleted = 'N'
+            and t3.is_deleted = 'N'
+            and t2.id = t3.cases_entry_id
+            and t3.is_used = 1
+        <if test="hospitalId != null">
+            and t3.hospital_id = #{hospitalId}
+        </if>
+        <if test="input != null and input != ''">
+            and t2.name like concat('%', #{input}, '%')
+        </if>
+        <if test="notIds != null and notIds.size > 0">
+            and t2.id not in
+            <foreach item="item" collection="notIds" open="(" separator="," close=")" >
+                #{item}
+            </foreach>
+        </if>
+        order by t2.order_no
+    </select>
 </mapper>

+ 0 - 1
mrman-service/src/main/resources/mapper/QcQuestionInfoMapper.xml

@@ -110,7 +110,6 @@
             </foreach>
         </if>
         order by a.gmt_modified desc
-
     </select>
 
     <select id="getParent"  resultMap="BaseResultMap">

+ 39 - 0
mrman-service/src/main/resources/mapper/QcTypeCasesEntryMapper.xml

@@ -0,0 +1,39 @@
+<?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.diagbot.mapper.QcTypeCasesEntryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.QcTypeCasesEntry">
+        <id column="id" property="id" />
+        <result column="type_id" property="typeId" />
+        <result column="case_entry_id" property="caseEntryId" />
+        <result column="remark" property="remark" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+    </resultMap>
+
+    <select id="getByTypeId" resultType="com.diagbot.dto.QcCasesEntrySimpleDTO">
+        SELECT
+            t3.msg NAME, t3.is_used, t2.id
+        FROM
+            qc_type_cases_entry t1,
+            qc_cases_entry t2,
+            qc_cases_entry_hospital t3,
+            qc_type t4
+        WHERE
+            t1.is_deleted = 'N'
+        AND t2.is_deleted = 'N'
+        AND t3.is_deleted = 'N'
+        AND t4.is_deleted = 'N'
+        AND t1.case_entry_id = t2.id
+        AND t2.id = t3.cases_entry_id
+        AND t3.hospital_id = t4.hospital_id
+        AND t1.type_id = t4.id
+        AND t4.id = #{id}
+        ORDER BY t1.id
+    </select>
+
+</mapper>

+ 30 - 0
mrman-service/src/main/resources/mapper/QcTypeMapper.xml

@@ -0,0 +1,30 @@
+<?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.diagbot.mapper.QcTypeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.QcType">
+        <id column="id" property="id" />
+        <result column="hospital_id" property="hospitalId" />
+        <result column="name" property="name" />
+        <result column="remark" property="remark" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+    </resultMap>
+
+    <!--分页-->
+    <select id="getList" resultType="com.diagbot.dto.QcTypePageDTO">
+        SELECT a.* FROM `qc_type` a
+        WHERE a.is_deleted = 'N'
+        <if test="hospitalId != null">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="name != null and name != ''">
+            AND UPPER(a.name) like concat ('%', UPPER(trim(#{name})), '%')
+        </if>
+        order by a.gmt_modified desc
+    </select>
+</mapper>

+ 1 - 1
mrman-service/src/test/java/com/diagbot/CodeGeneration.java

@@ -56,7 +56,7 @@ public class CodeGeneration {
         StrategyConfig strategy = new StrategyConfig();
 //        strategy.setTablePrefix(new String[] { "icss_" });// 此处可以修改为您的表前缀
          strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "qc_question_entry" }); // 需要生成的表
+        strategy.setInclude(new String[] { "qc_type", "qc_type_cases_entry" }); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);