diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/region/controller/SchBaseRegionController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/region/controller/SchBaseRegionController.java
index 9d4dbfa..8364609 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/region/controller/SchBaseRegionController.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/region/controller/SchBaseRegionController.java
@@ -26,7 +26,7 @@ import org.nl.b_lms.sch.region.service.IschBaseRegionService;
  */
 @RestController
 @RequiredArgsConstructor
-@RequestMapping("/api/schBaseRegion")
+@RequestMapping("/api/region")
 @Slf4j
 public class SchBaseRegionController {
 
@@ -56,7 +56,7 @@ public class SchBaseRegionController {
      */
     @PostMapping
     @Log("新增区域基础表")
-    public ResponseEntity<Object> create(SchBaseRegion entity) {
+    public ResponseEntity<Object> create(@RequestBody SchBaseRegion entity) {
         schBaseRegionService.create(entity);
         return new ResponseEntity<>(HttpStatus.OK);
     }
@@ -71,7 +71,7 @@ public class SchBaseRegionController {
     @PutMapping
     @Log("修改区域基础表")
     //@SaCheckPermission("@el.check(SchBaseRegion:edit')")
-    public ResponseEntity<Object> update(SchBaseRegion entity) {
+    public ResponseEntity<Object> update(@RequestBody SchBaseRegion entity) {
         schBaseRegionService.update(entity);
         return new ResponseEntity<>(HttpStatus.OK);
     }
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/region/dao/SchBaseRegion.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/region/dao/SchBaseRegion.java
index 9b38a67..51f67a8 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/region/dao/SchBaseRegion.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/region/dao/SchBaseRegion.java
@@ -1,7 +1,5 @@
 package org.nl.b_lms.sch.region.dao;
 
-import java.io.Serializable;
-
 import lombok.*;
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -16,10 +14,6 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
  */
 
 @Data
-@Builder
-@ToString
-@AllArgsConstructor
-@NoArgsConstructor
 @EqualsAndHashCode(callSuper = true)
 @TableName("sch_base_region")
 public class SchBaseRegion extends Model<SchBaseRegion> {
@@ -73,7 +67,7 @@ public class SchBaseRegion extends Model<SchBaseRegion> {
     /**
      * 创建人
      */
-    private Long create_id;
+    private String create_id;
 
 
     /**
@@ -92,13 +86,13 @@ public class SchBaseRegion extends Model<SchBaseRegion> {
     /**
      * 修改人
      */
-    private Long update_optid;
+    private String update_id;
 
 
     /**
      * 修改人
      */
-    private String update_optname;
+    private String update_name;
 
 
     /**
@@ -108,16 +102,6 @@ public class SchBaseRegion extends Model<SchBaseRegion> {
     private String update_time;
 
 
-    /**
-     * 获取主键值
-     *
-     * @return 主键值
-     */
-    @Override
-    protected Serializable pkVal() {
-        return this.region_id;
-    }
-
 }
 
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/region/service/impl/SchBaseRegionServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/region/service/impl/SchBaseRegionServiceImpl.java
index 8e2fc0d..4d7ce87 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/region/service/impl/SchBaseRegionServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/region/service/impl/SchBaseRegionServiceImpl.java
@@ -1,5 +1,9 @@
 package org.nl.b_lms.sch.region.service.impl;
 
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.nl.b_lms.sch.region.dao.SchBaseRegion;
 import org.nl.b_lms.sch.region.dao.mapper.SchBaseRegionMapper;
@@ -8,6 +12,7 @@ import cn.hutool.core.date.DateUtil;
 import org.nl.common.utils.SecurityUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.nl.modules.common.exception.BadRequestException;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.nl.common.domain.query.PageQuery;
@@ -40,16 +45,14 @@ public class SchBaseRegionServiceImpl extends ServiceImpl<SchBaseRegionMapper, S
      */
     @Override
     public IPage<SchBaseRegion> queryAll(Map whereJson, PageQuery page) {
-        return schBaseRegionMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), new QueryWrapper<SchBaseRegion>()
-                        .lambda()
-                //                .like(StringUtils.isNotBlank(form.name()), User::getName, form.name())
-                //                .between(form.beginTime != null && form.endTime != null, User::getCreateTime, beginTime, endTime)
-                //                .in(form.Status != null, User::getStatus
-                //                        , UserStatusEnum.NOT_SUBMITTED
-                //                        , UserStatusEnum.TO_REVIEWED)
-                //                .orderByDesc(User::getId)
-                //.eq(SchBaseRegion::getIs_delete, 0)
-        );
+        String blurry = MapUtil.getStr(whereJson, "region_code");
+        LambdaQueryWrapper<SchBaseRegion> lam = new LambdaQueryWrapper<>();
+        lam.like(ObjectUtil.isNotEmpty(blurry), SchBaseRegion::getRegion_code, blurry)
+                .or(ObjectUtil.isNotEmpty(blurry), la -> la.like(SchBaseRegion::getRegion_name, blurry))
+                .orderByAsc(SchBaseRegion::getRegion_code);
+        IPage<SchBaseRegion> pages = new Page<>(page.getPage() + 1, page.getSize());
+        schBaseRegionMapper.selectPage(pages, lam);
+        return pages;
     }
 
 
@@ -60,9 +63,19 @@ public class SchBaseRegionServiceImpl extends ServiceImpl<SchBaseRegionMapper, S
      */
     @Override
     public void create(SchBaseRegion entity) {
+        SchBaseRegion region = getByCode(entity.getRegion_code());
+        if (ObjectUtil.isNotEmpty(region)) {
+            throw new BadRequestException("区域[" + entity.getRegion_code() + "]已存在!");
+        }
         schBaseRegionMapper.insert(getBasicInfo(entity, true));
     }
 
+    private SchBaseRegion getByCode(String regionCode) {
+        LambdaQueryWrapper<SchBaseRegion> lam = new LambdaQueryWrapper<>();
+        lam.eq(SchBaseRegion::getRegion_code, regionCode);
+        return this.getOne(lam);
+    }
+
 
     /**
      * 编辑
@@ -71,10 +84,13 @@ public class SchBaseRegionServiceImpl extends ServiceImpl<SchBaseRegionMapper, S
      */
     @Override
     public void update(SchBaseRegion entity) {
-        // SchBaseRegion dto = schBaseRegionMapper.selectById(entity.getId);
-        //        if (dto == null) {
-        //            throw new BadRequestException("不存在该数据!");
-        //        }
+        SchBaseRegion region = getById(entity.getRegion_id());
+        if (ObjectUtil.isEmpty(region)) {
+            throw new BadRequestException("区域[" + entity.getRegion_code() + "]不存在!");
+        }
+        if (ObjectUtil.isNotEmpty(region) && !entity.getRegion_id().equals(region.getRegion_id())) {
+            throw new BadRequestException("区域[" + entity.getRegion_code() + "]已存在!");
+        }
         schBaseRegionMapper.updateById(getBasicInfo(entity, false));
     }
 
@@ -98,14 +114,15 @@ public class SchBaseRegionServiceImpl extends ServiceImpl<SchBaseRegionMapper, S
      * @param isCreate 是否创建
      */
     private SchBaseRegion getBasicInfo(SchBaseRegion entity, boolean isCreate) {
-        //                if (isCreate) {
-        //                    entity.setCreate_id(Long.valueOf(SecurityUtils.getCurrentUserId()));
-        //                    entity.setCreate_name(SecurityUtils.getCurrentNickName());
-        //                    entity.setCreate_time(DateUtil.now());
-        //                }
-        //                entity.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
-        //                entity.setUpdate_optname(SecurityUtils.getCurrentNickName());
-        //                entity.setUpdate_time(DateUtil.now());
+        if (isCreate) {
+            entity.setRegion_id(IdUtil.getSnowflake(1,1).nextIdStr());
+            entity.setCreate_id(SecurityUtils.getCurrentUserId());
+            entity.setCreate_name(SecurityUtils.getCurrentNickName());
+            entity.setCreate_time(DateUtil.now());
+        }
+        entity.setUpdate_id(SecurityUtils.getCurrentUserId());
+        entity.setUpdate_name(SecurityUtils.getCurrentNickName());
+        entity.setUpdate_time(DateUtil.now());
         return entity;
     }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/controller/SchBaseTaskController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/controller/SchBaseTaskController.java
index 9c5cc5d..a95fc0f 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/controller/SchBaseTaskController.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/controller/SchBaseTaskController.java
@@ -3,9 +3,15 @@ package org.nl.b_lms.sch.task.controller;
 import java.util.Set;
 import java.util.Map;
 
+import cn.dev33.satoken.annotation.SaIgnore;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import lombok.RequiredArgsConstructor;
 import org.nl.b_lms.sch.task.dao.SchBaseTask;
+import org.nl.b_lms.sch.task.dto.SchBaseTaskQuery;
 import org.nl.common.TableDataInfo;
+import org.nl.wms.sch.manage.FinishTypeEnum;
+import org.nl.wms.sch.manage.TaskStatusEnum;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -26,7 +32,7 @@ import org.nl.b_lms.sch.task.service.IschBaseTaskService;
  */
 @RestController
 @RequiredArgsConstructor
-@RequestMapping("/api/schBaseTask")
+@RequestMapping("/api/task")
 @Slf4j
 public class SchBaseTaskController {
 
@@ -43,10 +49,51 @@ public class SchBaseTaskController {
      */
     @GetMapping
     @Log("查询任务表")
-    public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
+    public ResponseEntity<Object> query(SchBaseTaskQuery whereJson, PageQuery page) {
         return new ResponseEntity<>(TableDataInfo.build(schBaseTaskService.queryAll(whereJson, page)), HttpStatus.OK);
     }
 
+    @GetMapping("/taskStatus")
+    @Log("获取任务状态列表")
+    public ResponseEntity<Object> getTaskStatus() {
+        TaskStatusEnum[] values = TaskStatusEnum.values();
+        JSONArray arr = new JSONArray();
+        for (TaskStatusEnum value : values) {
+            JSONObject json = new JSONObject();
+            json.put("code", value.getCode());
+            json.put("name", value.getName());
+            arr.add(json);
+        }
+        //增加未完成状态
+        JSONObject unFinish = new JSONObject();
+        unFinish.put("code", "-1");
+        unFinish.put("name", "未完成");
+        arr.add(unFinish);
+        return new ResponseEntity<>(arr, HttpStatus.OK);
+    }
+
+    @GetMapping("/finishType")
+    @Log("获取任务类型列表")
+    public ResponseEntity<Object> getFinishType() {
+        FinishTypeEnum[] values = FinishTypeEnum.values();
+        JSONArray arr = new JSONArray();
+        for (FinishTypeEnum value : values) {
+            JSONObject json = new JSONObject();
+            json.put("code", value.getCode());
+            json.put("name", value.getName());
+            arr.add(json);
+        }
+        return new ResponseEntity<>(arr, HttpStatus.OK);
+    }
+
+    @PutMapping("/operation")
+    @Log("任务操作")
+    @SaIgnore
+    public ResponseEntity<Object> update(@RequestBody Map<String, Object> map) {
+        schBaseTaskService.operation(map);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
 
     /**
      * 新增数据
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/SchBaseTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/SchBaseTask.java
index 46e059d..d47df57 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/SchBaseTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/SchBaseTask.java
@@ -1,7 +1,6 @@
 package org.nl.b_lms.sch.task.dao;
 
 import java.math.BigDecimal;
-import java.io.Serializable;
 
 import lombok.*;
 import com.baomidou.mybatisplus.annotation.*;
@@ -244,13 +243,13 @@ public class SchBaseTask extends Model<SchBaseTask> {
     /**
      * 修改人
      */
-    private String update_optid;
+    private String update_id;
 
 
     /**
      * 修改人
      */
-    private String update_optname;
+    private String update_name;
 
 
     /**
@@ -275,18 +274,14 @@ public class SchBaseTask extends Model<SchBaseTask> {
      * 是否立即下发
      */
     private String is_send;
-
-
-
-    /**
-     * 获取主键值
-     *
-     * @return 主键值
-     */
-    @Override
-    protected Serializable pkVal() {
-        return this.task_id;
-    }
+    @TableField(exist = false)
+    private String task_type_name;
+    @TableField(exist = false)
+    private String create_name1;
+    @TableField(exist = false)
+    private String task_status_name;
+    @TableField(exist = false)
+    private String final_product_area;
 
 }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/mapper/SchBaseTaskMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/mapper/SchBaseTaskMapper.java
index 2a9dbc3..7669fe9 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/mapper/SchBaseTaskMapper.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/mapper/SchBaseTaskMapper.java
@@ -1,8 +1,10 @@
 package org.nl.b_lms.sch.task.dao.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
 import org.nl.b_lms.sch.task.dao.SchBaseTask;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.nl.b_lms.sch.task.dto.SchBaseTaskQuery;
 
 import java.util.List;
 
@@ -27,4 +29,6 @@ public interface SchBaseTaskMapper extends BaseMapper<SchBaseTask> {
      * @return /
      */
     List<SchBaseTask> getTaskByPlanQzzNoAndDevice(String resourceName);
+
+    IPage<SchBaseTask> selectPageLeftJoin(IPage<SchBaseTask> pages, SchBaseTaskQuery whereJson, List<String> collect);
 }
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/mapper/SchBaseTaskMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/mapper/SchBaseTaskMapper.xml
index 2bb3eb9..ca253d6 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/mapper/SchBaseTaskMapper.xml
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/mapper/SchBaseTaskMapper.xml
@@ -20,4 +20,62 @@
         AND p.resource_name = #{resourceName}
         AND IFNULL(p.qzzno, '') <![CDATA[ <> ]]> ''
     </select>
+    <select id="selectPageLeftJoin" resultType="org.nl.b_lms.sch.task.dao.SchBaseTask">
+        SELECT * FROM (
+        SELECT
+        task.*,
+        md.class_name task_type_name,
+        user.person_name AS create_name1,
+        dict.label task_status_name,
+        case when task.task_type like '0105%' then 'LK' when task.task_type like '0107%' then 'LK' ELSE task.product_area end AS final_product_area
+        FROM
+        sch_base_task task
+        LEFT JOIN md_pb_classstandard md ON task.task_type = md.class_code
+        LEFT JOIN sys_user user ON user.username = task.create_name
+        LEFT JOIN sys_dict dict ON dict.`value` = task.task_status AND dict.`code` = 'task_status'
+        <where>
+            <if test="whereJson.is_delete != null">
+                AND task.is_delete = #{whereJson.is_delete}
+            </if>
+            <if test="whereJson.task_types != null and whereJson.task_types != ''">
+                AND task.task_type IN
+                <foreach collection="whereJson.task_types" item="code" separator="," open="(" close=")">
+                    #{code}
+                </foreach>
+            </if>
+            <if test="whereJson.end_time != null">
+                AND task.create_time <![CDATA[<=]]> #{whereJson.end_time}
+            </if>
+            <if test="whereJson.begin_time != null">
+                AND task.create_time <![CDATA[>=]]> #{whereJson.begin_time}
+            </if>
+            <if test="whereJson.unFinished != null">
+                AND task.task_status <![CDATA[<=]]> #{whereJson.unFinished}
+            </if>
+            <if test="whereJson.vehicle_code != null">
+                AND task.vehicle_code = #{whereJson.vehicle_code}
+            </if>
+            <if test="whereJson.task_code != null">
+                AND task.task_code = LIKE '%${whereJson.task_code}%'
+            </if>
+            <if test="whereJson.point_code1 != null">
+                AND (task.point_code1 LIKE '%${whereJson.point_code1}%'
+                OR task.point_code2 LIKE '%${whereJson.point_code1}%')
+            </if>
+            <if test="collect != null and collect != ''">
+                AND task.task_status IN
+                <foreach collection="collect" item="code" separator="," open="(" close=")">
+                    #{code}
+                </foreach>
+            </if>
+        </where>
+        ) a
+        WHERE 1=1
+        <if test="whereJson.in_area_id != null and whereJson.in_area_id != ''">
+            AND a.final_product_area IN
+            <foreach collection="whereJson.in_area_id" item="code" separator="," open="(" close=")">
+                #{code}
+            </foreach>
+        </if>
+    </select>
 </mapper>
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dto/SchBaseTaskQuery.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dto/SchBaseTaskQuery.java
new file mode 100644
index 0000000..786772a
--- /dev/null
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dto/SchBaseTaskQuery.java
@@ -0,0 +1,27 @@
+package org.nl.b_lms.sch.task.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Author: lyd
+ * @Date: 2024/10/30
+ */
+@Data
+public class SchBaseTaskQuery implements Serializable {
+    private String task_code;
+    private String vehicle_code;
+    private String point_code1;
+    private String task_status;
+    private String is_delete;
+    private String task_type;
+    private List<String> task_types;
+    private String begin_time;
+    private String end_time;
+    private String more_task_status;
+    private String unFinished;
+    private List<String> in_area_id;
+
+}
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/IschBaseTaskService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/IschBaseTaskService.java
index 06cf7e9..da74aea 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/IschBaseTaskService.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/IschBaseTaskService.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
 import org.nl.b_lms.sch.task.dao.SchBaseTask;
+import org.nl.b_lms.sch.task.dto.SchBaseTaskQuery;
 import org.nl.common.domain.query.PageQuery;
 
 import java.util.List;
@@ -27,7 +28,7 @@ public interface IschBaseTaskService extends IService<SchBaseTask> {
      * @param pageable  分页参数
      * @return IPage<SchBaseTask>
      */
-    IPage<SchBaseTask> queryAll(Map whereJson, PageQuery pageable);
+    IPage<SchBaseTask> queryAll(SchBaseTaskQuery whereJson, PageQuery pageable);
 
 
     /**
@@ -87,6 +88,8 @@ public interface IschBaseTaskService extends IService<SchBaseTask> {
      * @return /
      */
     Boolean checkHaveTaskByZcPoint(BstIvtCutpointivt point);
+
+    void operation(Map<String, Object> map);
 }
 
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java
index bbb8379..197a72b 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java
@@ -1,26 +1,43 @@
 package org.nl.b_lms.sch.task.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.SneakyThrows;
 import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
 import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
 import org.nl.b_lms.sch.task.dao.SchBaseTask;
 import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper;
+import org.nl.b_lms.sch.task.dto.SchBaseTaskQuery;
 import org.nl.b_lms.sch.task.service.IschBaseTaskService;
 import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
 import org.nl.common.domain.query.PageQuery;
 import org.nl.common.utils.SecurityUtils;
+import org.nl.modules.common.exception.BadRequestException;
+import org.nl.modules.wql.util.SpringContextHolder;
+import org.nl.wms.basedata.master.classstandard.service.IClassStandardService;
+import org.nl.wms.basedata.master.classstandard.service.dao.ClassStandard;
+import org.nl.wms.basedata.st.areapermissions.service.IUserAreaPermissionService;
 import org.nl.wms.sch.manage.TaskStatusEnum;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.util.*;
-import java.util.function.Consumer;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 
 /**
@@ -35,6 +52,13 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
 
     @Autowired
     private SchBaseTaskMapper schBaseTaskMapper;
+    @Autowired
+    private IUserAreaPermissionService userAreaPermissionService;
+    @Autowired
+    private IClassStandardService classStandardService;
+
+    @Autowired
+    private RedissonClient redissonClient;
 
 
     /**
@@ -44,17 +68,32 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
      * @param page      分页参数
      */
     @Override
-    public IPage<SchBaseTask> queryAll(Map whereJson, PageQuery page) {
-        return schBaseTaskMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), new QueryWrapper<SchBaseTask>()
-                .lambda()
-                //                .like(StringUtils.isNotBlank(form.name()), User::getName, form.name())
-                //                .between(form.beginTime != null && form.endTime != null, User::getCreateTime, beginTime, endTime)
-                //                .in(form.Status != null, User::getStatus
-                //                        , UserStatusEnum.NOT_SUBMITTED
-                //                        , UserStatusEnum.TO_REVIEWED)
-                //                .orderByDesc(User::getId)
-                .eq(SchBaseTask::getIs_delete, 0)
-        );
+    public IPage<SchBaseTask> queryAll(SchBaseTaskQuery whereJson, PageQuery page) {
+        List<String> collect = ObjectUtil.isNotEmpty(whereJson.getMore_task_status())
+                ? Arrays.stream(whereJson.getMore_task_status().split(",")).collect(Collectors.toList()) : null;
+        if (collect != null) {
+            if (collect.contains("-1")) {
+                collect = null;
+                whereJson.setUnFinished("07");
+            }
+        }
+        if (ObjectUtil.isNotEmpty(whereJson.getTask_type())) {
+            // 获取任务类型
+            ClassStandard dto = classStandardService.getById(whereJson.getTask_type());
+            ArrayList<String> allChildrenIds = classStandardService.getAllChildrenIds(dto.getClass_id());
+            if (CollectionUtil.isEmpty(allChildrenIds)) {
+                allChildrenIds.add(dto.getClass_code());
+            }
+            whereJson.setTask_types(allChildrenIds);
+        }
+
+        List<String> in_area_id = userAreaPermissionService.getCurrentUserAreas(SecurityUtils.getCurrentUserId());
+        if (CollectionUtil.isNotEmpty(in_area_id)) {
+            whereJson.setIn_area_id(in_area_id);
+        }
+        IPage<SchBaseTask> pages = new Page<>(page.getPage() + 1, page.getSize());
+        pages = schBaseTaskMapper.selectPageLeftJoin(pages, whereJson, collect);
+        return pages;
     }
 
 
@@ -128,8 +167,8 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
             entity.setCreate_name(SecurityUtils.getCurrentNickName());
             entity.setCreate_time(DateUtil.now());
         }
-        entity.setUpdate_optid(SecurityUtils.getCurrentUserId());
-        entity.setUpdate_optname(SecurityUtils.getCurrentNickName());
+        entity.setUpdate_id(SecurityUtils.getCurrentUserId());
+        entity.setUpdate_name(SecurityUtils.getCurrentNickName());
         entity.setUpdate_time(DateUtil.now());
         return entity;
     }
@@ -160,6 +199,81 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
         return list(lam).size() > 0;
     }
 
+    @SneakyThrows
+    @Override
+    public void operation(Map<String, Object> map) {
+        String task_id = MapUtil.getStr(map, "task_id");
+        RLock lock = redissonClient.getLock(task_id);
+        boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
+        try {
+            if (tryLock) {
+                String method_name = MapUtil.getStr(map, "method_name");
+                SchBaseTask taskObj = this.getById(task_id);
+                if ("finish".equals(method_name)) {
+                    //强制执行,只把任务变更成完成状态
+                    // 更改任务状态为完成
+                    taskObj.setTask_status(TaskStatusEnum.FINISHED.getCode());
+                    taskObj.setUpdate_id(SecurityUtils.getCurrentUserId());
+                    taskObj.setUpdate_name(SecurityUtils.getCurrentNickName());
+                    taskObj.setUpdate_time(DateUtil.now());
+                    taskObj.setRemark("任务被用户:" + SecurityUtils.getCurrentNickName() + "在:" + DateUtil.now() + "强制完成。");
+                    this.updateById(taskObj);
+                } else {
+                    // 任务处理类
+                    String processing_class = taskObj.getHandle_class();
+                    String message = "";
+
+                    try {
+                        Object obj = new Object();
+                        try {
+                            obj = SpringContextHolder.getBean(Class.forName(processing_class));
+                        } catch (Exception e) {
+                            Class<?> clz = Class.forName(processing_class);
+                            obj = clz.newInstance();
+                        }
+                        // 调用每个任务类的method_name()强制结束方法
+                        Method m = obj.getClass().getMethod(method_name, String.class);
+                        JSONObject result = (JSONObject) m.invoke(obj, task_id);
+                        if (ObjectUtil.isEmpty(result)) {
+                            return;
+                        }
+                        JSONArray arr = result.getJSONArray("errArr");
+                        LambdaUpdateWrapper<SchBaseTask> lam = new LambdaUpdateWrapper<>();
+                        if (ObjectUtil.isNotEmpty(arr)) {
+                            for (int i = 0; i < arr.size(); i++) {
+                                JSONObject json = arr.getJSONObject(i);
+                                lam.set(SchBaseTask::getRemark, json.getString("message"))
+                                        .eq(SchBaseTask::getTask_id, json.getString("task_id"));
+                                this.update(lam);
+                            }
+                            throw new BadRequestException("任务操作失败!");
+                        } else {
+                            lam.set(SchBaseTask::getRemark, "操作成功")
+                                    .eq(SchBaseTask::getTask_id, task_id);
+                            this.update(lam);
+                        }
+                    } catch (InvocationTargetException e) {
+                        if (ObjectUtil.isNull(e.getTargetException().getMessage())) {
+                            message = e.getTargetException().toString();
+                        } else {
+                            message = e.getTargetException().getMessage();
+                        }
+                        throw new BadRequestException(message);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        throw new BadRequestException(e.getMessage());
+                    }
+                }
+            } else {
+                throw new BadRequestException("任务标识为:" + task_id + "的任务正在操作中!");
+            }
+        } finally {
+            if (tryLock) {
+                lock.unlock();
+            }
+        }
+    }
+
 
 }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java
index 0e9db40..629b63d 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java
@@ -92,8 +92,8 @@ public class DjqTask extends AbstractAcsTask {
         if (TaskUtil.checkParams(schBaseTask, THIS_CLASS, TaskStatusEnum.FINISHED.getCode())) return;
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskObj.getString("task_id"))
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
             // 更新任务状态为执行中
@@ -263,13 +263,13 @@ public class DjqTask extends AbstractAcsTask {
         }
               LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskId)
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         //任务被标记为取消
         updateWrapper.set(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("是"));
         updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode());
-        updateWrapper.set(SchBaseTask::getRemark,"任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
+        updateWrapper.set(SchBaseTask::getRemark,"任务被用户:" + schBaseTask.getUpdate_name() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
         taskService.update(null,updateWrapper);
     }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqToKzjhcwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqToKzjhcwTask.java
index c13c6b1..94bd624 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqToKzjhcwTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqToKzjhcwTask.java
@@ -87,8 +87,8 @@ public class DjqToKzjhcwTask extends AbstractAcsTask {
          if (TaskUtil.checkParams(schBaseTask, THIS_CLASS, TaskStatusEnum.FINISHED.getCode())) return;
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskObj.getString("task_id"))
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
             // 更新任务状态为执行中
@@ -205,13 +205,13 @@ public class DjqToKzjhcwTask extends AbstractAcsTask {
         }
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskId)
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         //任务被标记为取消
         updateWrapper.set(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("是"));
         updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode());
-        updateWrapper.set(SchBaseTask::getRemark,"任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
+        updateWrapper.set(SchBaseTask::getRemark,"任务被用户:" + schBaseTask.getUpdate_name() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
         taskService.update(null,updateWrapper);
     }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqTask.java
index ddda262..d63cfd1 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqTask.java
@@ -18,7 +18,6 @@ import org.nl.b_lms.sch.task.service.IschBaseTaskService;
 import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
 import org.nl.common.enums.PackageInfoIvtEnum;
 import org.nl.common.utils.SecurityUtils;
-import org.nl.common.utils.TaskUtils;
 import org.nl.modules.common.exception.BadRequestException;
 import org.nl.wms.sch.AcsTaskDto;
 import org.nl.wms.sch.manage.AbstractAcsTask;
@@ -86,8 +85,8 @@ public class GzqTask extends AbstractAcsTask {
          if (TaskUtil.checkParams(schBaseTask, THIS_CLASS,TaskStatusEnum.FINISHED.getCode())) return;
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskObj.getString("task_id"))
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
             // 更新任务状态为执行中
@@ -96,7 +95,7 @@ public class GzqTask extends AbstractAcsTask {
         }
             if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
             log.info("任务编号为:"+schBaseTask.getTask_code()+"的任务完成接口在"+schBaseTask.getUpdate_time()+"被调用---------------------------------------------");
-         
+
             //1.改变起点点位状态
             packageinfoivtService.update(null,new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
             //2.更新库存记录
@@ -205,13 +204,13 @@ public class GzqTask extends AbstractAcsTask {
         }
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskId)
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         //任务被标记为取消
         updateWrapper.set(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("是"));
         updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode());
-        updateWrapper.set(SchBaseTask::getRemark,"任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
+        updateWrapper.set(SchBaseTask::getRemark,"任务被用户:" + schBaseTask.getUpdate_name() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
         taskService.update(null,updateWrapper);
     }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqToKzjhcwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqToKzjhcwTask.java
index b6c50ea..72c3870 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqToKzjhcwTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqToKzjhcwTask.java
@@ -89,8 +89,8 @@ public class GzqToKzjhcwTask extends AbstractAcsTask {
          if (TaskUtil.checkParams(schBaseTask, THIS_CLASS, TaskStatusEnum.FINISHED.getCode())) return;
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskObj.getString("task_id"))
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
             // 更新任务状态为执行中
@@ -207,13 +207,13 @@ public class GzqToKzjhcwTask extends AbstractAcsTask {
         }
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskId)
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         //任务被标记为取消
         updateWrapper.set(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("是"));
         updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode());
-        updateWrapper.set(SchBaseTask::getRemark,"任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
+        updateWrapper.set(SchBaseTask::getRemark,"任务被用户:" + schBaseTask.getUpdate_name() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
         taskService.update(null,updateWrapper);
     }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java
index 94a58cb..d02baf8 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java
@@ -113,8 +113,8 @@ public class MzhcwTask extends AbstractAcsTask {
          if (TaskUtil.checkParams(schBaseTask, THIS_CLASS, TaskStatusEnum.FINISHED.getCode())) return;
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskObj.getString("task_id"))
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         // 执行中
         if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
@@ -388,13 +388,13 @@ public class MzhcwTask extends AbstractAcsTask {
         }
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskId)
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         //任务被标记为取消
         updateWrapper.set(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("是"));
         updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode());
-        updateWrapper.set(SchBaseTask::getRemark,"任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
+        updateWrapper.set(SchBaseTask::getRemark,"任务被用户:" + schBaseTask.getUpdate_name() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
         taskService.update(null,updateWrapper);
     }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendDjqKzjTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendDjqKzjTask.java
index 17a2266..f92535d 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendDjqKzjTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendDjqKzjTask.java
@@ -84,8 +84,8 @@ public class SendDjqKzjTask extends AbstractAcsTask {
          if (TaskUtil.checkParams(schBaseTask, THIS_CLASS, TaskStatusEnum.FINISHED.getCode())) return;
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskObj.getString("task_id"))
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
             // 更新任务状态为执行中
@@ -185,13 +185,13 @@ public class SendDjqKzjTask extends AbstractAcsTask {
         }
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskId)
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         //任务被标记为取消
         updateWrapper.set(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("是"));
         updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode());
-        updateWrapper.set(SchBaseTask::getRemark, "任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
+        updateWrapper.set(SchBaseTask::getRemark, "任务被用户:" + schBaseTask.getUpdate_name() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
         taskService.update(null, updateWrapper);
     }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendGzqKzjTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendGzqKzjTask.java
index 35a8a01..548a92d 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendGzqKzjTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendGzqKzjTask.java
@@ -84,8 +84,8 @@ public class SendGzqKzjTask extends AbstractAcsTask {
          if (TaskUtil.checkParams(schBaseTask, THIS_CLASS, TaskStatusEnum.FINISHED.getCode())) return;
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskObj.getString("task_id"))
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
             // 更新任务状态为执行中
@@ -184,13 +184,13 @@ public class SendGzqKzjTask extends AbstractAcsTask {
         }
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskId)
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         //任务被标记为取消
         updateWrapper.set(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("是"));
         updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode());
-        updateWrapper.set(SchBaseTask::getRemark, "任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
+        updateWrapper.set(SchBaseTask::getRemark, "任务被用户:" + schBaseTask.getUpdate_name() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
         taskService.update(null, updateWrapper);
     }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SsxDjwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SsxDjwTask.java
index a33e478..e558666 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SsxDjwTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SsxDjwTask.java
@@ -86,8 +86,8 @@ public class SsxDjwTask extends AbstractAcsTask {
         if (TaskUtil.checkParams(schBaseTask, THIS_CLASS, TaskStatusEnum.FINISHED.getCode())) return;
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskObj.getString("task_id"))
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
             // 更新任务状态为执行中
@@ -211,13 +211,13 @@ public class SsxDjwTask extends AbstractAcsTask {
         }
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskId)
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         //任务被标记为取消
         updateWrapper.set(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("是"));
         updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode());
-        updateWrapper.set(SchBaseTask::getRemark,"任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
+        updateWrapper.set(SchBaseTask::getRemark,"任务被用户:" + schBaseTask.getUpdate_name() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
         taskService.update(null,updateWrapper);
     }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java
index 04692b3..6f4986f 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java
@@ -115,8 +115,8 @@ public class ZxDjwTask extends AbstractAcsTask {
          if (TaskUtil.checkParams(schBaseTask, THIS_CLASS, TaskStatusEnum.FINISHED.getCode())) return;
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskObj.getString("task_id"))
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
             // 更新任务状态为执行中
@@ -267,13 +267,13 @@ public class ZxDjwTask extends AbstractAcsTask {
         }
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskId)
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         //任务被标记为取消
         updateWrapper.set(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("是"));
         updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode());
-        updateWrapper.set(SchBaseTask::getRemark, "任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
+        updateWrapper.set(SchBaseTask::getRemark, "任务被用户:" + schBaseTask.getUpdate_name() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
         taskService.update(null, updateWrapper);
     }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java
index a6d6519..f19d450 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java
@@ -112,8 +112,8 @@ public class ZxqTask extends AbstractAcsTask {
          if (TaskUtil.checkParams(schBaseTask, THIS_CLASS, TaskStatusEnum.FINISHED.getCode())) return;
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskObj.getString("task_id"))
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
             // 更新任务状态为执行中
@@ -358,13 +358,13 @@ public class ZxqTask extends AbstractAcsTask {
         }
         LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
                 .eq(SchBaseTask::getTask_id, taskId)
-                .set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
-                .set(SchBaseTask::getUpdate_optname, SecurityUtils.getCurrentUsername())
+                .set(SchBaseTask::getUpdate_id, SecurityUtils.getCurrentUserId())
+                .set(SchBaseTask::getUpdate_name, SecurityUtils.getCurrentUsername())
                 .set(SchBaseTask::getUpdate_time, DateUtil.now());
         //任务被标记为取消
         updateWrapper.set(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("是"));
         updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode());
-        updateWrapper.set(SchBaseTask::getRemark, "任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
+        updateWrapper.set(SchBaseTask::getRemark, "任务被用户:" + schBaseTask.getUpdate_name() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
         taskService.update(null, updateWrapper);
     }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/common/utils/TaskUtils.java b/lms/nladmin-system/src/main/java/org/nl/common/utils/TaskUtils.java
index 58ee6a3..e222b17 100644
--- a/lms/nladmin-system/src/main/java/org/nl/common/utils/TaskUtils.java
+++ b/lms/nladmin-system/src/main/java/org/nl/common/utils/TaskUtils.java
@@ -2,7 +2,6 @@ package org.nl.common.utils;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
 import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt;
@@ -99,8 +98,8 @@ public class TaskUtils {
      * @param task 任务
      */
     public static void updateOptMessageByTask(SchBaseTask task) {
-        task.setUpdate_optid(SecurityUtils.getCurrentUserId());
-        task.setUpdate_optname(SecurityUtils.getCurrentUsername());
+        task.setUpdate_id(SecurityUtils.getCurrentUserId());
+        task.setUpdate_name(SecurityUtils.getCurrentUsername());
         task.setUpdate_time(DateUtil.now());
     }
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/classstandard/service/dao/mapper/ClassStandardMapper.xml b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/classstandard/service/dao/mapper/ClassStandardMapper.xml
index 3deda26..fb47cfc 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/classstandard/service/dao/mapper/ClassStandardMapper.xml
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/classstandard/service/dao/mapper/ClassStandardMapper.xml
@@ -4,13 +4,13 @@
 
     <select id="getAllChildrenIds" resultType="java.lang.String">
         SELECT DISTINCT
-            class_id
+            class_code
         FROM (
                  SELECT
-                     t1.class_id,
+                     t1.class_code,
                      IF(find_in_set(parent_class_id, @pids) > 0, @pids := concat(@pids, ',', class_id), 0) AS ischild
                  FROM (
-                          SELECT class_id, parent_class_id FROM md_pb_classstandard t WHERE t.is_delete = '0' ORDER BY class_code
+                          SELECT class_code, class_id, parent_class_id FROM md_pb_classstandard t WHERE t.is_delete = '0' ORDER BY class_code
                       ) t1,
                       (SELECT @pids := #{classId}) t2
              ) t3
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/areapermissions/service/IUserAreaPermissionService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/areapermissions/service/IUserAreaPermissionService.java
index 401e033..56392c4 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/areapermissions/service/IUserAreaPermissionService.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/areapermissions/service/IUserAreaPermissionService.java
@@ -44,4 +44,9 @@ public interface IUserAreaPermissionService extends IService<UserAreaPermission>
 
     String getInArea();
 
+    /**
+     * 获取当前用户对应的区域数组
+     * @return
+     */
+    List<String> getCurrentUserAreas(String currentUserId);
 }
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/areapermissions/service/impl/UserAreaPermissionServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/areapermissions/service/impl/UserAreaPermissionServiceImpl.java
index 2360955..dd1625c 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/areapermissions/service/impl/UserAreaPermissionServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/areapermissions/service/impl/UserAreaPermissionServiceImpl.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Author: lyd
@@ -104,4 +105,15 @@ public class UserAreaPermissionServiceImpl extends ServiceImpl<UserAreaPermissio
         }
         return in_stor_id;
     }
+
+    @Override
+    public List<String> getCurrentUserAreas(String currentUserId) {
+        if (ObjectUtil.isEmpty(currentUserId)) {
+            return null;
+        }
+        LambdaQueryWrapper<UserAreaPermission> lam = new LambdaQueryWrapper<>();
+        lam.eq(UserAreaPermission::getUser_id, currentUserId);
+        List<UserAreaPermission> list = userAreaPermissionMapper.selectList(lam);
+        return list.stream().map(UserAreaPermission::getProduct_area).collect(Collectors.toList());
+    }
 }
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/RegionController.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/RegionController.java
index 319925b..63fecbe 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/RegionController.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/RegionController.java
@@ -21,7 +21,7 @@ import java.util.Map;
 @RestController
 @RequiredArgsConstructor
 
-@RequestMapping("/api/region")
+@RequestMapping("/api/region2")
 @Slf4j
 public class RegionController {
 
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/TaskController.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/TaskController.java
index cdcb517..a53a780 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/TaskController.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/TaskController.java
@@ -23,7 +23,7 @@ import java.util.Map;
  **/
 @RestController
 @RequiredArgsConstructor
-@RequestMapping("/api/task")
+@RequestMapping("/api/task2")
 @Slf4j
 public class TaskController {
 
diff --git a/lms/nladmin-ui/src/views/wms/sch/task/index.vue b/lms/nladmin-ui/src/views/wms/sch/task/index.vue
index 854662c..577557c 100644
--- a/lms/nladmin-ui/src/views/wms/sch/task/index.vue
+++ b/lms/nladmin-ui/src/views/wms/sch/task/index.vue
@@ -67,7 +67,7 @@
                     v-model="query.is_delete"
                     class="filter-item"
                     clearable
-                    @change="handTaskStatus"
+                    @change="hand"
                   >
                     <el-option
                       v-for="item in deleteList"
@@ -229,7 +229,15 @@ export default {
       sort: 'create_time,desc',
       crudMethod: { ...crudTask },
       query: {
-        task_code: '', is_delete: '0', vehicle_code: '', start_point_code: '', next_point_code: '', task_type: '', finished_type: '', task_status: ['-1']
+        task_code: '',
+        is_delete: '0',
+        vehicle_code: '',
+        start_point_code: '',
+        next_point_code: '',
+        task_type: '',
+        finished_type: '',
+        more_task_status: '-1',
+        task_status: ['-1']
       },
       optShow: {
         add: false,
@@ -279,7 +287,7 @@ export default {
         parent_class_code: 'task_type'
       }
       crudClassstandard.getClassType(param).then(res => {
-        const data = res.content
+        const data = res
         this.buildTree(data)
         this.classes1 = data
       })
@@ -297,9 +305,8 @@ export default {
     // 获取子节点数据
     loadChildNodes({ action, parentNode, callback }) {
       if (action === LOAD_CHILDREN_OPTIONS) {
-        debugger
         crudClassstandard.getClass({ pid: parentNode.id }).then(res => {
-          parentNode.children = res.content.map(function(obj) {
+          parentNode.children = res.map(function(obj) {
             if (obj.hasChildren) {
               obj.children = null
             }
@@ -312,13 +319,12 @@ export default {
       }
     },
     hand(value) {
-      debugger
       this.crud.toQuery()
     },
     handTaskStatus(value) {
-      debugger
       if (value) {
-        this.query.task_status = this.task_status.toString()
+        console.log(value)
+        this.crud.query.more_task_status = value.toString()
       }
       this.crud.toQuery()
     },