wuxw лет назад: 2
Родитель
Сommit
2b5345b5bb

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/workEvent/WorkEventDto.java

@@ -37,6 +37,8 @@ public class WorkEventDto extends PageDto implements Serializable {
 
     private String statusCd = "0";
 
+    private String orderByDesc;
+
 
     public String getEventId() {
         return eventId;
@@ -174,4 +176,12 @@ public class WorkEventDto extends PageDto implements Serializable {
     public void setQueryEndTime(String queryEndTime) {
         this.queryEndTime = queryEndTime;
     }
+
+    public String getOrderByDesc() {
+        return orderByDesc;
+    }
+
+    public void setOrderByDesc(String orderByDesc) {
+        this.orderByDesc = orderByDesc;
+    }
 }

+ 1 - 1
java110-bean/src/main/java/com/java110/dto/workPool/WorkPoolDto.java

@@ -19,7 +19,7 @@ public class WorkPoolDto extends PageDto implements Serializable {
     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;

+ 55 - 33
java110-bean/src/main/java/com/java110/po/workEvent/WorkEventPo.java

@@ -17,6 +17,7 @@ package com.java110.po.workEvent;
 
 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 @@ import java.util.Date;
 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;
     }
 
 
-
 }

+ 4 - 1
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>

+ 225 - 0
service-oa/src/main/java/com/java110/oa/cmd/work/FinishWorkTaskCmd.java

@@ -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);
+    }
+}