Commit af7e6e8b authored by tianbo's avatar tianbo

feat(statistics): 优化安全问题追踪查询逻辑并修复地址设置问题

- 优化安全问题追踪查询,使用 limit 1 提高查询效率 - 移除冗余的列表查询,改用单条记录查询 - 修复企业注册地址设置时的空指针异常 - 更新分页查询逻辑以支持更精确的数据获取 - 注释掉未使用的账号类型相关代码
parent 60e9a51e
......@@ -17,7 +17,11 @@ import java.util.Map;
*/
public interface SafetyProblemTracingMapper extends BaseMapper<SafetyProblemTracing> {
Page<SafetyProblemTracingDto> queryForSafetyProblemTracingPage(Page<SafetyProblemTracingDto> page, @Param("problemModel")SafetyProblemTracingDto problemModel);
List<SafetyProblemTracingDto> queryForSafetyProblemTracingPage(@Param("size") Long size,
@Param("offset") Long offset,
@Param("problemModel") SafetyProblemTracingDto problemModel);
Long queryForSafetyProblemTracingCount(@Param("problemModel") SafetyProblemTracingDto problemModel);
Page<Map<String, Object>> queryEquipListByProblemId(Page<Map<String, Object>> page, String problemId);
......
......@@ -2,107 +2,100 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.jg.api.mapper.SafetyProblemTracingMapper">
<select id="queryForSafetyProblemTracingPage"
resultType="com.yeejoin.amos.boot.module.jg.api.dto.SafetyProblemTracingDto">
SELECT
spt.sequence_nbr,
spt.problem_type,
spt.problem_desc,
spt.source_type,
spt.problem_time,
spt.principal_unit,
spt.principal_unit_type,
spt.governing_body,
spt.region_name,
spt.problem_status,
CASE
WHEN spt.problem_status_code = '0' THEN '红'
ELSE '绿'
END AS hiddenDangersLevel,
cdd.extend::json ->> 'pic' AS problemTypePic
FROM tzs_safety_problem_tracing spt
LEFT JOIN cb_data_dictionary cdd
ON cdd.type = 'ISSUE_TYPE'
AND cdd.code = spt.problem_type_code
<sql id="sptWhereConditions">
<where>
spt.is_delete = '0'
<if test="problemModel.problemNum != null and problemModel.problemNum != ''">
AND spt.problem_num LIKE CONCAT('%', #{problemModel.problemNum}, '%')
</if>
<if test="problemModel.problemStatus != null and problemModel.problemStatus != ''">
AND spt.problem_status = #{problemModel.problemStatus}
</if>
<if test="problemModel.equipListCode != null and problemModel.equipListCode != ''">
AND spt.equip_list_code = #{problemModel.equipListCode}
</if>
<if test="problemModel.equCategoryCode != null and problemModel.equCategoryCode != ''">
AND spt.equ_category_code = #{problemModel.equCategoryCode}
</if>
<if test="problemModel.sourceTypeCode != null and problemModel.sourceTypeCode != ''">
AND spt.source_type_code = #{problemModel.sourceTypeCode}
</if>
<if test="problemModel.problemLevelCode != null and problemModel.problemLevelCode != ''">
AND spt.problem_level_code = #{problemModel.problemLevelCode}
</if>
<if test="problemModel.problemTypeCode != null and problemModel.problemTypeCode != ''">
AND spt.problem_type_code = #{problemModel.problemTypeCode}
</if>
<if test="problemModel.problemTimeRange != null and problemModel.problemTimeRange.beginDate != null">
AND to_char(spt.problem_time, 'YYYY-MM-DD') <![CDATA[>=]]>
to_char(#{problemModel.problemTimeRange.beginDate}::timestamp, 'YYYY-MM-DD')
</if>
<if test="problemModel.problemTimeRange != null and problemModel.problemTimeRange.endDate != null">
AND to_char(spt.problem_time, 'YYYY-MM-DD') <![CDATA[<=]]>
to_char(#{problemModel.problemTimeRange.endDate}::timestamp, 'YYYY-MM-DD')
</if>
<if test="problemModel.problemDesc != null and problemModel.problemDesc != ''">
AND spt.problem_desc LIKE CONCAT('%', #{problemModel.problemDesc}, '%')
</if>
<if test="problemModel.sourceId != null and problemModel.sourceId != ''">
AND spt.source_id = #{problemModel.sourceId}
</if>
<if test="problemModel.governingBodyOrgCode != null and problemModel.governingBodyOrgCode != ''">
AND spt.governing_body_org_code LIKE CONCAT(#{problemModel.governingBodyOrgCode}, '%')
</if>
<if test="problemModel.governingBodyCode != null and problemModel.governingBodyCode != ''">
AND spt.governing_body_code = #{problemModel.governingBodyCode}
</if>
<if test="problemModel.principalUnit != null and problemModel.principalUnit != ''">
AND spt.principal_unit LIKE CONCAT('%', #{problemModel.principalUnit}, '%')
</if>
<if test="problemModel.principalUnitType != null and problemModel.principalUnitType != ''">
AND spt.principal_unit_type LIKE CONCAT('%', #{problemModel.principalUnitType}, '%')
</if>
<if test="problemModel.hiddenDangersLevel != null and problemModel.hiddenDangersLevel != ''">
AND spt.problem_status_code = #{problemModel.hiddenDangersLevel}
</if>
<if test="problemModel.regionCode != null and problemModel.regionCode != ''">
AND spt.region_code LIKE CONCAT('%', #{problemModel.regionCode}, '%')
</if>
<if test="problemModel.problemStatusCode != null and problemModel.problemStatusCode != ''">
AND spt.problem_status_code = #{problemModel.problemStatusCode}
</if>
</where>
</sql>
<select id="queryForSafetyProblemTracingPage"
resultType="com.yeejoin.amos.boot.module.jg.api.dto.SafetyProblemTracingDto">
SELECT
spt.sequence_nbr,
spt.problem_type,
spt.problem_desc,
spt.source_type,
spt.problem_time,
spt.principal_unit,
spt.principal_unit_type,
spt.governing_body,
spt.region_name,
spt.problem_status,
CASE
WHEN spt.problem_status_code = '0' THEN '红'
ELSE '绿'
END AS hiddenDangersLevel,
cdd.extend::json ->> 'pic' AS problemTypePic
FROM tzs_safety_problem_tracing spt
LEFT JOIN cb_data_dictionary cdd
ON cdd.type = 'ISSUE_TYPE'
AND cdd.code = spt.problem_type_code
<include refid="sptWhereConditions"/>
ORDER BY spt.create_date DESC
LIMIT #{size} OFFSET #{offset}
</select>
<select id="queryForSafetyProblemTracingCount" resultType="long">
SELECT
count(*)
FROM tzs_safety_problem_tracing spt
<include refid="sptWhereConditions"/>
</select>
<select id="queryEquipListByProblemId" resultType="java.util.Map">
......
......@@ -75,7 +75,10 @@ public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTr
* 分页查询
*/
public Page<SafetyProblemTracingDto> queryForSafetyProblemTracingPage(Page<SafetyProblemTracingDto> page, SafetyProblemTracingDto problemModel) {
return this.baseMapper.queryForSafetyProblemTracingPage(page, problemModel);
long total = this.baseMapper.queryForSafetyProblemTracingCount(problemModel);
page.setRecords(this.baseMapper.queryForSafetyProblemTracingPage(page.getSize(), Long.min(page.getSize() * (page.getCurrent() - 1), total), problemModel));
page.setTotal(total);
return page;
}
public Page<SafetyProblemTracingDto> getProblemRecords(Page<SafetyProblemTracingDto> page, SafetyProblemTracingDto problemModel) {
......@@ -94,7 +97,7 @@ public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTr
Map<String, String> unitTypeMap = unitTypeList.stream().collect(Collectors.toMap(DataDictionary::getCode, DataDictionary::getName));
problemModel.setPrincipalUnitType(unitTypeMap.getOrDefault(problemModel.getPrincipalUnitType(),null));
}
return this.baseMapper.queryForSafetyProblemTracingPage(page, problemModel);
return this.queryForSafetyProblemTracingPage(page, problemModel);
}
public String getAndSetOrgCode(String cityCode) {
......@@ -111,7 +114,7 @@ public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTr
public Page<SafetyProblemTracingDto> queryProblemPageByEquipId(Page<SafetyProblemTracingDto> page, String equipId) {
SafetyProblemTracingDto problemModel = new SafetyProblemTracingDto();
problemModel.setSourceId(equipId);
return this.baseMapper.queryForSafetyProblemTracingPage(page, problemModel);
return this.queryForSafetyProblemTracingPage(page, problemModel);
}
/**
......
......@@ -755,9 +755,11 @@ public class TzBaseEnterpriseInfoServiceImpl
});
if (!ValidationUtil.isEmpty(regUnitIcDto.getSequenceNbr())) {
List<String> addressList = (List<String>) map.get("registerAddressList");
tzBaseEnterpriseInfo.setProvince(addressList.get(0));
tzBaseEnterpriseInfo.setCity(addressList.get(1));
tzBaseEnterpriseInfo.setDistrict(addressList.get(2));
if (!ValidationUtil.isEmpty(addressList) && addressList.size() > 2) {
tzBaseEnterpriseInfo.setProvince(addressList.get(0));
tzBaseEnterpriseInfo.setCity(addressList.get(1));
tzBaseEnterpriseInfo.setDistrict(addressList.get(2));
}
tzBaseEnterpriseInfo.setCommunity(ObjectUtils.isEmpty(map.get("community")) ? null : String.valueOf(map.get("community")));
tzBaseEnterpriseInfo.setStreet(ObjectUtils.isEmpty(map.get("street")) ? null : String.valueOf(map.get("street")));
// tzBaseEnterpriseInfo.setAddress(ObjectUtils.isEmpty(map.get("regAddress")) ? null : String.valueOf(map.get("regAddress")));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment