wuxw
2023-12-27 2b5345b5bb7431df49517fdf08e825e0ab44f1ae
完成工作单
4个文件已修改
1个文件已添加
330 ■■■■ 已修改文件
java110-bean/src/main/java/com/java110/dto/workEvent/WorkEventDto.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/workPool/WorkPoolDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/po/workEvent/WorkEventPo.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/oa/WorkEventV1ServiceDaoImplMapper.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-oa/src/main/java/com/java110/oa/cmd/work/FinishWorkTaskCmd.java 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/workEvent/WorkEventDto.java
@@ -37,6 +37,8 @@
    private String statusCd = "0";
    private String orderByDesc;
    public String getEventId() {
        return eventId;
@@ -174,4 +176,12 @@
    public void setQueryEndTime(String queryEndTime) {
        this.queryEndTime = queryEndTime;
    }
    public String getOrderByDesc() {
        return orderByDesc;
    }
    public void setOrderByDesc(String orderByDesc) {
        this.orderByDesc = orderByDesc;
    }
}
java110-bean/src/main/java/com/java110/dto/workPool/WorkPoolDto.java
@@ -19,7 +19,7 @@
    public static final String WORK_CYCLE_CYCLE = "2002"; // 周期性工单
    public static final String STATE_WAIT = "W"; //  W 待处理 D 处理中 C处理完成
    public static final String STATE_DOING = "D"; //  W 待处理 D 处理中 C处理完成
    public static final String STATE_COMPLETE = "W"; //  W 待处理 D 处理中 C处理完成
    public static final String STATE_COMPLETE = "C"; //  W 待处理 D 处理中 C处理完成
    private String workCycle;
    private String createUserId;
java110-bean/src/main/java/com/java110/po/workEvent/WorkEventPo.java
@@ -17,6 +17,7 @@
import java.io.Serializable;
import java.util.Date;
/**
 * 类表述: Po 数据模型实体对象 基本保持与数据库模型一直 用于 增加修改删除 等时的数据载体
 * add by 吴学文 at 2023-12-25 16:28:42 mail: 928255095@qq.com
@@ -28,83 +29,104 @@
public class WorkEventPo implements Serializable {
    private String eventId;
private String preStaffName;
private String preStaffId;
private String staffName;
private String remark;
private String statusCd = "0";
private String communityId;
private String storeId;
private String taskId;
private String workId;
private String staffId;
public String getEventId() {
    private String preStaffName;
    private String preStaffId;
    private String staffName;
    private String remark;
    private String statusCd = "0";
    private String communityId;
    private String storeId;
    private String taskId;
    private String workId;
    private String staffId;
    public String getEventId() {
        return eventId;
    }
public void setEventId(String eventId) {
    public void setEventId(String eventId) {
        this.eventId = eventId;
    }
public String getPreStaffName() {
    public String getPreStaffName() {
        return preStaffName;
    }
public void setPreStaffName(String preStaffName) {
    public void setPreStaffName(String preStaffName) {
        this.preStaffName = preStaffName;
    }
public String getPreStaffId() {
    public String getPreStaffId() {
        return preStaffId;
    }
public void setPreStaffId(String preStaffId) {
    public void setPreStaffId(String preStaffId) {
        this.preStaffId = preStaffId;
    }
public String getStaffName() {
    public String getStaffName() {
        return staffName;
    }
public void setStaffName(String staffName) {
    public void setStaffName(String staffName) {
        this.staffName = staffName;
    }
public String getRemark() {
    public String getRemark() {
        return remark;
    }
public void setRemark(String remark) {
    public void setRemark(String remark) {
        this.remark = remark;
    }
public String getStatusCd() {
    public String getStatusCd() {
        return statusCd;
    }
public void setStatusCd(String statusCd) {
    public void setStatusCd(String statusCd) {
        this.statusCd = statusCd;
    }
public String getCommunityId() {
    public String getCommunityId() {
        return communityId;
    }
public void setCommunityId(String communityId) {
    public void setCommunityId(String communityId) {
        this.communityId = communityId;
    }
public String getStoreId() {
    public String getStoreId() {
        return storeId;
    }
public void setStoreId(String storeId) {
    public void setStoreId(String storeId) {
        this.storeId = storeId;
    }
public String getTaskId() {
    public String getTaskId() {
        return taskId;
    }
public void setTaskId(String taskId) {
    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }
public String getWorkId() {
    public String getWorkId() {
        return workId;
    }
public void setWorkId(String workId) {
    public void setWorkId(String workId) {
        this.workId = workId;
    }
public String getStaffId() {
    public String getStaffId() {
        return staffId;
    }
public void setStaffId(String staffId) {
    public void setStaffId(String staffId) {
        this.staffId = staffId;
    }
}
java110-db/src/main/resources/mapper/oa/WorkEventV1ServiceDaoImplMapper.xml
@@ -67,7 +67,10 @@
        <if test="queryEndTime !=null and queryEndTime != ''">
            and t.create_time &lt; #{queryEndTime}
        </if>
        order by t.create_time desc
        order by t.create_time
        <if test="orderByDesc !=null and orderByDesc != ''">
            desc
        </if>
        <if test="page != -1 and page != null ">
            limit #{page}, #{row}
        </if>
service-oa/src/main/java/com/java110/oa/cmd/work/FinishWorkTaskCmd.java
New file
@@ -0,0 +1,225 @@
package com.java110.oa.cmd.work;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.context.CmdContextUtils;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.Cmd;
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.intf.user.IUserV1InnerServiceSMO;
import com.java110.po.workEvent.WorkEventPo;
import com.java110.po.workPool.WorkPoolPo;
import com.java110.po.workPoolFile.WorkPoolFilePo;
import com.java110.po.workTask.WorkTaskPo;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
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.List;
@Java110Cmd(serviceCode = "work.finishWorkTask")
public class FinishWorkTaskCmd extends Cmd {
    @Autowired
    private IWorkTaskV1InnerServiceSMO workTaskV1InnerServiceSMOImpl;
    @Autowired
    private IWorkEventV1InnerServiceSMO workEventV1InnerServiceSMOImpl;
    @Autowired
    private IWorkPoolV1InnerServiceSMO workPoolV1InnerServiceSMOImpl;
    @Autowired
    private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
    @Autowired
    private IWorkPoolFileV1InnerServiceSMO workPoolFileV1InnerServiceSMOImpl;
    @Override
    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
        Assert.hasKeyAndValue(reqJson, "taskId", "未包含任务");
        Assert.hasKeyAndValue(reqJson, "auditCode", "未包含状态");
        Assert.hasKeyAndValue(reqJson, "auditMessage", "未包含说明");
        if ("T".equals(reqJson.getString("auditCode"))) {
            Assert.hasKeyAndValue(reqJson, "taskId", "未包含转单人");
        }
        String userId = CmdContextUtils.getUserId(context);
        WorkTaskDto workTaskDto = new WorkTaskDto();
        workTaskDto.setTaskId(reqJson.getString("taskId"));
        workTaskDto.setStaffId(userId);
        List<WorkTaskDto> workTaskDtos = workTaskV1InnerServiceSMOImpl.queryWorkTasks(workTaskDto);
        if (ListUtil.isNull(workTaskDtos)) {
            throw new CmdException("工作单不在你的工位,您无权处理");
        }
    }
    @Override
    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
        String storeId = CmdContextUtils.getStoreId(context);
        WorkTaskDto workTaskDto = new WorkTaskDto();
        workTaskDto.setTaskId(reqJson.getString("taskId"));
        workTaskDto.setStoreId(storeId);
        List<WorkTaskDto> workTaskDtos = workTaskV1InnerServiceSMOImpl.queryWorkTasks(workTaskDto);
        //todo 转单
        if ("T".equals(reqJson.getString("auditCode"))) {
            doTransfor(reqJson, workTaskDtos.get(0));
        } else if ("C".equals(reqJson.getString("auditCode"))) {
            doFinish(reqJson, workTaskDtos.get(0));
        }
        if (!reqJson.containsKey("pathUrl")) {
            return;
        }
        String pathUrl = reqJson.getString("pathUrl");
        if (StringUtil.isEmpty(pathUrl)) {
            return;
        }
        WorkPoolFilePo workPoolFilePo = new WorkPoolFilePo();
        workPoolFilePo.setCommunityId(workTaskDtos.get(0).getCommunityId());
        workPoolFilePo.setFileType(WorkPoolFileDto.FILE_TYPE_END);
        workPoolFilePo.setFileId(GenerateCodeFactory.getGeneratorId("11"));
        workPoolFilePo.setWorkId(workTaskDtos.get(0).getWorkId());
        workPoolFilePo.setTaskId(workTaskDtos.get(0).getTaskId());
        workPoolFilePo.setPathUrl(reqJson.getString("pathUrl"));
        workPoolFilePo.setStoreId(workTaskDtos.get(0).getStoreId());
        workPoolFileV1InnerServiceSMOImpl.saveWorkPoolFile(workPoolFilePo);
    }
    /**
     * 完成工作单
     *
     * @param reqJson
     * @param workTaskDto
     */
    private void doFinish(JSONObject reqJson, WorkTaskDto workTaskDto) {
        //todo 完成任务
        WorkTaskPo workTaskPo = new WorkTaskPo();
        workTaskPo.setState(WorkPoolDto.STATE_COMPLETE);
        workTaskPo.setTaskId(workTaskDto.getTaskId());
        workTaskPo.setStoreId(workTaskDto.getStoreId());
        workTaskV1InnerServiceSMOImpl.updateWorkTask(workTaskPo);
        //todo 查询 工作单
        WorkPoolDto workPoolDto = new WorkPoolDto();
        workPoolDto.setWorkId(workTaskDto.getWorkId());
        workPoolDto.setStoreId(workTaskDto.getStoreId());
        List<WorkPoolDto> workPoolDtos = workPoolV1InnerServiceSMOImpl.queryWorkPools(workPoolDto);
        Assert.listOnlyOne(workPoolDtos, "工作单不存在");
        String preStaffId = workPoolDtos.get(0).getCreateUserId();
        String preStaffName = workPoolDtos.get(0).getCreateUserName();
        WorkEventDto workEventDto = new WorkEventDto();
        workEventDto.setStoreId(workTaskDto.getStoreId());
        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();
       }
        //todo 保存事件
        WorkEventPo workEventPo = new WorkEventPo();
        workEventPo.setWorkId(workTaskDto.getWorkId());
        workEventPo.setEventId(GenerateCodeFactory.getGeneratorId("11"));
        workEventPo.setCommunityId(workTaskDto.getCommunityId());
        workEventPo.setRemark(reqJson.getString("auditMessage"));
        workEventPo.setStaffId(workTaskDto.getStaffId());
        workEventPo.setPreStaffId(preStaffId);
        workEventPo.setPreStaffName(preStaffName);
        workEventPo.setStaffName(workTaskDto.getStaffName());
        workEventPo.setStoreId(workTaskDto.getStoreId());
        workEventPo.setTaskId(workTaskDto.getTaskId());
        workEventV1InnerServiceSMOImpl.saveWorkEvent(workEventPo);
        //todo 查询 工单任务
        WorkTaskDto tmpWorkTaskDto = new WorkTaskDto();
        tmpWorkTaskDto.setWorkId(workTaskDto.getWorkId());
        tmpWorkTaskDto.setStoreId(workTaskDto.getStoreId());
        tmpWorkTaskDto.setState(WorkTaskDto.STATE_WAIT);
        int waitCount = workTaskV1InnerServiceSMOImpl.queryWorkTasksCount(tmpWorkTaskDto);
        WorkPoolPo workPoolPo = new WorkPoolPo();
        workPoolPo.setWorkId(workTaskDto.getWorkId());
        if (waitCount > 0) {
            workPoolPo.setState(WorkPoolDto.STATE_DOING);
        } else {
            workPoolPo.setState(WorkPoolDto.STATE_COMPLETE);
        }
        workPoolV1InnerServiceSMOImpl.updateWorkPool(workPoolPo);
    }
    private void doTransfor(JSONObject reqJson, WorkTaskDto workTaskDto) {
        UserDto userDto = new UserDto();
        userDto.setUserId(reqJson.getString("staffId"));
        List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
        //todo 完成任务
        WorkTaskPo workTaskPo = new WorkTaskPo();
        workTaskPo.setState(WorkPoolDto.STATE_WAIT);
        workTaskPo.setTaskId(workTaskDto.getTaskId());
        workTaskPo.setStoreId(workTaskDto.getStoreId());
        workTaskPo.setStaffId(userDtos.get(0).getUserId());
        workTaskPo.setStaffName(userDtos.get(0).getName());
        workTaskV1InnerServiceSMOImpl.updateWorkTask(workTaskPo);
        //todo 查询 工作单
        WorkPoolDto workPoolDto = new WorkPoolDto();
        workPoolDto.setWorkId(workTaskDto.getWorkId());
        workPoolDto.setStoreId(workTaskDto.getStoreId());
        List<WorkPoolDto> workPoolDtos = workPoolV1InnerServiceSMOImpl.queryWorkPools(workPoolDto);
        Assert.listOnlyOne(workPoolDtos, "工作单不存在");
        WorkEventPo workEventPo = new WorkEventPo();
        workEventPo.setWorkId(workTaskDto.getWorkId());
        workEventPo.setEventId(GenerateCodeFactory.getGeneratorId("11"));
        workEventPo.setCommunityId(workTaskDto.getCommunityId());
        workEventPo.setRemark(reqJson.getString("auditMessage") + ";转单给" + userDtos.get(0).getName());
        workEventPo.setStaffId(workTaskDto.getStaffId());
        workEventPo.setPreStaffId(workPoolDtos.get(0).getCreateUserId());
        workEventPo.setPreStaffName(workPoolDtos.get(0).getCreateUserName());
        workEventPo.setStaffName(workTaskDto.getStaffName());
        workEventPo.setStoreId(workTaskDto.getStoreId());
        workEventPo.setTaskId(workTaskDto.getTaskId());
        workEventV1InnerServiceSMOImpl.saveWorkEvent(workEventPo);
    }
}