yml配置
添加数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: ${MYSQL_USER:root}
password: ${MYSQL_PWD:nhdTaVMSAC}
url: jdbc:mysql://192.168.181.121:3306/xdm-sit?serverTimezone=UTC&characterEncoding=utf8配置属性
dbType:持久层框架,可选dme或mysql
mapper-locations:mapper扫描路径
log:日志打印级别,sql:只打印sql;debug:打印debug日志
highSqlDb:true:高代码使用xml直接访问db;false:使用dme服务编排
mybatis-flex:
configuration:
variables:
dbType: ${store.dbType:dme}
sql-parser:
enable: true
mapper-locations: classpath:/mapper/mysql/*.xml
log: sql
highSqlDb: false高代码使用xml参考
dbProperties.isHighSqlDb() 判断是否用xml查询
PageHelper 分页插件
PageResultVO<IqcBatchPassRateViewDTO> pageVO = new PageResultVO<>();
// xml
if (dbProperties.isHighSqlDb() ) {
if (CollectionUtil.isNotEmpty(pageDTO.getDates())) {
pageDTO.setStartDateStr(pageDTO.getDates().get(0));
}
if (CollectionUtil.isNotEmpty(pageDTO.getDates()) && pageDTO.getDates().size() > 1) {
pageDTO.setEndDateStr(pageDTO.getDates().get(1));
}
PageHelper.startPage(pageDTO.getCurrent(), pageDTO.getSize());
List<IqcBatchPassRate> list = iqcBatchPassRateDbMapper.report(pageDTO);
PageInfo<IqcBatchPassRate> pageInfo = new PageInfo<>(list);
pageVO.setTotal(pageInfo.getTotal());
pageVO.setSize(pageDTO.getSize());
pageVO.setCurrent(pageInfo.getPageNum());
pageVO.setRecords(OrderReportConvert.INSTANCE.iqcBatchPassRate(pageInfo.getList()));
//服务编排
} else {
QueryWrapper wrapper = initQueryWrapper(pageDTO, ReportTypeEnum.IQC_BATCH_PASS_RATE.getCode());
Page<IqcBatchPassRate> iqcBatchPassRatePage = iqcBatchPassRateMapper.executePaginate(pageDTO.getCurrent(), pageDTO.getSize(), wrapper);
pageVO = PageConvertUtil.pageConvertVO(iqcBatchPassRatePage, IqcBatchPassRateViewDTO.class, null);
}@Mapper
public interface IqcBatchPassRateDbMapper extends BaseMapper<IqcBatchPassRate> {
List<IqcBatchPassRate> report(@Param("request") OrderReportRequestDTO requestDTO);
}
<mapper namespace="com.sie.mbm.mom.processcontrol.qualityreports.report.mapper.IqcBatchPassRateDbMapper">
<select id="report" resultType="com.sie.mbm.mom.processcontrol.qualityreports.report.entity.IqcBatchPassRate">
SELECT qio.partDesc AS partDesc, qio.partNo AS partNo, qio.partRevision AS partRevision, qio.vendorName AS vendorName, qio.vendorCode AS vendorCode,
sum(CASE WHEN qio.inspectOrderResult = 'OK' THEN 1 ELSE 0 END) AS inspectionPassBatcheNum, COUNT(*) AS inspectionBatcheNum,
CASE WHEN COUNT(*) = 0 THEN 0 ELSE ROUND(SUM(CASE WHEN qio.inspectOrderResult = 'OK' THEN 1 ELSE 0 END)/COUNT(*)*100,2) END AS batchPassRate
FROM qms_inspect_order AS qio
WHERE qio.status = '30' AND qio.rootFlag != '10'
<if test="request.inspectOrderType != null and request.inspectOrderType != ''">
AND qio.inspectOrderType = #{request.inspectOrderType}
</if>
<if test="request.partId != null and request.partId != ''">
AND qio.partId = #{request.partId}
</if>
<if test="request.vendorId != null and request.vendorId != ''">
AND qio.vendorId = #{request.vendorId}
</if>
<if test="request.startDateStr != null and request.startDateStr != '' and request.endDateStr != null and request.endDateStr != ''">
AND DATE_FORMAT(qio.actualEndTime, '%Y-%m-%d %H:%i:%s') BETWEEN
DATE_FORMAT(#{request.startDateStr}, '%Y-%m-%d 00:00:00') AND DATE_FORMAT(#{request.endDateStr}, '%Y-%m-%d 23:59:59')
</if>
<if test="request.tenantId != null and request.tenantId != ''">
AND qio._tenantId = #{request.tenantId}
</if>
<if test="request.tenantId == null or request.tenantId == ''">
AND qio._tenantId = '-1'
</if>
<if test="request.renterId != null and request.renterId != ''">
AND qio.renterId = #{request.renterId}
</if>
<if test="request.siteId != null and request.siteId != ''">
AND qio.siteId = #{request.siteId}
</if>
GROUP BY qio.partDesc, qio.partNo, qio.partRevision, qio.vendorName, qio.vendorCode
</select>
</mapper>