浏览代码

质控类型维护

gaodm 5 年之前
父节点
当前提交
b71b094981
共有 27 个文件被更改,包括 860 次插入7 次删除
  1. 38 0
      src/main/java/com/diagbot/dto/QcCasesEntrySimpleDTO.java
  2. 25 0
      src/main/java/com/diagbot/dto/QcTypeDTO.java
  3. 66 0
      src/main/java/com/diagbot/dto/QcTypePageDTO.java
  4. 19 0
      src/main/java/com/diagbot/entity/CommonParam.java
  5. 50 0
      src/main/java/com/diagbot/enums/InsertOrUpdateEnum.java
  6. 11 0
      src/main/java/com/diagbot/facade/QcTypeCasesEntryFacade.java
  7. 240 0
      src/main/java/com/diagbot/facade/QcTypeFacade.java
  8. 8 1
      src/main/java/com/diagbot/mapper/QcCasesEntryMapper.java
  9. 5 0
      src/main/java/com/diagbot/mapper/QcTypeCasesEntryMapper.java
  10. 10 0
      src/main/java/com/diagbot/mapper/QcTypeMapper.java
  11. 7 0
      src/main/java/com/diagbot/service/QcCasesEntryService.java
  12. 6 2
      src/main/java/com/diagbot/service/QcTypeCasesEntryService.java
  13. 5 1
      src/main/java/com/diagbot/service/QcTypeService.java
  14. 13 0
      src/main/java/com/diagbot/service/impl/QcCasesEntryServiceImpl.java
  15. 9 2
      src/main/java/com/diagbot/service/impl/QcTypeCasesEntryServiceImpl.java
  16. 7 1
      src/main/java/com/diagbot/service/impl/QcTypeServiceImpl.java
  17. 19 0
      src/main/java/com/diagbot/vo/DeleteQcTypeVO.java
  18. 18 0
      src/main/java/com/diagbot/vo/QcEntryHospitalVO.java
  19. 15 0
      src/main/java/com/diagbot/vo/QcTypeCasesEntryVO.java
  20. 24 0
      src/main/java/com/diagbot/vo/QcTypeIndexVO.java
  21. 22 0
      src/main/java/com/diagbot/vo/QcTypePageVO.java
  22. 26 0
      src/main/java/com/diagbot/vo/QcTypeSaveVO.java
  23. 16 0
      src/main/java/com/diagbot/vo/QcTypeVO.java
  24. 108 0
      src/main/java/com/diagbot/web/QcTypeController.java
  25. 42 0
      src/main/resources/mapper/QcCasesEntryMapper.xml
  26. 39 0
      src/main/resources/mapper/QcTypeCasesEntryMapper.xml
  27. 12 0
      src/main/resources/mapper/QcTypeMapper.xml

+ 38 - 0
src/main/java/com/diagbot/dto/QcCasesEntrySimpleDTO.java

@@ -0,0 +1,38 @@
+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;
+
+    /**
+     * modeName
+     */
+    private String modeName;
+
+    /**
+     * 是否勾选
+     */
+    private Integer sel;
+}

+ 25 - 0
src/main/java/com/diagbot/dto/QcTypeDTO.java

@@ -0,0 +1,25 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @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 Map<String, List<QcCasesEntrySimpleDTO>> entryMap;
+}

+ 66 - 0
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;
+
+}

+ 19 - 0
src/main/java/com/diagbot/entity/CommonParam.java

@@ -0,0 +1,19 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @Author: ztg
+ * @Date: 2018/12/14 14:15
+ */
+@Getter
+@Setter
+public class CommonParam {
+    private String person;     //操作人
+    private Date now;          //当前时间
+    private int insertOrUpdate;//更新或新增标识
+}

+ 50 - 0
src/main/java/com/diagbot/enums/InsertOrUpdateEnum.java

@@ -0,0 +1,50 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2018年11月21日 下午2:31:42
+ */
+public enum InsertOrUpdateEnum implements KeyedNamed {
+    Insert(1, "新增"),
+    Update(2, "修改");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    InsertOrUpdateEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static InsertOrUpdateEnum getEnum(int key) {
+        for (InsertOrUpdateEnum item : InsertOrUpdateEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        InsertOrUpdateEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 11 - 0
src/main/java/com/diagbot/facade/QcTypeCasesEntryFacade.java

@@ -0,0 +1,11 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.QcTypeCasesEntryServiceImpl;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/5/26 16:20
+ */
+public class QcTypeCasesEntryFacade extends QcTypeCasesEntryServiceImpl {
+}

+ 240 - 0
src/main/java/com/diagbot/facade/QcTypeFacade.java

@@ -0,0 +1,240 @@
+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.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.impl.QcTypeCasesEntryServiceImpl;
+import com.diagbot.service.impl.QcTypeServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.DeleteQcTypeVO;
+import com.diagbot.vo.QcEntryHospitalVO;
+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 org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2018/11/23 11:37
+ */
+@Component
+public class QcTypeFacade extends QcTypeServiceImpl {
+
+
+    @Autowired
+    @Qualifier("qcTypeCasesEntryServiceImpl")
+    QcTypeCasesEntryServiceImpl qcTypeCasesEntryService;
+    @Autowired
+    QcCasesEntryFacade qcCasesEntryFacade;
+
+    /**
+     * 保存
+     *
+     * @param qcTypeSaveVO
+     */
+    public void saveOrUpdate(QcTypeSaveVO qcTypeSaveVO) {
+        CommonParam param = initCommonParam();
+        qcTypeSaveVO.setHospitalId(Long.valueOf(SysUserUtils.getCurrentHospitalID()));
+        // 保存主表
+        saveQcType(qcTypeSaveVO, param);
+        // 保存质控类型和质控条目映射关系
+        saveQcTypeCasesEntry(qcTypeSaveVO, param);
+    }
+
+    /**
+     * 初始化参数
+     *
+     * @return
+     */
+    public CommonParam initCommonParam() {
+        CommonParam param = new CommonParam();
+        String person = SysUserUtils.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) {
+        qcTypePageVO.setHospitalId(Long.valueOf(SysUserUtils.getCurrentHospitalID()));
+        IPage<QcTypePageDTO> res = this.getList(qcTypePageVO);
+        return res;
+    }
+
+    /**
+     * 新增时质控条目分组信息
+     *
+     * @param qcEntryHospitalVO
+     * @return
+     */
+    public Map<String, List<QcCasesEntrySimpleDTO>> getEntryByHospital(@RequestBody QcEntryHospitalVO qcEntryHospitalVO) {
+        qcEntryHospitalVO.setHospitalId(Long.valueOf(SysUserUtils.getCurrentHospitalID()));
+        List<QcCasesEntrySimpleDTO> qcCasesEntrySimpleDTOList = qcCasesEntryFacade.getEntryByHospital(qcEntryHospitalVO);
+        return EntityUtil.makeEntityListMap(qcCasesEntrySimpleDTOList, "modeName");
+    }
+
+    /**
+     * 检索
+     *
+     * @param qcTypeIndexVO
+     * @return
+     */
+    public List<QcCasesEntrySimpleDTO> indexFac(QcTypeIndexVO qcTypeIndexVO) {
+        qcTypeIndexVO.setHospitalId(Long.valueOf(SysUserUtils.getCurrentHospitalID()));
+        List<QcCasesEntrySimpleDTO> res = qcCasesEntryFacade.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 = qcTypeCasesEntryService.getByTypeId(qcTypeVO);
+        Map<String, List<QcCasesEntrySimpleDTO>> entryMap = EntityUtil.makeEntityListMap(list, "modeName");
+        qcTypeDTO.setEntryMap(entryMap);
+        return qcTypeDTO;
+    }
+
+    /**
+     * 根据id删除质控类型
+     *
+     * @param deleteQcTypeVO
+     * @return
+     */
+    public Boolean deleteByIdsFac(DeleteQcTypeVO deleteQcTypeVO) {
+        Date now = DateUtil.now();
+        String person = SysUserUtils.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;
+    }
+
+}

+ 8 - 1
src/main/java/com/diagbot/mapper/QcCasesEntryMapper.java

@@ -1,11 +1,14 @@
 package com.diagbot.mapper;
 package com.diagbot.mapper;
 
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.dto.QcCasesEntryDTO;
 import com.diagbot.dto.QcCasesEntryDTO;
+import com.diagbot.dto.QcCasesEntrySimpleDTO;
 import com.diagbot.entity.QcCasesEntry;
 import com.diagbot.entity.QcCasesEntry;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.AnalyzeVO;
+import com.diagbot.vo.QcEntryHospitalVO;
 import com.diagbot.vo.QcResultAlgQueryVO;
 import com.diagbot.vo.QcResultAlgQueryVO;
 import com.diagbot.vo.QcResultAlgVO;
 import com.diagbot.vo.QcResultAlgVO;
+import com.diagbot.vo.QcTypeIndexVO;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -22,4 +25,8 @@ public interface QcCasesEntryMapper extends BaseMapper<QcCasesEntry> {
     List<QcCasesEntryDTO> getQcCasesEntry(AnalyzeVO analyzeVO);
     List<QcCasesEntryDTO> getQcCasesEntry(AnalyzeVO analyzeVO);
 
 
     List<QcResultAlgVO> getQcResultAlgVO(QcResultAlgQueryVO qcResultAlgQueryVO);
     List<QcResultAlgVO> getQcResultAlgVO(QcResultAlgQueryVO qcResultAlgQueryVO);
+
+    List<QcCasesEntrySimpleDTO> index(QcTypeIndexVO qcTypeIndexVO);
+
+    List<QcCasesEntrySimpleDTO> getEntryByHospital(QcEntryHospitalVO qcEntryHospitalVO);
 }
 }

+ 5 - 0
src/main/java/com/diagbot/mapper/QcTypeCasesEntryMapper.java

@@ -1,7 +1,11 @@
 package com.diagbot.mapper;
 package com.diagbot.mapper;
 
 
+import com.diagbot.dto.QcCasesEntrySimpleDTO;
 import com.diagbot.entity.QcTypeCasesEntry;
 import com.diagbot.entity.QcTypeCasesEntry;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.QcTypeVO;
+
+import java.util.List;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -13,4 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
  */
 public interface QcTypeCasesEntryMapper extends BaseMapper<QcTypeCasesEntry> {
 public interface QcTypeCasesEntryMapper extends BaseMapper<QcTypeCasesEntry> {
 
 
+    List<QcCasesEntrySimpleDTO> getByTypeId(QcTypeVO qcTypeVO);
 }
 }

+ 10 - 0
src/main/java/com/diagbot/mapper/QcTypeMapper.java

@@ -1,7 +1,10 @@
 package com.diagbot.mapper;
 package com.diagbot.mapper;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.QcTypePageDTO;
 import com.diagbot.entity.QcType;
 import com.diagbot.entity.QcType;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.QcTypePageVO;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -13,4 +16,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
  */
 public interface QcTypeMapper extends BaseMapper<QcType> {
 public interface QcTypeMapper extends BaseMapper<QcType> {
 
 
+    /**
+     * 获取标签列表
+     *
+     * @param qcTypePageVO
+     * @return
+     */
+    IPage<QcTypePageDTO> getList(QcTypePageVO qcTypePageVO);
 }
 }

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

@@ -1,11 +1,14 @@
 package com.diagbot.service;
 package com.diagbot.service;
 
 
 import com.diagbot.dto.QcCasesEntryDTO;
 import com.diagbot.dto.QcCasesEntryDTO;
+import com.diagbot.dto.QcCasesEntrySimpleDTO;
 import com.diagbot.entity.QcCasesEntry;
 import com.diagbot.entity.QcCasesEntry;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.AnalyzeVO;
+import com.diagbot.vo.QcEntryHospitalVO;
 import com.diagbot.vo.QcResultAlgQueryVO;
 import com.diagbot.vo.QcResultAlgQueryVO;
 import com.diagbot.vo.QcResultAlgVO;
 import com.diagbot.vo.QcResultAlgVO;
+import com.diagbot.vo.QcTypeIndexVO;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -21,4 +24,8 @@ public interface QcCasesEntryService extends IService<QcCasesEntry> {
     List<QcCasesEntryDTO> getQcCasesEntry(AnalyzeVO analyzeVO);
     List<QcCasesEntryDTO> getQcCasesEntry(AnalyzeVO analyzeVO);
 
 
     List<QcResultAlgVO> getQcResultAlgVO(QcResultAlgQueryVO qcResultAlgQueryVO);
     List<QcResultAlgVO> getQcResultAlgVO(QcResultAlgQueryVO qcResultAlgQueryVO);
+
+    List<QcCasesEntrySimpleDTO> index(QcTypeIndexVO qcTypeIndexVO);
+
+    List<QcCasesEntrySimpleDTO> getEntryByHospital(QcEntryHospitalVO qcEntryHospitalVO);
 }
 }

+ 6 - 2
src/main/java/com/diagbot/service/QcTypeCasesEntryService.java

@@ -1,7 +1,11 @@
 package com.diagbot.service;
 package com.diagbot.service;
 
 
-import com.diagbot.entity.QcTypeCasesEntry;
 import com.baomidou.mybatisplus.extension.service.IService;
 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>
@@ -12,5 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2020-04-13
  * @since 2020-04-13
  */
  */
 public interface QcTypeCasesEntryService extends IService<QcTypeCasesEntry> {
 public interface QcTypeCasesEntryService extends IService<QcTypeCasesEntry> {
-
+    List<QcCasesEntrySimpleDTO> getByTypeId(QcTypeVO qcTypeVO);
 }
 }

+ 5 - 1
src/main/java/com/diagbot/service/QcTypeService.java

@@ -1,7 +1,10 @@
 package com.diagbot.service;
 package com.diagbot.service;
 
 
-import com.diagbot.entity.QcType;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.dto.QcTypePageDTO;
+import com.diagbot.entity.QcType;
+import com.diagbot.vo.QcTypePageVO;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
  */
 public interface QcTypeService extends IService<QcType> {
 public interface QcTypeService extends IService<QcType> {
 
 
+    IPage<QcTypePageDTO> getList(QcTypePageVO qcTypePageVO);
 }
 }

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

@@ -1,13 +1,16 @@
 package com.diagbot.service.impl;
 package com.diagbot.service.impl;
 
 
 import com.diagbot.dto.QcCasesEntryDTO;
 import com.diagbot.dto.QcCasesEntryDTO;
+import com.diagbot.dto.QcCasesEntrySimpleDTO;
 import com.diagbot.entity.QcCasesEntry;
 import com.diagbot.entity.QcCasesEntry;
 import com.diagbot.mapper.QcCasesEntryMapper;
 import com.diagbot.mapper.QcCasesEntryMapper;
 import com.diagbot.service.QcCasesEntryService;
 import com.diagbot.service.QcCasesEntryService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.AnalyzeVO;
+import com.diagbot.vo.QcEntryHospitalVO;
 import com.diagbot.vo.QcResultAlgQueryVO;
 import com.diagbot.vo.QcResultAlgQueryVO;
 import com.diagbot.vo.QcResultAlgVO;
 import com.diagbot.vo.QcResultAlgVO;
+import com.diagbot.vo.QcTypeIndexVO;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.util.List;
 import java.util.List;
@@ -31,4 +34,14 @@ public class QcCasesEntryServiceImpl extends ServiceImpl<QcCasesEntryMapper, QcC
     public List<QcResultAlgVO> getQcResultAlgVO(QcResultAlgQueryVO qcResultAlgQueryVO){
     public List<QcResultAlgVO> getQcResultAlgVO(QcResultAlgQueryVO qcResultAlgQueryVO){
         return baseMapper.getQcResultAlgVO(qcResultAlgQueryVO);
         return baseMapper.getQcResultAlgVO(qcResultAlgQueryVO);
     }
     }
+
+    @Override
+    public List<QcCasesEntrySimpleDTO> index(QcTypeIndexVO qcTypeIndexVO) {
+        return baseMapper.index(qcTypeIndexVO);
+    }
+
+    @Override
+    public List<QcCasesEntrySimpleDTO> getEntryByHospital(QcEntryHospitalVO qcEntryHospitalVO) {
+        return baseMapper.getEntryByHospital(qcEntryHospitalVO);
+    }
 }
 }

+ 9 - 2
src/main/java/com/diagbot/service/impl/QcTypeCasesEntryServiceImpl.java

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

+ 7 - 1
src/main/java/com/diagbot/service/impl/QcTypeServiceImpl.java

@@ -1,9 +1,12 @@
 package com.diagbot.service.impl;
 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.entity.QcType;
 import com.diagbot.mapper.QcTypeMapper;
 import com.diagbot.mapper.QcTypeMapper;
 import com.diagbot.service.QcTypeService;
 import com.diagbot.service.QcTypeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.QcTypePageVO;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 /**
 /**
@@ -16,5 +19,8 @@ import org.springframework.stereotype.Service;
  */
  */
 @Service
 @Service
 public class QcTypeServiceImpl extends ServiceImpl<QcTypeMapper, QcType> implements QcTypeService {
 public class QcTypeServiceImpl extends ServiceImpl<QcTypeMapper, QcType> implements QcTypeService {
-
+    @Override
+    public IPage<QcTypePageDTO> getList(QcTypePageVO qcTypePageVO) {
+        return baseMapper.getList(qcTypePageVO);
+    }
 }
 }

+ 19 - 0
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;
+}

+ 18 - 0
src/main/java/com/diagbot/vo/QcEntryHospitalVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2018/11/29 15:09
+ */
+@Getter
+@Setter
+public class QcEntryHospitalVO {
+    // 医院id
+    @ApiModelProperty(hidden = true)
+    private Long hospitalId;
+}

+ 15 - 0
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;
+}

+ 24 - 0
src/main/java/com/diagbot/vo/QcTypeIndexVO.java

@@ -0,0 +1,24 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+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
+    @ApiModelProperty(hidden = true)
+    private Long hospitalId;
+    // 过滤caseEntryId
+    private List<Long> notIds;
+}

+ 22 - 0
src/main/java/com/diagbot/vo/QcTypePageVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModelProperty;
+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
+    @ApiModelProperty(hidden = true)
+    private Long hospitalId;
+}

+ 26 - 0
src/main/java/com/diagbot/vo/QcTypeSaveVO.java

@@ -0,0 +1,26 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+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
+    @ApiModelProperty(hidden = true)
+    private Long hospitalId;
+    // 质控类型名称
+    private String name;
+    // 质控类型和质控条目关联信息
+    private List<QcTypeCasesEntryVO> qcTypeCasesEntryVOList = new ArrayList<>();
+}

+ 16 - 0
src/main/java/com/diagbot/vo/QcTypeVO.java

@@ -0,0 +1,16 @@
+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;
+    private Long hospitalId;
+}

+ 108 - 0
src/main/java/com/diagbot/web/QcTypeController.java

@@ -0,0 +1,108 @@
+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.QcEntryHospitalVO;
+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 springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <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;")
+    @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 = "")
+    @PostMapping("/getEntryByHospital")
+    @SysLogger("getEntryByHospital")
+    public RespDTO<Map<String, List<QcCasesEntrySimpleDTO>>> getEntryByHospital(@RequestBody QcEntryHospitalVO qcEntryHospitalVO) {
+        Map<String, List<QcCasesEntrySimpleDTO>> data = qcTypeFacade.getEntryByHospital(qcEntryHospitalVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "质控条目检索[by:zhoutg]",
+            notes = "    // 界面输入\n" +
+                    "     String input;\n" +
+                    "    // 过滤caseEntryId\n" +
+                    "     List<Long> notIds;")
+    @PostMapping("/index")
+    @SysLogger("index")
+    @ApiIgnore
+    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);
+    }
+}

+ 42 - 0
src/main/resources/mapper/QcCasesEntryMapper.xml

@@ -84,4 +84,46 @@
             </foreach>
             </foreach>
         </if>
         </if>
     </select>
     </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>
+
+    <select id="getEntryByHospital" resultType="com.diagbot.dto.QcCasesEntrySimpleDTO">
+        SELECT
+            t1.`name`, t1.id, t3.`name` mode_name, t2.is_used, 1 as sel
+        FROM
+            qc_cases_entry t1,
+            qc_cases_entry_hospital t2,
+            qc_mode t3
+        WHERE
+            t1.is_deleted = 'N'
+        AND t2.is_deleted = 'N'
+        AND t3.is_deleted = 'N'
+        AND t1.id = t2.cases_entry_id
+        AND t2.is_used = 1
+        AND t1.mode_id = t3.id
+        AND t2.hospital_id = #{hospitalId}
+        ORDER BY t3.order_no,t1.order_no
+    </select>
 </mapper>
 </mapper>

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

@@ -15,4 +15,43 @@
         <result column="modifier" property="modifier" />
         <result column="modifier" property="modifier" />
     </resultMap>
     </resultMap>
 
 
+    <select id="getByTypeId" resultType="com.diagbot.dto.QcCasesEntrySimpleDTO">
+        SELECT
+            a1.*,IF (a2.case_entry_id IS NULL,NULL,1) sel
+        FROM
+            (
+                SELECT
+                    t1.`name`,
+                    t1.id,
+                    t3.`name` mode_name,
+                    t2.is_used,
+                    t3.order_no mode_order,
+                    t1.order_no
+                FROM
+                    qc_cases_entry t1,
+                    qc_cases_entry_hospital t2,
+                    qc_mode t3
+                WHERE
+                    t1.is_deleted = 'N'
+                AND t2.is_deleted = 'N'
+                AND t3.is_deleted = 'N'
+                AND t1.id = t2.cases_entry_id
+                AND t1.mode_id = t3.id
+                AND t2.hospital_id = #{hospitalId}
+            ) a1
+        LEFT JOIN (
+            SELECT
+                q2.case_entry_id
+            FROM
+                qc_type q1,
+                qc_type_cases_entry q2
+            WHERE
+                q1.is_deleted = 'N'
+            AND q2.is_deleted = 'N'
+            AND q1.id = q2.type_id
+            AND q1.hospital_id = #{hospitalId}
+            AND q1.id = #{id}
+        ) a2 ON a1.id = a2.case_entry_id
+        ORDER BY a1.mode_order, a1.order_no
+    </select>
 </mapper>
 </mapper>

+ 12 - 0
src/main/resources/mapper/QcTypeMapper.xml

@@ -14,4 +14,16 @@
         <result column="modifier" property="modifier" />
         <result column="modifier" property="modifier" />
     </resultMap>
     </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>
 </mapper>