From a3a66aa959151e91f57be097b83f2a2715b502f5 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 31 三月 2025 13:11:36 +0800
Subject: [PATCH] 定时任务增加同步锁

---
 src/main/java/com/zy/asrs/controller/OpenController.java |  448 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 426 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index dda44f6..4fb2c64 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -1,48 +1,452 @@
 package com.zy.asrs.controller;
 
+import com.alibaba.fastjson.JSON;
+import com.core.annotations.AppAuth;
 import com.core.common.Cools;
 import com.core.common.R;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.param.OpenApiStockOutParam;
-import com.zy.asrs.service.LocDetlService;
+import com.zy.asrs.entity.param.*;
+import com.zy.asrs.service.OpenService;
+import com.zy.common.web.BaseController;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-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 org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
+import java.util.Map;
 
 /**
- * Created by vincent on 2021/3/19
+ * Created by vincent on 2022/4/8
  */
+@Slf4j
 @RestController
-@RequestMapping("/open/api")
-public class OpenController {
+@RequestMapping("open/asrs")
+public class OpenController extends BaseController {
+
+    private static final boolean auth = true;
+    public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{
+        add("ea1f0459efc02a79f046f982767939ae");
+    }};
 
     @Autowired
-    private LocDetlService locDetlService;
+    private OpenService openService;
 
-    @PostMapping("/stockOut")
-    @Transactional
-    public R stockOut(@RequestBody List<OpenApiStockOutParam> params){
-        if (!Cools.isEmpty(params)) {
-            for (OpenApiStockOutParam param : params) {
-                Double sumAnfme = Optional.ofNullable(locDetlService.getSumAnfme(param.getMatnr())).orElse(0.0D);
-                if (sumAnfme < param.getAnfme()) {
-                    throw new CoolException(param.getMatnr() + "鐗╂枡鏁伴噺涓嶈冻锛岀己璐ф暟閲忥細" + (param.getAnfme() - sumAnfme));
-                }
+    @PostMapping("/scrk")
+    @AppAuth(memo = "GWMS璋冪敤鐢熸垚鍏ュ簱宸ヤ綔妗�")
+    public synchronized R gwmsGenerateInventory(@RequestHeader(required = false) String appkey,
+                                                @RequestBody GwmsGenerateInventoryDto param,
+                                                HttpServletRequest request) {
+        auth(appkey, param, request);
+        return R.ok(openService.gwmsGenerateInventory(param));
+    }
 
+    @PostMapping("/fxprk")
+    @AppAuth(memo = "鍙嶄慨鍝佸叆搴�")
+    public synchronized R fxprk(@RequestHeader(required = false) String appkey,
+                                                @RequestBody FxprkParam param,
+                                                HttpServletRequest request) {
+        auth(appkey, param, request);
+        return R.ok(openService.fxprk(param));
+    }
 
+    @PostMapping("/kthl")
+    @AppAuth(memo = "绌烘墭鐩樺洖娴�(浜屾ゼ娴佸埌涓�妤�)")
+    public synchronized R kthl(@RequestHeader(required = false) String appkey,
+                                @RequestBody KthlParam param,
+                                HttpServletRequest request) {
+        auth(appkey, param, request);
+        return openService.kthl(param);
+    }
 
-            }
+    @PostMapping("/tb")
+    @AppAuth(memo = "涓�妤艰创鏍囪皟鐢�")
+    public synchronized R tb(@RequestHeader(required = false) String appkey,
+                               @RequestBody TbParam param,
+                               HttpServletRequest request) {
+        auth(appkey, param, request);
+        return openService.tb(param);
+    }
+
+    @PostMapping("/dd")
+    @AppAuth(memo = "涓�妤兼墦甯﹁皟鐢�")
+    public synchronized R dd(@RequestHeader(required = false) String appkey,
+                             @RequestBody TbParam param,
+                             HttpServletRequest request) {
+        auth(appkey, param, request);
+        return openService.dd(param);
+    }
+
+    @PostMapping("/zxrk")
+    @AppAuth(memo = "GWCS鍒拌揪鍫嗗灈鏈哄叆搴撶珯鐐硅姹俍WCS鎵ц")
+    public synchronized R crnExecute(@RequestHeader(required = false) String appkey,
+                                     @RequestBody CrnExecuteParam param,
+                                     HttpServletRequest request) {
+        auth(appkey, param, request);
+        return R.ok(openService.crnExecute(param));
+    }
+
+    @PostMapping("/ckrw")
+    @AppAuth(memo = "ZWMS鎺ユ敹MES涓嬪彂鍑哄簱浠诲姟")
+    public synchronized R zwmsOutLocWork(@RequestHeader(required = false) String appkey,
+                                         @RequestBody ZwmsOutLocWorkDto param,
+                                         HttpServletRequest request) {
+        auth(appkey, param, request);
+        if (Cools.isEmpty(param,param.getOrderNo(),param.getOrderType(),param.getGroups())) {
+            R.parse("鍙傛暟涓嶈兘涓虹┖");
         }
+        return openService.zwmsOutLocWork(param);
+    }
 
+    @PostMapping("/cxzk")
+    @AppAuth(memo = "鏍规嵁鍖呰缁勫彿鏌ヨ鍦ㄥ簱鏃堕棿-MES璋冪敤")
+    public synchronized R queryInLocTime(@RequestHeader(required = false) String appkey,
+                                         @RequestBody List<String> param,
+                                         HttpServletRequest request) {
+        auth(appkey, param, request);
+        return openService.queryInLocTime(param);
+    }
 
+    @PostMapping("/ckjgsb")
+    @AppAuth(memo = "璐х墿鍒拌揪鍑哄簱鍙d互鍚庯紝涓婃姤鍑哄簱缁撴灉")
+    public synchronized R outLocResultReport(@RequestHeader(required = false) String appkey,
+                                             @RequestBody GhjtApiParam param,
+                                             HttpServletRequest request) {
+        auth(appkey, param, request);
+        return R.ok(openService.outLocResultReport(param));
+    }
+
+    @PostMapping("/cpjck")
+    @AppAuth(memo = "鎷嗙洏鏈哄嚭搴撴帴鍙�")
+    public synchronized R emptyOutLoc(@RequestHeader(required = false) String appkey,
+                                      @RequestBody GhjtApiParam param,
+                                      HttpServletRequest request) {
+        auth(appkey, param, request);
+        return R.ok(openService.emptyOutLoc(param));
+    }
+
+    @PostMapping("/zpckdw")
+    @AppAuth(memo = "缁勭洏妗佹灦gwcs鍛婅瘔zwms璐х墿鍒颁綅锛寊mws鍛婅瘔gwcs鎬庝箞鎷�")
+    public synchronized R zphjDw(@RequestHeader(required = false) String appkey,
+                                 @RequestBody ZphjckdwParam param,
+                                 HttpServletRequest request) {
+        auth(appkey, param, request);
+        return openService.zphjDw(param);
+    }
+
+    @PostMapping("/cdwc")
+    @AppAuth(memo = "缁勭洏妗佹灦鎷嗗灈瀹屾垚gwcs璇锋眰zwms")
+    public synchronized R zphjCdwc(@RequestHeader(required = false) String appkey,
+                                   @RequestBody ZphjcdwcParam param,
+                                   HttpServletRequest request) {
+        auth(appkey, param, request);
+        return openService.zphjCdwc(param);
+    }
+
+    @PostMapping("/updateBarcode")
+    @AppAuth(memo = "鏇存柊搴撲綅绌烘墭鐩樻潯鐮�")
+    public synchronized R updateBarcode(@RequestHeader(required = false) String appkey,
+                                   HttpServletRequest request) {
+        auth(appkey, null, request);
+        openService.updateBarcode();
         return R.ok();
     }
 
+    @PostMapping("/prodCheck")
+    @AppAuth(memo = "浜у搧鍚堟牸鏍¢獙,EMS璋冪敤")
+    public synchronized R prodCheck(@RequestHeader(required = false) String appkey,
+                                    @RequestBody List<ProdCheckParam> param,
+                                        HttpServletRequest request) {
+        auth(appkey, param, request);
+        openService.prodCheck(param);
+        return R.ok();
+    }
+
+    @PostMapping("/xhd")
+    @AppAuth(memo = "鐩樼偣浣嶈姹備寒鐏�")
+    public synchronized R requestXhd(@RequestHeader(required = false) String appkey,
+                                    @RequestBody Map<String,Object> param,
+                                    HttpServletRequest request) {
+        auth(appkey, param, request);
+        if (Cools.isEmpty(param.get("barcode"))){
+            return R.parse("鏉$爜閿欒锛�" + param.get("barcode"));
+        }
+        return openService.requestXhd((String) param.get("barcode"));
+    }
+
+
+    @PostMapping("/kxlhcdwc")
+    @AppAuth(memo = "绌洪棽鐞嗚揣鎷嗗灈瀹屾垚")
+    public synchronized R kxlhCdwc(@RequestHeader(required = false) String appkey,
+                                   @RequestBody KxlhcdwcParam param,
+                                   HttpServletRequest request) {
+        auth(appkey, param, request);
+        return openService.kxlhCdwc(param);
+    }
+
+    /*@PostMapping("/order/matSync/default/v1")
+    @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾鎺ュ彛")
+    public synchronized R syncMatInfo(@RequestHeader(required = false) String appkey,
+                                      @RequestBody(required = false) MatSyncParam param,
+                                      HttpServletRequest request){
+        auth(appkey, param, request);
+        if (Cools.isEmpty(param)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        openService.syncMat(param);
+        return R.ok();
+    }*/
+
+    /**
+     * 娣诲姞鍏ュ簱鍗�
+     */
+    /*@PostMapping("/order/pakin/default/v1")
+    @AppAuth(memo = "娣诲姞璁㈠崟鍏ュ簱")
+    public synchronized R pakinOrderCreate(@RequestHeader(required = false) String appkey,
+                                           @RequestBody OpenOrderPakinParam param,
+                                           HttpServletRequest request) {
+        auth(appkey, param, request);
+        if (Cools.isEmpty(param)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        if (Cools.isEmpty(param.getOrderNo())) {
+            return R.error("鍗曟嵁缂栧彿[orderNo]涓嶈兘涓虹┖");
+        }
+        if (Cools.isEmpty(param.getOrderType())) {
+            return R.error("鍗曟嵁绫诲瀷[orderType]涓嶈兘涓虹┖");
+        }
+        if (Cools.isEmpty(param.getOrderDetails())) {
+            return R.error("鍗曟嵁鏄庣粏[orderDetails]涓嶈兘涓虹┖");
+        }
+        openService.pakinOrderCreate(param);
+        return R.ok();
+    }*/
+
+    /**
+     * 鍏ュ簱鍗曞洖鍐�
+     */
+    /*@PostMapping("/order/pakin/complete/default/v1")
+    public synchronized R orderPakinComplete(@RequestHeader(required = false) String appkey,
+                                             @RequestBody(required = false) OpenOrderCompleteParam param,
+                                             HttpServletRequest request) {
+        auth(appkey, param, request);
+        return R.ok().add(openService.pakinOrderComplete(param));
+    }*/
+
+    /**
+     * 娣诲姞鍑哄簱鍗�
+     */
+    /*@PostMapping("/order/pakout/default/v1")
+    @AppAuth(memo = "娣诲姞璁㈠崟鍑哄簱")
+    public synchronized R pakoutOrderCreate(@RequestHeader(required = false) String appkey,
+                                            @RequestBody OpenOrderPakoutParam param,
+                                            HttpServletRequest request) {
+        auth(appkey, param, request);
+        if (Cools.isEmpty(param)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        if (Cools.isEmpty(param.getLgort())) {
+            return R.error("鍗曟嵁缂栧彿[lgort]涓嶈兘涓虹┖");
+        }
+        if (!param.getLgort().equals("5006")) {
+            return R.ok();
+        }
+        if (Cools.isEmpty(param.getOrderNo())) {
+            return R.error("鍗曟嵁缂栧彿[orderNo]涓嶈兘涓虹┖");
+        }
+        if (Cools.isEmpty(param.getOrderType())) {
+            return R.error("鍗曟嵁绫诲瀷[orderType]涓嶈兘涓虹┖");
+        }
+        if (Cools.isEmpty(param.getOrderDetails())) {
+            return R.error("鍗曟嵁鏄庣粏[orderDetails]涓嶈兘涓虹┖");
+        }
+        openService.pakoutOrderCreate(param);
+        return R.ok();
+    }*/
+
+    /**
+     * 鍑哄簱鍗曞洖鍐�
+     */
+    /*@PostMapping("/order/pakout/complete/default/v1")
+    public synchronized R orderPakoutComplete(@RequestHeader(required = false) String appkey,
+                                              @RequestBody(required = false) OpenOrderCompleteParam param,
+                                              HttpServletRequest request) {
+        auth(appkey, param, request);
+        return R.ok().add(openService.pakoutOrderComplete(param));
+    }*/
+
+
+    /**
+     * 搴撳瓨缁熻
+     */
+    /*@RequestMapping("/stock/default/v1")
+    public R queryStock(@RequestHeader(required = false) String appkey,
+                        HttpServletRequest request) {
+        auth(appkey, null, request);
+        return R.ok().add(openService.queryStock());
+    }*/
+
+    private void auth(String appkey, Object obj, HttpServletRequest request) {
+        log.info("{}鎺ュ彛琚闂紱appkey:{}锛涜姹傛暟鎹細{}", "open/sensorType/list/auth/v1", appkey, JSON.toJSONString(obj));
+        request.setAttribute("cache", obj);
+        if (!auth) {
+            return;
+        }
+        if (Cools.isEmpty(appkey)) {
+            throw new CoolException("璁よ瘉澶辫触锛岃纭appkey鏃犺锛�");
+        }
+        if (!APP_KEY_LIST.contains(appkey)) {
+            throw new CoolException("璁よ瘉澶辫触锛岃纭appkey鏃犺锛�");
+        }
+    }
+
+
+//    @PostMapping("/cpjck")
+//    @AppAuth(memo = "鐗╂枡淇℃伅鑾峰彇")
+//    public synchronized R emptyOutLoc(@RequestHeader(required = false) String appkey,
+//                                      @RequestBody GhjtApiParam param,
+//                                      HttpServletRequest request) {
+//        auth(appkey, param, request);
+//        return R.ok(openService.emptyOutLoc(param));
+//    }
+
+
+    /*public static void main(String[] args) {
+        // 1
+        System.out.println("======================================");
+        OpenOrderPakinParam param = new OpenOrderPakinParam();
+        param.setOrderNo(String.valueOf(new SnowflakeIdWorker().nextId()));
+        param.setOrderType("鎵撳寘涓婄嚎鍗�");
+        param.setOrderTime(DateUtils.convert(new Date()));
+        List<DetlDto> orderDetails = new ArrayList<>();
+        param.setOrderDetails(orderDetails);
+        for (int i = 0; i < 3; i++) {
+            DetlDto detlDto = new DetlDto();
+            switch (i) {
+                case 0:
+                    detlDto.setMatnr("MDH020030530");
+                    detlDto.setBatch("500");
+                    detlDto.setAnfme(18.0);
+                    break;
+                case 1:
+                    detlDto.setMatnr("MDH020016416");
+                    detlDto.setBatch("500");
+                    detlDto.setAnfme(32.0);
+                    break;
+                case 2:
+                    detlDto.setMatnr("LSH90152025");
+                    detlDto.setAnfme(50.0);
+                    break;
+                default:
+                    break;
+            }
+            orderDetails.add(detlDto);
+        }
+        System.out.println(JSON.toJSONString(param));
+        // 2
+        System.out.println("======================================");
+        OpenOrderCompleteParam param1 = new OpenOrderCompleteParam();
+        param1.setOrderNo("963001846497017856");
+        System.out.println(JSON.toJSONString(param1));
+    }*/
+
+
+
+    /*...........................寰愬伐姹変簯..............浠ヤ笅.............涓婇ザ姹熼摐...........................*/
+    /*............................Created by Monkey D. Luffy on 2023.07.19.............................*/
+
+    /**
+     * 璐存爣鏈虹敵璇疯幏鍙栬揣鐗╀俊鎭�
+     */
+    @PostMapping("/labeller/mat/auth/v1")
+    @AppAuth(memo = "璐存爣鏈虹敵璇疯幏鍙栬揣鐗╀俊鎭�") //old闇�瑕佷慨鏀�
+    public synchronized R labellerMat(@RequestHeader(required = false) String appkey,
+                                      @RequestBody LabellerMatParam param,
+                                      HttpServletRequest request) {
+        auth(appkey, param, request);
+        return R.ok(openService.labellerMat(param));
+    }
+
+    /**
+     * 璐存爣鏈鸿创鏍囧畬鎴�
+     */
+    @PostMapping("/labeller/complete/auth/v1")
+    @AppAuth(memo = "璐存爣鏈鸿创鏍囧畬鎴�") //old闇�瑕佷慨鏀�
+    public synchronized R labellerComplete(@RequestHeader(required = false) String appkey,
+                                           @RequestBody LabellerCompleteParam param,
+                                           HttpServletRequest request) {
+        auth(appkey, param, request);
+        openService.labellerComplete(param);
+        return R.ok();
+    }
+
+    /**
+     * 涓帶(2妤�)锛氱爜鍨涘畬鎴愪笅鍙戝叆搴撲俊鎭�
+     */
+    @PostMapping("/palletizing/complete/auth/v1")
+    @AppAuth(memo = "涓帶(2妤�)锛氱爜鍨涘畬鎴愪笅鍙戝叆搴撲俊鎭�")
+    public synchronized R PalletizingCompleteTwoFloorParam(@RequestHeader(required = false) String appkey,
+                                           @RequestBody PalletizingCompleteTwoFloorParam param,
+                                           HttpServletRequest request) {
+        auth(appkey, param, request);
+        openService.PalletizingCompleteTwoFloorParam(param);
+        return R.ok(param);
+    }
+
+    /**
+     * 鏉剧洓(1妤�)锛氱爜鍨涘畬鎴愪笅鍙戝叆搴撲俊鎭�
+     */
+    @PostMapping("/palletizing/complete/auth/v2")
+    @AppAuth(memo = "鏉剧洓(1妤�)锛氱爜鍨涘畬鎴愪笅鍙戠‘璁や俊鍙�")
+    public synchronized R palletizingCompleteS(@RequestHeader(required = false) String appkey,
+                                              @RequestBody PalletizingCompleteParam param,
+                                              HttpServletRequest request) {
+        auth(appkey, param, request);
+        openService.palletizingCompleteS(param);
+        return R.ok();
+    }
+
+    /**
+     * 涓帶锛氬嚭搴撳畬鎴愭湀鍙扮浉鍏�
+     */
+    @PostMapping("/balcony/complete/auth/v1")
+    @AppAuth(memo = "涓帶锛氬嚭搴撳畬鎴愭湀鍙扮浉鍏�") //old闇�瑕佷慨鏀�
+    public synchronized R balconyComplete(@RequestHeader(required = false) String appkey,
+                                              @RequestBody LabellerMatParam param,
+                                              HttpServletRequest request) {
+        auth(appkey, param, request);
+        openService.balconyComplete(param);
+        return R.ok(param);
+    }
+
+
+    /**
+     * 妗佹灦涓婁綅杞欢锛氬崟娆℃媶鍨涘畬鎴愰�氱煡
+     */
+    @PostMapping("/single/unstacking/complete/auth/v1")
+    @AppAuth(memo = "妗佹灦涓婁綅杞欢锛氬崟娆℃媶鍨涘畬鎴愰�氱煡")
+    public synchronized R singleUnstackingComplete(@RequestHeader(required = false) String appkey,
+                                            @RequestBody SingleUnstackingCompleteParam param,
+                                            HttpServletRequest request) {
+        auth(appkey, param, request);
+        openService.singleUnstackingComplete(param);
+        return R.ok(param);
+    }
+
+    /**
+     * 妗佹灦涓婁綅杞欢锛氬崟鎵樻媶鍨涘畬鎴愰�氱煡
+     */
+    @PostMapping("/single/mount/unstacking/complete/auth/v1")
+    @AppAuth(memo = "妗佹灦涓婁綅杞欢锛氬崟鎵樻媶鍨涘畬鎴愰�氱煡")
+    public synchronized R singleMountUnstackingComplete(@RequestHeader(required = false) String appkey,
+                                            @RequestBody SingleMountUnstackingCompleteParam param,
+                                            HttpServletRequest request) {
+        auth(appkey, param, request);
+        openService.singleMountUnstackingComplete(param);
+        return R.ok(param);
+    }
+
+    /*...........................涓婇ザ姹熼摐..............浠ヤ笂.............寰愬伐姹変簯...........................*/
 
 }

--
Gitblit v1.9.1