diff --git a/web-adapter/src/main/java/com/zcloud/eightwork/web/EightworkInfoController.java b/web-adapter/src/main/java/com/zcloud/eightwork/web/EightworkInfoController.java index 11f2ea9..9faa676 100644 --- a/web-adapter/src/main/java/com/zcloud/eightwork/web/EightworkInfoController.java +++ b/web-adapter/src/main/java/com/zcloud/eightwork/web/EightworkInfoController.java @@ -5,6 +5,8 @@ import com.zcloud.eightwork.api.EightworkInfoServiceI; import com.zcloud.eightwork.dto.EightworkInfoAddCmd; import com.zcloud.eightwork.dto.EightworkInfoPageQry; import com.zcloud.eightwork.dto.EightworkInfoUpdateCmd; +import com.zcloud.eightwork.dto.ForceTerminateCmd; +import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO; import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO; import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.PageResponse; @@ -82,10 +84,17 @@ public class EightworkInfoController { } @ApiOperation("强制终止工作流") - @PostMapping("/forceTerminate/{id}") - public Response forceTerminate(@PathVariable("id") Long id) { - eightworkInfoService.forceTerminate(id); + @PostMapping("/forceTerminate") + public Response forceTerminate(@RequestBody ForceTerminateCmd cmd) { + eightworkInfoService.forceTerminate(cmd.getId(), cmd.getCloseReason()); return SingleResponse.buildSuccess(); } + + @ApiOperation("按作业类型统计") + @PostMapping("/statisticsByWorkType") + public MultiResponse statisticsByWorkType(@RequestBody EightworkInfoPageQry qry) { + return MultiResponse.of(eightworkInfoService.statisticsByWorkType(qry)); + } + } diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/EightworkInfoSaveDraftExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/EightworkInfoSaveDraftExe.java index 80a52b1..0d8c66e 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/EightworkInfoSaveDraftExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/EightworkInfoSaveDraftExe.java @@ -1,13 +1,19 @@ package com.zcloud.eightwork.command; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; import com.alibaba.cola.exception.BizException; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jjb.saas.framework.auth.utils.AuthContext; import com.zcloud.eightwork.domain.gateway.TaskFlowGateway; +import com.zcloud.eightwork.domain.model.MeasuresLogsE; import com.zcloud.eightwork.domain.model.TaskFlowE; +import com.zcloud.eightwork.domain.model.TaskLogE; import com.zcloud.eightwork.domain.model.enums.TaskLogStatus; import com.zcloud.eightwork.dto.EightworkInfoSaveDraftCmd; +import com.zcloud.eightwork.dto.TaskLogNextCmd; import com.zcloud.eightwork.dto.TaskSignStepInfoCmd; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; import com.zcloud.eightwork.persistence.dataobject.MeasuresLogsDO; @@ -23,7 +29,9 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * 八险作业暂存执行器 @@ -114,6 +122,12 @@ public class EightworkInfoSaveDraftExe { // 7. 处理其他安全措施 handleOtherMeasures(existingInfo.getWorkId(), cmd.getWorkType(), cmd.getOthers()); + // 8. 处理安全措施 + deleteTaskLogsExceptFirst(existingInfo.getWorkId()); + if(ObjectUtil.isNotEmpty(cmd.getOthers()) && cmd.getOthers().containsKey("measures")) { + handleMeasuresStep(cmd,existingInfo.getWorkId()); + } + log.info("暂存更新成功: workId={}", existingInfo.getWorkId()); } @@ -152,6 +166,11 @@ public class EightworkInfoSaveDraftExe { // 4. 处理其他安全措施 handleOtherMeasures(eightworkInfo.getWorkId(), cmd.getWorkType(), cmd.getOthers()); + // 5. 处理安全措施 + if(ObjectUtil.isNotEmpty(cmd.getOthers()) && cmd.getOthers().containsKey("measures")) { + handleMeasuresStep(cmd,eightworkInfo.getWorkId()); + } + log.info("暂存创建成功: workId={}", eightworkInfo.getWorkId()); } @@ -292,4 +311,46 @@ public class EightworkInfoSaveDraftExe { log.info("暂存时已保存其他安全措施: workId={}, content={}", workId, otherMeasures); } + + /** + * 删除除申请步骤外的所有 task_log + */ + private void deleteTaskLogsExceptFirst(String workId) { + taskLogRepository.physicalDeleteByWorkId(workId); + log.info("已删除除申请步骤外的 task_log: workId={}", workId); + } + + + /** + * 处理安全措施确认步骤 + * 保存安全措施记录 + */ + private void handleMeasuresStep(EightworkInfoSaveDraftCmd cmd,String workId) { + log.info("暂存 处理安全措施确认"); + + List measuresList = new ArrayList<>(); + JSONArray array = cmd.getOthers().getJSONArray("measures"); + if (array != null) { + for (int i = 0; i < array.size(); i++) { + MeasuresLogsE item = JSONUtil.toBean(array.getJSONObject(i).toJSONString(), MeasuresLogsE.class); + item.setWorkId(workId); + measuresList.add(item); + } + } + + if (ObjectUtil.isNotEmpty(cmd.getOthers().get("measuresType")) && cmd.getOthers().get("measuresType").equals("2")) { + measuresLogsRepository.updateBatchById(measuresList.stream().map(item -> { + MeasuresLogsDO d = new MeasuresLogsDO(); + BeanUtils.copyProperties(item, d); + return d; + }).collect(Collectors.toList())); + } else { + measuresLogsRepository.saveBatch(measuresList.stream().map(item -> { + MeasuresLogsDO d = new MeasuresLogsDO(); + BeanUtils.copyProperties(item, d, "id"); + d.setType(1); + return d; + }).collect(Collectors.toList())); + } + } } diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogAddExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogAddExe.java index 3567af9..4b06939 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogAddExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogAddExe.java @@ -1,20 +1,27 @@ package com.zcloud.eightwork.command; import cn.hutool.core.date.DatePattern; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; import com.alibaba.cola.exception.BizException; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jjb.saas.framework.auth.utils.AuthContext; import com.zcloud.eightwork.domain.gateway.TaskFlowGateway; import com.zcloud.eightwork.domain.gateway.TaskLogGateway; +import com.zcloud.eightwork.domain.model.MeasuresLogsE; import com.zcloud.eightwork.domain.model.TaskFlowE; import com.zcloud.eightwork.domain.model.enums.TaskLogStatus; import com.zcloud.eightwork.domain.model.enums.WorkCodeEnum; +import com.zcloud.eightwork.dto.EightworkInfoSaveDraftCmd; import com.zcloud.eightwork.dto.TaskLogAddCmd; import com.zcloud.eightwork.dto.TaskSignStepInfoCmd; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; +import com.zcloud.eightwork.persistence.dataobject.MeasuresLogsDO; import com.zcloud.eightwork.persistence.dataobject.TaskLogDO; import com.zcloud.eightwork.persistence.repository.EightworkInfoRepository; +import com.zcloud.eightwork.persistence.repository.MeasuresLogsRepository; import com.zcloud.eightwork.persistence.repository.TaskLogRepository; import com.zcloud.gbscommon.utils.DateUtil; import com.zcloud.gbscommon.utils.Tools; @@ -59,6 +66,7 @@ public class TaskLogAddExe { private final TaskFlowGateway taskFlowGateway; private final EightworkInfoRepository eightworkInfoRepository; private final StringRedisTemplate stringRedisTemplate; + private final MeasuresLogsRepository measuresLogsRepository; @Transactional(rollbackFor = Exception.class) public List execute(TaskLogAddCmd cmd) { @@ -92,7 +100,7 @@ public class TaskLogAddExe { } // 2. 检查状态,暂存(0)或打回(2)都可以转正式提交 - if (!TaskLogStatus.NOT_STARTED.getCode().equals(existingInfo.getStatus()) && + if (!TaskLogStatus.IN_PROGRESS.getCode().equals(existingInfo.getStatus()) && !TaskLogStatus.REJECTED.equalsCode(existingInfo.getStatus())) { throw new BizException("只能从暂存状态或打回状态转为正式提交"); } @@ -139,6 +147,12 @@ public class TaskLogAddExe { // 9. 批量保存 taskLogRepository.saveBatch(taskLogs); + // 10. 处理安全措施 + deleteTaskLogsExceptFirst(existingInfo.getWorkId()); + if(ObjectUtil.isNotEmpty(cmd.getOthers()) && cmd.getOthers().containsKey("measures")) { + handleMeasuresStep(cmd,existingInfo.getWorkId()); + } + log.info("作业流程创建成功(从暂存): workId={}, stepCount={}", existingInfo.getWorkId(), taskLogs.size()); return taskLogs; } @@ -176,6 +190,11 @@ public class TaskLogAddExe { // 5. 批量保存 taskLogRepository.saveBatch(taskLogs); + // 6. 处理安全措施 + if(ObjectUtil.isNotEmpty(cmd.getOthers()) && cmd.getOthers().containsKey("measures")) { + handleMeasuresStep(cmd,workId); + } + log.info("作业流程创建成功: workId={}, stepCount={}", workId, taskLogs.size()); return taskLogs; } @@ -426,6 +445,46 @@ public class TaskLogAddExe { return mergedJson.toJSONString(); } + /** + * 删除除申请步骤外的所有 task_log + */ + private void deleteTaskLogsExceptFirst(String workId) { + taskLogRepository.physicalDeleteByWorkId(workId); + log.info("已删除除申请步骤外的 task_log: workId={}", workId); + } + + /** + * 处理安全措施确认步骤 + * 保存安全措施记录 + */ + private void handleMeasuresStep(TaskLogAddCmd cmd, String workId) { + log.info("暂存 处理安全措施确认"); + + List measuresList = new ArrayList<>(); + JSONArray array = cmd.getOthers().getJSONArray("measures"); + if (array != null) { + for (int i = 0; i < array.size(); i++) { + MeasuresLogsE item = JSONUtil.toBean(array.getJSONObject(i).toJSONString(), MeasuresLogsE.class); + item.setWorkId(workId); + measuresList.add(item); + } + } + + if (ObjectUtil.isNotEmpty(cmd.getOthers().get("measuresType")) && cmd.getOthers().get("measuresType").equals("2")) { + measuresLogsRepository.updateBatchById(measuresList.stream().map(item -> { + MeasuresLogsDO d = new MeasuresLogsDO(); + BeanUtils.copyProperties(item, d); + return d; + }).collect(Collectors.toList())); + } else { + measuresLogsRepository.saveBatch(measuresList.stream().map(item -> { + MeasuresLogsDO d = new MeasuresLogsDO(); + BeanUtils.copyProperties(item, d, "id"); + d.setType(1); + return d; + }).collect(Collectors.toList())); + } + } /** * 构建票号 Redis Key diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogUpdateExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogUpdateExe.java index ec8919d..baf1898 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogUpdateExe.java @@ -699,6 +699,9 @@ public class TaskLogUpdateExe { // 更新 eightworkInfo.info(只更新本次变化的步骤) updateEightworkInfo(cmd.getWorkId(), actionLogs); + // 保存关闭原因到主表 info + saveCloseReason(cmd.getWorkId(), cmd.getOthers()); + // 更新主表状态为998 eightworkInfoRepository.updateWorkStatus( cmd.getWorkId(), @@ -709,6 +712,53 @@ public class TaskLogUpdateExe { log.info("工作流已强制终止: workId={}, skippedSteps={}", cmd.getWorkId(), actionLogs.size() - 1); } + /** + * 保存强制终止关闭原因到主表 info + */ + private void saveCloseReason(String workId, JSONObject others) { + if (others == null || !others.containsKey("closeReason")) { + return; + } + + String closeReason = others.getString("closeReason"); + if (StringUtils.isBlank(closeReason)) { + return; + } + + EightworkInfoDO infoDO = eightworkInfoRepository.getOne( + new LambdaQueryWrapper() + .eq(EightworkInfoDO::getWorkId, workId) + ); + + if (infoDO == null) { + log.warn("未找到作业信息: workId={}", workId); + return; + } + + // 解析现有的 info + JSONObject infoJson; + if (StringUtils.isNotBlank(infoDO.getInfo())) { + try { + infoJson = JSONObject.parseObject(infoDO.getInfo()); + } catch (Exception e) { + log.warn("解析 info 失败,使用空对象: workId={}", workId, e); + infoJson = new JSONObject(); + } + } else { + infoJson = new JSONObject(); + } + + // 添加关闭原因 + infoJson.put("closeReason", closeReason); + infoJson.put("closeTime", DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN)); + + // 更新到数据库 + infoDO.setInfo(infoJson.toJSONString()); + eightworkInfoRepository.updateById(infoDO); + + log.info("已保存关闭原因: workId={}, closeReason={}", workId, closeReason); + } + /** * 处理打回工作流 * status为2时打回到申请步骤,删除后续流程,允许修改后重新提交 @@ -1035,8 +1085,8 @@ public class TaskLogUpdateExe { * 如果现有记录数少于签字人数,自动创建新记录 */ private void handleMultipleSignStep(TaskLogE firstLog, List existingLogs, - List signInfos, - List actionLogs, List allLogs) { + List signInfos, + List actionLogs, List allLogs) { int existingCount = existingLogs.size(); int requiredCount = signInfos.size(); diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkInfoQueryExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkInfoQueryExe.java index 211bab1..17d950e 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkInfoQueryExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkInfoQueryExe.java @@ -4,14 +4,18 @@ import com.alibaba.cola.dto.PageResponse; import com.zcloud.eightwork.command.convertor.EightworkInfoCoConvertor; import com.zcloud.eightwork.dto.EightworkInfoPageQry; import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO; +import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; +import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO; import com.zcloud.eightwork.persistence.repository.EightworkInfoRepository; import com.zcloud.gbscommon.utils.PageQueryHelper; import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** @@ -48,5 +52,15 @@ public class EightworkInfoQueryExe { List examCenterCOS = eightworkInfoCoConvertor.converDOsToCOs(pageResponse.getData()); return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); } + + public List statisticsByWorkType(EightworkInfoPageQry qry) { + Map params = PageQueryHelper.toHashMap(qry); + List statisticsByWorkTypeDTOS = eightworkInfoRepository.statisticsByWorkType(params); + return statisticsByWorkTypeDTOS.stream().map(statisticsByWorkTypeDTO -> { + StatisticsByWorkTypeCO statisticsByWorkTypeCO = new StatisticsByWorkTypeCO(); + BeanUtils.copyProperties(statisticsByWorkTypeDTO, statisticsByWorkTypeCO); + return statisticsByWorkTypeCO; + }).collect(Collectors.toList()); + } } diff --git a/web-app/src/main/java/com/zcloud/eightwork/service/EightworkInfoServiceImpl.java b/web-app/src/main/java/com/zcloud/eightwork/service/EightworkInfoServiceImpl.java index ca40a50..9c1f578 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/service/EightworkInfoServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/eightwork/service/EightworkInfoServiceImpl.java @@ -17,6 +17,7 @@ import com.zcloud.eightwork.dto.EightworkInfoPageQry; import com.zcloud.eightwork.dto.EightworkInfoUpdateCmd; import com.zcloud.eightwork.dto.TaskLogNextCmd; import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO; +import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; import com.zcloud.eightwork.persistence.repository.EightworkInfoRepository; import lombok.AllArgsConstructor; @@ -24,6 +25,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + /** * web-app * @@ -80,15 +83,16 @@ public class EightworkInfoServiceImpl implements EightworkInfoServiceI { * 业务逻辑参考 TaskLogUpdateExe.handleForceTerminate 方法 * 1. 根据主表 ID 查询 workId * 2. 查找当前正在进行的步骤(status=0) - * 3. 构建 TaskLogNextCmd 并设置 status=998 + * 3. 构建 TaskLogNextCmd 并设置 status=998 和关闭原因 * 4. 调用 TaskLogService.nextStep 处理强制终止 * * @param id 主表 ID + * @param closeReason 关闭原因 */ @Override @Transactional(rollbackFor = Exception.class) - public void forceTerminate(Long id) { - log.info("强制终止工作流: id={}", id); + public void forceTerminate(Long id, String closeReason) { + log.info("强制终止工作流: id={}, closeReason={}", id, closeReason); // 1. 根据主表 ID 查询 EightworkInfoDO 获取 workId EightworkInfoDO infoDO = eightworkInfoRepository.getById(id); @@ -118,10 +122,22 @@ public class EightworkInfoServiceImpl implements EightworkInfoServiceI { cmd.setStepId(currentLog.getStepId()); cmd.setStatus(998); // 强制终止状态码 + // 设置关闭原因到 others + if (org.apache.commons.lang.StringUtils.isNotBlank(closeReason)) { + com.alibaba.fastjson.JSONObject others = new com.alibaba.fastjson.JSONObject(); + others.put("closeReason", closeReason); + cmd.setOthers(others); + } + // 4. 调用 TaskLogService.nextStep 处理强制终止 taskLogService.nextStep(cmd); - log.info("工作流已强制终止: workId={}, stepId={}", workId, currentLog.getStepId()); + log.info("工作流已强制终止: workId={}, stepId={}, closeReason={}", workId, currentLog.getStepId(), closeReason); + } + + @Override + public List statisticsByWorkType(EightworkInfoPageQry qry){ + return eightworkInfoQueryExe.statisticsByWorkType(qry); } } diff --git a/web-client/src/main/java/com/zcloud/eightwork/api/EightworkInfoServiceI.java b/web-client/src/main/java/com/zcloud/eightwork/api/EightworkInfoServiceI.java index d59d51d..68b6284 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/api/EightworkInfoServiceI.java +++ b/web-client/src/main/java/com/zcloud/eightwork/api/EightworkInfoServiceI.java @@ -6,6 +6,9 @@ import com.zcloud.eightwork.dto.EightworkInfoAddCmd; import com.zcloud.eightwork.dto.EightworkInfoPageQry; import com.zcloud.eightwork.dto.EightworkInfoUpdateCmd; import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO; +import com.zcloud.eightwork.dto.clientobject.StatisticsByWorkTypeCO; + +import java.util.List; /** * web-client @@ -30,7 +33,10 @@ public interface EightworkInfoServiceI { * 强制终止工作流 * * @param id 主表 ID + * @param closeReason 关闭原因 */ - void forceTerminate(Long id); + void forceTerminate(Long id, String closeReason); + + List statisticsByWorkType(EightworkInfoPageQry qry); } diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java b/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java index f4bb90d..019cbbd 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java @@ -26,6 +26,7 @@ public class EightworkInfoPageQry extends PageQuery { * - `ne`: 不等比较查询,对应SQL的!=操作符 */ private String eqWorkType; + private List inCorpInfoId; private String eqCheckNo; private Integer eqStatus; private String eqWorkLevel; diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/ForceTerminateCmd.java b/web-client/src/main/java/com/zcloud/eightwork/dto/ForceTerminateCmd.java new file mode 100644 index 0000000..17a87a5 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/ForceTerminateCmd.java @@ -0,0 +1,26 @@ +package com.zcloud.eightwork.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * @author fangjiakai + * @date 2026/03/31 13:30 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ForceTerminateCmd extends Command { + @ApiModelProperty(value = "主键", name = "id", required = true) + @NotNull(message = "主键不能为空") + private Long id; + @ApiModelProperty(value = "关闭原因", name = "closeReason") + private String closeReason; +} diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/StatisticsByWorkTypeCO.java b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/StatisticsByWorkTypeCO.java new file mode 100644 index 0000000..3abdf35 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/StatisticsByWorkTypeCO.java @@ -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 fangjiakai + * @date 2026/03/31 13:42 + */ +@Data +public class StatisticsByWorkTypeCO extends ClientObject { + @ApiModelProperty(value = "企业ID") + private Long corpinfoId; + @ApiModelProperty(value = "暂存数") + private Integer draftCount; + @ApiModelProperty(value = "进行中数") + private Integer doingCount; + @ApiModelProperty(value = "打回数") + private Integer rejectedCount; + @ApiModelProperty(value = "强制终止数") + private Integer forceTerminateCount; + @ApiModelProperty(value = "完成数") + private Integer doneCount; +} diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/ConfinedSpaceMapper.xml b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/ConfinedSpaceMapper.xml deleted file mode 100644 index 6fe9f7c..0000000 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/ConfinedSpaceMapper.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/dto/StatisticsByWorkTypeDTO.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/dto/StatisticsByWorkTypeDTO.java new file mode 100644 index 0000000..f4154b8 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/dto/StatisticsByWorkTypeDTO.java @@ -0,0 +1,31 @@ +package com.zcloud.eightwork.persistence.dataobject.dto; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.jjb.saas.framework.repository.basedo.BaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * @author fangjiakai + * @date 2026/03/31 13:47 + */ +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class StatisticsByWorkTypeDTO extends BaseDO { + @ApiModelProperty(value = "企业ID") + private Long corpinfoId; + @ApiModelProperty(value = "暂存数") + private Integer draftCount; + @ApiModelProperty(value = "进行中数") + private Integer doingCount; + @ApiModelProperty(value = "打回数") + private Integer rejectedCount; + @ApiModelProperty(value = "强制终止数") + private Integer forceTerminateCount; + @ApiModelProperty(value = "完成数") + private Integer doneCount; + +} diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/EightworkInfoMapper.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/EightworkInfoMapper.java index 57d15c9..d6a31c3 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/EightworkInfoMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/EightworkInfoMapper.java @@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jjb.saas.framework.datascope.annotation.DataScope; import com.jjb.saas.framework.datascope.annotation.DataScopes; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; +import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; import java.util.Map; /** @@ -24,5 +26,7 @@ import java.util.Map; public interface EightworkInfoMapper extends BaseMapper { IPage listPage(Page> page, @Param("params") Map parmas, String menuPerms); + + List statisticsByWorkType(@Param("params") Map params); } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkInfoRepository.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkInfoRepository.java index ce233b1..c166764 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkInfoRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkInfoRepository.java @@ -3,6 +3,7 @@ package com.zcloud.eightwork.persistence.repository; import com.alibaba.cola.dto.PageResponse; import com.jjb.saas.framework.repository.repo.BaseRepository; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; +import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO; import java.util.List; import java.util.Map; @@ -21,5 +22,7 @@ public interface EightworkInfoRepository extends BaseRepository List listAllByWorkIds(List workIds); Long countByWorkType(String workType); + + List statisticsByWorkType(Map params); } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkInfoRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkInfoRepositoryImpl.java index 6d4bb84..e74255e 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkInfoRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkInfoRepositoryImpl.java @@ -10,6 +10,7 @@ import com.jjb.saas.framework.repository.common.PageHelper; import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; import com.zcloud.eightwork.domain.model.enums.MenuEnum; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; +import com.zcloud.eightwork.persistence.dataobject.dto.StatisticsByWorkTypeDTO; import com.zcloud.eightwork.persistence.mapper.EightworkInfoMapper; import com.zcloud.eightwork.persistence.repository.EightworkInfoRepository; import com.zcloud.gbscommon.utils.PageQueryHelper; @@ -66,4 +67,9 @@ public class EightworkInfoRepositoryImpl extends BaseRepositoryImpl statisticsByWorkType(Map params){ + return eightworkInfoMapper.statisticsByWorkType(params); + } } diff --git a/web-infrastructure/src/main/resources/mapper/EightworkInfoMapper.xml b/web-infrastructure/src/main/resources/mapper/EightworkInfoMapper.xml index 7b47ac3..8e92b82 100644 --- a/web-infrastructure/src/main/resources/mapper/EightworkInfoMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/EightworkInfoMapper.xml @@ -88,5 +88,27 @@ order by t.create_time desc + +