From 6ac06048d7cb60fa07b75c7eae2864487069aa6f Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 24 九月 2025 15:26:40 +0800
Subject: [PATCH] 站点管理优化 组托管理优化 AGV任务管理优化

---
 src/main/java/com/zy/asrs/controller/BasStationController.java  |    4 
 src/main/java/com/zy/asrs/entity/param/PakinMatsByQRParams.java |   17 +
 src/main/webapp/static/js/basStation/basStation.js              |  131 +++++--------
 src/main/java/com/zy/asrs/entity/BasStation.java                |    8 
 src/main/webapp/static/js/task/task.js                          |    2 
 src/main/java/com/zy/asrs/controller/TaskController.java        |    3 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java   |   97 ++++++---
 src/main/java/com/zy/common/model/DetlDto.java                  |    2 
 src/main/java/com/zy/asrs/controller/MobileController.java      |    9 +
 src/main/resources/application.yml                              |    2 
 src/main/webapp/views/basStation/basStation.html                |  231 ++-----------------------
 src/main/java/com/zy/asrs/service/MobileService.java            |    8 
 12 files changed, 186 insertions(+), 328 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/BasStationController.java b/src/main/java/com/zy/asrs/controller/BasStationController.java
index da29fd5..b26e914 100644
--- a/src/main/java/com/zy/asrs/controller/BasStationController.java
+++ b/src/main/java/com/zy/asrs/controller/BasStationController.java
@@ -62,6 +62,10 @@
     @RequestMapping(value = "/basStation/add/auth")
     @ManagerAuth
     public R add(BasStation basStation) {
+        basStation.setAppeUser(getUserId());
+        basStation.setModiUser(getUserId());
+        basStation.setIoTime(new Date());
+
         basStationService.insert(basStation);
         return R.ok();
     }
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 50b43af..6909e83 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -123,6 +123,15 @@
         return mobileService.pickMats(matnr, orderNo);
     }
 
+    @PostMapping("/scan/order/mats")
+    @ManagerAuth(memo = "鎵爜鑾峰彇缁勬墭鐗╂枡")
+    public R scanMats(@RequestBody PakinMatsByQRParams params) {
+        if (Objects.isNull(params)) {
+            return R.parse("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return mobileService.getMatsByQRcode(params);
+    }
+
     // 鍟嗗搧涓婃灦
     @RequestMapping("/mat/onSale/auth")
     @ManagerAuth
diff --git a/src/main/java/com/zy/asrs/controller/TaskController.java b/src/main/java/com/zy/asrs/controller/TaskController.java
index 447233e..2faafe5 100644
--- a/src/main/java/com/zy/asrs/controller/TaskController.java
+++ b/src/main/java/com/zy/asrs/controller/TaskController.java
@@ -42,7 +42,8 @@
         excludeTrash(param);
         convert(param, wrapper);
         allLike(Task.class, param.keySet(), wrapper, condition);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "desc".equals(orderByType));}
+        if (Cools.isEmpty(orderByField)) {wrapper.orderDesc(Arrays.asList("wrk_no"));}
         return R.ok(taskService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
diff --git a/src/main/java/com/zy/asrs/entity/BasStation.java b/src/main/java/com/zy/asrs/entity/BasStation.java
index fc6a71e..eccdf1a 100644
--- a/src/main/java/com/zy/asrs/entity/BasStation.java
+++ b/src/main/java/com/zy/asrs/entity/BasStation.java
@@ -40,7 +40,7 @@
      */
     @ApiModelProperty(value= "缂栧彿")
     @TableField("dev_no")
-    private Integer devNo;
+    private String devNo;
 
     /**
      * 璁惧鎻忚堪
@@ -145,6 +145,10 @@
     @ApiModelProperty(value= "")
     private String area;
 
+    @ApiModelProperty("搴撳尯ID")
+    @TableField("area_id")
+    private String areaId;
+
     @ApiModelProperty(value= "")
     @TableField("in_ok")
     private String inOk;
@@ -221,7 +225,7 @@
 
     public BasStation() {}
 
-    public BasStation(Integer devNo,String decDesc,String devMk,String inEnable,String outEnable,String autoing,String loading,String locSts,String canining,String canouting,String fronting,String rearing,String uping,String downing,Integer wrkNo,Integer ctnType,String barcode,Integer inQty,Integer row1,Date ioTime,String area,String inOk,String outOk,Short locType1,Short locType2,Short locType3,Long modiUser,Date modiTime,Long appeUser,Date appeTime,Double stdQty,Double minWt,Double grossWt) {
+    public BasStation(String devNo,String decDesc,String devMk,String inEnable,String outEnable,String autoing,String loading,String locSts,String canining,String canouting,String fronting,String rearing,String uping,String downing,Integer wrkNo,Integer ctnType,String barcode,Integer inQty,Integer row1,Date ioTime,String area,String inOk,String outOk,Short locType1,Short locType2,Short locType3,Long modiUser,Date modiTime,Long appeUser,Date appeTime,Double stdQty,Double minWt,Double grossWt) {
         this.devNo = devNo;
         this.decDesc = decDesc;
         this.devMk = devMk;
diff --git a/src/main/java/com/zy/asrs/entity/param/PakinMatsByQRParams.java b/src/main/java/com/zy/asrs/entity/param/PakinMatsByQRParams.java
new file mode 100644
index 0000000..d2057aa
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/PakinMatsByQRParams.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.entity.param;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class PakinMatsByQRParams {
+
+    @ApiModelProperty("璁㈠崟鍙�")
+    private String orderNo;
+
+    @ApiModelProperty("鐗╂枡缂栫爜")
+    private String matnr;
+}
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index f5288b6..779f434 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -83,4 +83,12 @@
      * @version 1.0
      */
     R callAgvMove(AgvCallParams params, Long userId);
+
+    /**
+     * @author Ryan
+     * @date 2025/9/24
+     * @description: 鑾峰彇鍗曟嵁鐗╂枡淇℃伅
+     * @version 1.0
+     */
+    R getMatsByQRcode(PakinMatsByQRParams params);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index b01b75f..c02566b 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -29,6 +29,7 @@
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 绉诲姩绔湇鍔℃牳蹇冪被
@@ -560,7 +561,8 @@
         }
         // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
         if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
-                eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) {
+                eq("zpallet", param.getBarcode())
+                .eq("io_status", "N")) > 0) {
             throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱");
         }
 
@@ -617,13 +619,13 @@
             // 鍏宠仈缁勬墭
         } else {
 //            Order order = orderService.selectByNo(param.getOrderNo());
-            Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, param.getOrderNo());
-            if (Cools.isEmpty(order) || order.getSettle() > 2) {
-                throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
-            }
             // 鐢熸垚鍏ュ簱閫氱煡妗�
             List<DetlDto> detlDtos = new ArrayList<>();
             param.getCombMats().forEach(elem -> {
+                Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, elem.getOrderNo());
+                if (Cools.isEmpty(order) || order.getSettle() > 2) {
+                    throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
+                }
                 // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
 //                OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
 //                        elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3());
@@ -642,6 +644,8 @@
                         elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
                 DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
                         elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
+                detlDto.setOrderId(order.getId());
+                detlDto.setOrderNo(order.getOrderNo());
                 if (DetlDto.has(detlDtos, detlDto)) {
                     DetlDto one = DetlDto.findDto(detlDtos, detlDto);
                     assert one != null;
@@ -658,8 +662,8 @@
                 WaitPakin waitPakin = new WaitPakin();
                 BeanUtils.copyProperties(mat, waitPakin);
 //                waitPakin.sync(mat);
-                waitPakin.setOrderNo(order.getOrderNo());   // 鍗曟嵁缂栧彿
-                waitPakin.setOrderId(order.getId());
+                waitPakin.setOrderNo(detlDto.getOrderNo());   // 鍗曟嵁缂栧彿
+                waitPakin.setOrderId(detlDto.getOrderId());
                 waitPakin.setBatch(detlDto.getBatch());     // 搴忓垪鐮�
                 waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
                 waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
@@ -673,8 +677,12 @@
                     throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
                 }
             }
-//            orderService.updateSettle(order.getId(), 2L, userId);
-            OrderInAndOutUtil.updateOrder(Boolean.TRUE, order.getId(), 2L, userId);
+
+            Set<String> stringSet = param.getCombMats().stream().map(CombParam.CombMat::getOrderNo).collect(Collectors.toSet());
+            stringSet.forEach(orderNo -> {
+                Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, orderNo);
+                OrderInAndOutUtil.updateOrder(Boolean.TRUE, order.getId(), 2L, userId);
+            });
         }
 
     }
@@ -1173,33 +1181,50 @@
 
     /**
      * @author Ryan
+     * @date 2025/9/24
+     * @description: 鑾峰彇璁㈠崟鐗╂枡淇℃伅
+     * @version 1.0
+     */
+    @Override
+    public R getMatsByQRcode(PakinMatsByQRParams params) {
+        if (Objects.isNull(params)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(params.getOrderNo())) {
+            throw new CoolException("鍗曞彿涓嶈兘涓虹┖锛侊紒");
+        }
+        OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("order_no", params.getOrderNo()));
+        if (Objects.isNull(orderPakin)) {
+            throw new CoolException("鏁版嵁閿欒锛氬崟鎹笉瀛樺湪锛侊紒");
+        }
+        List<OrderDetlPakin> detlPakins = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>()
+                .eq(!Cools.isEmpty(params.getMatnr()), "matnr", params.getMatnr())
+                .eq("order_id", orderPakin.getId()));
+        if (Objects.isNull(detlPakins) || detlPakins.isEmpty()) {
+            throw new CoolException("鏁版嵁閿欒锛� 鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
+        }
+
+        return R.ok().add(detlPakins);
+    }
+
+    /**
+     * @author Ryan
      * @date 2025/9/22
      * @description: 鐢熸垚AGV鎼繍浠诲姟
      * @version 1.0
      */
     @Transactional(rollbackFor = Exception.class)
     public void generateAgvTask(String type, LocCache loc, String orgSite, String barcode, Long userId) {
-        WaitPakin pakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
-        if (Objects.isNull(pakin)) {
+        List<WaitPakin> pakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
+        if (Objects.isNull(pakins) || pakins.isEmpty()) {
             throw new CoolException("缁勬墭淇℃伅涓嶅瓨鍦紒锛�");
         }
-        OrderPakin orderPakin = orderPakinService.selectById(pakin.getOrderId());
-        if (Objects.isNull(orderPakin)) {
-            throw new CoolException("鍗曟嵁涓嶈兘涓虹┖锛侊紒");
-        }
-
-        List<OrderDetlPakin> detls = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_id", pakin.getOrderId()));
-        if (Objects.isNull(detls) || detls.isEmpty()) {
-            throw new CoolException("鏁版嵁閿欒锛氬崟鎹槑缁嗕笉瀛樺湪锛侊紒");
-        }
-
-        Date now = new Date();
         // 鑾峰彇宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
         // 淇濆瓨宸ヤ綔妗�
         Task task = new Task();
         task.setWrkNo(workNo)
-                .setIoTime(now)
+                .setIoTime(new Date())
                 .setWrkSts(11L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
                 .setIoType(11) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
                 .setTaskType("agv")
@@ -1208,36 +1233,38 @@
                 .setFullPlt("Y") // 婊℃澘锛歒
                 .setPicking("N") // 鎷f枡
                 .setExitMk("N")// 閫�鍑�
-                .setSourceLocNo(orgSite)
+                .setSourceStaNo(orgSite)
                 .setEmptyMk(loc.getLocSts().equals("D") ? "Y" : "N")// 绌烘澘
                 .setBarcode(barcode)// 鎵樼洏鐮�
                 .setLinkMis("N")
                 .setAppeUser(userId)
-                .setAppeTime(now)
+                .setAppeTime(new Date())
                 .setModiUser(userId)
-                .setModiTime(now);
+                .setModiTime(new Date());
         if (!taskService.insert(task)) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
 
         List<TaskDetl> taskDetls = new ArrayList<>();
-        detls.forEach(detl -> {
+        pakins.forEach(pakin -> {
             TaskDetl wrkDetl = new TaskDetl();
-            BeanUtils.copyProperties(detl, wrkDetl);
+            BeanUtils.copyProperties(pakin, wrkDetl);
             wrkDetl.setWrkNo(workNo)
                     .setIoTime(new Date())
-                    .setAnfme(detl.getAnfme())
+                    .setOrderNo(pakin.getOrderNo())
+                    .setAnfme(pakin.getAnfme())
                     .setZpallet(pakin.getZpallet())
-                    .setBatch(detl.getBatch())
-                    .setMatnr(detl.getMatnr())
-                    .setMaktx(detl.getMaktx())
+                    .setBatch(pakin.getBatch())
+                    .setMatnr(pakin.getMatnr())
+                    .setMaktx(pakin.getMaktx())
                     .setAppeUser(userId)
-                    .setUnit(detl.getUnit())
-                    .setModel(detl.getModel())
+                    .setUnit(pakin.getUnit())
+                    .setModel(pakin.getModel())
                     .setAppeTime(new Date())
                     .setModiUser(userId);
             taskDetls.add(wrkDetl);
         });
+
         //淇濆瓨宸ヤ綔妗f槑缁�
         if (!taskDetlService.insertBatch(taskDetls)) {
             throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
@@ -1245,7 +1272,7 @@
         // 淇敼鐩爣搴撲綅鐘舵��
         if (loc.getLocSts().equals("O")) {
             loc.setLocSts("S"); // S.鍏ュ簱棰勭害
-            loc.setModiTime(now);
+            loc.setModiTime(new Date());
             loc.setModiUser(userId);
             if (!locCacheService.updateById(loc)) {
                 throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
diff --git a/src/main/java/com/zy/common/model/DetlDto.java b/src/main/java/com/zy/common/model/DetlDto.java
index d7168d0..f3e11a4 100644
--- a/src/main/java/com/zy/common/model/DetlDto.java
+++ b/src/main/java/com/zy/common/model/DetlDto.java
@@ -17,6 +17,8 @@
 
     private String orderNo;
 
+    private Long orderId;
+
     private String matnr;
 
     private String batch = "";
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 4069581..890bdc6 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -43,7 +43,7 @@
   #  global-config:
   #    field-strategy: 0
   configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     map-underscore-to-camel-case: true
     cache-enabled: true
     call-setters-on-nulls: true
diff --git a/src/main/webapp/static/js/basStation/basStation.js b/src/main/webapp/static/js/basStation/basStation.js
index f3f84cf..7612216 100644
--- a/src/main/webapp/static/js/basStation/basStation.js
+++ b/src/main/webapp/static/js/basStation/basStation.js
@@ -1,7 +1,7 @@
 var pageCurr;
 layui.config({
     base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
+}).use(['table', 'laydate', 'form', 'admin'], function () {
     var table = layui.table;
     var $ = layui.jquery;
     var layer = layui.layer;
@@ -13,7 +13,7 @@
     tableIns = table.render({
         elem: '#basStation',
         headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/basStation/list/auth',
+        url: baseUrl + '/basStation/list/auth',
         page: true,
         limit: 15,
         limits: [15, 30, 50, 100, 200, 500],
@@ -22,42 +22,16 @@
         height: 'full-120',
         cols: [[
             {type: 'checkbox'}
-            ,{field: 'id', align: 'center',title: '涓婚敭'}
-            ,{field: 'devNo', align: 'center',title: '缂栧彿'}
-            ,{field: 'decDesc', align: 'center',title: '璁惧鎻忚堪'}
-            ,{field: 'devMk', align: 'center',title: '澶囨敞'}
-            ,{field: 'inEnable', align: 'center',title: '鍙叆(checkBox)'}
-            ,{field: 'outEnable', align: 'center',title: '鍙嚭(checkBox)'}
-            ,{field: 'autoing', align: 'center',title: '鑷姩(checkBox)'}
-            ,{field: 'loading', align: 'center',title: '鏈夌墿(checkBox)'}
-            ,{field: 'locSts', align: 'center',title: ''}
-            ,{field: 'canining', align: 'center',title: '鑳藉叆(checkBox)'}
-            ,{field: 'canouting', align: 'center',title: '鑳藉嚭(checkBox)'}
-            ,{field: 'fronting', align: 'center',title: ''}
-            ,{field: 'rearing', align: 'center',title: ''}
-            ,{field: 'uping', align: 'center',title: ''}
-            ,{field: 'downing', align: 'center',title: ''}
-            ,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�'}
-            ,{field: 'ctnType', align: 'center',title: '瀹瑰櫒绫诲瀷'}
-            ,{field: 'barcode', align: 'center',title: '鏉″舰鐮�'}
-            ,{field: 'inQty', align: 'center',title: ''}
-            ,{field: 'row1', align: 'center',title: ''}
-            ,{field: 'ioTime$', align: 'center',title: ''}
-            ,{field: 'area', align: 'center',title: ''}
-            ,{field: 'inOk', align: 'center',title: ''}
-            ,{field: 'outOk', align: 'center',title: ''}
-            ,{field: 'locType1$', align: 'center',title: '楂樹綆绫诲瀷'}
-            ,{field: 'locType2$', align: 'center',title: '瀹界獎绫诲瀷'}
-            ,{field: 'locType3$', align: 'center',title: '杞婚噸绫诲瀷'}
-            ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳'}
-            ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
-            ,{field: 'appeUser$', align: 'center',title: '鍒涘缓鑰�'}
-            ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'}
-            ,{field: 'stdQty', align: 'center',title: ''}
-            ,{field: 'minWt', align: 'center',title: ''}
-            ,{field: 'grossWt', align: 'center',title: '閲嶉噺'}
-
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+            , {field: 'devNo', align: 'center', title: '绔欑偣鍙板彿'}
+            , {field: 'decDesc', align: 'center', title: '璁惧鎻忚堪'}
+            , {field: 'area', align: 'center', title: '鍖哄煙'}
+            , {field: 'locSts', align: 'center', title: '鐘舵��'}
+            , {field: 'ioTime', align: 'center', title: '鍏ュ嚭搴撴椂闂�'}
+            , {field: 'modiUser$', align: 'center', title: '淇敼浜哄憳'}
+            , {field: 'modiTime$', align: 'center', title: '淇敼鏃堕棿'}
+            , {field: 'appeUser$', align: 'center', title: '鍒涘缓鑰�'}
+            , {field: 'appeTime$', align: 'center', title: '娣诲姞鏃堕棿'}
+            , {fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#operate', width: 120}
         ]],
         request: {
             pageName: 'curr',
@@ -74,11 +48,11 @@
         response: {
             statusCode: 200
         },
-        done: function(res, curr, count) {
+        done: function (res, curr, count) {
             if (res.code === 403) {
-                top.location.href = baseUrl+"/";
+                top.location.href = baseUrl + "/";
             }
-            pageCurr=curr;
+            pageCurr = curr;
             limit();
         }
     });
@@ -86,7 +60,7 @@
     // 鐩戝惉鎺掑簭浜嬩欢
     table.on('sort(basStation)', function (obj) {
         var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
+        $.each($('#search-box [name]').serializeArray(), function () {
             searchData[this.name] = this.value;
         });
         searchData['orderByField'] = obj.field;
@@ -100,23 +74,23 @@
     // 鐩戝惉澶村伐鍏锋爮浜嬩欢
     table.on('toolbar(basStation)', function (obj) {
         var checkStatus = table.checkStatus(obj.config.id).data;
-        switch(obj.event) {
+        switch (obj.event) {
             case 'addData':
                 showEditModel();
                 break;
             case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               del(checkStatus.map(function (d) {
-                   return d.id;
-               }));
-               break;
+                if (checkStatus.length === 0) {
+                    layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                    return;
+                }
+                del(checkStatus.map(function (d) {
+                    return d.id;
+                }));
+                break;
             case 'exportData':
-                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function () {
+                    var titles = [];
+                    var fields = [];
                     obj.config.cols[0].map(function (col) {
                         if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                             titles.push(col.title);
@@ -124,7 +98,7 @@
                         }
                     });
                     var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
+                    $.each($('#search-box [name]').serializeArray(), function () {
                         exportData[this.name] = this.value;
                     });
                     var param = {
@@ -132,18 +106,18 @@
                         'fields': fields
                     };
                     $.ajax({
-                        url: baseUrl+"/basStation/export/auth",
+                        url: baseUrl + "/basStation/export/auth",
                         headers: {'token': localStorage.getItem('token')},
                         data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
+                        dataType: 'json',
+                        contentType: 'application/json;charset=UTF-8',
                         method: 'POST',
                         success: function (res) {
                             layer.closeAll();
                             if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
+                                table.exportFile(titles, res.data, 'xls');
                             } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
+                                top.location.href = baseUrl + "/";
                             } else {
                                 layer.msg(res.msg, {icon: 2})
                             }
@@ -155,7 +129,7 @@
     });
 
     // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(basStation)', function(obj){
+    table.on('tool(basStation)', function (obj) {
         var data = obj.data;
         switch (obj.event) {
             case 'edit':
@@ -180,19 +154,19 @@
                 form.on('submit(editSubmit)', function (data) {
                     var loadIndex = layer.load(2);
                     $.ajax({
-                        url: baseUrl+"/basStation/"+(mData?'update':'add')+"/auth",
+                        url: baseUrl + "/basStation/" + (mData ? 'update' : 'add') + "/auth",
                         headers: {'token': localStorage.getItem('token')},
                         data: data.field,
                         method: 'POST',
                         success: function (res) {
                             layer.close(loadIndex);
-                            if (res.code === 200){
+                            if (res.code === 200) {
                                 layer.close(dIndex);
                                 layer.msg(res.msg, {icon: 1});
                                 tableReload();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl + "/";
+                            } else {
                                 layer.msg(res.msg, {icon: 2});
                             }
                         }
@@ -214,17 +188,17 @@
             layer.close(i);
             var loadIndex = layer.load(2);
             $.ajax({
-                url: baseUrl+"/basStation/delete/auth",
+                url: baseUrl + "/basStation/delete/auth",
                 headers: {'token': localStorage.getItem('token')},
                 data: {ids: ids},
                 method: 'POST',
                 success: function (res) {
                     layer.close(loadIndex);
-                    if (res.code === 200){
+                    if (res.code === 200) {
                         layer.msg(res.msg, {icon: 1});
                         tableReload();
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
+                    } else if (res.code === 403) {
+                        top.location.href = baseUrl + "/";
                     } else {
                         layer.msg(res.msg, {icon: 2});
                     }
@@ -251,43 +225,44 @@
         setTimeout(function () {
             layDate.render({
                 elem: '.layui-laydate-range'
-                ,type: 'datetime'
-                ,range: true
+                , type: 'datetime'
+                , range: true
             });
             layDate.render({
                 elem: '#ioTime\\$',
                 type: 'datetime',
-                value: data!==undefined?data['ioTime\\$']:null
+                value: data !== undefined ? data['ioTime\\$'] : null
             });
             layDate.render({
                 elem: '#modiTime\\$',
                 type: 'datetime',
-                value: data!==undefined?data['modiTime\\$']:null
+                value: data !== undefined ? data['modiTime\\$'] : null
             });
             layDate.render({
                 elem: '#appeTime\\$',
                 type: 'datetime',
-                value: data!==undefined?data['appeTime\\$']:null
+                value: data !== undefined ? data['appeTime\\$'] : null
             });
 
         }, 300);
     }
+
     layDateRender();
 
 });
 
 // 鍏抽棴鍔ㄤ綔
-$(document).on('click','#data-detail-close', function () {
+$(document).on('click', '#data-detail-close', function () {
     parent.layer.closeAll();
 });
 
 function tableReload(child) {
     var searchData = {};
-    $.each($('#search-box [name]').serializeArray(), function() {
+    $.each($('#search-box [name]').serializeArray(), function () {
         searchData[this.name] = this.value;
     });
     tableIns.reload({
         where: searchData,
         page: {curr: pageCurr}
-     });
+    });
 }
diff --git a/src/main/webapp/static/js/task/task.js b/src/main/webapp/static/js/task/task.js
index 6e44333..618cef1 100644
--- a/src/main/webapp/static/js/task/task.js
+++ b/src/main/webapp/static/js/task/task.js
@@ -23,7 +23,7 @@
         cols: [[
             {type: 'checkbox'}
             , {field: 'wrkNo', align: 'center', title: '宸ヤ綔鍙�', sort: true, width: 115}
-            , {field: 'ioTime$', align: 'center', title: '宸ヤ綔鏃堕棿', sort: true, width: 160}
+            , {field: 'ioTime$', align: 'center', title: '宸ヤ綔鏃堕棿', width: 160}
             , {field: 'wrkSts$', align: 'center', title: '宸ヤ綔鐘舵��', width: 150}
             , {field: 'ioType$', align: 'center', title: '鍏ュ嚭搴撶被鍨�', width: 150}
             , {field: 'ioPri', align: 'center', title: '浼樺厛绾�'}
diff --git a/src/main/webapp/views/basStation/basStation.html b/src/main/webapp/views/basStation/basStation.html
index d1050d8..33836e2 100644
--- a/src/main/webapp/views/basStation/basStation.html
+++ b/src/main/webapp/views/basStation/basStation.html
@@ -22,14 +22,16 @@
                             <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
                         </div>
                     </div>
-                     <div class="layui-inline" style="width: 300px">
+                    <div class="layui-inline" style="width: 300px">
                         <div class="layui-input-inline">
-                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                            <input class="layui-input layui-laydate-range" name="create_time" type="text"
+                                   placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
                         </div>
                     </div>
                     <div class="layui-inline">
                         <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�"
+                                   autocomplete="off">
                         </div>
                     </div>
                     <div class="layui-inline">&emsp;
@@ -51,7 +53,6 @@
     <div class="layui-btn-container">
         <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
         <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
     </div>
 </script>
 
@@ -69,13 +70,13 @@
 <!-- 琛ㄥ崟寮圭獥 -->
 <script type="text/html" id="editDialog">
     <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
-        <input name="id" type="hidden">
         <div class="layui-row">
             <div class="layui-col-md12">
                 <div class="layui-form-item">
                     <label class="layui-form-label layui-form-required">缂栧彿: </label>
                     <div class="layui-input-block">
-                        <input class="layui-input" name="devNo" placeholder="璇疯緭鍏ョ紪鍙�" lay-vertype="tips" lay-verify="required">
+                        <input class="layui-input" name="devNo" placeholder="璇疯緭鍏ョ紪鍙�" lay-vertype="tips"
+                               lay-verify="required">
                     </div>
                 </div>
                 <div class="layui-form-item">
@@ -85,220 +86,30 @@
                     </div>
                 </div>
                 <div class="layui-form-item">
-                    <label class="layui-form-label">澶囨敞: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="devMk" placeholder="璇疯緭鍏ュ娉�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍙叆(checkBox): </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="inEnable" placeholder="璇疯緭鍏ュ彲鍏�(checkBox)">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍙嚭(checkBox): </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="outEnable" placeholder="璇疯緭鍏ュ彲鍑�(checkBox)">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鑷姩(checkBox): </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="autoing" placeholder="璇疯緭鍏ヨ嚜鍔�(checkBox)">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鏈夌墿(checkBox): </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="loading" placeholder="璇疯緭鍏ユ湁鐗�(checkBox)">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="locSts" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鑳藉叆(checkBox): </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="canining" placeholder="璇疯緭鍏ヨ兘鍏�(checkBox)">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鑳藉嚭(checkBox): </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="canouting" placeholder="璇疯緭鍏ヨ兘鍑�(checkBox)">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="fronting" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="rearing" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="uping" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="downing" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">宸ヤ綔鍙�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="wrkNo" placeholder="璇疯緭鍏ュ伐浣滃彿">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">瀹瑰櫒绫诲瀷: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="ctnType" placeholder="璇疯緭鍏ュ鍣ㄧ被鍨�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鏉″舰鐮�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="barcode" placeholder="璇疯緭鍏ユ潯褰㈢爜">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="inQty" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="row1" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="ioTime" id="ioTime$" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="area" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="inOk" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="outOk" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">楂樹綆绫诲瀷: </label>
-                    <div class="layui-input-block">
-                        <select name="locType1">
-                            <option value="">璇烽�夋嫨楂樹綆绫诲瀷</option>
-                            <option value="0">鏈煡</option>
-                            <option value="1">浣庡簱浣�</option>
-                            <option value="2">楂樺簱浣�</option>
-                        </select>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">瀹界獎绫诲瀷: </label>
-                    <div class="layui-input-block">
-                        <select name="locType2">
-                            <option value="">璇烽�夋嫨瀹界獎绫诲瀷</option>
-                            <option value="0">鏈煡</option>
-                            <option value="1">绐勫簱浣�</option>
-                            <option value="2">瀹藉簱浣�</option>
-                        </select>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">杞婚噸绫诲瀷: </label>
-                    <div class="layui-input-block">
-                        <select name="locType3">
-                            <option value="">璇烽�夋嫨杞婚噸绫诲瀷</option>
-                            <option value="0">鏈煡</option>
-                            <option value="1">杞诲簱浣�</option>
-                            <option value="2">閲嶅簱浣�</option>
-                        </select>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">淇敼浜哄憳: </label>
+                    <label class="layui-form-label">鍖哄煙锛�</label>
                     <div class="layui-input-block cool-auto-complete">
-                        <input class="layui-input" name="modiUser" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
-                        <input id="modiUser$" name="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
+                        <input class="layui-input" name="areaId" placeholder="璇烽�夋嫨搴撳尯" style="display: none">
+                        <input id="area" name="area" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇烽�夋嫨搴撳尯" onfocus=this.blur() lay-verType="tips" lay-verify="required">
                         <div class="cool-auto-complete-window">
-                            <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            <input class="cool-auto-complete-window-input" data-key="basAreasQueryBydocType" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="basAreasQueryBydocTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                             </select>
                         </div>
                     </div>
                 </div>
                 <div class="layui-form-item">
-                    <label class="layui-form-label">淇敼鏃堕棿: </label>
+                    <label class="layui-form-label">绔欑偣鐘舵��: </label>
                     <div class="layui-input-block">
-                        <input class="layui-input" name="modiTime" id="modiTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
+                        <select name="locSts">
+                            <option value="O">闂茬疆</option>
+                            <option value="F">鍦ㄥ簱</option>
+                            <option value="S">鍏ュ簱棰勭害</option>
+                            <option value="R">鍑哄簱棰勭害</option>
+                            <option value="X">绂佺敤</option>
+                        </select>
                     </div>
                 </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍒涘缓鑰�: </label>
-                    <div class="layui-input-block cool-auto-complete">
-                        <input class="layui-input" name="appeUser" placeholder="璇疯緭鍏ュ垱寤鸿��" style="display: none">
-                        <input id="appeUser$" name="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ垱寤鸿��" onfocus=this.blur()>
-                        <div class="cool-auto-complete-window">
-                            <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">娣诲姞鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="appeTime" id="appeTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="stdQty" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="minWt" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">閲嶉噺: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="grossWt" placeholder="璇疯緭鍏ラ噸閲�">
-                    </div>
-                </div>
-
-             </div>
+            </div>
         </div>
         <hr class="layui-bg-gray">
         <div class="layui-form-item text-right">

--
Gitblit v1.9.1