package com.estate.expert.admin.io.processor.impl.business; import com.estate.expert.admin.domain.plan.Plan; import com.estate.expert.admin.io.processor.RowDataProcessorBase; import com.estate.expert.admin.service.CheckTaskService; import com.estate.expert.admin.utils.DeletedObjectUtil; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import java.util.List; import static com.estate.expert.admin.io.processor.util.ProcessorHelper.formatDateTime; /** * 检查计划处理器 * * 用于处理检查计划信息的读取和写入 */ @Getter @Setter @AllArgsConstructor public class PlanProcessor extends RowDataProcessorBase { private CheckTaskService checkTaskService; @Override protected String[] getHeaders() { return new String[] { "计划名称", "计划类型", "委托方", "计划状态", "创建时间", "完成时间", "项目数量(总数)", "项目数量(完成)", "项目数量(未完成)" }; } @Override protected List buildRowData(Plan data) { var checkTasks = checkTaskService.listExistTasks(data.getId()); var completedTaskCnt = checkTasks.stream().filter(t -> t.getState().ordinal() >= 3 ).count(); var uncompletedTaskCnt = checkTasks.size() - completedTaskCnt; return List.of( DeletedObjectUtil.beautifyDeletedString(data.getName()), data.getType().getDesc(), DeletedObjectUtil.beautifyDeletedString(data.getClient().getName()), data.getState().getDesc(), formatDateTime(data.getCreateTime()), formatDateTime(data.getCompletedTime()), String.valueOf(checkTasks.size()), String.valueOf(completedTaskCnt), String.valueOf(uncompletedTaskCnt) ); } @Override public String getName() { return "检查计划"; } }