From a6b253099ba7f1609e30911821d19c7b06a716ec Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期一, 30 三月 2026 09:22:24 +0800
Subject: [PATCH] 电视机接口

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/open/param/QueryTaskParam.java           |   12 +
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/MonitorController.java                    |   30 ++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/OpenAsrsService.java                        |   18 ++
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/OpenAsrsServiceImpl.java               |  196 ++++++++++++++++++++++++++++
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/fallback/WmsServerFeignClientFallback.java |   38 ++++-
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/WmsServerFeignClient.java                  |   17 ++
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MonitorController.java               |   31 ++++
 rsf-open-api/pom.xml                                                                                    |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/OpenAsrsMapper.java                      |   28 ++++
 9 files changed, 364 insertions(+), 8 deletions(-)

diff --git a/rsf-open-api/pom.xml b/rsf-open-api/pom.xml
index 2cc6940..d8215d0 100644
--- a/rsf-open-api/pom.xml
+++ b/rsf-open-api/pom.xml
@@ -21,7 +21,7 @@
             <artifactId>rsf-common</artifactId>
             <version>1.0.0</version>
         </dependency>
-        <!-- OpenFeign锛氳浆鍙戣皟鐢ㄧ珛搴� WMS 鎺ュ彛 -->
+        <!-- OpenFeign -->
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-openfeign</artifactId>
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/MonitorController.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/MonitorController.java
index 084e62c..c1716f1 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/MonitorController.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/MonitorController.java
@@ -1,9 +1,11 @@
 package com.vincent.rsf.openApi.controller;
 
 import com.vincent.rsf.openApi.entity.dto.CommonResponse;
+import com.vincent.rsf.openApi.feign.wms.WmsServerFeignClient;
 import com.vincent.rsf.openApi.service.MonitorService;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -21,6 +23,34 @@
 
     @Autowired
     private MonitorService monitorService;
+
+    @Autowired
+    private WmsServerFeignClient wmsServerFeignClient;
+
+    @GetMapping("/queryLoc")
+    @ApiOperation("澶у睆锛氬簱浣嶅簱瀛樼粺璁�")
+    public Map<String, Object> queryLoc() {
+        return wmsServerFeignClient.openAsrsQueryLoc();
+    }
+
+    @GetMapping("/line/charts")
+    @ApiOperation("澶у睆锛氬叆鍑哄簱鎶樼嚎鍥炬暟鎹�")
+    public Map<String, Object> lineCharts() {
+        return wmsServerFeignClient.openAsrsLineCharts();
+    }
+
+    @GetMapping("/locDetl/statistics")
+    @ApiOperation("澶у睆锛氬簱瀛樻槑缁嗗垎椤电粺璁�")
+    public Map<String, Object> locDetlStatistics() {
+        return wmsServerFeignClient.openAsrsLocDetlStatistics();
+    }
+
+    @PostMapping("/queryTask")
+    @ApiOperation("澶у睆锛氫换鍔℃煡璇�")
+    public Map<String, Object> queryTask(@RequestBody Map<String, Object> body) {
+        return wmsServerFeignClient.openAsrsQueryTask(body);
+    }
+
     /**
      * 鑾峰彇鍑哄叆搴撴祦姘磋褰�
      * @return
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/WmsServerFeignClient.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/WmsServerFeignClient.java
index bcc327e..a0bc51a 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/WmsServerFeignClient.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/WmsServerFeignClient.java
@@ -4,6 +4,7 @@
 import com.vincent.rsf.openApi.entity.params.ErpOpParams;
 import com.vincent.rsf.openApi.feign.wms.fallback.WmsServerFeignClientFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
@@ -52,4 +53,20 @@
     /** 搴撳瓨姹囨�绘煡璇紙瀵规帴鍗忚 8.5锛� */
     @PostMapping("/rsf-server/erp/inventory/summary")
     Map<String, Object> inventorySummary(@RequestBody Map<String, Object> params);
+
+    /** 澶у睆锛氬簱浣嶅簱瀛樼粺璁� */
+    @GetMapping("/rsf-server/monitor/queryLoc")
+    Map<String, Object> openAsrsQueryLoc();
+
+    /** 澶у睆锛氬叆鍑哄簱鎶樼嚎鍥炬暟鎹� */
+    @GetMapping("/rsf-server/monitor/line/charts")
+    Map<String, Object> openAsrsLineCharts();
+
+    /** 澶у睆锛氬簱瀛樻槑缁嗗垎椤电粺璁� */
+    @GetMapping("/rsf-server/monitor/locDetl/statistics")
+    Map<String, Object> openAsrsLocDetlStatistics();
+
+    /** 澶у睆锛氫换鍔℃煡璇� */
+    @PostMapping("/rsf-server/monitor/queryTask")
+    Map<String, Object> openAsrsQueryTask(@RequestBody Map<String, Object> body);
 }
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/fallback/WmsServerFeignClientFallback.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/fallback/WmsServerFeignClientFallback.java
index 1d354f6..7d6b64d 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/fallback/WmsServerFeignClientFallback.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/fallback/WmsServerFeignClientFallback.java
@@ -88,43 +88,67 @@
 
     @Override
     public Map<String, Object> queryOrderAndDetls(ErpOpParams params) {
-        log.error("璋冪敤绔嬪簱WMS Server璁㈠崟淇℃伅鏌ヨ鎺ュ彛澶辫触锛岃Е鍙戦檷绾�", cause);
+        log.error("璋冪敤WMS Server璁㈠崟淇℃伅鏌ヨ鎺ュ彛澶辫触锛岃Е鍙戦檷绾�", cause);
         return errorResponse();
     }
 
     @Override
     public Map<String, Object> updateOrderDetls(List<Map<String, Object>> body) {
-        log.error("璋冪敤绔嬪簱WMS Server璁㈠崟淇敼鎺ュ彛澶辫触锛岃Е鍙戦檷绾�", cause);
+        log.error("璋冪敤WMS Server璁㈠崟淇敼鎺ュ彛澶辫触锛岃Е鍙戦檷绾�", cause);
         return errorResponse();
     }
 
     @Override
     public Map<String, Object> orderDel(List<Map<String, Object>> body) {
-        log.error("璋冪敤绔嬪簱WMS Server鍙栨秷鍗曟嵁鎺ュ彛澶辫触锛岃Е鍙戦檷绾�", cause);
+        log.error("璋冪敤WMS Server鍙栨秷鍗曟嵁鎺ュ彛澶辫触锛岃Е鍙戦檷绾�", cause);
         return errorResponse();
     }
 
     @Override
     public Map<String, Object> syncMatnrs(ErpMatnrParms params) {
-        log.error("璋冪敤绔嬪簱WMS Server鐗╂枡淇℃伅鍚屾鎺ュ彛澶辫触锛岃Е鍙戦檷绾�", cause);
+        log.error("璋冪敤WMS Server鐗╂枡淇℃伅鍚屾鎺ュ彛澶辫触锛岃Е鍙戦檷绾�", cause);
         return errorResponse();
     }
 
     @Override
     public Map<String, Object> queryLocsDetls(Map<String, Object> params) {
-        log.error("璋冪敤绔嬪簱WMS Server搴撲綅淇℃伅鏌ヨ鎺ュ彛澶辫触锛岃Е鍙戦檷绾�", cause);
+        log.error("璋冪敤WMS Server搴撲綅淇℃伅鏌ヨ鎺ュ彛澶辫触锛岃Е鍙戦檷绾�", cause);
         return errorResponse();
     }
 
     @Override
     public Map<String, Object> inventoryDetails(Map<String, Object> params) {
-        log.error("璋冪敤绔嬪簱WMS Server搴撳瓨鏄庣粏鏌ヨ鎺ュ彛澶辫触锛岃Е鍙戦檷绾�", cause);
+        log.error("璋冪敤WMS Server搴撳瓨鏄庣粏鏌ヨ鎺ュ彛澶辫触锛岃Е鍙戦檷绾�", cause);
         return errorResponse();
     }
 
     @Override
     public Map<String, Object> inventorySummary(Map<String, Object> params) {
-        log.error("璋冪敤绔嬪簱WMS Server搴撳瓨姹囨�绘煡璇㈡帴鍙eけ璐ワ紝瑙﹀彂闄嶇骇", cause);
+        log.error("璋冪敤WMS Server搴撳瓨姹囨�绘煡璇㈡帴鍙eけ璐ワ紝瑙﹀彂闄嶇骇", cause);
+        return errorResponse();
+    }
+
+    @Override
+    public Map<String, Object> openAsrsQueryLoc() {
+        log.error("璋冪敤 monitor/queryLoc 澶辫触锛岃Е鍙戦檷绾�", cause);
+        return errorResponse();
+    }
+
+    @Override
+    public Map<String, Object> openAsrsLineCharts() {
+        log.error("璋冪敤 monitor/line/charts 澶辫触锛岃Е鍙戦檷绾�", cause);
+        return errorResponse();
+    }
+
+    @Override
+    public Map<String, Object> openAsrsLocDetlStatistics() {
+        log.error("璋冪敤 monitor/locDetl/statistics 澶辫触锛岃Е鍙戦檷绾�", cause);
+        return errorResponse();
+    }
+
+    @Override
+    public Map<String, Object> openAsrsQueryTask(Map<String, Object> body) {
+        log.error("璋冪敤 monitor/queryTask 澶辫触锛岃Е鍙戦檷绾�", cause);
         return errorResponse();
     }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/open/param/QueryTaskParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/open/param/QueryTaskParam.java
new file mode 100644
index 0000000..66851f1
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/open/param/QueryTaskParam.java
@@ -0,0 +1,12 @@
+package com.vincent.rsf.server.api.controller.open.param;
+
+import lombok.Data;
+
+/**
+ * 寮�鏀句换鍔℃煡璇㈠叆鍙傦紙涓� gsl QueryTaskParam 瀛楁涓�鑷达級
+ */
+@Data
+public class QueryTaskParam {
+
+    private String taskNo;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MonitorController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MonitorController.java
index 2780bbc..89dc489 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MonitorController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MonitorController.java
@@ -5,7 +5,9 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.api.controller.open.param.QueryTaskParam;
 import com.vincent.rsf.server.api.service.MonitorService;
+import com.vincent.rsf.server.api.service.OpenAsrsService;
 import com.vincent.rsf.server.common.domain.BaseParam;
 import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.common.utils.FieldsUtils;
@@ -16,6 +18,7 @@
 import com.vincent.rsf.server.system.controller.BaseController;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -38,6 +41,34 @@
 
     @Autowired
     private WarehouseStockService warehouseStockService;
+
+    @Autowired
+    private OpenAsrsService openAsrsService;
+
+    @GetMapping("/queryLoc")
+    @ApiOperation("澶у睆锛氬簱浣嶅簱瀛樼粺璁�")
+    public R queryLoc() {
+        return openAsrsService.queryLoc();
+    }
+
+    @GetMapping("/line/charts")
+    @ApiOperation("澶у睆锛氬叆鍑哄簱鎶樼嚎鍥炬暟鎹�")
+    public R locIoLineCharts() {
+        return openAsrsService.locIoLineCharts();
+    }
+
+    @GetMapping("/locDetl/statistics")
+    @ApiOperation("澶у睆锛氬簱瀛樻槑缁嗗垎椤电粺璁�")
+    public R locDetlStatistics() {
+        return openAsrsService.locDetlStatistics();
+    }
+
+    @PostMapping("/queryTask")
+    @ApiOperation("澶у睆锛氫换鍔℃煡璇�")
+    public R queryTask(@RequestBody QueryTaskParam param) {
+        return openAsrsService.queryTask(param);
+    }
+
     /**
      * 鑾峰彇鍑哄叆搴撴祦姘磋褰�
      * @return
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/OpenAsrsService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/OpenAsrsService.java
new file mode 100644
index 0000000..de17000
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/OpenAsrsService.java
@@ -0,0 +1,18 @@
+package com.vincent.rsf.server.api.service;
+
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.api.controller.open.param.QueryTaskParam;
+
+/**
+ * 寮�鏀� ASRS 鏌ヨ锛堢數瑙嗘満绛夛級锛岃繑鍥炴牸寮忓榻� gsl OpenController
+ */
+public interface OpenAsrsService {
+
+    R queryLoc();
+
+    R locIoLineCharts();
+
+    R locDetlStatistics();
+
+    R queryTask(QueryTaskParam param);
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/OpenAsrsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/OpenAsrsServiceImpl.java
new file mode 100644
index 0000000..526f9d4
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/OpenAsrsServiceImpl.java
@@ -0,0 +1,196 @@
+package com.vincent.rsf.server.api.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.vincent.rsf.framework.common.BaseRes;
+import com.vincent.rsf.framework.common.Cools;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.api.controller.open.param.QueryTaskParam;
+import com.vincent.rsf.server.api.service.OpenAsrsService;
+import com.vincent.rsf.server.manager.controller.dto.LocStockDto;
+import com.vincent.rsf.server.manager.entity.Task;
+import com.vincent.rsf.server.manager.entity.TaskItem;
+import com.vincent.rsf.server.manager.enums.LocStsType;
+import com.vincent.rsf.server.manager.mapper.OpenAsrsMapper;
+import com.vincent.rsf.server.manager.service.LocService;
+import com.vincent.rsf.server.manager.service.TaskItemService;
+import com.vincent.rsf.server.manager.service.TaskService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class OpenAsrsServiceImpl implements OpenAsrsService {
+
+    @Resource
+    private OpenAsrsMapper openAsrsMapper;
+    @Resource
+    private LocService locService;
+    @Resource
+    private TaskService taskService;
+    @Resource
+    private TaskItemService taskItemService;
+
+    @Override
+    public R queryLoc() {
+        List<Map<String, Object>> rows = openAsrsMapper.countLocGroupByUseStatus();
+        int f = countStatus(rows, LocStsType.LOC_STS_TYPE_F.type);
+        int o = countStatus(rows, LocStsType.LOC_STS_TYPE_O.type);
+        int d = countStatus(rows, LocStsType.LOC_STS_TYPE_D.type);
+        int r = countStatus(rows, LocStsType.LOC_STS_TYPE_R.type);
+        int s = countStatus(rows, LocStsType.LOC_STS_TYPE_S.type);
+        int x = countStatus(rows, LocStsType.LOC_STS_TYPE_X.type);
+
+        int oqty = o + d;
+        int uqty = r + s;
+
+        List<Map<String, Object>> pie = new ArrayList<>();
+        pie.add(pieSlice("鍦ㄥ簱", f));
+        pie.add(pieSlice("绌�", oqty));
+        pie.add(pieSlice("浣跨敤", uqty));
+        pie.add(pieSlice("绂佺敤", x));
+
+        int total = f + oqty + uqty + x;
+        int used = f + uqty;
+        double usedPr = 0D;
+        if (total > 0) {
+            usedPr = BigDecimal.valueOf(used)
+                    .multiply(BigDecimal.valueOf(100))
+                    .divide(BigDecimal.valueOf(total), 1, RoundingMode.HALF_UP)
+                    .doubleValue();
+        }
+
+        return R.ok(
+                Cools.add("pie", pie)
+                        .add("stockCount", f)
+                        .add("emptyCount", oqty)
+                        .add("disableCount", x)
+                        .add("total", total)
+                        .add("used", used)
+                        .add("usedPr", usedPr)
+        );
+    }
+
+    private static int countStatus(List<Map<String, Object>> rows, String status) {
+        if (rows == null) {
+            return 0;
+        }
+        for (Map<String, Object> row : rows) {
+            Object st = row.get("st");
+            if (st != null && status.equals(String.valueOf(st))) {
+                Object cnt = row.get("cnt");
+                if (cnt instanceof Number) {
+                    return ((Number) cnt).intValue();
+                }
+            }
+        }
+        return 0;
+    }
+
+    private static Map<String, Object> pieSlice(String name, int value) {
+        Map<String, Object> m = new LinkedHashMap<>();
+        m.put("name", name);
+        m.put("value", value);
+        return m;
+    }
+
+    @Override
+    public R locIoLineCharts() {
+        List<Map<String, Object>> dbRows = openAsrsMapper.aggregateInOutByDay();
+        Map<String, int[]> byDay = new HashMap<>();
+        if (dbRows != null) {
+            for (Map<String, Object> row : dbRows) {
+                String ymd = row.get("ymd") == null ? null : String.valueOf(row.get("ymd"));
+                if (ymd == null || ymd.isEmpty()) {
+                    continue;
+                }
+                int inq = toInt(row.get("inqty"));
+                int outq = toInt(row.get("outqty"));
+                byDay.put(ymd, new int[]{inq, outq});
+            }
+        }
+
+        List<Map<String, Object>> list = new ArrayList<>();
+        List<Integer> data1 = new ArrayList<>();
+        List<Integer> data2 = new ArrayList<>();
+
+        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.DATE, -12);
+        for (int i = 0; i < 12; i++) {
+            calendar.add(Calendar.DATE, 1);
+            String str = sf.format(calendar.getTime());
+            int[] pair = byDay.get(str);
+            if (pair != null) {
+                data1.add(pair[0]);
+                data2.add(pair[1]);
+            } else {
+                data1.add(0);
+                data2.add(0);
+            }
+        }
+
+        Map<String, Object> inqty = new LinkedHashMap<>();
+        inqty.put("name", "鍏ュ簱鏁伴噺");
+        inqty.put("data", data1.toArray(new Integer[0]));
+        list.add(inqty);
+        Map<String, Object> outqty = new LinkedHashMap<>();
+        outqty.put("name", "鍑哄簱鏁伴噺");
+        outqty.put("data", data2.toArray(new Integer[0]));
+        list.add(outqty);
+
+        Map<String, Object> map = new LinkedHashMap<>();
+        map.put("rows", list);
+        return R.ok(map);
+    }
+
+    private static int toInt(Object o) {
+        if (o == null) {
+            return 0;
+        }
+        if (o instanceof Number) {
+            return ((Number) o).intValue();
+        }
+        try {
+            return new BigDecimal(o.toString()).intValue();
+        } catch (Exception e) {
+            return 0;
+        }
+    }
+
+    @Override
+    public R locDetlStatistics() {
+        Page<Object> page = new Page<>(1, 100);
+        return R.ok(locService.getLocDetls(page));
+    }
+
+    @Override
+    public synchronized R queryTask(QueryTaskParam param) {
+        if (Cools.isEmpty(param)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        if (Cools.isEmpty(param.getTaskNo())) {
+            return R.error("浠诲姟鍙穂taskNo]涓嶈兘涓虹┖");
+        }
+        Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, param.getTaskNo()));
+        if (task == null) {
+            return R.error("浠诲姟涓嶅瓨鍦�");
+        }
+        List<TaskItem> wrkDetls = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
+
+        Map<String, Object> map = new LinkedHashMap<>();
+        map.put("taskNo", param.getTaskNo());
+        map.put("ioType", task.getTaskType());
+        map.put("wrkDetls", wrkDetls);
+        return R.ok().add(map);
+    }
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/OpenAsrsMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/OpenAsrsMapper.java
new file mode 100644
index 0000000..f3fcf61
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/OpenAsrsMapper.java
@@ -0,0 +1,28 @@
+package com.vincent.rsf.server.manager.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 寮�鏀� ASRS 鏌ヨ锛堢數瑙嗘満绛夛級锛孲QL 涓� gsl 瑙嗗浘缁熻璇箟瀵归綈鍒版湰搴撹〃缁撴瀯
+ */
+@Mapper
+public interface OpenAsrsMapper {
+
+    @Select("SELECT use_status AS st, COUNT(*) AS cnt FROM man_loc WHERE (deleted IS NULL OR deleted = 0) GROUP BY use_status")
+    List<Map<String, Object>> countLocGroupByUseStatus();
+
+    /**
+     * 鎸夋棩姹囨�诲凡瀹屾垚鍏�/鍑哄簱浠诲姟娆℃暟锛堜笌 gsl asr_sta_inout_view 鎶樼嚎鍥剧敤閫斾竴鑷达級
+     */
+    @Select("SELECT DATE_FORMAT(COALESCE(end_time, update_time, create_time), '%Y-%m-%d') AS ymd, "
+            + "SUM(CASE WHEN task_type IN (1,10,53,54,57) AND IFNULL(task_status,0) IN (98,99,100) THEN 1 ELSE 0 END) AS inqty, "
+            + "SUM(CASE WHEN task_type IN (101,103,104,107,110) AND IFNULL(task_status,0) IN (198,199,200) THEN 1 ELSE 0 END) AS outqty "
+            + "FROM man_task_log WHERE (deleted IS NULL OR deleted = 0) "
+            + "AND COALESCE(end_time, update_time, create_time) >= DATE_SUB(CURDATE(), INTERVAL 14 DAY) "
+            + "GROUP BY ymd ORDER BY ymd")
+    List<Map<String, Object>> aggregateInOutByDay();
+}

--
Gitblit v1.9.1