From 5e2db58fe16732b3a9d30f0476e9c4c0c8fcab02 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期二, 30 一月 2024 16:32:14 +0800
Subject: [PATCH] # 入库流程

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  447 ++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 262 insertions(+), 185 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 0b0eabe..ccfc32e 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -41,7 +41,6 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -94,6 +93,8 @@
 
     @Value("${wms.url}")
     private String wmsUrl;
+    @Value("${wms.inboundTaskApplyPath}")
+    private String inboundTaskApplyPath;
     @Value("${wms.movePath}")
     private String movePath;
 
@@ -182,78 +183,117 @@
                     }
                     String barcode = barcodeThread.getBarcode();
                     if(!Cools.isEmpty(barcode)) {
-                        StaDescService staDescService = SpringUtils.getBean(StaDescService.class);
-
-                        ToWmsDTO toWmsDTO = new ToWmsDTO();
-                        Map<String, Object> map = new HashMap<>();
-                        map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2");
-                        List<Integer> list = openServiceImpl.getInEnableRoadway();
-                        TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", barcode));
-
-                        if (Cools.isEmpty(taskWrk)){
+                        // 璇锋眰wms鎺ュ彛锛岃幏鍙栧伐浣滃彿鍜岀洰鏍囧簱浣�
+                        ToWmsDTO toWmsDTO = new ToWmsDTO(barcode,staProtocol.getSiteId());
+                        String response;
+                        try {
+                            response = new HttpHandler.Builder()
+                                    .setHeaders(null)
+                                    .setUri(wmsUrl)
+                                    .setPath(inboundTaskApplyPath)
+                                    .setJson(JSON.toJSONString(toWmsDTO))
+                                    .build()
+                                    .doPost();
+                        }catch (Exception e){
+                            log.error("wms閫氳澶辫触,"+e.getMessage());
                             continue;
                         }
-                        //StaDesc staDesc1 = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("stn_no",inSta.getBackSta()));
-                        if (taskWrk.getTargetPoint() != null && taskWrk.getStartPoint() != null){
-                            if ( taskWrk.getWrkNo() != null && taskWrk.getWrkNo().shortValue() == workNo ){
-                                continue;
-                            }
-                            //鑾峰彇鍫嗗灈鏈虹珯鐐�
-                            StaDesc staDesc = new StaDesc();
-                            if (devp.getId() <= 1){
-                                staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
-                                        .eq("crn_no", taskWrk.getCrnNo()).eq("type_no",1).lt("stn_no", 200));
-                            }else {
-                                staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
-                                        .eq("crn_no", taskWrk.getCrnNo()).eq("type_no",1).lt("stn_no", 400).ge("stn_no", 250));
-                            }
-                            staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
-                            staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
-                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol));
-                            Thread.sleep(500);
-                        }else {
-                            //TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo());
-                            toWmsDTO.setWarehouseId("1688469798893297665");
-                            toWmsDTO.setContainerCode(barcode);
-                            toWmsDTO.setApplyType("TUNNEL_LOCATION");
-                            toWmsDTO.setTaskTunnel(taskWrk.getCrnNo());
-                            toWmsDTO.setCanInboundTunnels(list);
-                            String response = null;
-                            try {
-                                response = new HttpHandler.Builder()
-                                        .setHeaders(map)
-                                        .setUri(wmsUrl)
-                                        .setPath("wcsManager/wcsInterface/inboundTaskApply")
-                                        .setJson(JSON.toJSONString(toWmsDTO))
-                                        .build()
-                                        .doPost();
-                            }catch (Exception e){
-                                log.error("wms閫氳澶辫触,"+e.getMessage());
-                                continue;
-                            }
-                            apiLogService.save("wms璇锋眰鍏ュ簱璐т綅鎺ュ彛"
-                                    ,wmsUrl+"wcsManager/wcsInterface/inboundTaskApply"
-                                    ,null
-                                    ,"127.0.0.1"
-                                    ,JSON.toJSONString(toWmsDTO)
-                                    ,response
-                                    ,true
-                            );
-                            JSONObject jsonObject = JSON.parseObject(response);
-                            if (jsonObject.getInteger("code").equals(200)) {
-                                GetWmsDto getWmsDto = JSON.parseObject(jsonObject.get("data").toString(), GetWmsDto.class);
-                                taskWrk.setOriginTargetPoint(getWmsDto.getTargetLocationCode());
-                                taskWrk.setTargetPoint(Utils.getWcsLocNo(getWmsDto.getTargetLocationCode()));
-                                taskWrk.setStartPoint(String.valueOf(inSta.getBackSta()));
-                                if (!taskWrkService.updateById(taskWrk)){
-                                    log.error("淇濆瓨wms搴撲綅鍙峰け璐�");
+
+                        JSONObject jsonObject = JSON.parseObject(response);
+                        if (jsonObject.getInteger("code").equals(200) && !Cools.isEmpty(jsonObject.get("data").toString())) {
+                            GetWmsDto getWmsDto = JSON.parseObject(jsonObject.get("data").toString(), GetWmsDto.class);
+                            // 鍒涙柊涓�涓叆搴撳伐浣滄。
+                            TaskWrk taskWrk = taskWrkService.selectByTaskNo(getWmsDto.getTaskNo());
+                            if(Cools.isEmpty(taskWrk)) {
+                                taskWrk = createTask(getWmsDto,staProtocol.getStaNo().intValue());
+                                if (Cools.isEmpty(taskWrk)){
+                                    log.error("搴撲綅寮傚父锛屽簱浣嶅彿锛歿}", getWmsDto.getTargetLocationCode());
+                                }else {
+                                    taskWrkService.insert(taskWrk);
+                                    StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+                                            .eq("crn_no", taskWrk.getCrnNo()).eq("type_no",1).eq("stn_no",staProtocol.getStaNo().intValue()));
+                                    staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+                                    staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
+                                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                 }
-
-                            }else {
-                                log.error("wms閫氳澶辫触,"+jsonObject.get("msg"));
-
                             }
+
+                        }else {
+                            continue;
                         }
+
+//                        StaDescService staDescService = SpringUtils.getBean(StaDescService.class);
+//
+//                        ToWmsDTO toWmsDTO = new ToWmsDTO();
+//                        Map<String, Object> map = new HashMap<>();
+//                        map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2");
+//                        List<Integer> list = openServiceImpl.getInEnableRoadway();
+//                        TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", barcode));
+//
+//                        if (Cools.isEmpty(taskWrk)){
+//                            continue;
+//                        }
+//                        //StaDesc staDesc1 = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("stn_no",inSta.getBackSta()));
+//                        if (taskWrk.getTargetPoint() != null && taskWrk.getStartPoint() != null){
+//                            if ( taskWrk.getWrkNo() != null && taskWrk.getWrkNo().shortValue() == workNo ){
+//                                continue;
+//                            }
+//                            //鑾峰彇鍫嗗灈鏈虹珯鐐�
+//                            StaDesc staDesc = new StaDesc();
+//                            if (devp.getId() <= 1){
+//                                staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+//                                        .eq("crn_no", taskWrk.getCrnNo()).eq("type_no",1).lt("stn_no", 200));
+//                            }else {
+//                                staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+//                                        .eq("crn_no", taskWrk.getCrnNo()).eq("type_no",1).lt("stn_no", 400).ge("stn_no", 250));
+//                            }
+//                            staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+//                            staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
+//                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol));
+//                            Thread.sleep(500);
+//                        }else {
+//                            //TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo());
+//                            toWmsDTO.setWarehouseId("1688469798893297665");
+//                            toWmsDTO.setContainerCode(barcode);
+//                            toWmsDTO.setApplyType("TUNNEL_LOCATION");
+//                            toWmsDTO.setTaskTunnel(taskWrk.getCrnNo());
+//                            toWmsDTO.setCanInboundTunnels(list);
+//                            String response = null;
+//                            try {
+//                                response = new HttpHandler.Builder()
+//                                        .setHeaders(map)
+//                                        .setUri(wmsUrl)
+//                                        .setPath(inboundTaskApplyPath)
+//                                        .setJson(JSON.toJSONString(toWmsDTO))
+//                                        .build()
+//                                        .doPost();
+//                            }catch (Exception e){
+//                                log.error("wms閫氳澶辫触,"+e.getMessage());
+//                                continue;
+//                            }
+//                            apiLogService.save("wms璇锋眰鍏ュ簱璐т綅鎺ュ彛"
+//                                    ,wmsUrl+"wcsManager/wcsInterface/inboundTaskApply"
+//                                    ,null
+//                                    ,"127.0.0.1"
+//                                    ,JSON.toJSONString(toWmsDTO)
+//                                    ,response
+//                                    ,true
+//                            );
+//                            JSONObject jsonObject = JSON.parseObject(response);
+//                            if (jsonObject.getInteger("code").equals(200)) {
+//                                GetWmsDto getWmsDto = JSON.parseObject(jsonObject.get("data").toString(), GetWmsDto.class);
+//                                taskWrk.setOriginTargetPoint(getWmsDto.getTargetLocationCode());
+//                                taskWrk.setTargetPoint(Utils.getWcsLocNo(getWmsDto.getTargetLocationCode()));
+//                                taskWrk.setStartPoint(String.valueOf(inSta.getBackSta()));
+//                                if (!taskWrkService.updateById(taskWrk)){
+//                                    log.error("淇濆瓨wms搴撲綅鍙峰け璐�");
+//                                }
+//
+//                            }else {
+//                                log.error("wms閫氳澶辫触,"+jsonObject.get("msg"));
+//
+//                            }
+//                        }
 
                     }
                 }
@@ -267,7 +307,6 @@
     /**
      * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
      */
-    @Async
     public void crnStnToOutStn() {
         for (CrnSlave crnSlave : slaveProperties.getCrn()) {
             // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
@@ -423,51 +462,17 @@
                     continue;
                 }
 
-                //鍙栧嚭鍛戒护
-                List<CommandInfo> commandInfos = commandInfoService.selectByTaskNo(taskWrk.getTaskNo());
-                Integer commandStep = taskWrk.getCommandStep();
-                if (commandInfos.isEmpty()) {
-                    continue;//鍛戒护绌�
-                }
-                CommandInfo commandInfo = commandInfos.get(commandStep);
-                CommandPackage commandPackage = JSON.parseObject(commandInfo.getCommand(), CommandPackage.class);//鍙栧嚭鍛戒护鎶ユ枃
-                CrnCommand crnCommand = JSON.parseObject(commandPackage.getCommand().toString(), CrnCommand.class);
-
-                if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
-                    log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
-                } else {
-                    // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
-                    Date now = new Date();
-                    taskWrk.setWrkSts(3);
-                    taskWrk.setModiTime(now);
-                    if (taskWrkMapper.updateById(taskWrk) == 0) {
-                        log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
-                    }
-                    //寮�濮嬭繍琛�
-                    String response = CrnStartRunning(taskWrk);
-                    JSONObject jsonObject = JSON.parseObject(response);
-                    if (jsonObject.getInteger("code").equals(200)) {
-
-                    }else {
-                        log.error("鍏ュ簱寮�濮嬭繍琛岄�氳澶辫触,"+jsonObject.get("msg"));
-
-                    }
-                }
-
-//                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//                CrnCommand crnCommand = new CrnCommand();
-//                crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-//                crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-//                crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-//                crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-//                crnCommand.setSourcePosX(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
-//                crnCommand.setSourcePosY(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
-//                crnCommand.setSourcePosZ(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
-//                crnCommand.setDestinationPosX(Utils.getBayShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅鍒�
-//                crnCommand.setDestinationPosY(Utils.getLevShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅灞�
-//                crnCommand.setDestinationPosZ(Utils.getRowShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅鎺�
-//                crnCommand.setCommand((short)1);
-//                if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
+//                //鍙栧嚭鍛戒护
+//                List<CommandInfo> commandInfos = commandInfoService.selectByTaskNo(taskWrk.getTaskNo());
+//                Integer commandStep = taskWrk.getCommandStep();
+//                if (commandInfos.isEmpty()) {
+//                    continue;//鍛戒护绌�
+//                }
+//                CommandInfo commandInfo = commandInfos.get(commandStep);
+//                CommandPackage commandPackage = JSON.parseObject(commandInfo.getCommand(), CommandPackage.class);//鍙栧嚭鍛戒护鎶ユ枃
+//                CrnCommand crnCommand = JSON.parseObject(commandPackage.getCommand().toString(), CrnCommand.class);
+//
+//                if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
 //                    log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
 //                } else {
 //                    // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
@@ -477,7 +482,41 @@
 //                    if (taskWrkMapper.updateById(taskWrk) == 0) {
 //                        log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
 //                    }
+//                    //寮�濮嬭繍琛�
+//                    String response = CrnStartRunning(taskWrk);
+//                    JSONObject jsonObject = JSON.parseObject(response);
+//                    if (jsonObject.getInteger("code").equals(200)) {
+//
+//                    }else {
+//                        log.error("鍏ュ簱寮�濮嬭繍琛岄�氳澶辫触,"+jsonObject.get("msg"));
+//
+//                    }
 //                }
+
+                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                CrnCommand crnCommand = new CrnCommand();
+                crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                crnCommand.setSourcePosX(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
+                crnCommand.setSourcePosY(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
+                crnCommand.setSourcePosZ(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+                crnCommand.setDestinationPosX(Utils.getBayShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅鍒�
+                crnCommand.setDestinationPosY(Utils.getLevShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅灞�
+                crnCommand.setDestinationPosZ(Utils.getRowShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅鎺�
+                crnCommand.setCommand((short)1);
+                if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
+                    log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
+                } else {
+                    // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
+                    Date now = new Date();
+                    taskWrk.setWrkSts(3);
+                    taskWrk.setModiTime(now);
+                    if (taskWrkMapper.updateById(taskWrk) == 0) {
+                        log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
+                    }
+                }
             }
 
            // return;
@@ -741,100 +780,97 @@
     /**
      * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
      */
-    @Async
-    public void storeFinished() {
-        for (CrnSlave crn : slaveProperties.getCrn()) {
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-            if (crnProtocol == null) { continue; }
-
-            //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
-            if (crnProtocol.getTaskFinish() == 0 && crnProtocol.statusType == CrnStatusType.HANDLING_COMPLETED && crnProtocol.getTaskNo() != 0) {
-                //鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
-                TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorking(crn.getId(),crnProtocol.getTaskNo().intValue());
-                if (Cools.isEmpty(taskWrk)) {
-//                    log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
-                    continue;
-                }
-
-                //鑾峰彇鎸囦护ID
-                Integer commandId = crnProtocol.getCommandId();
-                CommandInfo commandInfo = new CommandInfo();
-                if (Cools.isEmpty(commandId)){
-                    commandInfo = commandInfoService.selectOne(new EntityWrapper<CommandInfo>()
-                            .eq("wrk_no",crnProtocol.getTaskNo())
-                            .eq("device","Crn"));
-                }else {
-                    commandInfo = commandInfoService.selectById(commandId);
-                }
-
-
-                if (commandInfo == null) {
-                    //鎸囦护涓嶅瓨鍦�
-                    continue;
-                }
-                if (commandInfo.getCommandStatus() == 3){
-                    continue;
-                }
-                commandInfo.setCommandStatus(CommandStatusType.COMPLETE.id);//鎸囦护瀹屾垚
-                commandInfo.setCompleteTime(new Date());//鎸囦护瀹屾垚鏃堕棿
-                if (commandInfoService.updateById(commandInfo)) {//淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
-                    // 鍫嗗灈鏈哄浣�
-                    crnThread.setResetFlag(true);
-                }
-            }
-        }
-    }
-
-//    /**
-//     * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
-//     */
-//    @Async
 //    public void storeFinished() {
 //        for (CrnSlave crn : slaveProperties.getCrn()) {
 //            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
 //            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
 //            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
 //            if (crnProtocol == null) { continue; }
+//
 //            //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
 //            if (crnProtocol.getTaskFinish() == 0 && crnProtocol.statusType == CrnStatusType.HANDLING_COMPLETED && crnProtocol.getTaskNo() != 0) {
-//                // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
-//                TaskWrk taskWrk = taskWrkMapper.selectCrnNoWorking(crn.getId(),crnProtocol.getTaskNo().intValue());
+//                //鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
+//                TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorking(crn.getId(),crnProtocol.getTaskNo().intValue());
 //                if (Cools.isEmpty(taskWrk)) {
-//                    log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+////                    log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
 //                    continue;
 //                }
-//                // 鍏ュ簱 + 搴撲綅杞Щ  ==> 4.鍏ュ簱瀹屾垚
-//                if ((taskWrk.getWrkSts() == 3 && taskWrk.getIoType() == 1) || (taskWrk.getWrkSts() == 12 && taskWrk.getIoType() == 3)) {
-//                    taskWrk.setWrkSts(4);
-//                } else {
+//
+//                //鑾峰彇鎸囦护ID
+//                Integer commandId = crnProtocol.getCommandId();
+//                CommandInfo commandInfo = new CommandInfo();
+//                if (Cools.isEmpty(commandId)){
+//                    commandInfo = commandInfoService.selectOne(new EntityWrapper<CommandInfo>()
+//                            .eq("wrk_no",crnProtocol.getTaskNo())
+//                            .eq("device","Crn"));
+//                }else {
+//                    commandInfo = commandInfoService.selectById(commandId);
+//                }
+//
+//
+//                if (commandInfo == null) {
+//                    //鎸囦护涓嶅瓨鍦�
 //                    continue;
 //                }
-//                Date now = new Date();
-//                taskWrk.setModiTime(now);
-//                Integer integerTaskWrk = taskWrkMapper.updateById(taskWrk);
-//                // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
-//                if (integerTaskWrk > 0) {
+//                if (commandInfo.getCommandStatus() == 3){
+//                    continue;
+//                }
+//                commandInfo.setCommandStatus(CommandStatusType.COMPLETE.id);//鎸囦护瀹屾垚
+//                commandInfo.setCompleteTime(new Date());//鎸囦护瀹屾垚鏃堕棿
+//                if (commandInfoService.updateById(commandInfo)) {//淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
 //                    // 鍫嗗灈鏈哄浣�
 //                    crnThread.setResetFlag(true);
-//
-//                    //鏇存柊搴撲綅鐘舵��
-//                    LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
-//                    locMast.setLocSts("F");//F.鍦ㄥ簱
-//                    locMast.setBarcode(taskWrk.getBarcode());//鎵樼洏鐮�
-//                    locMast.setModiTime(now);
-//                    locMast.setModiUser(9999L);
-//                    locMastService.updateById(locMast);
 //                }
 //            }
 //        }
 //    }
 
     /**
+     * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
+     */
+    public void storeFinished() {
+        for (CrnSlave crn : slaveProperties.getCrn()) {
+            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+            if (crnProtocol == null) { continue; }
+            //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
+            if (crnProtocol.getTaskFinish() == 0 && crnProtocol.statusType == CrnStatusType.HANDLING_COMPLETED && crnProtocol.getTaskNo() != 0) {
+                // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
+                TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorking(crn.getId(),crnProtocol.getTaskNo().intValue());
+                if (Cools.isEmpty(taskWrk)) {
+                    log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+                    continue;
+                }
+                // 鍏ュ簱 + 搴撲綅杞Щ  ==> 4.鍏ュ簱瀹屾垚
+                if ((taskWrk.getWrkSts() == 3 && taskWrk.getIoType() == 1) || (taskWrk.getWrkSts() == 12 && taskWrk.getIoType() == 3)) {
+                    taskWrk.setWrkSts(4);
+                } else {
+                    continue;
+                }
+                Date now = new Date();
+                taskWrk.setModiTime(now);
+                Integer integerTaskWrk = taskWrkMapper.updateById(taskWrk);
+                // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+                if (integerTaskWrk > 0) {
+                    // 鍫嗗灈鏈哄浣�
+                    crnThread.setResetFlag(true);
+
+                    //鏇存柊搴撲綅鐘舵��
+                    LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
+                    locMast.setLocSts("F");//F.鍦ㄥ簱
+                    locMast.setBarcode(taskWrk.getBarcode());//鎵樼洏鐮�
+                    locMast.setModiTime(now);
+                    locMast.setModiUser(9999L);
+                    locMastService.updateById(locMast);
+                }
+            }
+        }
+    }
+
+    /**
      * 鍫嗗灈鏈哄紓甯镐俊鎭褰�
      */
-    @Async
     public void recCrnErr(){
         Date now = new Date();
         for (CrnSlave crn : slaveProperties.getCrn()) {
@@ -1085,5 +1121,46 @@
         return response;
     }
 
+    private TaskWrk createTask(GetWmsDto dto, Integer staNo){
+        String wcsLocNo = Utils.getWcsLocNo(dto.getTargetLocationCode());
+        if(Cools.isEmpty(wcsLocNo)){
+            return null;
+        }
+        Date now = new Date();
+        TaskWrk taskWrk = new TaskWrk();
+        taskWrk.setTaskNo(dto.getTaskNo());//浠诲姟鍙�
+        taskWrk.setStatus(TaskStatusType.RECEIVE.id);//浠诲姟鐘舵�侊細鎺ユ敹
+        taskWrk.setCreateTime(now);
+        taskWrk.setIoType(1);//浠诲姟绫诲瀷
+        taskWrk.setIoPri(Cools.isEmpty(dto.getTaskPriority()) ? 300 : Integer.parseInt(dto.getTaskPriority()));//浼樺厛绾�
+        taskWrk.setBarcode(dto.getContainerCode());//鏉$爜
+        LocMast locMast = locMastService.selectByLocNo(wcsLocNo);
+        taskWrk.setCrnNo(locMast.getCrnNo());
+        taskWrk.setTargetPoint(dto.getTargetLocationCode());
+        taskWrk.setStartPoint(staNo.toString());
+        if(taskWrk.getIoType() == 1){
+            taskWrk.setWrkSts(2);
+            if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
+                taskWrk.setTargetPoint(wcsLocNo);//缁堢偣
+                taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
+            }
+
+//        } else if (param.getIoType() == 2) {
+//            taskWrk.setWrkSts(11);
+//            if (!Cools.isEmpty(param.getStartPoint())) {
+//                taskWrk.setStartPoint(Utils.getWcsLocNo(param.getStartPoint()));//璧风偣
+//                taskWrk.setOriginStartPoint(param.getStartPoint());
+//            }
+//            taskWrk.setTargetPoint(param.getTargetPoint());
+//        }else if (param.getIoType() == 3){
+//            taskWrk.setWrkSts(11);
+//            if (!Cools.isEmpty(param.getStartPoint())) {
+//                taskWrk.setStartPoint(param.getStartPoint());//璧风偣
+//                taskWrk.setOriginStartPoint(param.getStartPoint());
+//            }
+        }
+        return taskWrk;
+    }
+
 
 }

--
Gitblit v1.9.1