wuxw
2025-02-25 4f365007869668ee035dc44ca98263b85ced8d8a
service-oa/src/main/java/com/java110/oa/cmd/work/FinishWorkTaskCmd.java
@@ -8,26 +8,27 @@
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.user.UserDto;
import com.java110.dto.workEvent.WorkEventDto;
import com.java110.dto.workPool.WorkPoolDto;
import com.java110.dto.workPoolFile.WorkPoolFileDto;
import com.java110.dto.workTask.WorkTaskDto;
import com.java110.intf.oa.IWorkEventV1InnerServiceSMO;
import com.java110.intf.oa.IWorkPoolFileV1InnerServiceSMO;
import com.java110.intf.oa.IWorkPoolV1InnerServiceSMO;
import com.java110.intf.oa.IWorkTaskV1InnerServiceSMO;
import com.java110.dto.work.WorkEventDto;
import com.java110.dto.work.WorkPoolDto;
import com.java110.dto.work.WorkPoolFileDto;
import com.java110.dto.work.WorkTaskDto;
import com.java110.dto.work.WorkTaskItemDto;
import com.java110.intf.oa.*;
import com.java110.intf.user.IUserV1InnerServiceSMO;
import com.java110.po.workEvent.WorkEventPo;
import com.java110.po.workPool.WorkEventPo;
import com.java110.po.workPool.WorkPoolPo;
import com.java110.po.workPoolFile.WorkPoolFilePo;
import com.java110.po.workTask.WorkTaskPo;
import com.java110.po.workPool.WorkPoolFilePo;
import com.java110.po.workPool.WorkTaskPo;
import com.java110.po.workPool.WorkTaskItemPo;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.DateUtil;
import com.java110.utils.util.ListUtil;
import com.java110.utils.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
@Java110Cmd(serviceCode = "work.finishWorkTask")
@@ -35,6 +36,9 @@
    @Autowired
    private IWorkTaskV1InnerServiceSMO workTaskV1InnerServiceSMOImpl;
    @Autowired
    private IWorkTaskItemV1InnerServiceSMO workTaskItemV1InnerServiceSMOImpl;
    @Autowired
    private IWorkEventV1InnerServiceSMO workEventV1InnerServiceSMOImpl;
@@ -52,6 +56,7 @@
    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
        Assert.hasKeyAndValue(reqJson, "taskId", "未包含任务");
        Assert.hasKeyAndValue(reqJson, "itemId", "未包含内容");
        Assert.hasKeyAndValue(reqJson, "auditCode", "未包含状态");
        Assert.hasKeyAndValue(reqJson, "auditMessage", "未包含说明");
@@ -81,12 +86,20 @@
        workTaskDto.setStoreId(storeId);
        List<WorkTaskDto> workTaskDtos = workTaskV1InnerServiceSMOImpl.queryWorkTasks(workTaskDto);
        WorkTaskItemDto workTaskItemDto = new WorkTaskItemDto();
        workTaskItemDto.setItemId(reqJson.getString("itemId"));
        workTaskItemDto.setCommunityId(workTaskDto.getCommunityId());
        List<WorkTaskItemDto> workTaskItemDtos = workTaskItemV1InnerServiceSMOImpl.queryWorkTaskItems(workTaskItemDto);
        if (ListUtil.isNull(workTaskItemDtos)) {
            throw new CmdException("任务明细不存在");
        }
        //todo 转单
        if ("T".equals(reqJson.getString("auditCode"))) {
            doTransfor(reqJson, workTaskDtos.get(0));
        } else if ("C".equals(reqJson.getString("auditCode"))) {
            doFinish(reqJson, workTaskDtos.get(0));
            doFinish(reqJson, workTaskDtos.get(0), workTaskItemDtos.get(0));
        }
        if (!reqJson.containsKey("pathUrl")) {
@@ -106,6 +119,10 @@
        workPoolFilePo.setTaskId(workTaskDtos.get(0).getTaskId());
        workPoolFilePo.setPathUrl(reqJson.getString("pathUrl"));
        workPoolFilePo.setStoreId(workTaskDtos.get(0).getStoreId());
        workPoolFilePo.setItemId(reqJson.getString("itemId"));
        workPoolFilePo.setContentId(workTaskItemDtos.get(0).getContentId());
        workPoolFileV1InnerServiceSMOImpl.saveWorkPoolFile(workPoolFilePo);
    }
@@ -116,16 +133,36 @@
     * @param reqJson
     * @param workTaskDto
     */
    private void doFinish(JSONObject reqJson, WorkTaskDto workTaskDto) {
    private void doFinish(JSONObject reqJson, WorkTaskDto workTaskDto, WorkTaskItemDto orgWorkTaskItemDto) {
        Date endTime = DateUtil.getDateFromStringA(workTaskDto.getEndTime());
        String taskTimeout = "N";
        //todo 工单已经超时
        if (endTime.before(DateUtil.getCurrentDate())) {
            taskTimeout = "Y";
        }
        String orderState = WorkPoolDto.STATE_DOING;
        //todo 完成任务
        WorkTaskPo workTaskPo = new WorkTaskPo();
        workTaskPo.setState(WorkPoolDto.STATE_COMPLETE);
        workTaskPo.setState(orderState);
        workTaskPo.setTaskId(workTaskDto.getTaskId());
        workTaskPo.setStoreId(workTaskDto.getStoreId());
//        workTaskPo.setFinishTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
//        workTaskPo.setTaskTimeout(taskTimeout);
        workTaskV1InnerServiceSMOImpl.updateWorkTask(workTaskPo);
        WorkTaskItemPo workTaskItemPo = new WorkTaskItemPo();
        workTaskItemPo.setItemId(reqJson.getString("itemId"));
        workTaskItemPo.setState(WorkTaskDto.STATE_COMPLETE);
        workTaskItemPo.setTaskId(workTaskDto.getTaskId());
        workTaskItemPo.setFinishTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
        workTaskItemV1InnerServiceSMOImpl.updateWorkTaskItem(workTaskItemPo);
        //todo 查询 工作单
        WorkPoolDto workPoolDto = new WorkPoolDto();
@@ -143,12 +180,13 @@
        workEventDto.setTaskId(workTaskDto.getTaskId());
        workEventDto.setWorkId(workTaskDto.getWorkId());
        workEventDto.setOrderByDesc("desc");
       List<WorkEventDto> workEventDtos = workEventV1InnerServiceSMOImpl.queryWorkEvents(workEventDto);
       if(!ListUtil.isNull(workEventDtos)){
           preStaffId = workEventDtos.get(0).getStaffId();
           preStaffName = workEventDtos.get(0).getStaffName();
        List<WorkEventDto> workEventDtos = workEventV1InnerServiceSMOImpl.queryWorkEvents(workEventDto);
        if (!ListUtil.isNull(workEventDtos)) {
            preStaffId = workEventDtos.get(0).getStaffId();
            preStaffName = workEventDtos.get(0).getStaffName();
       }
        }
        //todo 保存事件
        WorkEventPo workEventPo = new WorkEventPo();
@@ -162,14 +200,39 @@
        workEventPo.setStaffName(workTaskDto.getStaffName());
        workEventPo.setStoreId(workTaskDto.getStoreId());
        workEventPo.setTaskId(workTaskDto.getTaskId());
        workEventPo.setItemId(reqJson.getString("itemId"));
        workEventPo.setContentId(orgWorkTaskItemDto.getContentId());
        workEventPo.setEventType(WorkEventDto.EVENT_TYPE_COMPLETE);
        workEventV1InnerServiceSMOImpl.saveWorkEvent(workEventPo);
        // todo 查询 任务明细是否处理完成
        WorkTaskItemDto workTaskItemDto = new WorkTaskItemDto();
        workTaskItemDto.setTaskId(workTaskDto.getTaskId());
        workTaskItemDto.setCommunityId(workTaskDto.getCommunityId());
        workTaskItemDto.setState(WorkTaskDto.STATE_WAIT);
        int count = workTaskItemV1InnerServiceSMOImpl.queryWorkTaskItemsCount(workTaskItemDto);
        if (count > 0) {
            WorkPoolPo workPoolPo = new WorkPoolPo();
            workPoolPo.setWorkId(workTaskDto.getWorkId());
            workPoolPo.setState(WorkPoolDto.STATE_DOING);
            workPoolV1InnerServiceSMOImpl.updateWorkPool(workPoolPo);
            return;
        }
        workTaskPo = new WorkTaskPo();
        workTaskPo.setTaskId(workTaskDto.getTaskId());
        workTaskPo.setState(WorkTaskDto.STATE_COMPLETE);
        workTaskPo.setFinishTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
        workTaskPo.setTaskTimeout(taskTimeout);
        workTaskV1InnerServiceSMOImpl.updateWorkTask(workTaskPo);
        //todo 查询 工单任务
        WorkTaskDto tmpWorkTaskDto = new WorkTaskDto();
        tmpWorkTaskDto.setWorkId(workTaskDto.getWorkId());
        tmpWorkTaskDto.setStoreId(workTaskDto.getStoreId());
        tmpWorkTaskDto.setState(WorkTaskDto.STATE_WAIT);
        tmpWorkTaskDto.setStates(new String[]{WorkTaskDto.STATE_WAIT, WorkTaskDto.STATE_DOING});
        int waitCount = workTaskV1InnerServiceSMOImpl.queryWorkTasksCount(tmpWorkTaskDto);
        WorkPoolPo workPoolPo = new WorkPoolPo();
        workPoolPo.setWorkId(workTaskDto.getWorkId());
@@ -220,6 +283,9 @@
        workEventPo.setStaffName(workTaskDto.getStaffName());
        workEventPo.setStoreId(workTaskDto.getStoreId());
        workEventPo.setTaskId(workTaskDto.getTaskId());
        workEventPo.setItemId("-1");
        workEventPo.setContentId("-1");
        workEventPo.setEventType(WorkEventDto.EVENT_TYPE_TRANSFOR);
        workEventV1InnerServiceSMOImpl.saveWorkEvent(workEventPo);
    }
}