Commit 1a2c9d92 authored by 鲁鸿波's avatar 鲁鸿波

危险作业抽查率,合规率修改

事故统计,导出修改
parent 94edb3f6
......@@ -324,7 +324,7 @@ public class AccidentReportController extends SuperController {
@GetMapping(value = "/accidentReportDetailExport")
public BaseResponse<BizGeneralResponse> export(HttpServletResponse response, ReportDetailParam reportDetailParam) {
BaseResponse<BizGeneralResponse> baseResponse = new BaseResponse<>();
reportDetailParam.setUserId(getUserId());
Page<AccidentReportDetail> accidentReportDetailPage = accidentReportService.selectAccidentReportDetail(reportDetailParam);
if (CollectionUtils.isEmpty(accidentReportDetailPage.getRecords())) {
......
......@@ -301,7 +301,7 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
// accidentStatisticsReq.setThirdLevelUnitId(reportUnit.getThirdLevelUnitId());
// }
//数据
List<AccidentReport> accidentReportList = this.lambdaQuery()
/*List<AccidentReport> accidentReportList = this.lambdaQuery()
.eq(StringUtils.isNotBlank(accidentStatisticsReq.getBasicUnitId()), AccidentReport::getBasicUnitId, accidentStatisticsReq.getBasicUnitId())
.eq(StringUtils.isNotBlank(accidentStatisticsReq.getRegionalCompanyId()), AccidentReport::getRegionalCompanyId, accidentStatisticsReq.getRegionalCompanyId())
.ge(Objects.nonNull(accidentStatisticsReq.getStartDate()), AccidentReport::getAccidentTime, accidentStatisticsReq.getStartDate())
......@@ -310,6 +310,51 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
// .eq(!(StringUtils.isBlank(reportUnit.getBasicUnitId()) && StringUtils.isBlank(reportUnit.getRegionalCompanyId())), AccidentReport::getProcessStatus, ProcessStatus.PASSED.getCode()).list();
// .eq(StringUtils.isBlank(reportUnit.getBasicUnitId()), AccidentReport::getProcessStatus, ProcessStatus.PASSED.getCode())
.eq(AccidentReport::getProcessStatus, ProcessStatus.PASSED.getCode())
.list();*/
Date startDate = accidentStatisticsReq.getStartDate();
Date endDate = accidentStatisticsReq.getEndDate();
// 统一处理时间边界(防止 DATE / DATETIME 问题)
Date startTime = null;
Date endTime = null;
if (startDate != null) {
Calendar cal = Calendar.getInstance();
cal.setTime(startDate);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
startTime = cal.getTime();
}
if (endDate != null) {
Calendar cal = Calendar.getInstance();
cal.setTime(endDate);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
cal.add(Calendar.DAY_OF_MONTH, 1); // 关键:+1 天
endTime = cal.getTime();
}
List<AccidentReport> accidentReportList = this.lambdaQuery()
.eq(StringUtils.isNotBlank(accidentStatisticsReq.getBasicUnitId()),
AccidentReport::getBasicUnitId,
accidentStatisticsReq.getBasicUnitId())
.eq(StringUtils.isNotBlank(accidentStatisticsReq.getRegionalCompanyId()),
AccidentReport::getRegionalCompanyId,
accidentStatisticsReq.getRegionalCompanyId())
.ge(startTime != null,
AccidentReport::getAccidentTime,
startTime)
.lt(endTime != null,
AccidentReport::getAccidentTime,
endTime)
.eq(AccidentReport::getProcessStatus,
ProcessStatus.PASSED.getCode())
.list();
AccidentStatisticsResp accidentStatisticsResp = new AccidentStatisticsResp();
......@@ -465,7 +510,21 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
pieByLevel.setName(item.getDictValue());
//判断是否包含此类型id
long count = accidentReportList.stream().filter(accidentReport -> accidentReport.getAccidentType().contains(item.getDictKey())).count();
//long count = accidentReportList.stream().filter(accidentReport -> accidentReport.getAccidentType().contains(item.getDictKey())).count();
long count = accidentReportList.stream()
.filter(accidentReport -> {
String typeStr = accidentReport.getAccidentType();
if (StringUtils.isBlank(typeStr)) {
return false;
}
Set<String> typeSet = Arrays.stream(typeStr.split(","))
.map(String::trim)
.collect(Collectors.toSet());
return typeSet.contains(item.getDictKey());
})
.count();
//数量赋值
pieByLevel.setValue((int) count);
......@@ -819,7 +878,7 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
}
//todo 填充事故信息
accidentExports = Beans.listToBean(accidentReportList, AccidentExportVO.class);
/*accidentExports = Beans.listToBean(accidentReportList, AccidentExportVO.class);
List<AccidentPersonnelVO> finalAccidentPersonnelVOList = accidentPersonnelVOList;
......@@ -867,9 +926,39 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
c.setFakeTypeName(EnumUtil.getByCode(a.getFakeType(), FakeType.class));
}
});
});
});*/
Map<String, List<AccidentPersonnelVO>> personnelMap =
accidentPersonnelVOList.stream()
.collect(Collectors.groupingBy(AccidentPersonnelVO::getRefId));
List<AccidentExportVO> result = new ArrayList<>();
for (AccidentReport report : accidentReportList) {
List<AccidentPersonnelVO> persons = personnelMap.get(report.getId());
// 没有人员,也要导出一行
if (CollectionUtils.isEmpty(persons)) {
AccidentExportVO vo = Beans.objectToBean(report, AccidentExportVO.class);
fillBaseInfo(vo, report);
result.add(vo);
continue;
}
// 有人员:一人一行
for (AccidentPersonnelVO p : persons) {
AccidentExportVO vo = Beans.objectToBean(report, AccidentExportVO.class);
vo.setName(p.getUserName());
vo.setAge(p.getAge());
vo.setGender(p.getSexName());
vo.setBelongTypeName(p.getBelongTypeName());
fillBaseInfo(vo, report);
result.add(vo);
}
}
list.addAll(result);
}
if (CollectionUtils.isNotEmpty(list)) {
int index=1;
for (int i = 0; i < list.size(); i++) {
......@@ -895,6 +984,41 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
}
private void fillBaseInfo(AccidentExportVO c, AccidentReport a) {
ReportUnitResp reportUnitResp =
JSONObject.parseObject(a.getReportUnit(), ReportUnitResp.class);
c.setBasicUnitName(StringUtils.isNotBlank(a.getBasicUnitId())
? reportUnitResp.getBasicUnit() : "/");
c.setRegionalCompanyName(StringUtils.isNotBlank(a.getRegionalCompanyId())
? reportUnitResp.getRegionalCompany() : "/");
c.setDeptName(reportUnitResp.getPath());
c.setAccidentTypeName(
CacheDicUtils.getByKeys(DicTypeCode.ACCIDENT_TYPE.name(),
a.getAccidentType(), ","));
c.setAccidentLevelName(
CacheDicUtils.get(DicTypeCode.ACCIDENT_LEVEL.name(),
a.getAccidentLevel()));
c.setAccidentCause(
CacheDicUtils.getByKeys(DicTypeCode.ACCIDENT_CAUSE.name(),
a.getAccidentCause(), ","));
if (a.getAccidentTime() != null) {
Calendar ca = Calendar.getInstance();
ca.setTime(a.getAccidentTime());
c.setReportTimeYear(ca.get(Calendar.YEAR));
c.setReportTimeMonth(ca.get(Calendar.MONTH) + 1);
c.setReportTimeDay(ca.get(Calendar.DAY_OF_MONTH));
c.setReportTimeHour(ca.get(Calendar.HOUR_OF_DAY));
}
c.setFakeTypeName(EnumUtil.getByCode(a.getFakeType(), FakeType.class));
}
@Override
public Page<AccidentReportDetail> selectAccidentReportDetail(ReportDetailParam param) {
Long page =
......@@ -926,39 +1050,52 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
private QueryWrapper<AccidentReport> createQuery(AccidentReportQueryReq queryParam) {
QueryWrapper<AccidentReport> queryWrapper = new QueryWrapper<>();
// Data Rule
// if (StringUtils.isNotEmpty(queryParam.getDataRuleCode())) {
// 数据权限
String rule = sysRuleService.dataRuleScope(DefaultRule.DEPT_SUB.name());
if (StringUtils.isNotEmpty(rule)) {
queryWrapper.apply(rule);
}
// }
if(StringUtils.isNotBlank(queryParam.getDeptId())){
if (StringUtils.isNotBlank(queryParam.getDeptId())) {
queryWrapper.eq(AccidentReport.ORG_ID, queryParam.getDeptId());
}
if (org.apache.commons.lang.StringUtils.isNotBlank(queryParam.getRegionalCompanyId())) {
if (StringUtils.isNotBlank(queryParam.getRegionalCompanyId())) {
queryWrapper.eq(AccidentReport.REGIONAL_COMPANY_ID, queryParam.getRegionalCompanyId());
}
if (org.apache.commons.lang.StringUtils.isNotBlank(queryParam.getBasicUnitId()) || org.apache.commons.lang.StringUtils.isNotBlank(queryParam.getOrgId())) {
queryWrapper.or().eq(AccidentReport.BASIC_UNIT_ID, queryParam.getBasicUnitId()).or().eq(AccidentReport.ORG_ID, queryParam.getOrgId());
// ✅ 正确的 OR 分组
if (StringUtils.isNotBlank(queryParam.getBasicUnitId())
|| StringUtils.isNotBlank(queryParam.getOrgId())) {
queryWrapper.and(w -> {
if (StringUtils.isNotBlank(queryParam.getBasicUnitId())) {
w.eq(AccidentReport.BASIC_UNIT_ID, queryParam.getBasicUnitId());
}
if (StringUtils.isNotBlank(queryParam.getOrgId())) {
w.or().eq(AccidentReport.ORG_ID, queryParam.getOrgId());
}
});
}
if (org.apache.commons.lang.StringUtils.isNotBlank(queryParam.getProcessStatus())) {
if (StringUtils.isNotBlank(queryParam.getProcessStatus())) {
queryWrapper.eq(AccidentReport.PROCESS_STATUS, queryParam.getProcessStatus());
}
if (org.apache.commons.lang.StringUtils.isNotBlank(queryParam.getAccidentLevel())) {
if (StringUtils.isNotBlank(queryParam.getAccidentLevel())) {
queryWrapper.eq(AccidentReport.ACCIDENT_LEVEL, queryParam.getAccidentLevel());
}
if (ObjectHelper.isNotEmpty(queryParam.getAccidentStartTime())) {
queryWrapper.ge(AccidentReport.ACCIDENT_TIME, queryParam.getAccidentStartTime());
}
if (ObjectHelper.isNotEmpty(queryParam.getAccidentEndTime())) {
queryWrapper.le(AccidentReport.ACCIDENT_TIME, queryParam.getAccidentEndTime());
}
/*if(ObjectHelper.isNotEmpty(queryParam.getThirdLevelUnitId())){
queryWrapper.eq(AccidentReport.THIRD_LEVEL_UNIT_ID, queryParam.getThirdLevelUnitId());
}*/
if (org.apache.commons.lang.StringUtils.isNotBlank(queryParam.getOrderBy())) {
if (StringHelper.isNotEmpty(queryParam.getOrderType()) && BizConstants.ASC.equals(queryParam.getOrderType())) {
if (StringUtils.isNotBlank(queryParam.getOrderBy())) {
if (BizConstants.ASC.equals(queryParam.getOrderType())) {
queryWrapper.orderByAsc(queryParam.getOrderBy());
} else {
queryWrapper.orderByDesc(queryParam.getOrderBy());
......@@ -966,9 +1103,11 @@ public class AccidentReportServiceImpl extends SuperServiceImpl<AccidentReportDa
} else {
queryWrapper.orderByDesc(AccidentReport.UPDATE_DATE);
}
return queryWrapper;
}
}
......@@ -477,104 +477,169 @@
ORDER BY region.org_name, bd.org_name, so.org_name, problemCount DESC
</select>
<select id="comprehensiveStatistics"
resultType="com.testor.module.hazard.model.vo.HazardWorkPlanCheckDetail">
<select id="comprehensiveStatistics" resultType="com.testor.module.hazard.model.vo.HazardWorkPlanCheckDetail">
SELECT
region.org_name AS regionName,
bd.org_name AS businessDeptName,
so.org_name AS currentOrgName,
so.is_rent AS isRent,
bd.org_name AS businessDeptName,
so.org_name AS currentOrgName,
so.is_rent AS isRent,
-- 企业/相关方合规率
-- 企业合规率
ROUND(
(SUM(CASE WHEN so.is_rent='0' THEN 1 ELSE 0 END)
- SUM(CASE WHEN so.is_rent='0' AND hwpc.is_compliant='0' THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN so.is_rent='0' THEN 1 ELSE 0 END), 0), 2
) AS enterpriseComplianceRate,
(SUM(CASE WHEN so.is_rent = '0' THEN 1 ELSE 0 END)
- SUM(CASE WHEN so.is_rent = '0' AND hwpc.has_uncompliant = 1 THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN so.is_rent = '0' THEN 1 ELSE 0 END), 0),
2) AS enterpriseComplianceRate,
-- 相关方合规率
ROUND(
(SUM(CASE WHEN so.is_rent='1' THEN 1 ELSE 0 END)
- SUM(CASE WHEN so.is_rent='1' AND hwpc.is_compliant='0' THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN so.is_rent='1' THEN 1 ELSE 0 END), 0), 2
) AS relatedPartyComplianceRate,
(SUM(CASE WHEN so.is_rent = '1' THEN 1 ELSE 0 END)
- SUM(CASE WHEN so.is_rent = '1' AND hwpc.has_uncompliant = 1 THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN so.is_rent = '1' THEN 1 ELSE 0 END), 0),
2) AS relatedPartyComplianceRate,
-- 等级合规率
-- 高风险
ROUND(
(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END)
- SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' AND hwpc.is_compliant='0' THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END), 0), 2
) AS complianceRateHigh,
(SUM(CASE WHEN hwpl.work_level = '27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END)
- SUM(CASE WHEN hwpl.work_level = '27a3fcef809f4a5f9f138bd83b88eebc'
AND hwpc.has_uncompliant = 1 THEN 1 ELSE 0 END))
* 100.0 / NULLIF(
SUM(CASE WHEN hwpl.work_level = '27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END), 0),
2) AS complianceRateHigh,
-- 重大风险
ROUND(
(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END)
- SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' AND hwpc.is_compliant='0' THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END), 0), 2
) AS complianceRateMajor,
(SUM(CASE WHEN hwpl.work_level = 'bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END)
- SUM(CASE WHEN hwpl.work_level = 'bbc120baa7474f5182dcf65b427deaf8'
AND hwpc.has_uncompliant = 1 THEN 1 ELSE 0 END))
* 100.0 / NULLIF(
SUM(CASE WHEN hwpl.work_level = 'bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END), 0),
2) AS complianceRateMajor,
-- 一般风险
ROUND(
(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END)
- SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' AND hwpc.is_compliant='0' THEN 1 ELSE 0 END))
* 100.0 / NULLIF(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END), 0), 2
) AS complianceRateNormal
(SUM(CASE WHEN hwpl.work_level = '81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END)
- SUM(CASE WHEN hwpl.work_level = '81bbc09df7b941fd8851af1b4d25d309'
AND hwpc.has_uncompliant = 1 THEN 1 ELSE 0 END))
* 100.0 / NULLIF(
SUM(CASE WHEN hwpl.work_level = '81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END), 0),
2) AS complianceRateNormal
FROM t_hazard_work_plan hwpl
LEFT JOIN t_hazard_work_plan_check hwpc ON hwpc.plan_id = hwpl.id AND (hwpc.status='0' OR hwpc.status IS NULL)
LEFT JOIN t_sys_org so ON so.org_id = hwpl.org_id
LEFT JOIN t_sys_org bd ON bd.org_id = so.parent_id
-- ✅ 关键:检查表先按 plan_id 聚合
LEFT JOIN (
SELECT
plan_id,
MAX(CASE WHEN is_compliant = '0' THEN 1 ELSE 0 END) AS has_uncompliant
FROM t_hazard_work_plan_check
WHERE status = '0' OR status IS NULL
GROUP BY plan_id
) hwpc ON hwpc.plan_id = hwpl.id
LEFT JOIN t_sys_org so ON so.org_id = hwpl.org_id
LEFT JOIN t_sys_org bd ON bd.org_id = so.parent_id
LEFT JOIN t_sys_org region ON region.org_id = bd.parent_id
WHERE hwpl.status='0'
WHERE hwpl.status = '0'
AND hwpl.org_id IN (
SELECT org_id FROM t_sys_org
SELECT org_id
FROM t_sys_org
WHERE org_id = #{param.orgId}
OR parent_ids LIKE CONCAT('%', #{param.orgId}, '%')
)
<if test="param.startTime != null and param.startTime != '' and param.endTime != null and param.endTime != ''">
<if test="param.startTime != null and param.startTime != ''
and param.endTime != null and param.endTime != ''">
AND hwpl.create_date BETWEEN #{param.startTime} AND #{param.endTime}
</if>
GROUP BY region.org_name, bd.org_name, so.org_name, so.is_rent
ORDER BY region.org_name, bd.org_name, so.org_name
GROUP BY
region.org_name,
bd.org_name,
so.org_name,
so.is_rent
ORDER BY
region.org_name,
bd.org_name,
so.org_name
</select>
<select id="isRentSpotCheckStatistics" resultType="com.testor.module.hazard.model.vo.HazardWorkPlanCheckDetail">
SELECT
region.org_name AS regionName,
bd.org_name AS businessDeptName,
so.org_name AS currentOrgName,
-- 企业/相关方抽查率
ROUND(SUM(CASE WHEN so.is_rent='0' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN so.is_rent='0' THEN 1 ELSE 0 END),2), 2) AS enterpriseCheckRate,
-- 企业/相关方抽查率 = 已抽查次数 ÷ 作业总数
ROUND(
SUM(CASE WHEN so.is_rent='0' THEN hwpc.checked_count ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN so.is_rent='0' THEN 1 ELSE 0 END),0), 2
) AS enterpriseCheckRate,
ROUND(SUM(CASE WHEN so.is_rent='1' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN so.is_rent='1' THEN 1 ELSE 0 END),2), 2) AS relatedPartySpotCheckRate,
ROUND(
SUM(CASE WHEN so.is_rent='1' THEN hwpc.checked_count ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN so.is_rent='1' THEN 1 ELSE 0 END),0), 2
) AS relatedPartySpotCheckRate,
-- 等级抽查率
ROUND(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END),0),2) AS spotCheckRateHigh,
ROUND(
SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' THEN hwpc.checked_count ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN hwpl.work_level='27a3fcef809f4a5f9f138bd83b88eebc' THEN 1 ELSE 0 END),0), 2
) AS spotCheckRateHigh,
ROUND(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END),0),2) AS spotCheckRateMajor,
ROUND(
SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' THEN hwpc.checked_count ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN hwpl.work_level='bbc120baa7474f5182dcf65b427deaf8' THEN 1 ELSE 0 END),0), 2
) AS spotCheckRateMajor,
ROUND(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' AND hwpc.id IS NOT NULL THEN 1 ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END),0),2) AS spotCheckRateNormal
ROUND(
SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' THEN hwpc.checked_count ELSE 0 END) * 100.0 /
NULLIF(SUM(CASE WHEN hwpl.work_level='81bbc09df7b941fd8851af1b4d25d309' THEN 1 ELSE 0 END),0), 2
) AS spotCheckRateNormal
FROM t_hazard_work_plan hwpl
LEFT JOIN t_hazard_work_plan_check hwpc ON hwpc.plan_id = hwpl.id AND hwpc.status='0'
LEFT JOIN t_sys_org so ON so.org_id = hwpl.org_id
LEFT JOIN t_sys_org bd ON bd.org_id = so.parent_id
-- 统计每条作业的抽查次数
LEFT JOIN (
SELECT plan_id, COUNT(*) AS checked_count
FROM t_hazard_work_plan_check
WHERE status = '0'
GROUP BY plan_id
) hwpc ON hwpc.plan_id = hwpl.id
LEFT JOIN t_sys_org so ON so.org_id = hwpl.org_id
LEFT JOIN t_sys_org bd ON bd.org_id = so.parent_id
LEFT JOIN t_sys_org region ON region.org_id = bd.parent_id
WHERE hwpl.status='0'
WHERE hwpl.status = '0'
AND hwpl.org_id IN (
SELECT org_id FROM t_sys_org
SELECT org_id
FROM t_sys_org
WHERE org_id = #{param.orgId}
OR parent_ids LIKE CONCAT('%', #{param.orgId}, '%')
)
<if test="param.startTime != null and param.startTime != '' and param.endTime != null and param.endTime != ''">
<if test="param.startTime != null and param.startTime != ''
and param.endTime != null and param.endTime != ''">
AND hwpl.create_date BETWEEN #{param.startTime} AND #{param.endTime}
</if>
GROUP BY region.org_name, bd.org_name, so.org_name
ORDER BY region.org_name, bd.org_name, so.org_name
GROUP BY
region.org_name,
bd.org_name,
so.org_name
ORDER BY
region.org_name,
bd.org_name,
so.org_name
</select>
......
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