From 2b5345b5bb7431df49517fdf08e825e0ab44f1ae Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期三, 27 十二月 2023 22:50:40 +0800
Subject: [PATCH] 完成工作单

---
 java110-db/src/main/resources/mapper/oa/WorkEventV1ServiceDaoImplMapper.xml |    5 
 service-oa/src/main/java/com/java110/oa/cmd/work/FinishWorkTaskCmd.java     |  225 +++++++++++++++++++++++++++++++++++++
 java110-bean/src/main/java/com/java110/dto/workPool/WorkPoolDto.java        |    2 
 java110-bean/src/main/java/com/java110/dto/workEvent/WorkEventDto.java      |   10 +
 java110-bean/src/main/java/com/java110/po/workEvent/WorkEventPo.java        |   88 +++++++++-----
 5 files changed, 295 insertions(+), 35 deletions(-)

diff --git a/java110-bean/src/main/java/com/java110/dto/workEvent/WorkEventDto.java b/java110-bean/src/main/java/com/java110/dto/workEvent/WorkEventDto.java
index 25c63b8..e2915fc 100644
--- a/java110-bean/src/main/java/com/java110/dto/workEvent/WorkEventDto.java
+++ b/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;
+    }
 }
diff --git a/java110-bean/src/main/java/com/java110/dto/workPool/WorkPoolDto.java b/java110-bean/src/main/java/com/java110/dto/workPool/WorkPoolDto.java
index 21e600c..0e6d222 100644
--- a/java110-bean/src/main/java/com/java110/dto/workPool/WorkPoolDto.java
+++ b/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;
diff --git a/java110-bean/src/main/java/com/java110/po/workEvent/WorkEventPo.java b/java110-bean/src/main/java/com/java110/po/workEvent/WorkEventPo.java
index e4fe19a..7b548a4 100644
--- a/java110-bean/src/main/java/com/java110/po/workEvent/WorkEventPo.java
+++ b/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;
     }
-
 
 
 }
diff --git a/java110-db/src/main/resources/mapper/oa/WorkEventV1ServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/oa/WorkEventV1ServiceDaoImplMapper.xml
index d5f8dbe..e454850 100644
--- a/java110-db/src/main/resources/mapper/oa/WorkEventV1ServiceDaoImplMapper.xml
+++ b/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>
diff --git a/service-oa/src/main/java/com/java110/oa/cmd/work/FinishWorkTaskCmd.java b/service-oa/src/main/java/com/java110/oa/cmd/work/FinishWorkTaskCmd.java
new file mode 100644
index 0000000..9ed330e
--- /dev/null
+++ b/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);
+    }
+}

--
Gitblit v1.8.0