소스 검색

Merge commit '37943f16731ba58c0966b2834cdcb6210dfad5da' into pro

linfutong 2 년 전
부모
커밋
9d2a56b3b9
14개의 변경된 파일355개의 추가작업 그리고 16개의 파일을 삭제
  1. 6 6
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/controller/HxpChemicalController.java
  2. 21 5
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/vo/HxpChemicalByExcel.java
  3. 39 2
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpChemicalServiceImpl.java
  4. 19 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabSubMangerController.java
  5. 13 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/dto/LabSubListQuery.java
  6. 8 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSubjectLayoutMapper.java
  7. 8 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSubjectMapper.java
  8. 9 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSubjectLayoutService.java
  9. 8 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSubjectService.java
  10. 8 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectLayoutServiceImpl.java
  11. 132 3
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectManagerService.java
  12. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectServiceImpl.java
  13. 13 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectLayoutMapper.xml
  14. 64 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectMapper.xml

+ 6 - 6
zd-modules/zd-chemical/src/main/java/com/zd/chemical/controller/HxpChemicalController.java

@@ -125,9 +125,9 @@ public class HxpChemicalController extends BaseController {
                 "6、请注意:需填写系统中已录入的对应数据名称,否则无法正常导入。\n" +
                 "系统字段要求提示:"+
                 "化学品分类:普通化学品、危险化学品;"+
-                "化学品属性:爆炸品、压缩气体或液化气体、易燃液体、易燃固体、自燃物品和遇湿易燃物品、氧化剂和有机过氧化物、有毒品、放射性物品、腐蚀品、无;"+
-                "形态:固体、液体、气体、其他"+
-                "标签类型:二维码、RFID";
+                "化学品属性:爆炸品、压缩气体或液化气体、易燃液体、易燃固体、自燃物品和遇湿易燃物品、氧化剂和有机过氧化物、有毒品、放射性物品、腐蚀品、无;\n"+
+                "形态:固体、液体、气体、其他"+
+                "标签类型:二维码、RFID,计量方式:重量、体积、个数";
         ExcelUtil<HxpChemicalByExcel> util = new ExcelUtil<HxpChemicalByExcel>(HxpChemicalByExcel.class);
         List<HxpChemicalByExcel> chemicalByExcels = redisService.getCacheObject("exportByChemical"+SecurityUtils.getUserId());
         if(chemicalByExcels.size()>0){
@@ -147,9 +147,9 @@ public class HxpChemicalController extends BaseController {
                 "6、请注意:需填写系统中已录入的对应数据名称,否则无法正常导入。\n" +
                 "系统字段要求提示:"+
                 "化学品分类:普通化学品、危险化学品;"+
-                "化学品属性:爆炸品、压缩气体或液化气体、易燃液体、易燃固体、自燃物品和遇湿易燃物品、氧化剂和有机过氧化物、有毒品、放射性物品、腐蚀品、无;"+
-                "形态:固体、液体、气体、其他"+
-                "标签类型:二维码、RFID";
+                "化学品属性:爆炸品、压缩气体或液化气体、易燃液体、易燃固体、自燃物品和遇湿易燃物品、氧化剂和有机过氧化物、有毒品、放射性物品、腐蚀品、无;\n"+
+                "形态:固体、液体、气体、其他"+
+                "标签类型:二维码、RFID,计量方式:重量、体积、个数";
         ExcelUtil<HxpChemicalByExcel> util = new ExcelUtil<HxpChemicalByExcel>(HxpChemicalByExcel.class);
         util.exportExcel(response, null, "化学品信息", tips, "化学品信息-批量导入模板");
     }

+ 21 - 5
zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/vo/HxpChemicalByExcel.java

@@ -35,25 +35,33 @@ public class HxpChemicalByExcel {
     @ApiModelProperty(value = "标签类型内容")
     private String labelContent;
 
-    @Excel(name = "属性",sort = 5)
+    @Excel(name = "计量单位",sort = 4, isRequired=true)
+    @ApiModelProperty(value = "计量单位")
+    private String chemicalUnit;
+
+    @Excel(name = "计量方式",sort = 5, isRequired=true)
+    @ApiModelProperty(value = "计量方式")
+    private String measuringMethod;
+
+    @Excel(name = "属性",sort = 6)
     @ApiModelProperty(value = "分类属性")
     private String classifyAttribute;
 
-    @Excel(name = "cas号",sort = 6)
+    @Excel(name = "cas号",sort = 7)
     @Length(message = "cas号长度不能超过50")
     @ApiModelProperty(value = "cas号")
     private String casNum;
 
-    @Excel(name = "别名",sort = 7)
+    @Excel(name = "别名",sort = 8)
     @ApiModelProperty(value = "别名")
     private String anotherName;
 
-    @Excel(name = "纯度",sort = 8)
+    @Excel(name = "纯度",sort = 9)
     @ApiModelProperty(value = "纯度")
     private String purity;
 
 
-    @Excel(name = "生产厂家",sort = 9)
+    @Excel(name = "生产厂家",sort = 10)
     @ApiModelProperty(value = "生产厂家")
     private String factory;
 
@@ -160,4 +168,12 @@ public class HxpChemicalByExcel {
     public void setUpDate(Boolean upDate) {
         this.upDate = upDate;
     }
+
+    public String getChemicalUnit() {        return chemicalUnit;    }
+
+    public void setChemicalUnit(String chemicalUnit) {        this.chemicalUnit = chemicalUnit;    }
+
+    public String getMeasuringMethod() {        return measuringMethod;    }
+
+    public void setMeasuringMethod(String measuringMethod) {        this.measuringMethod = measuringMethod;    }
 }

+ 39 - 2
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpChemicalServiceImpl.java

@@ -175,6 +175,43 @@ public class HxpChemicalServiceImpl implements IHxpChemicalService {
             }
         }
 
+        //计量单位
+        if(StringUtils.isNotEmpty(chemical.getChemicalUnit())){
+            if(chemical.getChemicalUnit().length()>8){
+                chemical.getFailRemark().append("失败:");
+                failChemicalList.add(chemical);
+                checkBox = false;
+                chemical.getFailRemark().append("计量单位过长、");
+            }
+            hxpChemical.setChemicalUnit(chemical.getChemicalUnit());
+        }else{
+            chemical.getFailRemark().append("失败:");
+            failChemicalList.add(chemical);
+            checkBox = false;
+            chemical.getFailRemark().append("计量单位不能为空、");
+        }
+
+        //计量方式
+        if(StringUtils.isNotEmpty(chemical.getMeasuringMethod())){
+            if("重量".equals(chemical.getMeasuringMethod())){
+                hxpChemical.setMeasuringMethod(1);
+            }else if("体积".equals(chemical.getMeasuringMethod())){
+                hxpChemical.setMeasuringMethod(2);
+            }else if("个数".equals(chemical.getMeasuringMethod())){
+                hxpChemical.setMeasuringMethod(3);
+            }else{
+                chemical.getFailRemark().append("失败:");
+                failChemicalList.add(chemical);
+                checkBox = false;
+                chemical.getFailRemark().append("计量方式不存在、");
+            }
+        }else {
+            chemical.getFailRemark().append("失败:");
+            failChemicalList.add(chemical);
+            checkBox = false;
+            chemical.getFailRemark().append("计量方式不能为空、");
+        }
+
 //        Map<String,Integer> labelMap = new HashMap<>();
 //        labelMap.put("RFID",1);
 //        labelMap.put("二维码",2);
@@ -262,8 +299,8 @@ public class HxpChemicalServiceImpl implements IHxpChemicalService {
 
         if(StringUtils.isEmpty(chemical.getFailRemark())){
             //这里目前先写死
-            hxpChemical.setMeasuringMethod(1);
-            hxpChemical.setChemicalUnit("");
+            //hxpChemical.setMeasuringMethod(1);
+            //hxpChemical.setChemicalUnit("");
             // hxpChemical.setChemicalUnit("g");
             hxpChemicalService.insertHxpChemical(hxpChemical);
         }

+ 19 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabSubMangerController.java

@@ -82,6 +82,25 @@ public class LabSubMangerController extends BaseController {
     }
 
     /**
+     * 查询实验室控制数据列表- 数据权限(包括负责人)
+     * 2021年11月18日 放弃使用  重构了实验室查询
+     * @see LabSubMangerV2Controller
+     * @return
+     */
+    @PreAuthorize(hasPermi = PerPrefix.LABORATORY_SUBJECT + PerFun.LIST)
+    @ApiOperation("查询实验室控制数据列表- 数据权限(包括负责人)")
+    @GetMapping("/pclist")
+    public TableDataInfo<List<LabSubjectVO>> pclist(LabSubListQuery labSubListQuery) {
+        startPage();
+        labSubListQuery.setPcControl(true);
+        List<LabSubjectVO> list = subjectManagerService.querySubCListVO(labSubListQuery);
+        if(list==null){
+            list = new ArrayList <>();
+        }
+        return getDataTable(list);
+    }
+
+    /**
      * 查询实验室详情
      * @param id 实验室ID
      * @param type 1 只查硬件数据, 0 查全部详情

+ 13 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/dto/LabSubListQuery.java

@@ -29,6 +29,11 @@ public class LabSubListQuery {
      */
     private Integer level;
 
+    /**
+     *是否是pc请求控制
+     */
+    private Boolean pcControl = false;
+
     public String getSubDept() {
         return subDept;
     }
@@ -60,4 +65,12 @@ public class LabSubListQuery {
     public void setDeptId(Long deptId) {
         this.deptId = deptId;
     }
+
+    public Boolean getPcControl() {
+        return pcControl;
+    }
+
+    public void setPcControl(Boolean pcControl) {
+        this.pcControl = pcControl;
+    }
 }

+ 8 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSubjectLayoutMapper.java

@@ -77,6 +77,14 @@ public interface LabSubjectLayoutMapper {
      */
     public List<SubAddrr> selectAddrrByLayoutIds(Long[] ids);
 
+    /**
+     * 通过ID批量获取实验室布局
+     *
+     * @param ids 主键集合
+     * @return 结果
+     */
+    public List<SubAddrr> selectAddrrByLayoutIdsByPc(Long[] ids);
+
 
     /**
      * 批量删除实验室布局

+ 8 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSubjectMapper.java

@@ -91,6 +91,14 @@ public interface LabSubjectMapper {
     public List<LabSubjectVO> selectLabSubjectVOList(LabSubject labSubject);
 
     /**
+     * 查询实验室列表VO-数据权限
+     *
+     * @param labSubject 实验室
+     * @return 实验室集合
+     */
+    public List<LabSubjectVO> selectLabSubjectVOListByPc(LabSubject labSubject);
+
+    /**
      * 获取实验室数量
      * @param labSubject
      * @return

+ 9 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSubjectLayoutService.java

@@ -68,6 +68,15 @@ public interface ILabSubjectLayoutService {
      */
     public List<SubAddrr> selectAddrrByLayoutIds(Long... ids);
 
+
+    /**
+     * 通过ID批量获取实验室布局
+     *
+     * @param ids 主键集合
+     * @return 结果
+     */
+    public List<SubAddrr> selectAddrrByLayoutIdsByPc(Long... ids);
+
     /**
      * 删除实验室布局信息
      *

+ 8 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSubjectService.java

@@ -66,6 +66,14 @@ public interface ILabSubjectService {
     public List<LabSubjectVO> selectLabSubjectListAUTH(LabSubject labSubject);
 
     /**
+     * 查询实验室列表-应用数据权限和实验室负责人权限
+     *
+     * @param labSubject 实验室
+     * @return 实验室集合
+     */
+    public List<LabSubjectVO> selectLabSubjectListAuthByPc(LabSubject labSubject);
+
+    /**
      * 我管理的实验室数量 应用数据权限和实验室负责人权限
      *
      * @param labSubject 实验室

+ 8 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectLayoutServiceImpl.java

@@ -112,6 +112,14 @@ public class LabSubjectLayoutServiceImpl implements ILabSubjectLayoutService {
         return labSubjectLayoutMapper.selectAddrrByLayoutIds(ids);
     }
 
+    @Override
+    public List <SubAddrr> selectAddrrByLayoutIdsByPc(Long... ids) {
+        if (ids == null || ids.length == 0) {
+            return Collections.emptyList();
+        }
+        return labSubjectLayoutMapper.selectAddrrByLayoutIdsByPc(ids);
+    }
+
     /**
      * 删除实验室布局信息
      *

+ 132 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectManagerService.java

@@ -501,7 +501,13 @@ public class LabSubjectManagerService {
 
         //1.获取权限的分页数据
         PageHelperUtil.startPage();
-        List<LabSubjectVO> labSubjects = subjectService.selectLabSubjectListAUTH(subject);
+        List<LabSubjectVO> labSubjects;
+        if(labSubListQuery.getPcControl()){
+            labSubjects = subjectService.selectLabSubjectListAuthByPc(subject);
+        }else{
+            labSubjects = subjectService.selectLabSubjectListAUTH(subject);
+        }
+
         List<Long> subIds = new ArrayList<>();
         labSubjects.forEach( a -> {
             // 危险源
@@ -550,8 +556,8 @@ public class LabSubjectManagerService {
     public LabSubjectControllerVO querySubById(Long id, Integer type) {
         LabSubject subject = new LabSubject();
         subject.setId(id);
-        List<LabSubjectVO> labSubjects = subjectService.selectLabSubjectListAUTH(subject);
-        List<LabSubjectControllerVO> list = createSubControllerVO(labSubjects, true, true, true, true, true);
+        List<LabSubjectVO> labSubjects = subjectService.selectLabSubjectListAuthByPc(subject);
+        List<LabSubjectControllerVO> list = createSubControllerVO2(labSubjects, true, true, true, true, true);
         if(list.size() > 0){
             LabSubjectControllerVO subjectControllerVO = list.get(0);
             subjectControllerVO.setSafeUserNameAdminPhone(labSubjectMapper.queryUserNameBySafeUserInfo(subjectControllerVO.getSafeUserId()));
@@ -1190,6 +1196,129 @@ public class LabSubjectManagerService {
 
     }
 
+
+
+    /**
+     * 生成实验室控制VO
+     * 2021年11月12日 增加了{@link SubQueryManager} 请看其中的方法
+     *
+     * @param labSubjects
+     * @param flag             是否计算权限(数据权限>负责人 ,数据权限会覆盖负责人 )
+     * @param iflabSubClassVOS 是否计算危险等级
+     * @param iflabHardwares   是否计算可控设备
+     * @param iflabSensors     是否计算传感器
+     * @return
+     */
+    @Deprecated
+    private List<LabSubjectControllerVO> createSubControllerVO2(List<? extends LabSubject> labSubjects, boolean flag, boolean iflabSubClassVOS, boolean iflabHardwares, boolean iflabSensors, boolean ifFunction) {
+        List<LabSubjectControllerVO> list = null;
+        if (CollUtil.isNotEmpty(labSubjects)) {
+            Long[] longs = labSubjects.stream().map(a -> a.getId()).toArray(Long[]::new);
+            //0.获取危险等级
+//            List<LabSubClassVO> labSubClassVOS = null;
+//            if (iflabSubClassVOS) {
+//                labSubClassVOS = subjectService.querySubClassesByIds(longs);
+//            }
+            List<LabHardware> labHardwares = null;
+            if (iflabHardwares) {
+                //1.可控设备
+                labHardwares = hardwareMapper.selectLabHardwareBySubIds(longs);
+            }
+            List<LabSensor> labSensors = null;
+            boolean flagUpdate = false;
+            //获取测点列表
+            if (ifFunction) {
+                //2.获取传感器
+                labSensors = sensorMapper.selectSensorBySubIds(longs);
+            }
+            if (iflabSensors && ifFunction == false) {
+                //2.获取传感器
+                labSensors = sensorMapper.selectSensorBySubIds(longs);
+            }
+            //2.1.获取详细地址后面做(已完成)
+            Long[] layoutIds = labSubjects.stream().map(a -> a.getLayoutId()).filter(a -> a != null).toArray(Long[]::new);
+            List<SubAddrr> subAddrrs = subjectLayoutService.selectAddrrByLayoutIdsByPc(layoutIds);
+            Map<Long, SubAddrr> subAddrrMap = subAddrrs.stream().collect(Collectors.toMap(SubAddrr::getId, Function.identity()));
+            //3.获取实验室是否拥有数据权限
+            //3 获取实验室数据权限(杨森的需求:仅负责人时不能修改实验室) 后面做(已完成)
+            List<LabSubjectVO> labSubjectsDataScope = null;
+            if (flag) {
+                // 实验权限覆盖后面做(已完成)
+                LabSubject subject = new LabSubject();
+//                subject.setAdminId(SecurityUtils.getUserIdEx());
+                //获取我的实验室
+                labSubjectsDataScope = subjectService.selectLabSubjectListDataScope(subject);
+            }
+            Map<Long, Long> mapSubDataScope = Optional.ofNullable(labSubjectsDataScope).orElseGet(Collections::emptyList)
+                    .stream().collect(Collectors.toMap(a -> a.getId(), a -> a.getId()));
+            //4.传感器和可控设备都转为vo数据,并映射为map表
+            Map<Long, List<HardwareCVO>> mapHardwareCVO = Optional.ofNullable(labHardwares).orElse(new ArrayList<>(0)).stream().map(a -> {
+                HardwareCVO hardware = getHardwareCVO(a);
+
+
+                return hardware;
+            }).collect(Collectors.groupingBy(HardwareCVO::getSubId));
+
+            Map<Long, List<LabSensor>> mapSenseTemp = Optional.ofNullable(labSensors)
+                    .orElse(Arrays.asList())
+                    .stream()
+                    .collect(Collectors.groupingBy(LabSensor::getSubjectId));
+            Map<Long, List<SenseValVO>> mapSenseValVO = Optional.ofNullable(labSensors).orElse(Arrays.asList()).stream().map(a -> {
+                SenseValVO senseValVO = getSenseValVO(a);
+                return senseValVO;
+            }).collect(Collectors.groupingBy(SenseValVO::getSubId));
+//            //映射危险等级 需求变更
+//            Map<Long, LabSubClassVO> subClassMap = Optional.ofNullable(labSubClassVOS)
+//                    .orElse(Arrays.asList())
+//                    .stream()
+//                    .collect(Collectors.toMap(a -> a.getSubjectId(), Function.identity()));
+            //5.转为实验室vo 数据 ,组装设备和权限到实验室
+            list = labSubjects.stream().map(a -> {
+                a.setQrCodeUrl(a.getId() + "-" + Optional.ofNullable(a.getRoom()).orElse(""));
+
+                LabSubjectControllerVO scVO = new LabSubjectControllerVO();
+                BeanUtils.copyProperties(a, scVO);
+
+                if (iflabSensors) {
+                    scVO.setSenseVOList(mapSenseValVO.get(a.getId()));
+                }
+                if (iflabHardwares) {
+                    scVO.setLabHardwareVOList(mapHardwareCVO.get(a.getId()));
+                }
+                //设置测点列表
+                if (ifFunction) {
+                    List<LabSensor> labSensors1 = mapSenseTemp.get(a.getId());
+                    List<SensorFunctionStatus> sensorFunctionStatuses = getSensorFunctionStatuses(labSensors1, true);
+                    scVO.setSensorFunctionStatusList(sensorFunctionStatuses);
+                    logger.info("setSensorFunctionStatusList:" + JSONObject.toJSONString(scVO.getSensorFunctionStatusList()));
+
+                }
+                //设置危险等级
+                if (iflabSubClassVOS) {
+                    LabSubClassVO labSubClassVO = new LabSubClassVO();
+                    if (scVO.getLevel() != null) {
+                        labSubClassVO.setDangerLevel(Long.valueOf(scVO.getLevel()));
+                    }
+                    scVO.setSubClassVO(labSubClassVO);
+                }
+                //需求变化, 危险等级不再和危险品关联,直接和实验室关联
+
+                //设置地址信息 后面做(已完成)
+                scVO.setSubAddrr(subAddrrMap.get(a.getLayoutId()));
+                if (flag) {
+                    scVO.setAdmin(Boolean.FALSE);
+                    //实验权限覆盖 后面做(已完成)
+                    if (mapSubDataScope.containsKey(a.getId())) {
+                        scVO.setAdmin(Boolean.TRUE);
+                    }
+                }
+                return scVO;
+            }).collect(Collectors.toList());
+        }
+        return list;
+
+    }
+
     /**
      * 异步执行 查询危险等级
      *

+ 7 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectServiceImpl.java

@@ -123,6 +123,13 @@ public class LabSubjectServiceImpl implements ILabSubjectService {
     public List<LabSubjectVO> selectLabSubjectListAUTH(LabSubject labSubject) {
         return labSubjectMapper.selectLabSubjectVOList(labSubject);
     }
+
+    @Override
+    @DataScope(deptAlias = "t", userAlias = "t", subAdmin = true, permi = PerPrefix.LABORATORY_SUBJECT)
+    public List <LabSubjectVO> selectLabSubjectListAuthByPc(LabSubject labSubject) {
+        return labSubjectMapper.selectLabSubjectVOListByPc(labSubject);
+    }
+
     /**
      * 我管理的实验室数量 应用数据权限和实验室负责人权限
      *

+ 13 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectLayoutMapper.xml

@@ -167,6 +167,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         #{id}
         </foreach>
     </select>
+
+    <select id="selectAddrrByLayoutIdsByPc"  resultType="com.zd.laboratory.api.entity.SubAddrr">
+        select t.id,  t.room, t.floor_id,
+        lb.name as floor_name ,
+        sd.dept_name as build_name
+        from lab_subject_layout as t
+        left join lab_building lb on lb.id = t.floor_id
+        left join sys_dept sd on sd.dept_id = lb.dept_id
+        where t.id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+        #{id}
+        </foreach>
+    </select>
     <select id="selectLayoutListByIds" resultType="com.zd.laboratory.domain.vo.LabSubjectLayoutVo">
         SELECT sl.id,
         IFNULL((SELECT s.id FROM lab_subject s WHERE s.layout_id = sl.`id`),-1) subject_id,

+ 64 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectMapper.xml

@@ -302,6 +302,70 @@
         </where>
         order by t.diy_order desc , t.create_time desc
     </select>
+
+    <select id="selectLabSubjectVOListByPc" parameterType="com.zd.laboratory.domain.LabSubject" resultMap="LabSubjectResultVO">
+        select t.id,
+        t.name,
+        t.floor_id,
+        lb.room,
+        t.dept_id,
+        IFNULL(su.user_id,-1) admin_id,
+        t.is_del,
+        t.create_time,
+        t.user_id,
+        t.create_by,
+        t.update_time,
+        t.update_by,
+        t.sub_dept,
+        t.layout_id,
+        t.build_id,
+        t.remark,
+        t.level,
+        t.diy_order,
+        cf.classified_name levelName,
+        cf.classified_color fiedColor,
+        t.type_id,
+        (SELECT ct.type_name FROM lab_safe_classtype ct WHERE ct.id = t.`type_id`) typeName,
+        t.mold_id,
+        (select lm.mold_name from lab_mold lm where t.mold_id = lm.id) as moldName,
+        t.check_out, t.check_in, t.safe_user_id, t.safe_signs, t.hazard_category, t.risk_measure,
+        t.outfire, t.qr_code,
+        su.nick_name as admin_name,
+        su.phonenumber as adminPhone,
+        sd.dept_name as dept_name,
+        t.skipped,
+        t.check_count,
+        t.sign_time,
+        t.mold_id,
+        CONCAT(su.nick_name,'@',su.phonenumber) AS adminNameAndPhone,
+
+        (select d.dept_name from sys_dept d where t.build_id = d.dept_id) buildName,
+        (select b.name from lab_building b where b.id = t.floor_id) floorName,
+        (SELECT l.room FROM lab_subject_layout l WHERE l.id = t.layout_id ) roomName
+
+        from lab_subject t
+        left  join  sys_user su on su.user_id = t.admin_id  AND su.`del_flag`=0
+        left  join  sys_dept sd on sd.dept_id = t.dept_id
+        left  join  lab_subject_layout lb on lb.id = t.layout_id
+        left join lab_safe_classified cf on cf.id = t.level
+        <where>
+            <if test="name != null  and name != ''"> and t.name like concat('%', #{name}, '%')</if>
+            <if test="adminName != null  and adminName != ''"> and su.nick_name like concat('%', #{adminName}, '%')</if>
+
+            <if test="buildId != null "> and t.build_id = #{buildId}</if>
+            <if test="deptId != null "> and t.dept_id = #{deptId}</if>
+            <if test="id != null "> and t.id = #{id}</if>
+            <if test="subIds != null and subIds != ''"> and find_in_set(t.id, #{subIds})</if>
+
+            <if test="adminId != null "> and t.admin_id = #{adminId}</if>
+            <if test="level != null "> and t.level = #{level}</if>
+            <if test="typeId != null "> and t.type_id = #{typeId}</if>
+            <if test="subDept != null and subDept != ''"> and t.sub_dept = #{subDept}</if>
+            <!-- 数据范围过滤 -->
+            ${params.dataScope}
+        </where>
+        order by t.diy_order desc , t.create_time desc
+    </select>
 <!--  我管理的实验室数量 管理的意思是数据权限加业务权限  -->
     <select id="myAdminSubCount" parameterType="com.zd.laboratory.domain.LabSubject" resultType="int">
         select count(id)  from lab_subject t