From c34747e73010e893dfd04344fcbc8848c13eb717 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期日, 12 一月 2025 16:12:20 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java    |    2 
 src/main/resources/mapper/WrkMastLogMapper.xml                    |   53 --
 src/main/java/com/zy/asrs/controller/OpenController.java          |   33 +
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java       |   22 -
 src/main/java/com/zy/common/web/BaseController.java               |   49 ++
 src/main/java/com/zy/asrs/entity/WrkMast.java                     |   17 
 src/main/resources/mapper/WrkMastMapper.xml                       |    2 
 src/main/java/com/zy/asrs/entity/WrkMastLog.java                  |  262 ------------
 src/main/java/com/zy/asrs/task/WrkMastScheduler.java              |   44 ++
 src/main/java/com/zy/asrs/controller/WrkMastController.java       |   63 +++
 src/main/java/com/zy/asrs/service/WrkMastLogService.java          |   10 
 src/main/java/com/zy/asrs/domain/param/CancelTaskParam.java       |   10 
 src/main/java/com/zy/asrs/domain/param/CompleteTaskParam.java     |   10 
 /dev/null                                                         |  171 --------
 src/main/webapp/views/task.html                                   |  323 ++++++++++++++++
 src/main/webapp/views/index.html                                  |    1 
 src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java            |    6 
 src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java |   30 +
 src/main/java/com/zy/common/service/CommonService.java            |   42 ++
 19 files changed, 639 insertions(+), 511 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 91f6ecf..129551f 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -1,12 +1,15 @@
 package com.zy.asrs.controller;
 
 import com.core.common.R;
+import com.zy.asrs.domain.param.CancelTaskParam;
+import com.zy.asrs.domain.param.CompleteTaskParam;
 import com.zy.asrs.domain.param.CreateMoveTaskParam;
 import com.zy.common.service.CommonService;
 import com.zy.core.dispatcher.ShuttleDispatchUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -21,15 +24,39 @@
     private ShuttleDispatchUtils shuttleDispatchUtils;
 
     @PostMapping("/createMoveTask")
-    public R createMoveTask(CreateMoveTaskParam param) {
+    public R createMoveTask(@RequestBody CreateMoveTaskParam param) {
         if (param == null) {
             return R.error("鍙傛暟涓嶈兘涓虹┖");
         }
-        boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(99), param.getLocNo(), param.getShuttleNo());
+        boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(null, param.getLocNo(), param.getShuttleNo());
         if (dispatchShuttle) {
             return R.ok();
         }
-        return R.error();
+        return R.error("鐢熸垚澶辫触");
+    }
+
+    @PostMapping("/completeTask")
+    public R completeTask(@RequestBody CompleteTaskParam param) {
+        if (param == null) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖");
+        }
+        boolean completeTask = commonService.completeTask(param);
+        if (completeTask) {
+            return R.ok();
+        }
+        return R.error("浠诲姟瀹屾垚澶辫触");
+    }
+
+    @PostMapping("/cancelTask")
+    public R cancelTask(@RequestBody CancelTaskParam param) {
+        if (param == null) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖");
+        }
+        boolean completeTask = commonService.cancelTask(param);
+        if (completeTask) {
+            return R.ok();
+        }
+        return R.error("浠诲姟鍙栨秷澶辫触");
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/controller/WrkMastController.java b/src/main/java/com/zy/asrs/controller/WrkMastController.java
new file mode 100644
index 0000000..f8d6167
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/WrkMastController.java
@@ -0,0 +1,63 @@
+package com.zy.asrs.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.annotations.ManagerAuth;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.common.web.BaseController;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@Slf4j
+@RestController
+public class WrkMastController extends BaseController {
+
+    @Autowired
+    private WrkMastService wrkMastService;
+
+    @RequestMapping(value = "/wrkMast/list/auth")
+    @ManagerAuth
+    public R list(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam(required = false)String condition,
+                  @RequestParam Map<String, Object> param){
+        excludeTrash(param);
+        EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
+        convert(param, wrapper);
+        allLike(WrkMast.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){
+            if (orderByField.endsWith("$")){
+                orderByField = orderByField.substring(0, orderByField.length()-1);
+            }
+            wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
+        }else {
+            wrapper.orderBy("io_time", false);
+        }
+        return R.ok(wrkMastService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+        for (Map.Entry<String, Object> entry : map.entrySet()){
+            String val = String.valueOf(entry.getValue());
+            if (val.contains(RANGE_TIME_LINK)){
+                String[] dates = val.split(RANGE_TIME_LINK);
+                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+            } else {
+                wrapper.like(entry.getKey(), val);
+            }
+        }
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/domain/param/CancelTaskParam.java b/src/main/java/com/zy/asrs/domain/param/CancelTaskParam.java
new file mode 100644
index 0000000..3251306
--- /dev/null
+++ b/src/main/java/com/zy/asrs/domain/param/CancelTaskParam.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.domain.param;
+
+import lombok.Data;
+
+@Data
+public class CancelTaskParam {
+
+    private Integer wrkNo;
+
+}
diff --git a/src/main/java/com/zy/asrs/domain/param/CompleteTaskParam.java b/src/main/java/com/zy/asrs/domain/param/CompleteTaskParam.java
new file mode 100644
index 0000000..3d8e3ab
--- /dev/null
+++ b/src/main/java/com/zy/asrs/domain/param/CompleteTaskParam.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.domain.param;
+
+import lombok.Data;
+
+@Data
+public class CompleteTaskParam {
+
+    private Integer wrkNo;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 331e8e0..0112be5 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -57,10 +57,6 @@
     @TableField("io_pri")
     private Double ioPri;
 
-    @ApiModelProperty(value= "")
-    @TableField("wrk_date")
-    private Date wrkDate;
-
     /**
      * 鐩爣搴撲綅
      */
@@ -158,6 +154,12 @@
     @TableField(value = "lift_no",strategy = FieldStrategy.IGNORED)
     private Integer liftNo;
 
+    /**
+     * WMS浠诲姟鍙�
+     */
+    @ApiModelProperty(value= "WMS浠诲姟鍙�")
+    private String wmsWrkNo;
+
     public String getWrkSts$(){
         BasWrkStatusMapper mapper = SpringUtils.getBean(BasWrkStatusMapper.class);
         BasWrkStatus entity = mapper.selectById(this.wrkSts);
@@ -174,13 +176,6 @@
             return entity.getIoDesc();
         }
         return null;
-    }
-
-    public String getWrkDate$(){
-        if (Cools.isEmpty(this.wrkDate)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.wrkDate);
     }
 
     public String getLocNo$(){
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
index 0cff0cc..18bfcc7 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -9,6 +9,7 @@
 import com.zy.asrs.service.BasDevpService;
 import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.service.WrkMastService;
+import com.zy.common.utils.Synchro;
 import com.zy.system.entity.User;
 import com.zy.system.service.UserService;
 import io.swagger.annotations.ApiModelProperty;
@@ -39,18 +40,7 @@
     private Integer wrkNo;
 
     @ApiModelProperty(value= "")
-    @TableField("inv_wh")
-    private String invWh;
-
-    @ApiModelProperty(value= "")
-    private Date ymd;
-
-    @ApiModelProperty(value= "")
     private String mk;
-
-    @ApiModelProperty(value= "")
-    @TableField("whs_type")
-    private Integer whsType;
 
     /**
      * 宸ヤ綔鐘舵��
@@ -67,40 +57,11 @@
     private Integer ioType;
 
     /**
-     * 鍫嗗灈鏈哄彿
-     */
-    @ApiModelProperty(value= "鍫嗗灈鏈哄彿")
-    @TableField("crn_no")
-    private Integer crnNo;
-
-    /**
-     * 绌挎杞�
-     */
-    @ApiModelProperty(value= "绌挎杞�")
-    @TableField("ste_no")
-    private Integer steNo;
-
-    /**
-     * 杈圭紭搴撲綅
-     */
-    @ApiModelProperty(value= "杈圭紭搴撲綅")
-    @TableField("out_most")
-    private Integer outMost;
-
-    @ApiModelProperty(value= "")
-    @TableField("sheet_no")
-    private String sheetNo;
-
-    /**
      * 浼樺厛绾�
      */
     @ApiModelProperty(value= "浼樺厛绾�")
     @TableField("io_pri")
     private Double ioPri;
-
-    @ApiModelProperty(value= "")
-    @TableField("wrk_date")
-    private Date wrkDate;
 
     /**
      * 鐩爣搴撲綅
@@ -130,112 +91,12 @@
     @TableField("source_loc_no")
     private String sourceLocNo;
 
-    @ApiModelProperty(value= "")
-    @TableField("loc_sts")
-    private String locSts;
-
-    /**
-     * 鎷f枡
-     */
-    @ApiModelProperty(value= "鎷f枡")
-    private String picking;
-
-    @ApiModelProperty(value= "")
-    @TableField("link_mis")
-    private String linkMis;
-
-    @ApiModelProperty(value= "")
-    @TableField("online_yn")
-    private String onlineYn;
-
-    @ApiModelProperty(value= "")
-    @TableField("upd_mk")
-    private String updMk;
-
-    /**
-     * 閫�鍑�
-     */
-    @ApiModelProperty(value= "閫�鍑�")
-    @TableField("exit_mk")
-    private String exitMk;
-
-    @ApiModelProperty(value= "")
-    @TableField("plt_type")
-    private Integer pltType;
-
-    /**
-     * 绌烘澘
-     */
-    @ApiModelProperty(value= "绌烘澘")
-    @TableField("empty_mk")
-    private String emptyMk;
-
     /**
      * 宸ヤ綔鏃堕棿
      */
     @ApiModelProperty(value= "宸ヤ綔鏃堕棿")
     @TableField("io_time")
     private Date ioTime;
-
-    @ApiModelProperty(value= "")
-    @TableField("ctn_type")
-    private Integer ctnType;
-
-    @ApiModelProperty(value= "")
-    private String packed;
-
-    @ApiModelProperty(value= "")
-    @TableField("ove_mk")
-    private String oveMk;
-
-    @ApiModelProperty(value= "")
-    @TableField("mtn_type")
-    private Double mtnType;
-
-    @ApiModelProperty(value= "")
-    @TableField("user_no")
-    private String userNo;
-
-    /**
-     * 鍫嗗灈鏈哄惎鍔ㄦ椂闂�
-     */
-    @ApiModelProperty(value= "鍫嗗灈鏈哄惎鍔ㄦ椂闂�")
-    @TableField("crn_str_time")
-    private Date crnStrTime;
-
-    /**
-     * 鍫嗗灈鏈哄仠姝㈡椂闂�
-     */
-    @ApiModelProperty(value= "鍫嗗灈鏈哄仠姝㈡椂闂�")
-    @TableField("crn_end_time")
-    private Date crnEndTime;
-
-    /**
-     * 鎷f枡鏃堕棿
-     */
-    @ApiModelProperty(value= "鎷f枡鏃堕棿")
-    @TableField("plc_str_time")
-    private Date plcStrTime;
-
-    @ApiModelProperty(value= "")
-    @TableField("crn_pos_time")
-    private Date crnPosTime;
-
-    @ApiModelProperty(value= "")
-    @TableField("load_time")
-    private Double loadTime;
-
-    @ApiModelProperty(value= "")
-    @TableField("exp_time")
-    private Double expTime;
-
-    @ApiModelProperty(value= "")
-    @TableField("ref_wrkno")
-    private Double refWrkno;
-
-    @ApiModelProperty(value= "")
-    @TableField("ref_iotime")
-    private Date refIotime;
 
     /**
      * 淇敼浜哄憳
@@ -266,10 +127,6 @@
     private Date appeTime;
 
     @ApiModelProperty(value= "")
-    @TableField("pause_mk")
-    private String pauseMk;
-
-    @ApiModelProperty(value= "")
     @TableField("error_time")
     private Date errorTime;
 
@@ -278,32 +135,8 @@
     private String errorMemo;
 
     @ApiModelProperty(value= "")
-    @TableField("ctn_kind")
-    private Integer ctnKind;
-
-    @ApiModelProperty(value= "")
-    @TableField("manu_type")
-    private String manuType;
-
-    @ApiModelProperty(value= "")
     @TableField("memo_m")
     private String memoM;
-
-    @ApiModelProperty(value= "")
-    @TableField("sc_weight")
-    private Double scWeight;
-
-    @ApiModelProperty(value= "")
-    @TableField("log_mk")
-    private String logMk;
-
-    @ApiModelProperty(value= "")
-    @TableField("log_err_time")
-    private Date logErrTime;
-
-    @ApiModelProperty(value= "")
-    @TableField("log_err_memo")
-    private String logErrMemo;
 
     /**
      * 鏉$爜
@@ -311,34 +144,25 @@
     @ApiModelProperty(value= "鏉$爜")
     private String barcode;
 
-    @ApiModelProperty(value= "")
-    @TableField("Pdc_type")
-    private String PdcType;
-
-    @ApiModelProperty(value= "")
-    @TableField("ctn_no")
-    private String ctnNo;
+    /**
+     * 鍥涘悜绌挎杞﹀彿
+     */
+    @ApiModelProperty(value= "鍥涘悜绌挎杞﹀彿")
+    @TableField(value = "shuttle_no")
+    private Integer shuttleNo;
 
     /**
-     * 婊℃澘
+     * 鎻愬崌鏈哄彿
      */
-    @ApiModelProperty(value= "婊℃澘")
-    @TableField("full_plt")
-    private String fullPlt;
+    @ApiModelProperty(value= "鎻愬崌鏈哄彿")
+    @TableField(value = "lift_no")
+    private Integer liftNo;
 
     /**
-     * 鍏堝叆鍝� / 鍙岄噸鍏ュ簱
+     * WMS浠诲姟鍙�
      */
-    @ApiModelProperty(value= "鍏堝叆鍝�")
-    @TableField("pre_have")
-    private String preHave;
-
-    /**
-     * 绌烘搷浣� / 鍙栬揣鏃犵
-     */
-    @ApiModelProperty(value= "绌烘搷浣�")
-    @TableField("take_none")
-    private String takeNone;
+    @ApiModelProperty(value= "WMS浠诲姟鍙�")
+    private String wmsWrkNo;
 
     public WrkMastLog() {}
 
@@ -349,20 +173,6 @@
             return String.valueOf(wrkMast.getWrkNo());
         }
         return null;
-    }
-
-    public String getYmd$(){
-        if (Cools.isEmpty(this.ymd)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ymd);
-    }
-
-    public String getWrkDate$(){
-        if (Cools.isEmpty(this.wrkDate)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.wrkDate);
     }
 
     public String getLocNo$(){
@@ -408,42 +218,6 @@
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
     }
 
-    public String getCrnStrTime$(){
-        if (Cools.isEmpty(this.crnStrTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnStrTime);
-    }
-
-    public String getCrnEndTime$(){
-        if (Cools.isEmpty(this.crnEndTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnEndTime);
-    }
-
-    public String getPlcStrTime$(){
-        if (Cools.isEmpty(this.plcStrTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.plcStrTime);
-    }
-
-    public String getCrnPosTime$(){
-        if (Cools.isEmpty(this.crnPosTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnPosTime);
-    }
-
-
-    public String getRefIotime$(){
-        if (Cools.isEmpty(this.refIotime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.refIotime);
-    }
-
     public String getModiUser$(){
         UserService service = SpringUtils.getBean(UserService.class);
         User user = service.selectById(this.modiUser);
@@ -483,12 +257,8 @@
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.errorTime);
     }
 
-    public String getLogErrTime$(){
-        if (Cools.isEmpty(this.logErrTime)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime);
+    public void sync(Object source) {
+        Synchro.Copy(source, this);
     }
-
 
 }
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java
index e91341d..e6fde4a 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java
@@ -2,17 +2,11 @@
 
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 import com.zy.asrs.entity.WrkMastLog;
-import org.apache.ibatis.annotations.Insert;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Repository;
 
 @Mapper
 @Repository
 public interface WrkMastLogMapper extends BaseMapper<WrkMastLog> {
-
-    @Insert("insert into asr_wrk_mast_log select * from asr_wrk_mast where wrk_no=#{workNo}")
-    int save(Integer workNo);
-
-    WrkMastLog selectLatestByWorkNo(Integer workNo);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/WrkMastLogService.java b/src/main/java/com/zy/asrs/service/WrkMastLogService.java
new file mode 100644
index 0000000..292f694
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/WrkMastLogService.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.WrkMastLog;
+
+public interface WrkMastLogService extends IService<WrkMastLog> {
+
+    boolean save(Integer wrkNo);
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 8719b84..cd02dfb 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -867,17 +867,6 @@
                         }
 
                         if (wrkMastService.updateById(wrkMast)) {
-                            if (wrkMast.getWrkSts() == 111) {
-                                // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-                                if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) {
-                                    log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
-                                }
-                                // 鍒犻櫎宸ヤ綔涓绘。
-                                if (!wrkMastService.deleteById(wrkMast)) {
-                                    log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo());
-                                }
-                            }
-
                             //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
                             shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
                             News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
@@ -2283,17 +2272,6 @@
                 wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
                 wrkMast.setModiTime(now);
                 wrkMastService.updateById(wrkMast);
-
-                if (wrkMast.getWrkSts() == WrkStsType.COMPLETE_MOVE.sts) {
-                    // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-                    if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) {
-                        log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
-                    }
-                    // 鍒犻櫎宸ヤ綔涓绘。
-                    if (!wrkMastService.deleteById(wrkMast)) {
-                        log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
-                    }
-                }
                 return false;
             }
 
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java
new file mode 100644
index 0000000..bbb1351
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java
@@ -0,0 +1,30 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.WrkMastLog;
+import com.zy.asrs.mapper.WrkMastLogMapper;
+import com.zy.asrs.service.WrkMastLogService;
+import com.zy.asrs.service.WrkMastService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+@Service("wrkMastLogService")
+public class WrkMastLogServiceImpl extends ServiceImpl<WrkMastLogMapper, WrkMastLog> implements WrkMastLogService {
+
+    @Autowired
+    private WrkMastService wrkMastService;
+
+    @Override
+    public boolean save(Integer wrkNo) {
+        WrkMast wrkMast = wrkMastService.selectByWorkNo(wrkNo);
+        if (wrkMast == null) {
+            return false;
+        }
+
+        WrkMastLog wrkMastLog = new WrkMastLog();
+        wrkMastLog.sync(wrkMast);
+        return this.baseMapper.insert(wrkMastLog) > 0;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/DevpReadScheduler.java b/src/main/java/com/zy/asrs/task/DevpReadScheduler.java
deleted file mode 100644
index 2db8de2..0000000
--- a/src/main/java/com/zy/asrs/task/DevpReadScheduler.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package com.zy.asrs.task;
-
-import HslCommunication.Core.Types.OperateResult;
-import HslCommunication.Core.Types.OperateResultExOne;
-import HslCommunication.Profinet.Siemens.SiemensPLCS;
-import HslCommunication.Profinet.Siemens.SiemensS7Net;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.DevpSlave;
-import com.zy.core.model.protocol.StaProtocol;
-import com.zy.core.properties.SlaveProperties;
-import com.zy.core.thread.SiemensDevpThread;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.Map;
-
-@Component
-public class DevpReadScheduler {
-
-    @Autowired
-    private SlaveProperties slaveProperties;
-
-    //鍑哄叆搴撶珯鐐规娴嬫姤璀︿俊鎭�
-    public static final ArrayList<Integer> outInAlarmStaNos = new ArrayList<Integer>(){{
-        add(101);add(102);add(104);
-        add(201);add(202);add(204);
-        add(340);add(345);
-    }};
-
-    public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
-        add(302);add(304);
-        add(305);add(306);
-        add(307);add(308);
-        add(310);add(311);
-        add(312);add(313);
-        add(314);add(315);
-        add(316);add(318);
-        add(319);add(320);
-        add(321);add(322);
-        add(323);add(324);
-        add(326);add(327);
-        add(328);add(329);
-        add(330);add(332);
-        add(334);add(335);
-        add(336);add(337);
-        add(338);add(342);
-        add(343);add(344);
-    }};
-
-    public static final ArrayList<Integer> staNos3 = new ArrayList<Integer>() {{//218
-        add(302);add(304);
-        add(315);add(322);
-        add(324);add(330);
-        add(332);add(337);
-    }};
-
-    public static final ArrayList<Integer> staNos4 = new ArrayList<Integer>() {{//250
-        add(318);add(320);
-        add(343);
-    }};
-
-    @Scheduled(cron = "0/1 * * * * ? ")
-    public void read() {
-        try {
-            for (DevpSlave slave : slaveProperties.getDevp()) {
-                SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp());
-                siemensS7Net.setRack(slave.getRack().byteValue());
-                siemensS7Net.setSlot(slave.getSlot().byteValue());
-                OperateResult connect = siemensS7Net.ConnectServer();
-
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, slave.getId());
-                Map<Integer, StaProtocol> station = devpThread.getStation();
-                if (connect.IsSuccess) {
-                    //鍑哄叆搴撶珯鐐规娴嬫姤璀︿俊鎭�
-                    Thread.sleep(100);
-                    for (Integer staNo : outInAlarmStaNos) {
-                        OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".20.0", (short) 2);
-                        if (result5.IsSuccess) {
-                            if (staNo == 101 || staNo == 201) {
-                                staNo--;
-                            } else {
-                                staNo++;
-                            }
-                            StaProtocol staProtocol = station.get(staNo);
-                            boolean[] status = siemensS7Net.getByteTransform().TransBool(result5.Content, 0, 2);
-                            staProtocol.setBarcodeErr(status[4]);//鎵爜澶辫触
-                            staProtocol.setFrontErr(status[8]);//鍓嶈秴闄�
-                            staProtocol.setBackErr(status[9]);//鍚庤秴闄�
-                            staProtocol.setLeftErr(status[10]);//宸﹁秴闄�
-                            staProtocol.setRightErr(status[11]);//鍙宠秴闄�
-                            staProtocol.setHighErr(status[12]);//瓒呴珮
-                            staProtocol.setWeightErr(status[13]);//瓒呴噸
-                        }
-                    }
-
-                    Thread.sleep(100);
-                    for (Integer staNo : staNos2) {
-                        OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".0", (short) 48);
-                        if (result5.IsSuccess) {
-                            StaProtocol staProtocol = station.get(staNo);
-                            StaProtocol staProtocol300 = station.get(300);
-                            if (null == staProtocol) {
-                                staProtocol = new StaProtocol();
-                                staProtocol.setSiteId(staNo);
-                                station.put(staNo, staProtocol);
-                            }
-
-                            boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result5.Content, 1, 1);
-                            staProtocol.setAutoing(staProtocol300.isAutoing());  // 鑷姩
-                            staProtocol.setLoading(!status1[2]);  // 鏈夌墿
-
-                            if (staNos3.contains(staNo) || staNos4.contains(staNo)) {
-                                continue;
-                            }
-                            if (staNo == 344) {
-                                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result5.Content, 34));     // 宸ヤ綔鍙�
-                            } else {
-                                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result5.Content, 22));     // 宸ヤ綔鍙�
-                            }
-                        }
-                    }
-
-                    Thread.sleep(100);
-                    for (Integer staNo : staNos3) {
-                        OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".22.0", (short) 2);
-                        OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB" + staNo + ".218.0", (short) 2);
-                        if (result5.IsSuccess && result6.IsSuccess) {
-                            StaProtocol staProtocol = station.get(staNo);
-                            short wrkNo1 = siemensS7Net.getByteTransform().TransInt16(result5.Content, 0);
-                            short wrkNo2 = siemensS7Net.getByteTransform().TransInt16(result6.Content, 0);
-                            short wrkNo = 0;
-                            if (wrkNo1 != 0) {
-                                wrkNo = wrkNo1;
-                            }
-                            if (wrkNo2 != 0) {
-                                wrkNo = wrkNo2;
-                            }
-                            staProtocol.setWorkNo(wrkNo);     // 宸ヤ綔鍙�
-                        }
-                    }
-
-                    Thread.sleep(100);
-                    for (Integer staNo : staNos4) {
-                        OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".22.0", (short) 2);
-                        OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB" + staNo + ".250.0", (short) 2);
-                        if (result5.IsSuccess && result6.IsSuccess) {
-                            StaProtocol staProtocol = station.get(staNo);
-                            short wrkNo1 = siemensS7Net.getByteTransform().TransInt16(result5.Content, 0);
-                            short wrkNo2 = siemensS7Net.getByteTransform().TransInt16(result6.Content, 0);
-                            short wrkNo = 0;
-                            if (wrkNo1 != 0) {
-                                wrkNo = wrkNo1;
-                            }
-                            if (wrkNo2 != 0) {
-                                wrkNo = wrkNo2;
-                            }
-                            staProtocol.setWorkNo(wrkNo);     // 宸ヤ綔鍙�
-                        }
-                    }
-                }
-                siemensS7Net.ConnectClose();
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/task/WrkMastScheduler.java b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
new file mode 100644
index 0000000..ce73eb2
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
@@ -0,0 +1,44 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastLogService;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.core.enums.WrkStsType;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+
+@Component
+@Slf4j
+public class WrkMastScheduler {
+
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private WrkMastLogService wrkMastLogService;
+
+    @Scheduled(cron = "0/1 * * * * ? ")
+    private void executeMove(){
+        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_MOVE.sts));
+        if (wrkMasts.isEmpty()) {
+            return;
+        }
+
+        for (WrkMast wrkMast : wrkMasts) {
+            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+                log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+            }
+            // 鍒犻櫎宸ヤ綔涓绘。
+            if (!wrkMastService.deleteById(wrkMast)) {
+                log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
+            }
+        }
+    }
+
+}
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index b553989..8604944 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -2,11 +2,17 @@
 
 import com.core.common.Cools;
 import com.core.exception.CoolException;
+import com.zy.asrs.domain.param.CancelTaskParam;
+import com.zy.asrs.domain.param.CompleteTaskParam;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.service.*;
+import com.zy.core.enums.WrkIoType;
+import com.zy.core.enums.WrkStsType;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.Date;
 
 @Slf4j
 @Service
@@ -14,6 +20,8 @@
 
     @Autowired
     private WrkMastService wrkMastService;
+    @Autowired
+    private WrkMastLogService wrkMastLogService;
     @Autowired
     private WrkLastnoService wrkLastnoService;
 
@@ -69,4 +77,38 @@
         }
     }
 
+    public boolean completeTask(CompleteTaskParam param) {
+        Integer wrkNo = param.getWrkNo();
+        WrkMast wrkMast = wrkMastService.selectByWorkNo(wrkNo);
+        if (null == wrkMast) {
+            throw new CoolException("浠诲姟涓嶅瓨鍦�");
+        }
+
+        if (wrkMast.getIoType() == WrkIoType.IN.id) {
+            wrkMast.setWrkSts(WrkStsType.COMPLETE_INBOUND.sts);
+        }else if (wrkMast.getIoType() == WrkIoType.OUT.id) {
+            wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts);
+        } else if (wrkMast.getIoType() == WrkIoType.SHUTTLE_MOVE.id) {
+            wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);
+        } else if (wrkMast.getIoType() == WrkIoType.SHUTTLE_CHARGE.id) {
+            wrkMast.setWrkSts(WrkStsType.COMPLETE_CHARGE.sts);
+        }
+
+        wrkMast.setModiTime(new Date());
+        wrkMastService.updateById(wrkMast);
+        return true;
+    }
+
+    public boolean cancelTask(CancelTaskParam param) {
+        Integer wrkNo = param.getWrkNo();
+        WrkMast wrkMast = wrkMastService.selectByWorkNo(wrkNo);
+        if (null == wrkMast) {
+            throw new CoolException("浠诲姟涓嶅瓨鍦�");
+        }
+
+        wrkMastLogService.save(wrkNo);
+        wrkMastService.deleteById(wrkNo);
+        return true;
+    }
+
 }
diff --git a/src/main/java/com/zy/common/web/BaseController.java b/src/main/java/com/zy/common/web/BaseController.java
index 80596c9..1d40c1d 100644
--- a/src/main/java/com/zy/common/web/BaseController.java
+++ b/src/main/java/com/zy/common/web/BaseController.java
@@ -1,5 +1,7 @@
 package com.zy.common.web;
 
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.BaseRes;
 import com.core.common.Cools;
 import com.core.controller.AbstractBaseController;
@@ -11,11 +13,17 @@
 
 import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
 
 /**
  * Created by vincent on 2019-09-09
  */
 public class BaseController extends AbstractBaseController {
+
+    protected static final String RANGE_TIME_LINK = " - ";
 
     @Autowired
     protected HttpServletRequest request;
@@ -43,4 +51,45 @@
         }
         return "";
     }
+
+    /**
+     * 鍏ㄥ瓧娈垫ā绯婃悳绱�
+     * @param cls 妯″瀷绫�
+     * @param set 鎺掗櫎瀛楁闆嗗悎
+     * @param condition 鎼滅储鍐呭
+     */
+    protected <T> void allLike(Class<T> cls, Set<String> set, EntityWrapper<T> wrapper, String condition){
+        if (Cools.isEmpty(condition)) {
+            return;
+        }
+        List<String> columns = new ArrayList<>();
+        for (Field field :Cools.getAllFields(cls)){
+            if (Modifier.isFinal(field.getModifiers())
+                    || Modifier.isStatic(field.getModifiers())
+                    || Modifier.isTransient(field.getModifiers())){
+                continue;
+            }
+            String column = null;
+            if (field.isAnnotationPresent(TableField.class)) {
+                column = field.getAnnotation(TableField.class).value();
+            }
+            if (Cools.isEmpty(column)) {
+                column = field.getName();
+            }
+            if (!set.contains(column)) {
+                columns.add(column);
+            }
+        }
+        if (columns.isEmpty()) {
+            return;
+        }
+        for (int i=0;i<columns.size();i++){
+            if (i==0){
+                wrapper.andNew();
+            } else {
+                wrapper.or();
+            }
+            wrapper.like(columns.get(i), condition);
+        }
+    }
 }
diff --git a/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java b/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
index 46e5a64..fbc87de 100644
--- a/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
+++ b/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
@@ -249,7 +249,7 @@
         }
 
         // 鑾峰彇宸ヤ綔鍙�
-        int workNo = commonService.getWorkNo(0);
+        int workNo = commonService.getWorkNo(WrkIoType.SHUTTLE_MOVE.id);
         // 淇濆瓨宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
diff --git a/src/main/resources/mapper/WrkMastLogMapper.xml b/src/main/resources/mapper/WrkMastLogMapper.xml
index ae8dc76..10b5858 100644
--- a/src/main/resources/mapper/WrkMastLogMapper.xml
+++ b/src/main/resources/mapper/WrkMastLogMapper.xml
@@ -6,73 +6,26 @@
     <resultMap id="BaseResultMap" type="com.zy.asrs.entity.WrkMastLog">
         <id column="id" property="id" />
         <result column="wrk_no" property="wrkNo" />
-        <result column="inv_wh" property="invWh" />
-        <result column="ymd" property="ymd" />
         <result column="mk" property="mk" />
-        <result column="whs_type" property="whsType" />
         <result column="wrk_sts" property="wrkSts" />
         <result column="io_type" property="ioType" />
-        <result column="crn_no" property="crnNo" />
-        <result column="ste_no" property="steNo" />
-        <result column="out_most" property="outMost" />
-        <result column="sheet_no" property="sheetNo" />
         <result column="io_pri" property="ioPri" />
-        <result column="wrk_date" property="wrkDate" />
         <result column="loc_no" property="locNo" />
         <result column="sta_no" property="staNo" />
         <result column="source_sta_no" property="sourceStaNo" />
         <result column="source_loc_no" property="sourceLocNo" />
-        <result column="loc_sts" property="locSts" />
-        <result column="picking" property="picking" />
-        <result column="link_mis" property="linkMis" />
-        <result column="online_yn" property="onlineYn" />
-        <result column="upd_mk" property="updMk" />
-        <result column="exit_mk" property="exitMk" />
-        <result column="plt_type" property="pltType" />
-        <result column="empty_mk" property="emptyMk" />
         <result column="io_time" property="ioTime" />
-        <result column="ctn_type" property="ctnType" />
-        <result column="packed" property="packed" />
-        <result column="ove_mk" property="oveMk" />
-        <result column="mtn_type" property="mtnType" />
-        <result column="user_no" property="userNo" />
-        <result column="crn_str_time" property="crnStrTime" />
-        <result column="crn_end_time" property="crnEndTime" />
-        <result column="plc_str_time" property="plcStrTime" />
-        <result column="crn_pos_time" property="crnPosTime" />
-        <result column="load_time" property="loadTime" />
-        <result column="exp_time" property="expTime" />
-        <result column="ref_wrkno" property="refWrkno" />
-        <result column="ref_iotime" property="refIotime" />
         <result column="modi_user" property="modiUser" />
         <result column="modi_time" property="modiTime" />
         <result column="appe_user" property="appeUser" />
         <result column="appe_time" property="appeTime" />
-        <result column="pause_mk" property="pauseMk" />
         <result column="error_time" property="errorTime" />
         <result column="error_memo" property="errorMemo" />
-        <result column="ctn_kind" property="ctnKind" />
-        <result column="manu_type" property="manuType" />
         <result column="memo_m" property="memoM" />
-        <result column="sc_weight" property="scWeight" />
-        <result column="log_mk" property="logMk" />
-        <result column="log_err_time" property="logErrTime" />
-        <result column="log_err_memo" property="logErrMemo" />
         <result column="barcode" property="barcode" />
-        <result column="Pdc_type" property="PdcType" />
-        <result column="ctn_no" property="ctnNo" />
-        <result column="full_plt" property="fullPlt" />
-        <result column="pre_have" property="preHave" />
-        <result column="take_none" property="takeNone" />
+        <result column="lift_no" property="liftNo" />
+        <result column="shuttle_no" property="shuttleNo" />
+        <result column="wms_wrk_no" property="wmsWrkNo" />
     </resultMap>
-
-    <select id="selectLatestByWorkNo" resultMap="BaseResultMap">
-        select top 1 * from asr_wrk_mast_log wml,(select top 1 io_time,wrk_no from asr_wrk_mast_log
-        where wrk_no = #{workNo}
-        group by io_time,wrk_no
-        order by io_time desc) a
-        where wml.wrk_no = a.wrk_no
-        and wml.io_time = a.io_time
-    </select>
 
 </mapper>
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 7950d69..c6e02e4 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -9,7 +9,6 @@
         <result column="wrk_sts" property="wrkSts" />
         <result column="io_type" property="ioType" />
         <result column="io_pri" property="ioPri" />
-        <result column="wrk_date" property="wrkDate" />
         <result column="loc_no" property="locNo" />
         <result column="sta_no" property="staNo" />
         <result column="source_sta_no" property="sourceStaNo" />
@@ -25,6 +24,7 @@
         <result column="barcode" property="barcode" />
         <result column="shuttle_no" property="shuttleNo" />
         <result column="lift_no" property="liftNo" />
+        <result column="wms_wrk_no" property="wmsWrkNo" />
 
     </resultMap>
 
diff --git a/src/main/webapp/views/index.html b/src/main/webapp/views/index.html
index e9c8b09..74db576 100644
--- a/src/main/webapp/views/index.html
+++ b/src/main/webapp/views/index.html
@@ -23,6 +23,7 @@
             <li><a id="lift" onclick="nav(this.id)" class="nav-unselect" href="#">鎻愬崌鏈�</a></li>
 <!--            <li><a id="ste" onclick="nav(this.id)" class="nav-unselect" href="#">绌挎杞�</a></li>-->
             <li><a id="shuttle" onclick="nav(this.id)" class="nav-unselect" href="#">鍥涘悜绌挎杞�</a></li>
+            <li><a id="task" onclick="nav(this.id)" class="nav-unselect" href="#">浠诲姟绠$悊</a></li>
         </ul>
     </div>
 </div>
diff --git a/src/main/webapp/views/task.html b/src/main/webapp/views/task.html
new file mode 100644
index 0000000..2e3abc3
--- /dev/null
+++ b/src/main/webapp/views/task.html
@@ -0,0 +1,323 @@
+<!DOCTYPE html>
+<html lang="en">
+
+	<head>
+		<meta charset="UTF-8">
+		<title>浠诲姟绠$悊</title>
+		<link rel="stylesheet" href="../static/vue/element/element.css">
+		<script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
+		<script type="text/javascript" src="../static/layui/layui.js"></script>
+		<script type="text/javascript" src="../static/js/common.js"></script>
+		<script type="text/javascript" src="../static/vue/js/vue.min.js"></script>
+		<script type="text/javascript" src="../static/vue/element/element.js"></script>
+	</head>
+
+	<body>
+		<div id="app" style="display: flex;justify-content: center;flex-wrap: wrap;">
+			<div style="width: 100%;">
+				<el-card class="box-card">
+					<el-form :inline="true" :model="tableSearchParam" class="demo-form-inline">
+						<el-form-item label="">
+							<el-input v-model="tableSearchParam.wrk_no" placeholder="璇疯緭鍏ュ伐浣滃彿"></el-input>
+						</el-form-item>
+						<el-form-item>
+							<el-button type="primary" @click="getTableData">鏌ヨ</el-button>
+							<el-button type="primary" @click="resetParam">閲嶇疆</el-button>
+						</el-form-item>
+					</el-form>
+					<el-table ref="singleTable" :data="tableData" style="width: 100%;">
+						<el-table-column property="wrkNo" label="宸ヤ綔鍙�">
+						</el-table-column>
+						<el-table-column property="wmsWrkNo" label="WMS浠诲姟鍙�">
+						</el-table-column>
+						<el-table-column property="wrkSts$" label="宸ヤ綔鐘舵��">
+						</el-table-column>
+						<el-table-column property="ioType$" label="浠诲姟绫诲瀷">
+						</el-table-column>
+						<el-table-column property="ioPri" label="浼樺厛绾�">
+						</el-table-column>
+						<el-table-column property="sourceStaNo" label="婧愮珯">
+						</el-table-column>
+						<el-table-column property="staNo" label="鐩爣绔�">
+						</el-table-column>
+						<el-table-column property="sourceLocNo" label="婧愬簱浣�">
+						</el-table-column>
+						<el-table-column property="locNo" label="鐩爣搴撲綅">
+						</el-table-column>
+						<el-table-column property="barcode" label="鎵樼洏鐮�">
+						</el-table-column>
+						<el-table-column property="liftNo" label="鎻愬崌鏈�">
+						</el-table-column>
+						<el-table-column property="shuttleNo" label="绌挎杞�">
+						</el-table-column>
+						<el-table-column label="鎿嶄綔" width="100">
+							<template slot-scope="scope">
+								<el-dropdown @command="(command)=>{handleCommand(command, scope.row)}">
+									<el-button icon="el-icon-more" size="mini" type="primary"></el-button>
+									<el-dropdown-menu slot="dropdown">
+<!--										<el-dropdown-item command="change">淇敼</el-dropdown-item>-->
+										<el-dropdown-item command="complete">瀹屾垚</el-dropdown-item>
+										<el-dropdown-item command="cancel">鍙栨秷</el-dropdown-item>
+										<el-dropdown-item command="shuttleCommand">绌挎杞︽寚浠�</el-dropdown-item>
+									</el-dropdown-menu>
+								</el-dropdown>
+							</template>
+						</el-table-column>
+					</el-table>
+
+					<div style="margin-top: 10px;">
+						<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+							:current-page="currentPage" :page-sizes="pageSizes" :page-size="pageSize"
+							layout="total, sizes, prev, pager, next, jumper" :total="pageTotal">
+						</el-pagination>
+					</div>
+				</el-card>
+			</div>
+
+			<el-dialog :title="taskWrkFormTitle" :visible.sync="taskWrkFormVisible">
+				<el-form :model="taskWrkForm">
+					<el-form-item label="绔欑偣鐘舵��" :label-width="taskWrkFormLabelWidth">
+						<el-select v-model="taskWrkForm.siteStatus" placeholder="绔欑偣鐘舵��">
+							<el-option label="鏃犳墭鐩�" value="1"></el-option>
+							<el-option label="绌虹洏澶�" value="2"></el-option>
+							<el-option label="婊$洏澶�" value="3"></el-option>
+							<el-option label="绌烘墭鐩�" value="4"></el-option>
+							<el-option label="鎵樼洏鍏ョ珯涓�" value="5"></el-option>
+							<el-option label="鎵樼洏鍑虹珯涓�" value="6"></el-option>
+							<el-option label="绂佺敤" value="7"></el-option>
+						</el-select>
+					</el-form-item>
+					<el-form-item label="鐗╂枡鍙�" :label-width="taskWrkFormLabelWidth">
+						<el-input v-model="taskWrkForm.matnr" autocomplete="off"></el-input>
+					</el-form-item>
+					<el-form-item label="宸ヤ綔鍙�" :label-width="taskWrkFormLabelWidth">
+						<el-input v-model="taskWrkForm.wrkNo" autocomplete="off"></el-input>
+					</el-form-item>
+					<el-form-item label="鎵樼洏鐮�" :label-width="taskWrkFormLabelWidth">
+						<el-input v-model="taskWrkForm.barcode" autocomplete="off"></el-input>
+					</el-form-item>
+				</el-form>
+				<div slot="footer" class="dialog-footer">
+					<el-button @click="taskWrkFormVisible = false">鍙� 娑�</el-button>
+					<el-button type="primary" @click="taskWrkFormConfirm">纭� 瀹�</el-button>
+				</div>
+			</el-dialog>
+
+		</div>
+		<script>
+			var $layui = layui.config({
+				base: baseUrl + "/static/wms/layui/lay/modules/"
+			}).use(['layer', 'form'], function() {})
+
+			var app = new Vue({
+				el: '#app',
+				data: {
+					tableData: [],
+					currentPage: 1,
+					pageSizes: [16, 30, 50, 100, 150, 200],
+					pageSize: 30,
+					pageTotal: 0,
+					tableSearchParam: {
+						wrk_no: null,
+					},
+					taskWrkFormVisible: false,
+					taskWrkForm: {
+						siteStatus: '1',
+						matnr: '',
+						wrkNo: '',
+						barcode: '',
+					},
+					taskWrkFormLabelWidth: '80px',
+					taskWrkFormTitle: ''
+				},
+				created() {
+					this.init()
+				},
+				methods: {
+					init() {
+						this.getTableData()
+					},
+					getTableData() {
+						let that = this;
+						let data = JSON.parse(JSON.stringify(this.tableSearchParam))
+						data.curr = this.currentPage
+						data.limit = this.pageSize
+						if (this.tableSearchParam.datetime != null) {
+							data.datetime = null
+							data.create_time = this.tableSearchParam.datetime[0] + " - " + this.tableSearchParam.datetime[1]
+						}
+						$.ajax({
+							url: baseUrl + "/wrkMast/list/auth",
+							headers: {
+								'token': localStorage.getItem('token')
+							},
+							data: data,
+							dataType: 'json',
+							contentType: 'application/json;charset=UTF-8',
+							method: 'GET',
+							success: function(res) {
+								if (res.code == 200) {
+									that.tableData = res.data.records
+									that.pageTotal = res.data.total
+								} else if (res.code === 403) {
+									top.location.href = baseUrl + "/";
+								} else {
+									that.$message({
+										message: res.msg,
+										type: 'error'
+									});
+								}
+							}
+						});
+					},
+					handleSizeChange(val) {
+						console.log(`姣忛〉 ${val} 鏉);
+						this.pageSize = val
+						this.getTableData()
+					},
+					handleCurrentChange(val) {
+						console.log(`褰撳墠椤�: ${val}`);
+						this.currentPage = val
+						this.getTableData()
+					},
+					resetParam() {
+						this.tableSearchParam = {
+							task_no: null,
+							status: null,
+							wrk_no: null
+						}
+						this.getTableData()
+					},
+					handleCommand(command, row) {
+						switch (command) {
+							case "complete":
+								this.completeTask(row)
+								break;
+							case "cancel":
+								this.cancelTask(row)
+								break;
+						}
+					},
+					completeTask(row) {
+						let that = this
+						this.$confirm('纭畾瀹屾垚璇ヤ换鍔″悧锛�', '鎻愮ず', {
+							confirmButtonText: '纭畾',
+							cancelButtonText: '鍙栨秷',
+							type: 'warning'
+						}).then(() => {
+							$.ajax({
+								url: baseUrl + "/openapi/completeTask",
+								contentType: 'application/json',
+								headers: {
+									'token': localStorage.getItem('token')
+								},
+								data: JSON.stringify({
+									wrkNo: row.wrkNo,
+								}),
+								method: 'POST',
+								success: function(res) {
+									if (res.code == 200) {
+										that.$message({
+											message: "瀹屾垚鎴愬姛",
+											type: 'success'
+										});
+										that.getTableData()
+									} else if (res.code === 403) {
+										top.location.href = baseUrl + "/";
+									} else {
+										that.$message({
+											message: res.msg,
+											type: 'error'
+										});
+									}
+								}
+							});
+						}).catch(() => {
+							// this.$message({
+							// 	type: 'info',
+							// 	message: '宸插彇娑堝垹闄�'
+							// });
+						});
+					},
+					cancelTask(row) {
+						let that = this
+						this.$confirm('纭畾鍙栨秷璇ヤ换鍔″悧锛�', '鎻愮ず', {
+							confirmButtonText: '纭畾',
+							cancelButtonText: '鍙栨秷',
+							type: 'warning'
+						}).then(() => {
+							$.ajax({
+								url: baseUrl + "/openapi/cancelTask",
+								contentType: 'application/json',
+								headers: {
+									'token': localStorage.getItem('token')
+								},
+								data: JSON.stringify({
+									wrkNo: row.wrkNo,
+								}),
+								method: 'POST',
+								success: function(res) {
+									if (res.code == 200) {
+										that.$message({
+											message: "鍙栨秷鎴愬姛",
+											type: 'success'
+										});
+										that.getTableData()
+									} else if (res.code === 403) {
+										top.location.href = baseUrl + "/";
+									} else {
+										that.$message({
+											message: res.msg,
+											type: 'error'
+										});
+									}
+								}
+							});
+						}).catch(() => {
+							// this.$message({
+							// 	type: 'info',
+							// 	message: '宸插彇娑堝垹闄�'
+							// });
+						});
+					},
+					taskWrkFormConfirm() {
+						//淇敼鎸囧畾浠诲姟鏁版嵁
+						let that = this
+						$.ajax({
+							url: baseUrl + "/basCacheSite/update/auth",
+							headers: {
+								'token': localStorage.getItem('token')
+							},
+							data: {
+								id: this.taskWrkForm.id,
+								siteStatus: this.taskWrkForm.siteStatus,
+								matnr: this.taskWrkForm.matnr,
+								wrkNo: this.taskWrkForm.wrkNo,
+								barcode: this.taskWrkForm.barcode,
+							},
+							method: 'POST',
+							success: function(res) {
+								if (res.code == 200) {
+									that.taskWrkFormVisible = false
+									that.$message({
+										message: "鏇存柊鎴愬姛",
+										type: 'success'
+									});
+									that.getTableData()
+								} else if (res.code === 403) {
+									top.location.href = baseUrl + "/";
+								} else {
+									that.$message({
+										message: res.msg,
+										type: 'error'
+									});
+								}
+							}
+						});
+					},
+				},
+			})
+		</script>
+	</body>
+
+</html>

--
Gitblit v1.9.1