123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <?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.persagy.dmp.rwd.simple.dao.EquipmentReportMapper">
- <select id="queryExpectScrapCountByProjects" resultType="java.util.HashMap">
- select pj.id as projectId, pj.name as projectName, count(eq.id) as equipmentTotal,
- sum(case when
- ifnull(json_extract(eq.infos, '$.expectScrapDate'), '9999-12-31') < #{scrapDate}
- then 1 else 0 end) as expectScrapTotal
- from dt_object pj left join dt_object eq on eq.project_id = pj.id
- and eq.obj_type = 'equipment' and eq.valid = 1
- where pj.obj_type = 'project' and pj.valid = 1
- <if test="projectIds != null and projectIds.size() > 0" >
- and pj.project_id in
- <foreach collection="projectIds" item="projectId" open="(" close=")" separator="," >
- #{projectId}
- </foreach>
- </if>
- group by pj.id, pj.name
- </select>
- <select id="queryEquipmentCountByType" resultType="java.util.HashMap">
- select dt_define_type.major_code as majorCode, dt_define_type.system_code as systemCode,
- dt_define_type.code as code, dt_define_type.name as name,
- count(distinct dt_object.id) as total -- 容错处理,避免字典定义重复时数量异常
- from dt_define_type left join dt_object on dt_object.class_code = dt_define_type.code
- and dt_object.obj_type = 'equipment' and dt_object.valid = 1
- <if test="projectIds != null and projectIds.size() > 0" >
- and dt_object.project_id in
- <foreach collection="projectIds" item="projectId" open="(" close=")" separator="," >
- #{projectId}
- </foreach>
- </if>
- where dt_define_type.obj_type = 'equipment' and dt_define_type.code != 'equipment'
- and dt_define_type.valid = 1
- <if test="projectIds != null and projectIds.size() > 0" >
- and dt_define_type.project_id in
- <foreach collection="projectIds" item="projectId" open="(" close=")" separator="," >
- #{projectId}
- </foreach>
- </if>
- group by dt_define_type.major_code, dt_define_type.system_code,
- dt_define_type.code, dt_define_type.name;
- </select>
- <select id="queryObjectCountByObjInfos" resultType="java.util.Map">
- SELECT
- <foreach collection="groups" item="group" separator=",">
- <if test="null!=group.fieldFlag and group.fieldFlag">
- ${group.column} AS #{group.field}
- </if>
- <if test="null!=group.fieldFlag and !group.fieldFlag">
- JSON_UNQUOTE(JSON_EXTRACT(infos, CONCAT('$.',#{group.column}))) AS #{group.field}
- </if>
- </foreach>,
- COUNT(id) AS count
- FROM dt_object
- WHERE valid=TRUE
- <if test="null!=param.objTypes and param.objTypes.size()>0">
- <foreach collection="param.objTypes" item="objType" open="AND obj_type IN(" close=")" separator=",">
- #{objType}
- </foreach>
- </if>
- <if test="null!=param.classCodes and param.classCodes.size()>0">
- <foreach collection="param.classCodes" item="classCode" open="AND class_code IN(" close=")" separator=",">
- #{classCode}
- </foreach>
- </if>
- <if test="null!=param.projectId and param.projectId.length>0">
- AND project_id=#{param.projectId}
- </if>
- <if test="null!=param.groupCode and param.groupCode.length>0">
- AND group_code=#{param.groupCode}
- </if>
- <foreach collection="groups" item="group">
- <if test="null!=group.fieldFlag and group.fieldFlag">
- AND ${group.column} IS NOT NULL
- </if>
- <if test="null!=group.fieldFlag and !group.fieldFlag">
- AND JSON_UNQUOTE(JSON_EXTRACT(infos, CONCAT('$.',#{group.column}))) IS NOT NULL
- </if>
- </foreach>
- GROUP BY
- <foreach collection="groups" item="group" separator=",">
- <if test="null!=group.fieldFlag and group.fieldFlag">
- ${group.column}
- </if>
- <if test="null!=group.fieldFlag and !group.fieldFlag">
- JSON_UNQUOTE(JSON_EXTRACT(infos, CONCAT('$.',#{group.column})))
- </if>
- </foreach>
- ORDER BY count DESC
- </select>
- <select id="queryComponentsCountByEquipId" resultType="java.util.Map">
- SELECT re.obj_from as 'id',count(1) as count,obj.class_code, df.system_code as 'equip_category',df.`name` AS category_name
- FROM dt_object obj
- join dt_relation re on obj.id = re.obj_to
- join dt_define_type df on df.code = obj.class_code
- where obj.valid=TRUE and obj.obj_type='component' and re.rel_code='Eq2Ec'
- <if test="null!=equipmentId and equipmentId.length>0">
- AND re.obj_from=#{equipmentId}
- </if>
- <if test="null!=projectId and projectId.length>0">
- AND obj.project_id=#{projectId}
- </if>
- <if test="null!=groupCode and groupCode.length>0">
- AND obj.group_code=#{groupCode}
- </if>
- GROUP BY obj.class_code,re.obj_from,df.system_code,df.name
- </select>
- </mapper>
|