feat(web): 添加可视化大屏作业统计功能

- 新增作业状态统计接口和实现
- 新增作业饼状图统计接口和实现
dev_visual_page
zhaokai 2026-07-28 16:47:54 +08:00
parent dceda5ffcb
commit 391ba749bf
16 changed files with 302 additions and 0 deletions

View File

@ -12,7 +12,9 @@ import com.zcloud.eightwork.dto.ScreenDangerWorkDataStatisticsQry;
import com.zcloud.eightwork.dto.ScreenDepartmentStatisticsQry;
import com.zcloud.eightwork.dto.ScreenStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkPageQry;
import com.zcloud.eightwork.dto.ScreenWorkPieStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkRecordQry;
import com.zcloud.eightwork.dto.ScreenWorkStatusStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkTrendQry;
import com.zcloud.eightwork.dto.clientobject.DangerWorkStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO;
@ -21,7 +23,9 @@ import com.zcloud.eightwork.dto.clientobject.ScreenDangerWorkDataStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenDepartmentStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenStatusStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkPageCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkPieStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkRecordCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkStatusStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkTrendCO;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
@ -168,5 +172,17 @@ public class EightworkInfoController {
return MultiResponse.of(eightworkInfoService.screenDangerWorkDataStatistics(qry));
}
@ApiOperation("可视化大屏-作业状态统计")
@PostMapping("/screenWorkStatusStatistics")
public SingleResponse<ScreenWorkStatusStatisticsCO> screenWorkStatusStatistics(@RequestBody ScreenWorkStatusStatisticsQry qry) {
return SingleResponse.of(eightworkInfoService.screenWorkStatusStatistics(qry));
}
@ApiOperation("可视化大屏-作业饼状图")
@PostMapping("/screenWorkPieStatistics")
public MultiResponse<ScreenWorkPieStatisticsCO> screenWorkPieStatistics(@RequestBody ScreenWorkPieStatisticsQry qry) {
return MultiResponse.of(eightworkInfoService.screenWorkPieStatistics(qry));
}
}

View File

@ -14,7 +14,9 @@ import com.zcloud.eightwork.dto.ScreenDangerWorkDataStatisticsQry;
import com.zcloud.eightwork.dto.ScreenDepartmentStatisticsQry;
import com.zcloud.eightwork.dto.ScreenStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkPageQry;
import com.zcloud.eightwork.dto.ScreenWorkPieStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkRecordQry;
import com.zcloud.eightwork.dto.ScreenWorkStatusStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkTrendQry;
import com.zcloud.eightwork.dto.clientobject.DangerWorkStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO;
@ -22,7 +24,9 @@ import com.zcloud.eightwork.dto.clientobject.ScreenDangerWorkDataStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenDepartmentStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenStatusStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkPageCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkPieStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkRecordCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkStatusStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkTrendCO;
import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO;
import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO;
@ -31,7 +35,9 @@ import com.zcloud.eightwork.persistence.dataobject.dto.DangerWorkStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenDangerWorkDataStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenDepartmentStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenStatusStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkPieStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkRecordDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkStatusStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkTrendDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO;
import com.zcloud.eightwork.persistence.repository.EightworkInfoRepository;
@ -246,6 +252,53 @@ public class EightworkInfoQueryExe {
return statisticsCOS;
}
public ScreenWorkStatusStatisticsCO screenWorkStatusStatistics(ScreenWorkStatusStatisticsQry qry) {
Map<String, Object> params = new HashMap<>();
if (qry != null) {
params = PageQueryHelper.toHashMap(qry);
}
ScreenWorkStatusStatisticsDTO statisticsDTO = eightworkInfoRepository.screenWorkStatusStatistics(params);
ScreenWorkStatusStatisticsCO statisticsCO = new ScreenWorkStatusStatisticsCO();
if (statisticsDTO != null) {
BeanUtils.copyProperties(statisticsDTO, statisticsCO);
}
if (statisticsCO.getApprovingCount() == null) {
statisticsCO.setApprovingCount(0L);
}
if (statisticsCO.getWorkingCount() == null) {
statisticsCO.setWorkingCount(0L);
}
if (statisticsCO.getArchivedCount() == null) {
statisticsCO.setArchivedCount(0L);
}
return statisticsCO;
}
public List<ScreenWorkPieStatisticsCO> screenWorkPieStatistics(ScreenWorkPieStatisticsQry qry) {
Map<String, Object> params = new HashMap<>();
if (qry != null) {
params = PageQueryHelper.toHashMap(qry);
}
List<ScreenWorkPieStatisticsDTO> statisticsDTOS = eightworkInfoRepository.screenWorkPieStatistics(params);
Map<String, ScreenWorkPieStatisticsDTO> statisticsMap = new HashMap<>();
if (CollUtil.isNotEmpty(statisticsDTOS)) {
statisticsMap = statisticsDTOS.stream()
.collect(Collectors.toMap(ScreenWorkPieStatisticsDTO::getWorkType, item -> item, (oldItem, newItem) -> oldItem));
}
List<ScreenWorkPieStatisticsCO> statisticsCOS = new ArrayList<>();
for (WorkCodeEnum workCodeEnum : WorkCodeEnum.values()) {
ScreenWorkPieStatisticsDTO statisticsDTO = statisticsMap.get(workCodeEnum.getWorkType());
ScreenWorkPieStatisticsCO statisticsCO = new ScreenWorkPieStatisticsCO();
statisticsCO.setWorkType(workCodeEnum.getWorkType());
statisticsCO.setWorkTypeName(workCodeEnum.getName());
statisticsCO.setApprovingCount(statisticsDTO == null || statisticsDTO.getApprovingCount() == null ? 0L : statisticsDTO.getApprovingCount());
statisticsCO.setWorkingCount(statisticsDTO == null || statisticsDTO.getWorkingCount() == null ? 0L : statisticsDTO.getWorkingCount());
statisticsCO.setArchivedCount(statisticsDTO == null || statisticsDTO.getArchivedCount() == null ? 0L : statisticsDTO.getArchivedCount());
statisticsCOS.add(statisticsCO);
}
return statisticsCOS;
}
private List<LocalDate> buildDateRange(ScreenWorkTrendQry qry) {
LocalDate endDate = LocalDate.now();
LocalDate startDate = endDate.minusDays(6);

View File

@ -21,7 +21,9 @@ import com.zcloud.eightwork.dto.ScreenDangerWorkDataStatisticsQry;
import com.zcloud.eightwork.dto.ScreenDepartmentStatisticsQry;
import com.zcloud.eightwork.dto.ScreenStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkPageQry;
import com.zcloud.eightwork.dto.ScreenWorkPieStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkRecordQry;
import com.zcloud.eightwork.dto.ScreenWorkStatusStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkTrendQry;
import com.zcloud.eightwork.dto.TaskLogNextCmd;
import com.zcloud.eightwork.dto.clientobject.DangerWorkStatisticsCO;
@ -30,7 +32,9 @@ import com.zcloud.eightwork.dto.clientobject.ScreenDangerWorkDataStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenDepartmentStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenStatusStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkPageCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkPieStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkRecordCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkStatusStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkTrendCO;
import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO;
import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO;
@ -216,5 +220,15 @@ public class EightworkInfoServiceImpl implements EightworkInfoServiceI {
public List<ScreenDangerWorkDataStatisticsCO> screenDangerWorkDataStatistics(ScreenDangerWorkDataStatisticsQry qry) {
return eightworkInfoQueryExe.screenDangerWorkDataStatistics(qry);
}
@Override
public ScreenWorkStatusStatisticsCO screenWorkStatusStatistics(ScreenWorkStatusStatisticsQry qry) {
return eightworkInfoQueryExe.screenWorkStatusStatistics(qry);
}
@Override
public List<ScreenWorkPieStatisticsCO> screenWorkPieStatistics(ScreenWorkPieStatisticsQry qry) {
return eightworkInfoQueryExe.screenWorkPieStatistics(qry);
}
}

View File

@ -10,7 +10,9 @@ import com.zcloud.eightwork.dto.ScreenDangerWorkDataStatisticsQry;
import com.zcloud.eightwork.dto.ScreenDepartmentStatisticsQry;
import com.zcloud.eightwork.dto.ScreenStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkPageQry;
import com.zcloud.eightwork.dto.ScreenWorkPieStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkRecordQry;
import com.zcloud.eightwork.dto.ScreenWorkStatusStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkTrendQry;
import com.zcloud.eightwork.dto.clientobject.DangerWorkStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO;
@ -18,7 +20,9 @@ import com.zcloud.eightwork.dto.clientobject.ScreenDangerWorkDataStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenDepartmentStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenStatusStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkPageCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkPieStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkRecordCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkStatusStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkTrendCO;
import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO;
@ -77,5 +81,9 @@ public interface EightworkInfoServiceI {
List<ScreenDepartmentStatisticsCO> screenDepartmentStatistics(ScreenDepartmentStatisticsQry qry);
List<ScreenDangerWorkDataStatisticsCO> screenDangerWorkDataStatistics(ScreenDangerWorkDataStatisticsQry qry);
ScreenWorkStatusStatisticsCO screenWorkStatusStatistics(ScreenWorkStatusStatisticsQry qry);
List<ScreenWorkPieStatisticsCO> screenWorkPieStatistics(ScreenWorkPieStatisticsQry qry);
}

View File

@ -0,0 +1,22 @@
package com.zcloud.eightwork.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
*
*
* @author codex
*/
@Data
public class ScreenWorkPieStatisticsQry implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "企业id", name = "corpinfoId")
private Long corpinfoId;
@ApiModelProperty(value = "港区1:秦皇岛港区,2:秦皇岛东,3:秦皇岛西", name = "portArea")
private Integer portArea;
}

View File

@ -0,0 +1,22 @@
package com.zcloud.eightwork.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
*
*
* @author codex
*/
@Data
public class ScreenWorkStatusStatisticsQry implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "企业id", name = "corpinfoId")
private Long corpinfoId;
@ApiModelProperty(value = "港区1:秦皇岛港区,2:秦皇岛东,3:秦皇岛西", name = "portArea")
private Integer portArea;
}

View File

@ -24,6 +24,9 @@ public class ScreenWorkPageCO extends ClientObject {
@ApiModelProperty(value = "企业名称")
private String corpinfoName;
@ApiModelProperty(value = "部门名称")
private String departmentName;
@ApiModelProperty(value = "票号")
private String checkNo;
@ -36,6 +39,9 @@ public class ScreenWorkPageCO extends ClientObject {
@ApiModelProperty(value = "状态")
private Integer status;
@ApiModelProperty(value = "作业状态")
private String currentStep;
@ApiModelProperty(value = "详情信息")
private JSONObject info;

View File

@ -0,0 +1,28 @@
package com.zcloud.eightwork.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
*
* @author codex
*/
@Data
public class ScreenWorkPieStatisticsCO extends ClientObject {
@ApiModelProperty(value = "作业类型")
private String workType;
@ApiModelProperty(value = "作业类型名称")
private String workTypeName;
@ApiModelProperty(value = "审批中数量")
private Long approvingCount;
@ApiModelProperty(value = "作业中数量")
private Long workingCount;
@ApiModelProperty(value = "已归档数量")
private Long archivedCount;
}

View File

@ -0,0 +1,24 @@
package com.zcloud.eightwork.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
*
*
* @author codex
*/
@Data
public class ScreenWorkStatusStatisticsCO implements Serializable {
@ApiModelProperty(value = "审批中数量")
private Long approvingCount;
@ApiModelProperty(value = "作业中数量")
private Long workingCount;
@ApiModelProperty(value = "已归档数量")
private Long archivedCount;
}

View File

@ -0,0 +1,16 @@
package com.zcloud.eightwork.persistence.dataobject.dto;
import lombok.Data;
/**
*
*
* @author codex
*/
@Data
public class ScreenWorkPieStatisticsDTO {
private String workType;
private Long approvingCount;
private Long workingCount;
private Long archivedCount;
}

View File

@ -15,9 +15,11 @@ public class ScreenWorkRecordDTO {
private String workId;
private Long corpinfoId;
private String corpinfoName;
private String departmentName;
private String checkNo;
private String workType;
private Integer status;
private String currentStep;
private String currentStepName;
private String nextStepName;
private String info;

View File

@ -0,0 +1,15 @@
package com.zcloud.eightwork.persistence.dataobject.dto;
import lombok.Data;
/**
*
*
* @author codex
*/
@Data
public class ScreenWorkStatusStatisticsDTO {
private Long approvingCount;
private Long workingCount;
private Long archivedCount;
}

View File

@ -10,7 +10,9 @@ import com.zcloud.eightwork.persistence.dataobject.dto.DangerWorkStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenDangerWorkDataStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenDepartmentStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenStatusStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkPieStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkRecordDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkStatusStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkTrendDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO;
import org.apache.ibatis.annotations.Mapper;
@ -48,5 +50,9 @@ public interface EightworkInfoMapper extends BaseMapper<EightworkInfoDO> {
List<ScreenDepartmentStatisticsDTO> screenDepartmentStatistics(@Param("params") Map<String, Object> params);
List<ScreenDangerWorkDataStatisticsDTO> screenDangerWorkDataStatistics(@Param("params") Map<String, Object> params);
ScreenWorkStatusStatisticsDTO screenWorkStatusStatistics(@Param("params") Map<String, Object> params);
List<ScreenWorkPieStatisticsDTO> screenWorkPieStatistics(@Param("params") Map<String, Object> params);
}

View File

@ -7,7 +7,9 @@ import com.zcloud.eightwork.persistence.dataobject.dto.DangerWorkStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenDangerWorkDataStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenDepartmentStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenStatusStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkPieStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkRecordDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkStatusStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkTrendDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO;
@ -45,6 +47,10 @@ public interface EightworkInfoRepository extends BaseRepository<EightworkInfoDO>
List<ScreenDangerWorkDataStatisticsDTO> screenDangerWorkDataStatistics(Map<String, Object> params);
ScreenWorkStatusStatisticsDTO screenWorkStatusStatistics(Map<String, Object> params);
List<ScreenWorkPieStatisticsDTO> screenWorkPieStatistics(Map<String, Object> params);
/**
* 使 CAS lockFlag
* lockFlag status

View File

@ -14,7 +14,9 @@ import com.zcloud.eightwork.persistence.dataobject.dto.DangerWorkStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenDangerWorkDataStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenDepartmentStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenStatusStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkPieStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkRecordDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkStatusStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkTrendDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO;
import com.zcloud.eightwork.persistence.mapper.EightworkInfoMapper;
@ -118,6 +120,16 @@ public class EightworkInfoRepositoryImpl extends BaseRepositoryImpl<EightworkInf
return eightworkInfoMapper.screenDangerWorkDataStatistics(params);
}
@Override
public ScreenWorkStatusStatisticsDTO screenWorkStatusStatistics(Map<String, Object> params) {
return eightworkInfoMapper.screenWorkStatusStatistics(params);
}
@Override
public List<ScreenWorkPieStatisticsDTO> screenWorkPieStatistics(Map<String, Object> params) {
return eightworkInfoMapper.screenWorkPieStatistics(params);
}
@Override
public boolean updateLockFlagToLocked(Long id, Integer expectedLockFlag, Integer newLockFlag, Integer expectedStatus) {
LambdaUpdateWrapper<EightworkInfoDO> updateWrapper = new LambdaUpdateWrapper<>();

View File

@ -226,9 +226,11 @@
t.work_id as workId,
t.corpinfo_id as corpinfoId,
c.corp_name as corpinfoName,
t.department_name as departmentName,
t.check_no as checkNo,
t.work_type as workType,
t.status,
t.current_step as currentStep,
t.info,
t.create_time as createTime
from eightwork_info t
@ -288,4 +290,54 @@
group by t.work_type
</select>
<select id="screenWorkStatusStatistics" resultType="com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkStatusStatisticsDTO">
select
coalesce(sum(case when t.status in (1, 2) then 1 else 0 end), 0) as approvingCount,
coalesce(sum(case
when JSON_UNQUOTE(JSON_EXTRACT(t.info, '$.workStartTime')) is not null
and JSON_UNQUOTE(JSON_EXTRACT(t.info, '$.workStartTime')) != ''
and JSON_UNQUOTE(JSON_EXTRACT(t.info, '$.workEndTime')) is not null
and JSON_UNQUOTE(JSON_EXTRACT(t.info, '$.workEndTime')) != ''
and now() &gt;= STR_TO_DATE(JSON_UNQUOTE(JSON_EXTRACT(t.info, '$.workStartTime')), '%Y-%m-%d %H:%i:%s')
and now() &lt;= STR_TO_DATE(JSON_UNQUOTE(JSON_EXTRACT(t.info, '$.workEndTime')), '%Y-%m-%d %H:%i:%s')
then 1 else 0 end), 0) as workingCount,
coalesce(sum(case when t.status in (998, 999) then 1 else 0 end), 0) as archivedCount
from eightwork_info t
left join vi_corp_info c on t.corpinfo_id = c.id
where t.delete_enum = 'FALSE'
and c.delete_enum = 'FALSE'
<if test="params.corpinfoId != null">
and t.corpinfo_id = #{params.corpinfoId}
</if>
<if test="params.portArea != null">
and c.port_area = #{params.portArea}
</if>
</select>
<select id="screenWorkPieStatistics" resultType="com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkPieStatisticsDTO">
select
t.work_type as workType,
coalesce(sum(case when t.status in (1, 2) then 1 else 0 end), 0) as approvingCount,
coalesce(sum(case
when JSON_UNQUOTE(JSON_EXTRACT(t.info, '$.workStartTime')) is not null
and JSON_UNQUOTE(JSON_EXTRACT(t.info, '$.workStartTime')) != ''
and JSON_UNQUOTE(JSON_EXTRACT(t.info, '$.workEndTime')) is not null
and JSON_UNQUOTE(JSON_EXTRACT(t.info, '$.workEndTime')) != ''
and now() &gt;= STR_TO_DATE(JSON_UNQUOTE(JSON_EXTRACT(t.info, '$.workStartTime')), '%Y-%m-%d %H:%i:%s')
and now() &lt;= STR_TO_DATE(JSON_UNQUOTE(JSON_EXTRACT(t.info, '$.workEndTime')), '%Y-%m-%d %H:%i:%s')
then 1 else 0 end), 0) as workingCount,
coalesce(sum(case when t.status in (998, 999) then 1 else 0 end), 0) as archivedCount
from eightwork_info t
left join vi_corp_info c on t.corpinfo_id = c.id
where t.delete_enum = 'FALSE'
and c.delete_enum = 'FALSE'
<if test="params.corpinfoId != null">
and t.corpinfo_id = #{params.corpinfoId}
</if>
<if test="params.portArea != null">
and c.port_area = #{params.portArea}
</if>
group by t.work_type
</select>
</mapper>