From 53e508d8a4c33447e4725a1ab744e2dfca3e11df Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期二, 03 九月 2024 08:59:40 +0800
Subject: [PATCH] 一楼反修入库修改

---
 src/main/java/com/zy/asrs/controller/OpenController.java |  495 +++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 372 insertions(+), 123 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 7edb05f..d3bef2b 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -1,22 +1,19 @@
 package com.zy.asrs.controller;
 
 import com.alibaba.fastjson.JSON;
-import com.core.common.*;
+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.DocType;
-import com.zy.asrs.entity.Mat;
-import com.zy.asrs.entity.Order;
-import com.zy.asrs.entity.OrderDetl;
-import com.zy.asrs.entity.param.OpenOrderPakinParam;
-import com.zy.asrs.service.*;
-import com.zy.common.model.DetlDto;
+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.*;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -25,43 +22,165 @@
 @Slf4j
 @RestController
 @RequestMapping("open/asrs")
-public class OpenController {
+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 OrderService orderService;
-    @Autowired
-    private OrderDetlService orderDetlService;
-    @Autowired
-    private SnowflakeIdWorker snowflakeIdWorker;
-    @Autowired
-    private DocTypeService docTypeService;
-    @Autowired
-    private MatService matService;
-    @Autowired
-    private LocDetlService locDetlService;
+    private OpenService openService;
 
-    private void auth(String appkey, Object obj) {
-        log.info("{}鎺ュ彛琚闂紒appkey:{},璇锋眰鏁版嵁锛歿}", "open/sensorType/list/auth/v1", appkey, JSON.toJSONString(obj));
-        if (Cools.isEmpty(appkey)) {
-            throw new CoolException("璁よ瘉澶辫触锛岃纭appkey鏃犺锛�");
-        }
-        if (!APP_KEY_LIST.contains(appkey)) {
-            throw new CoolException("璁よ瘉澶辫触锛岃纭appkey鏃犺锛�");
-        }
+    @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);
+        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("/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/new/default/v1")
-    @Transactional
-    public synchronized R orderCreate(@RequestHeader(required = false) String appkey,
-                                      @RequestBody OpenOrderPakinParam param) {
-        auth(appkey, param);
+    /*@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);
         }
@@ -74,104 +193,234 @@
         if (Cools.isEmpty(param.getOrderDetails())) {
             return R.error("鍗曟嵁鏄庣粏[orderDetails]涓嶈兘涓虹┖");
         }
-        Order order = orderService.selectByNo(param.getOrderNo());
-        if (!Cools.isEmpty(order)) {
-            return R.error(param.getOrderNo() + "鍗曟嵁宸插瓨鍦紝璇峰嬁閲嶅鎻愪氦");
-        }
-        DocType docType = docTypeService.selectOrAdd(param.getOrderType());
-        Date now = new Date();
-        // 鍗曟嵁涓绘。
-        order = new Order(
-                String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
-                param.getOrderNo(),    // 璁㈠崟缂栧彿
-                DateUtils.convert(now),    // 鍗曟嵁鏃ユ湡
-                docType.getDocId(),    // 鍗曟嵁绫诲瀷
-                null,    // 椤圭洰缂栧彿
-                null,    //
-                null,    // 璋冩嫧椤圭洰缂栧彿
-                null,    // 鍒濆绁ㄦ嵁鍙�
-                null,    // 绁ㄦ嵁鍙�
-                null,    // 瀹㈡埛缂栧彿
-                null,    // 瀹㈡埛
-                null,    // 鑱旂郴鏂瑰紡
-                null,    // 鎿嶄綔浜哄憳
-                null,    // 鍚堣閲戦
-                null,    // 浼樻儬鐜�
-                null,    // 浼樻儬閲戦
-                null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
-                null,    // 瀹炰粯閲戦
-                null,    // 浠樻绫诲瀷
-                null,    // 涓氬姟鍛�
-                null,    // 缁撶畻澶╂暟
-                null,    // 閭垂鏀粯绫诲瀷
-                null,    // 閭垂
-                null,    // 浠樻鏃堕棿
-                null,    // 鍙戣揣鏃堕棿
-                null,    // 鐗╂祦鍚嶇О
-                null,    // 鐗╂祦鍗曞彿
-                1L,    // 璁㈠崟鐘舵��
-                1,    // 鐘舵��
-                9527L,    // 娣诲姞浜哄憳
-                now,    // 娣诲姞鏃堕棿
-                9527L,    // 淇敼浜哄憳
-                now,    // 淇敼鏃堕棿
-                null    // 澶囨敞
-        );
-        if (!orderService.insert(order)) {
-            throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�");
-        }
-        // 鍗曟嵁鏄庣粏妗�
-        List<DetlDto> list = new ArrayList<>();
-        List<DetlDto> orderDetails = param.getOrderDetails();
-        for (DetlDto detail : orderDetails) {
-            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
-            if (DetlDto.has(list, dto)) {
-                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
-                assert detlDto != null;
-                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
-            } else {
-                list.add(dto);
-            }
-        }
-        for (DetlDto detlDto : list) {
-            Mat mat = matService.selectByMatnr(detlDto.getMatnr());
-            if (Cools.isEmpty(mat)) {
-                throw new CoolException(detlDto.getMatnr() + "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧");
-            }
-            OrderDetl orderDetl = new OrderDetl();
-            orderDetl.sync(mat);
-            orderDetl.setOrderId(order.getId());
-            orderDetl.setOrderNo(order.getOrderNo());
-            orderDetl.setCreateBy(9527L);
-            orderDetl.setCreateTime(now);
-            orderDetl.setUpdateBy(9527L);
-            orderDetl.setUpdateTime(now);
-            orderDetl.setStatus(1);
-            orderDetl.setQty(0.0D);
-            if (!orderDetlService.insert(orderDetl)) {
-                throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
-            }
-        }
+        openService.pakinOrderCreate(param);
         return R.ok();
-    }
+    }*/
 
     /**
      * 鍏ュ簱鍗曞洖鍐�
      */
-    @PostMapping("/order/pakin/complete/default/v1")
-    @Transactional
-    public synchronized R orderComplete(@RequestHeader(required = false) String appkey) {
-        auth(appkey, null);
+    /*@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) {
-        auth(appkey, null);
-        return R.ok(locDetlService.queryStockTotal());
+    /*@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