feat(api): 添加可视化大屏相关接口和数据查询功能

dev_visual_page
zhaokai 2026-07-20 18:00:54 +08:00
parent 1837d83259
commit 43eece07c2
19 changed files with 684 additions and 4 deletions

View File

@ -8,9 +8,17 @@ import com.zcloud.eightwork.dto.EightworkInfoPageQry;
import com.zcloud.eightwork.dto.EightworkInfoUpdateCmd; import com.zcloud.eightwork.dto.EightworkInfoUpdateCmd;
import com.zcloud.eightwork.dto.EightworkInfoWithdrawCmd; import com.zcloud.eightwork.dto.EightworkInfoWithdrawCmd;
import com.zcloud.eightwork.dto.ForceTerminateCmd; import com.zcloud.eightwork.dto.ForceTerminateCmd;
import com.zcloud.eightwork.dto.ScreenStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkPageQry;
import com.zcloud.eightwork.dto.ScreenWorkRecordQry;
import com.zcloud.eightwork.dto.ScreenWorkTrendQry;
import com.zcloud.eightwork.dto.clientobject.DangerWorkStatisticsCO; import com.zcloud.eightwork.dto.clientobject.DangerWorkStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO; import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO;
import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO; import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO;
import com.zcloud.eightwork.dto.clientobject.ScreenStatusStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkPageCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkRecordCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkTrendCO;
import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response; import com.alibaba.cola.dto.Response;
@ -120,5 +128,29 @@ public class EightworkInfoController {
return SingleResponse.of(eightworkInfoService.dangerWorkStatistics(qry)); return SingleResponse.of(eightworkInfoService.dangerWorkStatistics(qry));
} }
@ApiOperation("可视化大屏-安全作业状态统计")
@PostMapping("/screenStatusStatistics")
public SingleResponse<ScreenStatusStatisticsCO> screenStatusStatistics(@RequestBody ScreenStatisticsQry qry) {
return SingleResponse.of(eightworkInfoService.screenStatusStatistics(qry));
}
@ApiOperation("可视化大屏-作业情况统计")
@PostMapping("/screenWorkTrend")
public MultiResponse<ScreenWorkTrendCO> screenWorkTrend(@RequestBody ScreenWorkTrendQry qry) {
return MultiResponse.of(eightworkInfoService.screenWorkTrend(qry));
}
@ApiOperation("可视化大屏-安全作业记录")
@PostMapping("/screenWorkRecord")
public PageResponse<ScreenWorkRecordCO> screenWorkRecord(@RequestBody ScreenWorkRecordQry qry) {
return eightworkInfoService.screenWorkRecord(qry);
}
@ApiOperation("可视化大屏-作业分页查询")
@PostMapping("/screenWorkPage")
public PageResponse<ScreenWorkPageCO> screenWorkPage(@RequestBody ScreenWorkPageQry qry) {
return eightworkInfoService.screenWorkPage(qry);
}
} }

View File

@ -1,5 +1,6 @@
package com.zcloud.eightwork.command.query; package com.zcloud.eightwork.command.query;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.PageResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.jjb.saas.framework.auth.utils.AuthContext; import com.jjb.saas.framework.auth.utils.AuthContext;
@ -8,12 +9,23 @@ import com.zcloud.eightwork.domain.model.EightworkInfoE;
import com.zcloud.eightwork.domain.model.enums.WorkCodeEnum; import com.zcloud.eightwork.domain.model.enums.WorkCodeEnum;
import com.zcloud.eightwork.dto.DangerWorkStatisticsQry; import com.zcloud.eightwork.dto.DangerWorkStatisticsQry;
import com.zcloud.eightwork.dto.EightworkInfoPageQry; import com.zcloud.eightwork.dto.EightworkInfoPageQry;
import com.zcloud.eightwork.dto.ScreenStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkPageQry;
import com.zcloud.eightwork.dto.ScreenWorkRecordQry;
import com.zcloud.eightwork.dto.ScreenWorkTrendQry;
import com.zcloud.eightwork.dto.clientobject.DangerWorkStatisticsCO; import com.zcloud.eightwork.dto.clientobject.DangerWorkStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO; import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO;
import com.zcloud.eightwork.dto.clientobject.ScreenStatusStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkPageCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkRecordCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkTrendCO;
import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO; import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO;
import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO;
import com.zcloud.eightwork.persistence.dataobject.EightworkSupplementaryInfoDO; import com.zcloud.eightwork.persistence.dataobject.EightworkSupplementaryInfoDO;
import com.zcloud.eightwork.persistence.dataobject.dto.DangerWorkStatisticsDTO; import com.zcloud.eightwork.persistence.dataobject.dto.DangerWorkStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenStatusStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkRecordDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkTrendDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO; import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO;
import com.zcloud.eightwork.persistence.repository.EightworkInfoRepository; import com.zcloud.eightwork.persistence.repository.EightworkInfoRepository;
import com.zcloud.eightwork.persistence.repository.EightworkSupplementaryInfoRepository; import com.zcloud.eightwork.persistence.repository.EightworkSupplementaryInfoRepository;
@ -27,6 +39,8 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -86,10 +100,8 @@ public class EightworkInfoQueryExe {
} }
public DangerWorkStatisticsCO dangerWorkStatistics(DangerWorkStatisticsQry qry) { public DangerWorkStatisticsCO dangerWorkStatistics(DangerWorkStatisticsQry qry) {
Map<String, Object> params = new HashMap<>();
if (qry != null) { Map<String, Object> params = PageQueryHelper.toHashMap(qry);
params.put("corpinfoId", qry.getCorpinfoId());
}
DangerWorkStatisticsDTO statisticsDTO = eightworkInfoRepository.dangerWorkStatistics(params); DangerWorkStatisticsDTO statisticsDTO = eightworkInfoRepository.dangerWorkStatistics(params);
if (statisticsDTO == null) { if (statisticsDTO == null) {
return new DangerWorkStatisticsCO(); return new DangerWorkStatisticsCO();
@ -105,6 +117,164 @@ public class EightworkInfoQueryExe {
return statisticsCO; return statisticsCO;
} }
public ScreenStatusStatisticsCO screenStatusStatistics(ScreenStatisticsQry qry) {
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
ScreenStatusStatisticsDTO statisticsDTO = eightworkInfoRepository.screenStatusStatistics(params);
if (statisticsDTO == null) {
return new ScreenStatusStatisticsCO();
}
ScreenStatusStatisticsCO statisticsCO = new ScreenStatusStatisticsCO();
BeanUtils.copyProperties(statisticsDTO, statisticsCO);
if (statisticsCO.getAppliedCount() == null) {
statisticsCO.setAppliedCount(0L);
}
if (statisticsCO.getApprovingCount() == null) {
statisticsCO.setApprovingCount(0L);
}
if (statisticsCO.getArchivedCount() == null) {
statisticsCO.setArchivedCount(0L);
}
return statisticsCO;
}
public List<ScreenWorkTrendCO> screenWorkTrend(ScreenWorkTrendQry qry) {
Map<String, Object> params = new HashMap<>();
List<LocalDate> dates = buildDateRange(qry);
if (qry != null) {
params.put("corpinfoId", qry.getCorpinfoId());
}
if(qry.getPortArea() != null){
params.put("portArea", qry.getPortArea());
}
params.put("startDate", dates.get(0).format(DateTimeFormatter.ISO_LOCAL_DATE));
params.put("endDate", dates.get(dates.size() - 1).format(DateTimeFormatter.ISO_LOCAL_DATE));
List<ScreenWorkTrendDTO> trendDTOS = eightworkInfoRepository.screenWorkTrend(params);
if (trendDTOS == null) {
return new ArrayList<>();
}
Map<String, Long> countMap = trendDTOS.stream()
.collect(Collectors.toMap(dto -> dto.getWorkDate() + "#" + dto.getWorkType(), ScreenWorkTrendDTO::getCount));
List<ScreenWorkTrendCO> trendCOS = new ArrayList<>();
for (LocalDate date : dates) {
String workDate = date.format(DateTimeFormatter.ISO_LOCAL_DATE);
for (WorkCodeEnum workCodeEnum : WorkCodeEnum.values()) {
ScreenWorkTrendCO trendCO = new ScreenWorkTrendCO();
trendCO.setWorkDate(workDate);
trendCO.setWorkType(workCodeEnum.getWorkType());
trendCO.setWorkTypeName(workCodeEnum.getName());
trendCO.setCount(countMap.getOrDefault(workDate + "#" + workCodeEnum.getWorkType(), 0L));
trendCOS.add(trendCO);
}
}
return trendCOS;
}
public PageResponse<ScreenWorkRecordCO> screenWorkRecord(ScreenWorkRecordQry qry) {
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
PageResponse<ScreenWorkRecordDTO> pageResponse = eightworkInfoRepository.screenWorkRecord(params);
if (CollUtil.isEmpty(pageResponse.getData())) {
return PageResponse.of(null, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
List<ScreenWorkRecordCO> records = pageResponse.getData().stream()
.map(this::toScreenWorkRecordCO)
.collect(Collectors.toList());
return PageResponse.of(records, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public PageResponse<ScreenWorkPageCO> screenWorkPage(ScreenWorkPageQry qry) {
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
PageResponse<ScreenWorkRecordDTO> pageResponse = eightworkInfoRepository.screenWorkPage(params);
if (CollUtil.isEmpty(pageResponse.getData())) {
return PageResponse.of(null, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
List<ScreenWorkPageCO> records = pageResponse.getData().stream()
.map(this::toScreenWorkPageCO)
.collect(Collectors.toList());
return PageResponse.of(records, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
private List<LocalDate> buildDateRange(ScreenWorkTrendQry qry) {
LocalDate endDate = LocalDate.now();
LocalDate startDate = endDate.minusDays(6);
if (qry != null && StringUtils.isNotBlank(qry.getEndDate())) {
endDate = LocalDate.parse(qry.getEndDate(), DateTimeFormatter.ISO_LOCAL_DATE);
}
if (qry != null && StringUtils.isNotBlank(qry.getStartDate())) {
startDate = LocalDate.parse(qry.getStartDate(), DateTimeFormatter.ISO_LOCAL_DATE);
}
if (startDate.isAfter(endDate)) {
LocalDate tempDate = startDate;
startDate = endDate;
endDate = tempDate;
}
List<LocalDate> dates = new ArrayList<>();
LocalDate currentDate = startDate;
while (!currentDate.isAfter(endDate)) {
dates.add(currentDate);
currentDate = currentDate.plusDays(1);
}
return dates;
}
private ScreenWorkRecordCO toScreenWorkRecordCO(ScreenWorkRecordDTO recordDTO) {
ScreenWorkRecordCO recordCO = new ScreenWorkRecordCO();
BeanUtils.copyProperties(recordDTO, recordCO);
recordCO.setWorkTypeName(WorkCodeEnum.getNameByWorkType(recordDTO.getWorkType()));
recordCO.setStatusName(StringUtils.isNotBlank(recordDTO.getCurrentStepName()) ? recordDTO.getCurrentStepName() : getStatusName(recordDTO.getStatus()));
recordCO.setCreateTime(formatDateTime(recordDTO.getCreateTime()));
return recordCO;
}
private ScreenWorkPageCO toScreenWorkPageCO(ScreenWorkRecordDTO recordDTO) {
ScreenWorkPageCO pageCO = new ScreenWorkPageCO();
BeanUtils.copyProperties(recordDTO, pageCO);
pageCO.setWorkTypeName(WorkCodeEnum.getNameByWorkType(recordDTO.getWorkType()));
pageCO.setInfo(parseJson(recordDTO.getInfo()));
pageCO.setCreateTime(formatDateTime(recordDTO.getCreateTime()));
return pageCO;
}
private String getStatusName(Integer status) {
if (status == null) {
return null;
}
if (status == 1) {
return "审批中";
}
if (status == 999) {
return "已归档";
}
if (status == 998) {
return "强制终止";
}
if (status == 2) {
return "已打回";
}
if (status == 0) {
return "暂存";
}
return String.valueOf(status);
}
private String formatDateTime(java.time.LocalDateTime dateTime) {
if (dateTime == null) {
return null;
}
return dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
private JSONObject parseJson(String value) {
if (StringUtils.isBlank(value)) {
return null;
}
try {
return JSONObject.parseObject(value);
} catch (Exception e) {
log.warn("解析作业详情失败,使用空对象", e);
return new JSONObject();
}
}
public void exportConfinedspace(EightworkInfoPageQry qry, HttpServletResponse httpServletResponse) { public void exportConfinedspace(EightworkInfoPageQry qry, HttpServletResponse httpServletResponse) {
// Map<String, Object> params = new HashMap<>(); // Map<String, Object> params = new HashMap<>();
// params.put("ids",ids); // params.put("ids",ids);

View File

@ -17,9 +17,17 @@ import com.zcloud.eightwork.dto.DangerWorkStatisticsQry;
import com.zcloud.eightwork.dto.EightworkInfoAddCmd; import com.zcloud.eightwork.dto.EightworkInfoAddCmd;
import com.zcloud.eightwork.dto.EightworkInfoPageQry; import com.zcloud.eightwork.dto.EightworkInfoPageQry;
import com.zcloud.eightwork.dto.EightworkInfoUpdateCmd; import com.zcloud.eightwork.dto.EightworkInfoUpdateCmd;
import com.zcloud.eightwork.dto.ScreenStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkPageQry;
import com.zcloud.eightwork.dto.ScreenWorkRecordQry;
import com.zcloud.eightwork.dto.ScreenWorkTrendQry;
import com.zcloud.eightwork.dto.TaskLogNextCmd; import com.zcloud.eightwork.dto.TaskLogNextCmd;
import com.zcloud.eightwork.dto.clientobject.DangerWorkStatisticsCO; import com.zcloud.eightwork.dto.clientobject.DangerWorkStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO; import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO;
import com.zcloud.eightwork.dto.clientobject.ScreenStatusStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkPageCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkRecordCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkTrendCO;
import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO; import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO;
import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO;
import com.zcloud.eightwork.persistence.repository.EightworkInfoRepository; import com.zcloud.eightwork.persistence.repository.EightworkInfoRepository;
@ -174,5 +182,25 @@ public class EightworkInfoServiceImpl implements EightworkInfoServiceI {
public DangerWorkStatisticsCO dangerWorkStatistics(DangerWorkStatisticsQry qry) { public DangerWorkStatisticsCO dangerWorkStatistics(DangerWorkStatisticsQry qry) {
return eightworkInfoQueryExe.dangerWorkStatistics(qry); return eightworkInfoQueryExe.dangerWorkStatistics(qry);
} }
@Override
public ScreenStatusStatisticsCO screenStatusStatistics(ScreenStatisticsQry qry) {
return eightworkInfoQueryExe.screenStatusStatistics(qry);
}
@Override
public List<ScreenWorkTrendCO> screenWorkTrend(ScreenWorkTrendQry qry) {
return eightworkInfoQueryExe.screenWorkTrend(qry);
}
@Override
public PageResponse<ScreenWorkRecordCO> screenWorkRecord(ScreenWorkRecordQry qry) {
return eightworkInfoQueryExe.screenWorkRecord(qry);
}
@Override
public PageResponse<ScreenWorkPageCO> screenWorkPage(ScreenWorkPageQry qry) {
return eightworkInfoQueryExe.screenWorkPage(qry);
}
} }

View File

@ -6,8 +6,16 @@ import com.zcloud.eightwork.dto.DangerWorkStatisticsQry;
import com.zcloud.eightwork.dto.EightworkInfoAddCmd; import com.zcloud.eightwork.dto.EightworkInfoAddCmd;
import com.zcloud.eightwork.dto.EightworkInfoPageQry; import com.zcloud.eightwork.dto.EightworkInfoPageQry;
import com.zcloud.eightwork.dto.EightworkInfoUpdateCmd; import com.zcloud.eightwork.dto.EightworkInfoUpdateCmd;
import com.zcloud.eightwork.dto.ScreenStatisticsQry;
import com.zcloud.eightwork.dto.ScreenWorkPageQry;
import com.zcloud.eightwork.dto.ScreenWorkRecordQry;
import com.zcloud.eightwork.dto.ScreenWorkTrendQry;
import com.zcloud.eightwork.dto.clientobject.DangerWorkStatisticsCO; import com.zcloud.eightwork.dto.clientobject.DangerWorkStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO; import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO;
import com.zcloud.eightwork.dto.clientobject.ScreenStatusStatisticsCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkPageCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkRecordCO;
import com.zcloud.eightwork.dto.clientobject.ScreenWorkTrendCO;
import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO; import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -53,5 +61,13 @@ public interface EightworkInfoServiceI {
void exportConfinedspace(EightworkInfoPageQry ids, HttpServletResponse httpServletResponse); void exportConfinedspace(EightworkInfoPageQry ids, HttpServletResponse httpServletResponse);
DangerWorkStatisticsCO dangerWorkStatistics(DangerWorkStatisticsQry qry); DangerWorkStatisticsCO dangerWorkStatistics(DangerWorkStatisticsQry qry);
ScreenStatusStatisticsCO screenStatusStatistics(ScreenStatisticsQry qry);
List<ScreenWorkTrendCO> screenWorkTrend(ScreenWorkTrendQry qry);
PageResponse<ScreenWorkRecordCO> screenWorkRecord(ScreenWorkRecordQry qry);
PageResponse<ScreenWorkPageCO> screenWorkPage(ScreenWorkPageQry 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 ScreenStatisticsQry implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
@ApiModelProperty(value = "港区1:秦皇岛港区,2:秦皇岛东,3:秦皇岛西", name = "portArea")
private Integer portArea;
}

View File

@ -0,0 +1,21 @@
package com.zcloud.eightwork.dto;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
*
* @author codex
*/
@Data
public class ScreenWorkPageQry extends PageQuery {
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
@ApiModelProperty(value = "作业类型,枚举")
private String workType;
@ApiModelProperty(value = "港区1:秦皇岛港区,2:秦皇岛东,3:秦皇岛西", name = "portArea")
private Integer portArea;
}

View File

@ -0,0 +1,19 @@
package com.zcloud.eightwork.dto;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
*
* @author codex
*/
@Data
public class ScreenWorkRecordQry extends PageQuery {
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
@ApiModelProperty(value = "港区1:秦皇岛港区,2:秦皇岛东,3:秦皇岛西", name = "portArea")
private Integer portArea;
}

View File

@ -0,0 +1,27 @@
package com.zcloud.eightwork.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
*
*
* @author codex
*/
@Data
public class ScreenWorkTrendQry implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
@ApiModelProperty(value = "开始日期格式yyyy-MM-dd")
private String startDate;
@ApiModelProperty(value = "结束日期格式yyyy-MM-dd")
private String endDate;
@ApiModelProperty(value = "港区1:秦皇岛港区,2:秦皇岛东,3:秦皇岛西", name = "portArea")
private Integer portArea;
}

View File

@ -0,0 +1,22 @@
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 ScreenStatusStatisticsCO extends ClientObject {
@ApiModelProperty(value = "申请数")
private Long appliedCount;
@ApiModelProperty(value = "审批中数量")
private Long approvingCount;
@ApiModelProperty(value = "归档数")
private Long archivedCount;
}

View File

@ -0,0 +1,44 @@
package com.zcloud.eightwork.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
*
* @author codex
*/
@Data
public class ScreenWorkPageCO extends ClientObject {
@ApiModelProperty(value = "主键")
private Long id;
@ApiModelProperty(value = "业务主键ID")
private String workId;
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
@ApiModelProperty(value = "企业名称")
private String corpinfoName;
@ApiModelProperty(value = "票号")
private String checkNo;
@ApiModelProperty(value = "作业类型")
private String workType;
@ApiModelProperty(value = "作业类型名称")
private String workTypeName;
@ApiModelProperty(value = "状态")
private Integer status;
@ApiModelProperty(value = "详情信息")
private JSONObject info;
@ApiModelProperty(value = "创建时间")
private String createTime;
}

View File

@ -0,0 +1,49 @@
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 ScreenWorkRecordCO extends ClientObject {
@ApiModelProperty(value = "主键")
private Long id;
@ApiModelProperty(value = "业务主键ID")
private String workId;
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
@ApiModelProperty(value = "企业名称")
private String corpinfoName;
@ApiModelProperty(value = "票号")
private String checkNo;
@ApiModelProperty(value = "作业类型")
private String workType;
@ApiModelProperty(value = "作业类型名称")
private String workTypeName;
@ApiModelProperty(value = "状态")
private Integer status;
@ApiModelProperty(value = "状态名称")
private String statusName;
@ApiModelProperty(value = "当前步骤名称")
private String currentStepName;
@ApiModelProperty(value = "下一步操作人")
private String nextStepName;
@ApiModelProperty(value = "创建时间")
private String createTime;
}

View File

@ -0,0 +1,25 @@
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 ScreenWorkTrendCO extends ClientObject {
@ApiModelProperty(value = "日期")
private String workDate;
@ApiModelProperty(value = "作业类型")
private String workType;
@ApiModelProperty(value = "作业类型名称")
private String workTypeName;
@ApiModelProperty(value = "数量")
private Long count;
}

View File

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

View File

@ -0,0 +1,25 @@
package com.zcloud.eightwork.persistence.dataobject.dto;
import lombok.Data;
import java.time.LocalDateTime;
/**
*
*
* @author codex
*/
@Data
public class ScreenWorkRecordDTO {
private Long id;
private String workId;
private Long corpinfoId;
private String corpinfoName;
private String checkNo;
private String workType;
private Integer status;
private String currentStepName;
private String nextStepName;
private String info;
private LocalDateTime createTime;
}

View File

@ -0,0 +1,15 @@
package com.zcloud.eightwork.persistence.dataobject.dto;
import lombok.Data;
/**
*
*
* @author codex
*/
@Data
public class ScreenWorkTrendDTO {
private String workDate;
private String workType;
private Long count;
}

View File

@ -7,6 +7,9 @@ import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes; import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO;
import com.zcloud.eightwork.persistence.dataobject.dto.DangerWorkStatisticsDTO; import com.zcloud.eightwork.persistence.dataobject.dto.DangerWorkStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenStatusStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkRecordDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkTrendDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO; import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -31,5 +34,13 @@ public interface EightworkInfoMapper extends BaseMapper<EightworkInfoDO> {
List<StatisticsByWorkTypeDTO> statisticsByWorkType(@Param("params") Map<String, Object> params); List<StatisticsByWorkTypeDTO> statisticsByWorkType(@Param("params") Map<String, Object> params);
DangerWorkStatisticsDTO dangerWorkStatistics(@Param("params") Map<String, Object> params); DangerWorkStatisticsDTO dangerWorkStatistics(@Param("params") Map<String, Object> params);
ScreenStatusStatisticsDTO screenStatusStatistics(@Param("params") Map<String, Object> params);
List<ScreenWorkTrendDTO> screenWorkTrend(@Param("params") Map<String, Object> params);
IPage<ScreenWorkRecordDTO> screenWorkRecord(Page<Map<String, Object>> page, @Param("params") Map<String, Object> params);
IPage<ScreenWorkRecordDTO> screenWorkPage(Page<Map<String, Object>> page, @Param("params") Map<String, Object> params);
} }

View File

@ -4,6 +4,9 @@ import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository; import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO;
import com.zcloud.eightwork.persistence.dataobject.dto.DangerWorkStatisticsDTO; import com.zcloud.eightwork.persistence.dataobject.dto.DangerWorkStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenStatusStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkRecordDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkTrendDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO; import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO;
import java.util.List; import java.util.List;
@ -28,6 +31,14 @@ public interface EightworkInfoRepository extends BaseRepository<EightworkInfoDO>
DangerWorkStatisticsDTO dangerWorkStatistics(Map<String, Object> params); DangerWorkStatisticsDTO dangerWorkStatistics(Map<String, Object> params);
ScreenStatusStatisticsDTO screenStatusStatistics(Map<String, Object> params);
List<ScreenWorkTrendDTO> screenWorkTrend(Map<String, Object> params);
PageResponse<ScreenWorkRecordDTO> screenWorkRecord(Map<String, Object> params);
PageResponse<ScreenWorkRecordDTO> screenWorkPage(Map<String, Object> params);
/** /**
* 使 CAS lockFlag * 使 CAS lockFlag
* lockFlag status * lockFlag status

View File

@ -11,6 +11,9 @@ import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.eightwork.domain.model.enums.MenuEnum; import com.zcloud.eightwork.domain.model.enums.MenuEnum;
import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO;
import com.zcloud.eightwork.persistence.dataobject.dto.DangerWorkStatisticsDTO; import com.zcloud.eightwork.persistence.dataobject.dto.DangerWorkStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenStatusStatisticsDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkRecordDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkTrendDTO;
import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO; import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO;
import com.zcloud.eightwork.persistence.mapper.EightworkInfoMapper; import com.zcloud.eightwork.persistence.mapper.EightworkInfoMapper;
import com.zcloud.eightwork.persistence.repository.EightworkInfoRepository; import com.zcloud.eightwork.persistence.repository.EightworkInfoRepository;
@ -79,6 +82,30 @@ public class EightworkInfoRepositoryImpl extends BaseRepositoryImpl<EightworkInf
return eightworkInfoMapper.dangerWorkStatistics(params); return eightworkInfoMapper.dangerWorkStatistics(params);
} }
@Override
public ScreenStatusStatisticsDTO screenStatusStatistics(Map<String, Object> params) {
return eightworkInfoMapper.screenStatusStatistics(params);
}
@Override
public List<ScreenWorkTrendDTO> screenWorkTrend(Map<String, Object> params) {
return eightworkInfoMapper.screenWorkTrend(params);
}
@Override
public PageResponse<ScreenWorkRecordDTO> screenWorkRecord(Map<String, Object> params) {
Page<Map<String, Object>> page = new Page<>(Integer.parseInt(params.get("pageIndex").toString()), Integer.parseInt(params.get("pageSize").toString()));
IPage<ScreenWorkRecordDTO> iPage = eightworkInfoMapper.screenWorkRecord(page, params);
return PageHelper.pageToResponse(iPage, iPage.getRecords());
}
@Override
public PageResponse<ScreenWorkRecordDTO> screenWorkPage(Map<String, Object> params) {
Page<Map<String, Object>> page = new Page<>(Integer.parseInt(params.get("pageIndex").toString()), Integer.parseInt(params.get("pageSize").toString()));
IPage<ScreenWorkRecordDTO> iPage = eightworkInfoMapper.screenWorkPage(page, params);
return PageHelper.pageToResponse(iPage, iPage.getRecords());
}
@Override @Override
public boolean updateLockFlagToLocked(Long id, Integer expectedLockFlag, Integer newLockFlag, Integer expectedStatus) { public boolean updateLockFlagToLocked(Long id, Integer expectedLockFlag, Integer newLockFlag, Integer expectedStatus) {
LambdaUpdateWrapper<EightworkInfoDO> updateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<EightworkInfoDO> updateWrapper = new LambdaUpdateWrapper<>();

View File

@ -144,4 +144,105 @@
</if> </if>
</select> </select>
<select id="screenStatusStatistics" resultType="com.zcloud.eightwork.persistence.dataobject.dto.ScreenStatusStatisticsDTO">
select
coalesce(sum(case when t.status != 0 then 1 else 0 end), 0) as appliedCount,
coalesce(sum(case when t.status = 1 then 1 else 0 end), 0) as approvingCount,
coalesce(sum(case when t.status = 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="screenWorkTrend" resultType="com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkTrendDTO">
select
date_format(t.create_time, '%Y-%m-%d') as workDate,
t.work_type as workType,
count(1) as count
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'
and t.status != 0
<if test="params.corpinfoId != null">
and t.corpinfo_id = #{params.corpinfoId}
</if>
<if test="params.startDate != null and params.startDate != ''">
and t.create_time &gt;= date_format(concat(#{params.startDate}, ' 00:00:00'), '%Y-%m-%d %H:%i:%s')
</if>
<if test="params.endDate != null and params.endDate != ''">
and t.create_time &lt; date_format(date_add(#{params.endDate}, interval 1 day), '%Y-%m-%d %H:%i:%s')
</if>
<if test="params.portArea != null">
AND c.port_area = #{params.portArea}
</if>
group by date_format(t.create_time, '%Y-%m-%d'), t.work_type
</select>
<select id="screenWorkRecord" resultType="com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkRecordDTO">
select
t.id,
t.work_id as workId,
t.corpinfo_id as corpinfoId,
c.corp_name as corpinfoName,
t.check_no as checkNo,
t.work_type as workType,
t.status,
log.step_name as currentStepName,
log.next_step_name as nextStepName,
t.info,
t.create_time as createTime
from eightwork_info t
left join vi_corp_info c on t.corpinfo_id = c.id
left join task_log log on log.id = (
select l.id
from task_log l
where l.work_id = t.work_id
and l.status = 0
order by case when l.step_type = 1 then 0 else 1 end,
l.create_time desc,
l.id desc
limit 1
)
where t.delete_enum = 'FALSE' and c.delete_enum='FALSE'
and t.status = 1
<if test="params.corpinfoId != null">
and t.corpinfo_id = #{params.corpinfoId}
</if>
<if test="params.portArea != null">
AND c.port_area = #{params.portArea}
</if>
order by t.create_time desc
</select>
<select id="screenWorkPage" resultType="com.zcloud.eightwork.persistence.dataobject.dto.ScreenWorkRecordDTO">
select
t.id,
t.work_id as workId,
t.corpinfo_id as corpinfoId,
c.corp_name as corpinfoName,
t.check_no as checkNo,
t.work_type as workType,
t.status,
t.info,
t.create_time as createTime
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'
and t.status = 1
<if test="params.corpinfoId != null">
and t.corpinfo_id = #{params.corpinfoId}
</if>
<if test="params.workType != null and params.workType != ''">
and t.work_type = #{params.workType}
</if>
<if test="params.portArea != null">
AND c.port_area = #{params.portArea}
</if>
order by t.create_time desc
</select>
</mapper> </mapper>