优化查询语句

main
gaoshuguang 2 years ago
parent 0439b48c3e
commit c9901ce8c3

@ -1,5 +1,6 @@
package com.nmgs.workorder.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nmgs.workorder.entity.WorkInfo;
@ -16,6 +17,6 @@ import java.util.Map;
@Mapper
public interface WorkInfoMapper extends BaseMapper<WorkInfo> {
Page<WorkInfo> myPageWorkInfo2(Page<?> page,@Param("ew") QueryWrapper<WorkInfo> queryWarper);
Page<WorkInfo> myPageWorkInfo(Page<?> page, @Param("params") Map<String, Object> params);
}

@ -5,55 +5,10 @@
<mapper namespace="com.nmgs.workorder.mapper.WorkInfoMapper">
<select id="myPageWorkInfo" resultType="com.nmgs.workorder.entity.WorkInfo">
<select id="myPageWorkInfo2" resultType="com.nmgs.workorder.entity.WorkInfo">
SELECT u.*, o.feedbackCount FROM GD_WORKINFO u LEFT JOIN (SELECT WORKORDERNO, COUNT(*) as feedbackCount FROM
GD_WORKFEEDBACK GROUP BY WORKORDERNO) o ON u.WORKORDERNO = o.WORKORDERNO
<where>
<if test="params.DBTYPE == 1 and params.stdt != null and params.stdt != ''">
AND DT &gt;= dateadd(day,0,#{params.stdt})
</if>
<if test="params.DBTYPE == 1 and params.enddt != null and params.enddt != ''">
AND DT &lt;= dateadd(day,0,#{params.enddt})
</if>
<if test="params.DBTYPE == 2 and params.stdt != null and params.stdt != ''">
AND DT &gt;= TO_DATE(#{params.stdt}, 'SYYYY-MM-DD')
</if>
<if test="params.DBTYPE == 2 and params.enddt != null and params.enddt != ''">
AND DT &lt;= TO_DATE(#{params.enddt}, 'SYYYY-MM-DD')
</if>
<if test="params.DBTYPE == 3 and params.stdt != null and params.stdt != ''">
AND DT &gt;= TO_DATE(#{params.stdt}, 'SYYYY-MM-DD')
</if>
<if test="params.DBTYPE == 3 and params.enddt != null and params.enddt != ''">
AND DT &lt;= TO_DATE(#{params.enddt}, 'SYYYY-MM-DD')
</if>
<if test="params.DBTYPE == 4 and params.stdt != null and params.stdt != ''">
AND DT &gt;= DATE_FORMAT(#{params.stdt}, '%Y-%m-%d')
</if>
<if test="params.DBTYPE == 4 and params.enddt != null and params.enddt != ''">
AND DT &lt;= DATE_FORMAT(#{params.enddt}, '%Y-%m-%d')
</if>
<if test="params.workorderno !=null and params.workorderno != ''">
AND u.WORKORDERNO LIKE '%#{params.workorderno}%'
</if>
<if test="params.title !=null and params.title != ''">
AND u.TITLE LIKE '%#{params.title}%'
</if>
<if test="params.remarks !=null and params.remarks != ''">
AND u.REMARKS LIKE '%#{params.remarks}%'
</if>
<if test="params.stanos !=null and params.stanos != ''">
AND u.STANOS LIKE '%#{params.stanos}%'
</if>
</where>
GD_WORKFEEDBACK GROUP BY WORKORDERNO) o ON u.WORKORDERNO = o.WORKORDERNO
${ew.customSqlSegment}
order by DT desc
</select>
</mapper>

@ -75,39 +75,39 @@ public class WorkOrderServiceImpl implements WorkOrderService {
log.info("[uuid:{}]-开始查询查询工单信息,参数为{}", uuid, map);
int pageNum = (int) map.get("pageNum");
int pageSize = (int) map.get("pageSize");
Map<String, Object> params = new HashMap<>();
Page<WorkInfo> workInfoPage = new Page<>(pageNum, pageSize);
try {
String DBType = PropertiesUtil.getValue("DBType");
params.put("DBTYPE", DBType);
List<String> dtList = castList(map.get("dt"), String.class);
QueryWrapper<WorkInfo> queryWrapper = new QueryWrapper<>();
if (dtList != null && !dtList.isEmpty()) {
Date end = DateTimeUtil.addDateDays(DateTimeUtil.getFormatStr(dtList.get(1)), 1);
String startStr = dtList.get(0);
String endStr = DateTimeUtil.getFormateString(end, Constant.YYYY_MM_DD);
params.put("stdt", startStr);
params.put("enddt", endStr);
Date start = DateTimeUtil.getFormatDate(startStr, Constant.YYYY_MM_DD);
queryWrapper.ge("DT", start)
.le("DT", end);
}
if (ObjectUtils.isNotEmpty(map.get("userUnitClass"))) {
String userUnitClass = (String) map.get("userUnitClass");
String userStano = (String) map.get("userStano");
if (Constant.STR_ONE.equals(userUnitClass)) {
params.put("stanos", userStano);
queryWrapper.like("stanos", userStano);
}
}
Object workorderno = map.get("workorderno");
if (ObjectUtils.isNotEmpty(workorderno)) {
params.put("workorderno", workorderno);
queryWrapper.like("WORKORDERNO", workorderno);
}
Object title = map.get("title");
if (ObjectUtils.isNotEmpty(title)) {
params.put("title", title);
queryWrapper.like("TITLE", workorderno);
}
Object remarks = map.get("remarks");
if (ObjectUtils.isNotEmpty(remarks)) {
params.put("remarks", remarks);
queryWrapper.like("REMARKS", workorderno);
}
workInfoPage = workInfoMapper.myPageWorkInfo(workInfoPage, params);
workInfoPage = workInfoMapper.myPageWorkInfo2(workInfoPage, queryWrapper);
} catch (Exception e) {
log.error("[uuid:{}]-查询查询工单信息失败,报错:{}", uuid, e.getMessage(), e);
}

Loading…
Cancel
Save