From 5807fc22aba974b4ca85a8049ecd983673b0ca28 Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期一, 20 十月 2025 16:59:34 +0800
Subject: [PATCH] 1. 添加大屏接口 2. 任务站点确认修改

---
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/MonitorServiceImpl.java          |   71 +++++++
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/Constants.java                |  134 ++++++++++++++
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java              |    5 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/WebMvcConfig.java                      |   78 ++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/MonitorService.java                  |   10 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java        |   11 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseStockController.java |    4 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/MonitorService.java                   |   15 +
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/MonitorController.java             |   34 +++
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/utils/Http.java                               |   42 ++++
 rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java              |    1 
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MonitorController.java        |   85 +++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MonitorServiceImpl.java         |   17 +
 13 files changed, 502 insertions(+), 5 deletions(-)

diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/WebMvcConfig.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/WebMvcConfig.java
new file mode 100644
index 0000000..c663a60
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/WebMvcConfig.java
@@ -0,0 +1,78 @@
+package com.vincent.rsf.openApi.config;
+
+
+import com.vincent.rsf.openApi.entity.constant.Constants;
+import com.vincent.rsf.openApi.utils.Http;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.AsyncHandlerInterceptor;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * WebMvc閰嶇疆, 鎷︽埅鍣ㄣ�佽祫婧愭槧灏勭瓑閮藉湪姝ら厤缃�
+ *
+ * @author vincent
+ * @since 2019-06-12 10:11:16
+ */
+@Configuration
+public class WebMvcConfig implements WebMvcConfigurer {
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(getAsyncHandlerInterceptor())
+                .addPathPatterns("/**")
+                .excludePathPatterns("/swagger-resources/**", "/webjars/**","/erp/**", "/v2/**","/v3/**","/doc.html/**", "/swagger-ui.html/**");
+    }
+
+
+    @Bean
+    public AsyncHandlerInterceptor getAsyncHandlerInterceptor() {
+        return new AsyncHandlerInterceptor(){
+            @Override
+            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+                Http.cors(response);
+                return true;
+            }
+        };
+    }
+
+    @Override
+    public void addResourceHandlers(ResourceHandlerRegistry registry) {
+        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
+        registry.addResourceHandler("swagger-ui.html")
+                .addResourceLocations("classpath:/META-INF/resources/");
+        registry.addResourceHandler("doc.html")
+                .addResourceLocations("classpath:/META-INF/resources/");
+        registry.addResourceHandler("/webjars/**")
+                .addResourceLocations("classpath:/META-INF/resources/webjars/");
+    }
+
+
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        registry.addMapping("/**")
+                .allowedOriginPatterns("*")
+                .allowedHeaders("*")
+                .exposedHeaders(Constants.TOKEN_HEADER_NAME)
+                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH")
+                .allowCredentials(true)
+                .maxAge(3600);
+    }
+
+
+    public static void cors(HttpServletResponse response){
+        // 璺ㄥ煙璁剧疆
+        response.setHeader("Access-Control-Max-Age", "3600");
+        response.setHeader("Access-Control-Allow-Origin", "*");
+        response.setHeader("Access-Control-Allow-Methods", "*");
+        response.setHeader("Access-Control-Allow-Headers", "*");
+        response.setHeader("Access-Control-Expose-Headers", Constants.TOKEN_HEADER_NAME);
+    }
+
+}
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
new file mode 100644
index 0000000..084e62c
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/MonitorController.java
@@ -0,0 +1,34 @@
+package com.vincent.rsf.openApi.controller;
+
+import com.vincent.rsf.openApi.entity.dto.CommonResponse;
+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.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+
+/**
+ * 澶у睆
+ */
+@RestController
+@RequestMapping("/monitor")
+public class MonitorController {
+
+    @Autowired
+    private MonitorService monitorService;
+    /**
+     * 鑾峰彇鍑哄叆搴撴祦姘磋褰�
+     * @return
+     */
+    @PostMapping("/inOut/page")
+    @ApiOperation("鑾峰彇鍏ュ嚭搴撴祦姘磋褰�")
+    public CommonResponse getInOutHis(@RequestBody Map<String, Object> param) {
+        return monitorService.getInOutHistories(param);
+    }
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/Constants.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/Constants.java
new file mode 100644
index 0000000..0fe215b
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/Constants.java
@@ -0,0 +1,134 @@
+package com.vincent.rsf.openApi.entity.constant;
+
+/**
+ * 绯荤粺甯搁噺
+ * Created by vincent on 2019-10-29 15:55
+ */
+public class Constants {
+    /**
+     * 榛樿鎴愬姛鐮�
+     */
+    public static final int RESULT_OK_CODE = 0;
+
+    /**
+     * 榛樿澶辫触鐮�
+     */
+    public static final int RESULT_ERROR_CODE = 1;
+
+    /**
+     * 榛樿鎴愬姛淇℃伅
+     */
+    public static final String RESULT_OK_MSG = "Request success";
+
+    /**
+     * 榛樿澶辫触淇℃伅
+     */
+    public static final String RESULT_ERROR_MSG = "Internal server error!";
+
+    /**
+     * 鏃犳潈闄愰敊璇爜
+     */
+    public static final int UNAUTHORIZED_CODE = 403;
+
+    /**
+     * 鏃犳潈闄愭彁绀轰俊鎭�
+     */
+    public static final String UNAUTHORIZED_MSG = "No access right";
+
+    /**
+     * 鏈璇侀敊璇爜
+     */
+    public static final int UNAUTHENTICATED_CODE = 401;
+
+    /**
+     * 鏈璇佹彁绀轰俊鎭�
+     */
+    public static final String UNAUTHENTICATED_MSG = "Please log in first";
+
+    /**
+     * 鐧诲綍杩囨湡閿欒鐮�
+     */
+    public static final int TOKEN_EXPIRED_CODE = 401;
+
+    /**
+     * 鐧诲綍杩囨湡鎻愮ず淇℃伅
+     */
+    public static final String TOKEN_EXPIRED_MSG = "Login expired";
+
+    /**
+     * 闈炴硶token閿欒鐮�
+     */
+    public static final int BAD_CREDENTIALS_CODE = 401;
+
+    /**
+     * 闈炴硶token鎻愮ず淇℃伅
+     */
+    public static final String BAD_CREDENTIALS_MSG = "Please log out and log in again";
+
+    /**
+     * 琛ㄧず鍗囧簭鐨勫��
+     */
+    public static final String ORDER_ASC_VALUE = "asc";
+
+    /**
+     * 琛ㄧず闄嶅簭鐨勫��
+     */
+    public static final String ORDER_DESC_VALUE = "desc";
+
+    /**
+     * token閫氳繃header浼犻�掔殑鍚嶇О
+     */
+    public static final String TOKEN_HEADER_NAME = "Authorization";
+
+    /**
+     * token閫氳繃鍙傛暟浼犻�掔殑鍚嶇О
+     */
+    public static final String TOKEN_PARAM_NAME = "access_token";
+
+    /**
+     * token璁よ瘉绫诲瀷
+     */
+    public static final String TOKEN_TYPE = "Bearer";
+
+    /**
+     * 搴撳瓨鍑哄簱
+     */
+    public static final String TASK_TYPE_OUT_STOCK = "outStock";
+
+    /**
+     * 搴撳瓨鐩樼偣鍑哄簱
+     */
+    public static final String TASK_TYPE_OUT_CHECK = "check";
+
+    /**
+     * 鍗曟嵁鍑哄簱
+     */
+    public static final String TASK_TYPE_ORDER_OUT_STOCK = "OrderOutStock";
+
+    /**
+     * 娉㈡鍑哄簱
+     */
+    public static final String TASK_TYPE_WAVE_OUT_STOCK = "WaveOutStock";
+
+
+    /**
+     * 鎷f枡鍑哄簱
+     */
+    public static final String TASK_TYPE_OUT_PICK = "pick";
+
+    /**
+     * 鎺掑簭榛樿鍊�
+     */
+    public static final Integer TASK_SORT_DEFAULT_VALUE =  49;
+
+    /**
+     * 鎺掑簭鏈�澶у��
+     */
+    public static final Integer TASK_SORT_MAX_VALUE =  999;
+
+    /**
+     * 鎺掑簭鏈�灏忓��
+     */
+    public static final Integer TASK_SORT_MIN_VALUE =  0;
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java
index 1e109fe..381c93c 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java
@@ -7,10 +7,8 @@
 
     public static String callBack = "/rsf-server/wcs/receive/ex/msg";
 
-
     //璁㈠崟淇℃伅鏌ヨ
     public static String QUERY_ORDER_AND_DETLS = "/rsf-server/erp/query/order";
-
 
     //璁㈠崟淇℃伅淇敼/娣诲姞
     public static String MODIFY_ORDER_DETLS = "/rsf-server/order/sync/orders/update";
@@ -18,5 +16,8 @@
     //鍒犻櫎鍗曟嵁淇℃伅
     public static String ORDER_DEL = "/rsf-server/order/sync/orders/delete";
 
+    //鑾峰彇鍑哄叆搴撴祦姘�
+    public static String IN_OUT_HISTORIES = "/rsf-server/monitor/inOut/page";
+
 
 }
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/MonitorService.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/MonitorService.java
new file mode 100644
index 0000000..5c77ce9
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/MonitorService.java
@@ -0,0 +1,15 @@
+package com.vincent.rsf.openApi.service;
+
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.openApi.entity.dto.CommonResponse;
+
+import java.util.Map;
+
+public interface MonitorService {
+    /**
+     * 鑾峰彇鍑哄叆搴撳巻鍙�
+     * @param param
+     * @return
+     */
+    CommonResponse getInOutHistories(Map<String, Object> param);
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/MonitorServiceImpl.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/MonitorServiceImpl.java
new file mode 100644
index 0000000..724bc78
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/MonitorServiceImpl.java
@@ -0,0 +1,71 @@
+package com.vincent.rsf.openApi.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.cfg.CoercionAction;
+import com.fasterxml.jackson.databind.cfg.CoercionInputShape;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.openApi.config.PlatformProperties;
+import com.vincent.rsf.openApi.entity.constant.WmsConstant;
+import com.vincent.rsf.openApi.entity.dto.CommonResponse;
+import com.vincent.rsf.openApi.service.MonitorService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.*;
+
+@Slf4j
+@Service
+public class MonitorServiceImpl implements MonitorService {
+
+    @Autowired
+    private PlatformProperties.WmsApi wmsApi;
+
+    @Autowired
+    private RestTemplate restTemplate;
+    /**
+     * 鑾峰彇鍑哄叆搴撳巻鍙�
+     * @param params
+     * @return
+     */
+    @Override
+    public CommonResponse getInOutHistories(Map<String, Object> params) {
+        if (Objects.isNull(params)) {
+            throw new CoolException("璁㈠崟鍙蜂笉鑳戒负绌猴紒锛�");
+        }
+        /**WMS鍩虹閰嶇疆閾炬帴*/
+        String wmsUrl = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.IN_OUT_HISTORIES;
+        log.info("淇敼璁㈠崟淇℃伅鍙婄姸鎬侊細 {}锛� 璇锋眰鍙傛暟锛� {}", wmsUrl, JSONObject.toJSONString(params));
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("Content-Type", "application/json");
+        headers.add("api-version", "v2.0");
+
+        HttpEntity httpEntity = new HttpEntity(params, headers);
+        ResponseEntity<String> exchange = restTemplate.exchange(wmsUrl, HttpMethod.POST, httpEntity, String.class);
+        log.info("璁㈠崟淇敼杩斿洖缁撴灉锛� {}", exchange);
+        if (Objects.isNull(exchange.getBody())) {
+            throw new CoolException("鏌ヨ澶辫触锛侊紒");
+        } else {
+            ObjectMapper objectMapper = new ObjectMapper();
+            objectMapper.coercionConfigDefaults().setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
+            try {
+                CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
+                if (result.getCode() == 200) {
+                    return result;
+                } else {
+                    throw new CoolException("鏌ヨ澶辫触锛侊紒");
+                }
+            } catch (JsonProcessingException e) {
+                throw new CoolException(e.getMessage());
+            }
+        }
+    }
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/utils/Http.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/utils/Http.java
new file mode 100644
index 0000000..84fcf23
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/utils/Http.java
@@ -0,0 +1,42 @@
+package com.vincent.rsf.openApi.utils;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.openApi.entity.constant.Constants;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+
+/**
+ * Created by vincent on 2019-08-01
+ */
+public class Http {
+
+    public static void response(HttpServletResponse response, String baseRes){
+        response.setCharacterEncoding("utf-8");
+        response.setContentType("application/json; charset=utf-8");
+        try (PrintWriter out = response.getWriter()) {
+            R r = R.parse(baseRes);
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("total", "0");
+            jsonObject.put("record", "");
+            r.add(jsonObject);
+            out.print(JSON.toJSONString(r));
+            out.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void cors(HttpServletResponse response){
+        // 璺ㄥ煙璁剧疆
+        response.setHeader("Access-Control-Max-Age", "3600");
+        response.setHeader("Access-Control-Allow-Origin", "*");
+        response.setHeader("Access-Control-Allow-Methods", "*");
+        response.setHeader("Access-Control-Allow-Headers", "*");
+        response.setHeader("Access-Control-Expose-Headers", Constants.TOKEN_HEADER_NAME);
+    }
+
+}
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
new file mode 100644
index 0000000..2780bbc
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MonitorController.java
@@ -0,0 +1,85 @@
+package com.vincent.rsf.server.api.controller.pda;
+
+
+import com.alibaba.fastjson.JSONObject;
+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.service.MonitorService;
+import com.vincent.rsf.server.common.domain.BaseParam;
+import com.vincent.rsf.server.common.domain.PageParam;
+import com.vincent.rsf.server.common.utils.FieldsUtils;
+import com.vincent.rsf.server.manager.controller.params.WarehouseStockParam;
+import com.vincent.rsf.server.manager.entity.ViewStockManage;
+import com.vincent.rsf.server.manager.enums.ViewStockType;
+import com.vincent.rsf.server.manager.service.WarehouseStockService;
+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.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+
+/**
+ * 澶у睆
+ */
+@RestController
+@RequestMapping("/monitor")
+public class MonitorController extends BaseController {
+
+    @Autowired
+    private MonitorService monitorService;
+
+    @Autowired
+    private WarehouseStockService warehouseStockService;
+    /**
+     * 鑾峰彇鍑哄叆搴撴祦姘磋褰�
+     * @return
+     */
+    @PostMapping("/inOut/page")
+    @ApiOperation("鑾峰彇鍏ュ嚭搴撴祦姘磋褰�")
+    public R getInOutHis(@RequestBody Map<String, Object> param) {
+        if (Objects.isNull(param)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        BaseParam baseParam = buildParam(param, BaseParam.class);
+        PageParam<ViewStockManage, BaseParam> pageParam = new PageParam<>(baseParam, ViewStockManage.class);
+        WarehouseStockParam stockParam = JSONObject.parseObject(JSONObject.toJSONString(param), WarehouseStockParam.class);
+        String type = Objects.isNull(stockParam.getAggType()) ? ViewStockType.VIEW_STOCK_TYPE_MATNR.val : stockParam.getAggType();
+        ViewStockManage stock = stockParam.getStock();
+        QueryWrapper<ViewStockManage> wrapper = new QueryWrapper<>();
+
+        if (type.equals(ViewStockType.VIEW_STOCK_TYPE_SUPPLIER.val)) {
+            wrapper.groupBy("splr_id");
+        } else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_BATCH.val)) {
+            wrapper.groupBy("batch");
+        } else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_WAREHOUSE.val)) {
+            wrapper.groupBy("warehouse");
+        } else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_FIELDSINDEX.val)) {
+            wrapper.groupBy("fields_index");
+        } else {
+            wrapper.groupBy("matnr_id");
+        }
+
+        FieldsUtils.setFieldsFilters(wrapper, pageParam, ViewStockManage.class);
+
+        IPage<ViewStockManage> pageResult = warehouseStockService.pageByStock(pageParam, wrapper);
+        List<ViewStockManage> records = pageResult.getRecords();
+        for (ViewStockManage record : records) {
+            if (!Objects.isNull(record.getFieldsIndex())) {
+                Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex());
+                record.setExtendFields(fields);
+            }
+        }
+        pageResult.setRecords(records);
+
+        return R.ok(pageResult);
+    }
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MonitorService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MonitorService.java
new file mode 100644
index 0000000..4d0fea3
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MonitorService.java
@@ -0,0 +1,10 @@
+package com.vincent.rsf.server.api.service;
+
+import com.vincent.rsf.framework.common.R;
+
+import java.util.Map;
+
+public interface MonitorService {
+
+    R getInOutHistories(Map<String, Object> param);
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MonitorServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MonitorServiceImpl.java
new file mode 100644
index 0000000..d2ac10d
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MonitorServiceImpl.java
@@ -0,0 +1,17 @@
+package com.vincent.rsf.server.api.service.impl;
+
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.api.service.MonitorService;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+@Service
+public class MonitorServiceImpl implements MonitorService {
+
+
+    @Override
+    public R getInOutHistories(Map<String, Object> param) {
+        return R.ok();
+    }
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
index 44d67d6..ccfd0fc 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
@@ -53,6 +53,7 @@
             "/swagger-ui/**",
             "/ws/**",
             "/wcs/**",
+            "/monitor/**",
             "/mcp/**"
     };
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseStockController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseStockController.java
index 983ac11..aa8edf6 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseStockController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseStockController.java
@@ -11,7 +11,6 @@
 import com.vincent.rsf.server.manager.controller.params.WarehouseStockParam;
 import com.vincent.rsf.server.manager.entity.StockItem;
 import com.vincent.rsf.server.manager.entity.ViewStockManage;
-import com.vincent.rsf.server.manager.entity.WarehouseAreasItem;
 import com.vincent.rsf.server.manager.enums.ViewStockType;
 import com.vincent.rsf.server.manager.service.WarehouseStockService;
 import com.vincent.rsf.server.system.controller.BaseController;
@@ -36,8 +35,7 @@
     @Autowired
     private WarehouseStockService warehouseStockService;
 
-
-    @PreAuthorize("hasAuthority('manager:locItem:list')")
+//    @PreAuthorize("hasAuthority('manager:locItem:list')")
     @PostMapping("/page")
     public R page(@RequestBody Map<String, Object> param) {
         if (Objects.isNull(param)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 0524f20..ed192ce 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -347,6 +347,17 @@
             if (!this.save(task)) {
                 throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒");
             }
+            BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, deviceSite.getSite()));
+            if (Objects.isNull(station) || station.getUseStatus() != LocStsType.LOC_STS_TYPE_O.type) {
+                throw new CoolException("绔欑偣涓嶅瓨鍦ㄦ垨绔欑偣涓嶅浜庣┖搴撶姸鎬侊紒锛�");
+            }
+            station.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
+
+            if (basStationService.updateById(station)) {
+                 throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
+             }
+
+
             if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, task.getTargLoc())
                     .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type).set(Loc::getBarcode, pakin.getBarcode()))) {
                 throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒");

--
Gitblit v1.9.1