From a1e94379b115721b2e604070dc48063b8016f72f Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期二, 21 十月 2025 19:32:59 +0800
Subject: [PATCH] 侧面输送线出库码盘信息对接
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1393 ++++++++++++++++++++++++++-------------------------------
1 files changed, 636 insertions(+), 757 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 bb0cc2b..786c08c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1,25 +1,23 @@
package com.zy.asrs.service.impl;
import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.controller.CrnController;
-import com.zy.asrs.controller.OpenController;
-import com.zy.asrs.controller.SiteController;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.domain.param.CrnOperatorParam;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.TaskOverToWms;
-import com.zy.asrs.mapper.*;
+import com.zy.asrs.entity.wms.StorageEscalationParam;
+import com.zy.asrs.mapper.BasCrnErrorMapper;
+import com.zy.asrs.mapper.StaDescMapper;
+import com.zy.asrs.mapper.TaskWrkMapper;
+import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.*;
-import com.zy.asrs.utils.CommandUtils;
import com.zy.asrs.utils.Utils;
import com.zy.common.service.CommonService;
-import com.zy.common.utils.HttpHandler;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
import com.zy.core.cache.MessageQueue;
@@ -28,15 +26,12 @@
import com.zy.core.model.CrnSlave;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.Task;
-import com.zy.core.model.command.CommandPackage;
import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.BarcodeThread;
import com.zy.core.thread.SiemensDevpThread;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -45,7 +40,9 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.io.IOException;
-import java.util.*;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
/**
* 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -65,6 +62,8 @@
@Autowired
private LocMastService locMastService;
@Autowired
+ private LocDetlService locDetlService;
+ @Autowired
private BasCrnpService basCrnpService;
@Autowired
private BasDevpService basDevpService;
@@ -74,47 +73,50 @@
private BasCrnErrorMapper basCrnErrorMapper;
@Autowired
private TaskWrkMapper taskWrkMapper;
+
@Autowired
private TaskWrkService taskWrkService;
@Autowired
- private ConfigService configService;
+ private CommonService commonService;
@Autowired
private StaDescMapper staDescMapper;
- @Autowired
- private CommandInfoService commandInfoService;
- @Autowired
- private OpenServiceImpl openServiceImpl;
+
@Autowired
private StaDescService staDescService;
- @Autowired
- private ApiLogService apiLogService;
- @Autowired
- private CommonService commonService;
- @Value("${wms.url}")
- private String wmsUrl;
- @Value("${wms.inboundTaskApplyPath}")
- private String inboundTaskApplyPath;
- @Value("${wms.movePath}")
- private String movePath;
- @Value("${wms.taskStatusFeedbackPath}")
- private String taskStatusFeedbackPath;
+ @Autowired
+ private ToWmsService toWmsService;
+
+
@Autowired
private CrnController crnController;
+
@Autowired
- private SiteController siteController;
+ private TransferTaskService transferTaskService;
+
+ @Autowired
+ private WrkMastService wrkMastService;
+
+ @Autowired
+ private WrkDetlService wrkDetlService;
+
+ @Value("${loc-move.enable}")
+ private boolean enable;
+
+ @Value("${config.outloading}")
+ private boolean outloading;
- public void generateStoreWrkFile() throws IOException, InterruptedException {
+ public synchronized void generateStoreWrkFile() {
try {
-
-
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻鍏ュ簱鍙�
for (DevpSlave.Sta inSta : devp.getInSta()) {
+ StorageEscalationParam storageEscalationParam = new StorageEscalationParam();
+ storageEscalationParam.setStationCode(inSta.getStaNo());
// 鑾峰彇鍏ュ簱绔欎俊鎭�
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
@@ -124,8 +126,6 @@
staProtocol = staProtocol.clone();
}
Short workNo = staProtocol.getWorkNo();
- Short stano = staProtocol.getStaNo();
-
// 灏哄妫�娴嬪紓甯�
boolean back = false;
String errMsg = "";
@@ -157,222 +157,62 @@
errMsg = "鎵爜澶辫触";
back = true;
}
- // 閫�鍥�
- if (back) {
- if (stano == inSta.getBackSta().shortValue()){
- continue;
- }
- if (workNo == 0 && stano == 0){
- continue;
- }
- if (!staProtocol.isPakMk()){
- continue;
- }
-// News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
- staProtocol.setWorkNo(workNo);
- staProtocol.setStaNo(inSta.getStaNo().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo));
- if (taskWrk != null) {
- taskWrk.setMemo(errMsg);//灏嗛敊璇爜瀛樺叆澶囨敞瀛楁杩涜灞曠ず
- taskWrkMapper.updateById(taskWrk);
- }
- continue;
- }
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
- if (staProtocol.isAutoing() && staProtocol.isLoading()
- && staProtocol.isInEnable()
- && !staProtocol.isEmptyMk() && (workNo == 9991 )
- && staProtocol.isPakMk()) {
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
+ && !staProtocol.isEmptyMk() && workNo >= 9000 && staProtocol.isPakMk()) {
// 鑾峰彇鏉$爜鎵弿浠俊鎭�
BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
if (barcodeThread == null) {
continue;
}
- String barcode = barcodeThread.getBarcode();
- if(!Cools.isEmpty(barcode) && !barcode.equals("99999999")) {
- // 璇锋眰wms鎺ュ彛锛岃幏鍙栧伐浣滃彿鍜岀洰鏍囧簱浣�
- ToWmsDTO toWmsDTO = new ToWmsDTO(barcode,staProtocol.getSiteId(),staProtocol.isHigh() ? 2 : 1);
- TaskWrk taskWrk1=taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode",barcode));
- if(!Cools.isEmpty(taskWrk1)){
- log.info("鎵樼洏鐮侊細"+barcode+"浠诲姟妗e瓨鍦�");
- if (taskWrk1.getIoType()==1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())){
- StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
- .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no",1).eq("stn_no",staProtocol.getSiteId()));
- if (Cools.isEmpty(staDesc)){
- log.info("鎵樼洏鐮侊細"+barcode+"浠诲姟妗e瓨鍦�");
- return;
- }else {
- staProtocol.setWorkNo(taskWrk1.getWrkNo().shortValue());
- staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- }
- }
- return;
- }
- HashMap<String, Object> headParam = new HashMap<>();
- headParam.put("Content-Type","application/json");
- String response;
- try{
- response = new HttpHandler.Builder()
- // .setHeaders(headParam)
- .setUri(wmsUrl)
- .setPath(inboundTaskApplyPath)
- .setJson(JSON.toJSONString(toWmsDTO))
- .build()
- .doPost();
- }catch (Exception e){
- log.error("璇锋眰鍏ュ簱璋冪敤鎺ュ彛澶辫触");
- log.error("寮傚父淇℃伅鎵撳嵃锛�"+e);
- try{
- BasDevp basDevp = basDevpService.selectById(inSta.getStaNo());
- if (Cools.isEmpty(basDevp)){
- log.error("绔欑偣鍙峰紓甯�"+inSta.getStaNo());
- } else if (basDevp.getStaErr()!=0){
- basDevp.setStaErr(2);
- basDevpService.updateById(basDevp);
- }
- }catch (Exception e1){
- // 閫�鍥�
- log.error("鎵爜妫�娴嬬▼搴忓紓甯�"+inSta.getStaNo()+"寮傚父淇℃伅"+e1);
- }
- staProtocol.setWorkNo((short)9999);
- staProtocol.setStaNo(inSta.getStaNo().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-// TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo));
-// if (taskWrk != null) {
-// taskWrk.setMemo(errMsg);//灏嗛敊璇爜瀛樺叆澶囨敞瀛楁杩涜灞曠ず
-// taskWrkMapper.updateById(taskWrk);
-// }
- continue;
- }
-
- JSONObject jsonObject = JSON.parseObject(response);
- apiLogService.save("wms璇锋眰鍏ュ簱璐т綅鎺ュ彛"
- ,wmsUrl+inboundTaskApplyPath
- ,null
- ,"127.0.0.1"
- ,JSON.toJSONString(toWmsDTO)
- ,response
- ,true
- );
- log.info("鍏ュ簱璇锋眰鍙傛暟{}" + JSON.toJSONString(toWmsDTO));
- log.info("鍏ュ簱璇锋眰杩斿洖鍙傛暟{}" + JSON.toJSONString(response));
- if (jsonObject.getInteger("code").equals(200) && !Cools.isEmpty(jsonObject.get("data").toString())) {
- GetWmsDto getWmsDto = JSON.parseObject(jsonObject.get("data").toString(), GetWmsDto.class);
- try{
- BasDevp basDevp = basDevpService.selectById(inSta.getStaNo());
- if (Cools.isEmpty(basDevp)){
- log.error("绔欑偣鍙峰紓甯�1"+inSta.getStaNo());
- throw new CoolException("绔欑偣鍙峰紓甯�1,鏈煡璇㈠埌绔欑偣淇℃伅"+inSta.getStaNo());
- }
- Integer staNoCrnNo = Utils.StaNoCrnNo(inSta.getStaNo());
- if (staNoCrnNo==0){
- basDevp.setStaErr(1);
- basDevpService.updateById(basDevp);
- log.error("绔欑偣鍙峰紓甯�2"+inSta.getStaNo());
- throw new CoolException("绔欑偣鍙峰紓甯�2,绔欑偣鍙蜂笉瀛樺湪"+inSta.getStaNo());
- }else {
- LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
- .eq("crn_no", staNoCrnNo.longValue())
- .eq("loc_no", getWmsDto.getLocNo()));
- if (Cools.isEmpty(locMast)){
- basDevp.setStaErr(1);
- basDevpService.updateById(basDevp);
- log.error("绔欑偣鍙峰紓甯�3"+inSta.getStaNo());
- throw new CoolException("绔欑偣鍙峰紓甯�3锛氭宸烽亾涓嶅瓨鍦ㄧ洰鏍囧簱浣�"+inSta.getStaNo());
- }
- }
- } catch (Exception e){
-// log.error("鎵爜妫�娴嬬▼搴忓紓甯�"+inSta.getStaNo()+"寮傚父淇℃伅"+e);
- // 閫�鍥�
- log.error("鎵爜妫�娴嬬▼搴忓紓甯�"+inSta.getStaNo()+errMsg);
- log.error("鎵爜妫�娴嬬▼搴忓紓甯�,寮傚父淇℃伅"+e);
-
- staProtocol.setWorkNo((short)9999);
- staProtocol.setStaNo(inSta.getStaNo().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-// TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo));
-// if (taskWrk != null) {
-// taskWrk.setMemo(errMsg);//灏嗛敊璇爜瀛樺叆澶囨敞瀛楁杩涜灞曠ず
-// taskWrkMapper.updateById(taskWrk);
-// }
- continue;
- }
- //鏌ョ湅璇ュ簱浣嶆槸鍚︿负绌哄簱浣�
- LocMast locMast=locMastService.selectOne(new EntityWrapper<LocMast>()
- .eq("loc_sts","O")
- .eq("loc_no",getWmsDto.getLocNo()));
- if(Cools.isEmpty(locMast)){
- try{
- HashMap<String, Object> headParam1 = new HashMap<>();
- headParam1.put("taskNo",getWmsDto.getTaskNo());
- headParam1.put("status",6);
- headParam1.put("ioType",1);
- headParam1.put("barcode",barcode);
- String response2;
- response2 = new HttpHandler.Builder()
- // .setHeaders(headParam)
- .setUri(wmsUrl)
- .setPath(taskStatusFeedbackPath)
- .setJson(JSON.toJSONString(headParam1))
- .build()
- .doPost();
- JSONObject jsonObject1 = JSON.parseObject(response2);
- apiLogService.save("wcs娲惧彂搴撲綅涓嶄负绌轰笂鎶ms"
- ,wmsUrl+taskStatusFeedbackPath
- ,null
- ,"127.0.0.1"
- ,JSON.toJSONString(headParam1)
- ,response
- ,true
- );
- }catch (Exception e){
- log.error("wcs娲惧彂搴撲綅涓嶄负绌轰笂鎶ms", getWmsDto.getWrkNo());
- throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触锛屽紓甯镐俊鎭細"+e);
- }
- }
-
- // 鍒涙柊涓�涓叆搴撳伐浣滄。
- TaskWrk taskWrk = taskWrkService.selectByTaskNo(getWmsDto.getWrkNo());
- if(Cools.isEmpty(taskWrk)) {
- taskWrk = createTask(getWmsDto,barcode);
- 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.getSiteId()));
- staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
- staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- }
- }
-
- }else {
- continue;
- }
-
+ String BoxNo = barcodeThread.getBarcode();
+ if (Cools.isEmpty(BoxNo)) {
+ log.error("{}鍙锋潯鐮佹壂鎻忓け璐ワ紝鍊硷細{}", inSta.getBarcode(), BoxNo);
+ continue;
+ }
+ TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo));
+ if (!Cools.isEmpty(taskWrk1)) {
+ log.info("鎵樼洏鐮侊細" + BoxNo + "浠诲姟妗e瓨鍦�");
+ continue;
+ }
+ if (back) {
+ storageEscalationParam.setWCSStatus(1);
+ storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
+ }
+ storageEscalationParam.setBarcode(BoxNo);
+ storageEscalationParam.setMatIdList(staProtocol.getMatIdList());
+ storageEscalationParam.setFullPlt(staProtocol.isFullPlt() ? 1 : 0);
+ storageEscalationParam.setMpHigh(staProtocol.getMpHigh());
+ log.info("缁勬墭鍏ュ簱={}", storageEscalationParam);
+ TaskWrk taskWrk = toWmsService.getLocNoFromWms(storageEscalationParam);
+ if (taskWrk == null) {
+ log.error("鍏ュ簱璇锋眰wms鍒涘缓浠诲姟宸ヤ綔妗d负绌猴細{}", storageEscalationParam);
+ continue;
} else {
- // 閫�鍥�
- log.error("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
-
- staProtocol.setWorkNo((short)9999);
- staProtocol.setStaNo(inSta.getStaNo().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo));
- if (taskWrk != null) {
- taskWrk.setMemo(errMsg);//灏嗛敊璇爜瀛樺叆澶囨敞瀛楁杩涜灞曠ず
- taskWrkMapper.updateById(taskWrk);
+ if (-1 == taskWrk.getWrkNo()) {
+ back = true;
}
}
+ if (back) {
+ staProtocol.setWorkNo((short) 9991);
+ staProtocol.setStaNo(inSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.info("缁勬墭鍏ュ簱鎵樼洏閫�鍥炲懡浠ゆ帹閫佽緭閫佺嚎闃熷垪鎴愬姛==>{}锛寋}锛寋}", BoxNo, errMsg, taskWrk.getWrkNo());
+ } else {
+ StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+ .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
+ if (staDesc == null) {
+ log.error("缁勬墭鍏ュ簱璺緞涓嶅瓨鍦紝wrkNo={},crn={},stn_no={}", taskWrk.getWrkNo(), taskWrk.getCrnNo(), staProtocol.getSiteId());
+ continue;
+ }
+ staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+ staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.info("缁勬墭鍏ュ簱鍛戒护鎺ㄩ�佽緭閫佺嚎闃熷垪鎴愬姛:{}", staProtocol);
+ }
+
}
-
-
}
}
} catch (Exception e) {
@@ -389,40 +229,87 @@
for (CrnSlave crnSlave : slaveProperties.getCrn()) {
// 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
- List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", crnSlave.getId()).eq("crn_stn", crnStn.getStaNo()));
- for (StaDesc staDesc : staDescs){
- try{
- // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
- DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
- StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
- if (staProtocol == null) {
- continue;
- } else {
- staProtocol = staProtocol.clone();
- }
- if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
+ try {
+ // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
+ if (crnStn.getStaNo() >= 200) {
// 鏌ヨ宸ヤ綔妗�
- TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staDesc.getStnNo().toString());
+ TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), String.valueOf(crnStn.getStaNo() + 2));
if (taskWrk == null) {
continue;
}
- log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:"+JSON.toJSONString(taskWrk));
- R r = siteController.siteDetlUpdate(Integer.valueOf(taskWrk.getTargetPoint()), taskWrk.getWrkNo().shortValue(), (short) 0, "Y", false, false);
- JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(r));
- if (jsonObject.getInteger("code").equals(200)){
- log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:"+JSON.toJSONString(taskWrk));
+ log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk));
+ staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+ staProtocol.setStaNo(Short.valueOf(taskWrk.getTargetPoint()));
+ staProtocol.setBarcode(taskWrk.getBarcode());
+ if (!Cools.isEmpty(taskWrk.getType())) {
+ staProtocol.setHeight(taskWrk.getType());
+ }
+ boolean offer = false;
+ try {
+ offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+ staProtocol.setMp(taskWrk.getMp());
+ staProtocol.setLx(taskWrk.getLx());
+ staProtocol.setLev(taskWrk.getLev());
+ MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol));
+ } catch (Exception e) {
+ log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:" + e);
+ log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:" + offer);
+ }
+ if (offer) {
+ log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk));
taskWrk.setStatus(5);
taskWrk.setWrkSts(14);
+ taskWrk.setCompleteTime(new Date());
taskWrkService.updateById(taskWrk);
- }else {
- log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:"+JSON.toJSONString(taskWrk));
- log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯镐俊鎭�:"+JSON.toJSONString(r));
+
+ } else {
+ log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(taskWrk));
+ }
+ } else {
+ // 鏌ヨ宸ヤ綔妗�
+ TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), String.valueOf(crnStn.getStaNo() - 1));
+ if (taskWrk == null) {
+ continue;
+ }
+ log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk));
+ staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+ staProtocol.setStaNo(Short.valueOf(taskWrk.getTargetPoint()));
+ if (!Cools.isEmpty(taskWrk.getType())) {
+ staProtocol.setHeight(taskWrk.getType());
+ }
+ boolean offer = false;
+ try {
+ offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+ } catch (Exception e) {
+ log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:" + e);
+ log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:" + offer);
+ }
+ if (offer) {
+ log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk));
+ taskWrk.setStatus(5);
+ taskWrk.setWrkSts(14);
+ taskWrk.setCompleteTime(new Date());
+ taskWrkService.updateById(taskWrk);
+
+ } else {
+ log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(taskWrk));
}
}
- }catch (Exception e){
- log.error("鍑哄簱鍒板嚭搴撶珯寮傚父:寮傚父淇℃伅锛�"+e);
+
+// }
}
+ } catch (Exception e) {
+ log.error("鍑哄簱鍒板嚭搴撶珯寮傚父:寮傚父淇℃伅锛�" + e);
}
+// }
}
}
@@ -436,15 +323,14 @@
// 鑾峰彇鍫嗗灈鏈轰俊鎭�
CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
CrnProtocol crnProtocol = crnThread.getCrnProtocol();
- if (crnProtocol == null) { continue; }
+ if (crnProtocol == null) {
+ continue;
+ }
BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
if (basCrnp == null) {
log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
continue;
}
-
- // 搴撲綅绉昏浆
- this.locToLoc(crn, crnProtocol);
// 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
@@ -469,6 +355,8 @@
crnProtocol.setLastIo("O");
}
}
+ // 搴撲綅绉昏浆
+ this.locToLoc(crn, crnProtocol);
}
}
@@ -497,7 +385,7 @@
continue;
}
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
- && staDetl.getCanining()!=null && staDetl.getCanining().equals("Y")) {
+ && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
flag = true;
}
if (!flag) {
@@ -506,7 +394,18 @@
// 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
TaskWrk taskWrk = taskWrkMapper.selectPakIn(slave.getId(), staProtocol.getWorkNo().intValue(), staDesc.getStnNo().toString());
- if(null == taskWrk) {
+ if (null == taskWrk) {
+ continue;
+ }
+
+ LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
+ if (!locMast.getLocSts().equals("O")) {
+ if (taskWrk.getWrkSts() == 2) {
+ log.error("鍏ュ簱WMS鍒嗛厤搴撲綅{}鏈夎锛屽簱浣嶇姸鎬佷负{}", locMast.getLocNo(), locMast.getLocSts());
+ taskWrk.setWrkSts(5);
+ taskWrk.setMemo("WMS鍒嗛厤搴撲綅鏈夎");
+ taskWrkService.updateById(taskWrk);
+ }
continue;
}
@@ -520,46 +419,15 @@
continue;
}
- int workNo = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙�
- taskWrk.setWrkNo(workNo);//宸ヤ綔鍙�
+// int workNo = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙�
+// taskWrk.setWrkNo(workNo);//宸ヤ綔鍙�
taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵��
- taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿
+ taskWrk.setExecuteTime(new Date());
+// taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿
taskWrk.setWrkSts(3);//宸ヤ綔鐘舵�� 3.鍚婅溅鍏ュ簱
taskWrk.setCrnNo(staDesc.getCrnNo());//鍫嗗灈鏈哄彿
- taskWrk.setModiTime(new Date());
- taskWrk.setModiUser(9988L);
- taskWrkService.updateById(taskWrk);
-
-// //鍙栧嚭鍛戒护
-// 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"));
-//
-// }
-// }
+// taskWrk.setModiTime(new Date());
+// taskWrk.setModiUser(9988L);
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
CrnCommand crnCommand = new CrnCommand();
@@ -573,43 +441,22 @@
crnCommand.setDestinationPosX(Utils.getRowShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞�
crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺�
- crnCommand.setCommand((short)1);
- if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand),false)) {
+ crnCommand.setCommand((short) 1);
+ log.info("鍫嗗灈鏈哄叆搴撲换鍔′笅鍙�={}", crnCommand);
+ if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
- }else{
- try{
- HashMap<String, Object> headParam = new HashMap<>();
- headParam.put("taskNo",taskWrk.getTaskNo());
- headParam.put("status",taskWrk.getStatus());
- headParam.put("ioType",taskWrk.getIoType());
- headParam.put("barcode",taskWrk.getBarcode());
- String response;
- response = new HttpHandler.Builder()
- // .setHeaders(headParam)
- .setUri(wmsUrl)
- .setPath(taskStatusFeedbackPath)
- .setJson(JSON.toJSONString(headParam))
- .build()
- .doPost();
- JSONObject jsonObject = JSON.parseObject(response);
- apiLogService.save("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms"
- ,wmsUrl+taskStatusFeedbackPath
- ,null
- ,"127.0.0.1"
- ,JSON.toJSONString(headParam)
- ,response
- ,true
- );
- }catch (Exception e){
- log.error("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触", taskWrk);
- throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触");
+ } else {
+ try {
+ // 涓婃姤鎵ц鐘舵��
+ toWmsService.executionStatusReport(taskWrk.getTaskNo(), taskWrk.getWrkSts());
+ taskWrkService.updateById(taskWrk);
+ } catch (Exception e) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
+ log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽紓甯革細" + e);
}
-
}
}
-
- // return;
}
}
@@ -617,17 +464,17 @@
* 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔�
* 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
*/
- public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
+ public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) {
List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(slave.getId(), null);
- if (taskWrksInitial.size()==0){
+ if (taskWrksInitial.size() == 0) {
return;
}
for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", slave.getId()).eq("crn_stn", crnStn.getStaNo()));
- for (StaDesc staDesc : staDescs){
+ for (StaDesc staDesc : staDescs) {
// 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
- List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut(slave.getId(),staDesc.getStnNo().toString());
- for (TaskWrk taskWrk : taskWrks){
+ List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut(slave.getId(), staDesc.getStnNo().toString());
+ for (TaskWrk taskWrk : taskWrks) {
if (taskWrk == null) {
continue;
}
@@ -636,6 +483,36 @@
log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", taskWrk.getWrkNo(), taskWrk.getStartPoint(), taskWrk.getIoType());
continue;
}
+
+ LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
+ //鍒ゆ柇鍏跺簱浣嶆槸鍚︿负娣卞簱浣嶏紝濡傛灉涓烘繁搴撲綅鎵惧叾娴呭簱浣嶆槸閮芥湁璐�
+ int flag = 0;
+ if (locMast.getRow1() == 1 || locMast.getRow1() == 5 || locMast.getRow1() == 9) {
+ flag = 1;
+ } else if (locMast.getRow1() == 4 || locMast.getRow1() == 8 || locMast.getRow1() == 12) {
+ flag = 2;
+ }
+ if (flag == 1) {
+ LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("row1", (locMast.getRow1() + 1))
+ .eq("bay1", locMast.getBay1())
+ .eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
+ if (!Cools.isEmpty(locMast1)) {
+ log.info(locMast.getLocNo() + "鍑烘繁搴撲綅锛屾祬搴撲綅鏈夎揣");
+ continue;
+ }
+ } else if (flag == 2) {
+ LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("row1", (locMast.getRow1() - 1))
+ .eq("bay1", locMast.getBay1())
+ .eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
+ if (!Cools.isEmpty(locMast1)) {
+ log.info(locMast.getLocNo() + "鍑烘繁搴撲綅锛屾祬搴撲綅鏈夎揣");
+ continue;
+ }
+ }
+
+
// 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
@@ -653,7 +530,7 @@
}
// 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
- if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() !=null && staDetl.getCanouting().equals("Y")
+ if (staProtocol.isAutoing() && (outloading || !staProtocol.isLoading()) && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
&& staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
@@ -666,16 +543,6 @@
if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) {
break;
}
-
-
- // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
- Date now = new Date();
- taskWrk.setWrkSts(12);
- taskWrk.setStatus(2);
- taskWrk.setModiTime(now);
- if (taskWrkMapper.updateById(taskWrk) == 0) {
- log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
- }
CrnCommand command = new CrnCommand();
command.setCrnNo(taskWrk.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
command.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
@@ -687,89 +554,33 @@
command.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺�
command.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒�
command.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞�
- command.setCommand((short)1);
- if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, command),false)) {
- log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(command));
- throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
- }else{
- try{
- HashMap<String, Object> headParam = new HashMap<>();
- headParam.put("taskNo",taskWrk.getTaskNo());
- headParam.put("status",taskWrk.getStatus());
- headParam.put("ioType",taskWrk.getIoType());
- headParam.put("barcode",taskWrk.getBarcode());
- String response;
- response = new HttpHandler.Builder()
- // .setHeaders(headParam)
- .setUri(wmsUrl)
- .setPath(taskStatusFeedbackPath)
- .setJson(JSON.toJSONString(headParam))
- .build()
- .doPost();
- JSONObject jsonObject = JSON.parseObject(response);
- apiLogService.save("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms"
- ,wmsUrl+taskStatusFeedbackPath
- ,null
- ,"127.0.0.1"
- ,JSON.toJSONString(headParam)
- ,response
- ,true
- );
- }catch (Exception e){
- log.error("wcs娲惧彂鍑哄簱浠诲姟涓婃姤wms澶辫触", taskWrk);
- throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触");
- }
+ command.setCommand((short) 1);
+ if (Cools.isEmpty(taskWrk.getMarkStart()) || taskWrk.getMarkStart() == 0) {
+ toWmsService.addReportLog(taskWrk);
+ taskWrk.setMarkStart(1);
}
-// // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-// if (Utils.isDeepLoc(slaveProperties, taskWrk.getStartPoint())) {
-//
-// taskWrkMapper.selectPakOutIoType(taskWrk.getCrnNo());
-//
-// List<TaskWrk> taskWrks1 = taskWrkMapper.selectPakOutIoType(taskWrk.getCrnNo());
-// if (Cools.isEmpty(taskWrks1) && taskWrks1.size()!=0){
-// continue;
-// }
-// String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint());
-// TaskWrk hallowLocNoTask = taskWrkMapper.selectByStartPoint(shallowLocNo);
-// if (!Cools.isEmpty(hallowLocNoTask)){
-// continue;
-// }
-// }
-//
-// //鍙栧嚭鍛戒护
-// List<CommandInfo> commandInfos = commandInfoService.selectByTaskNo(taskWrk.getTaskNo());
-// Integer commandStep = taskWrk.getCommandStep();
-// if (commandInfos.isEmpty()) {
-// continue;//鍛戒护绌�
-// }
-//
-// //鍒ゆ柇鏈鍛戒护鏄惁鎵ц
-// CommandInfo commandInfo2 = commandInfos.get(commandInfos.size() - 1);
-// if (commandInfo2.getCommandStatus() != CommandStatusType.CREATE.id) {
-// 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 {
-//
-// //寮�濮嬭繍琛�
-// String response = CrnStartRunning(taskWrk);
-// JSONObject jsonObject = JSON.parseObject(response);
-// if (jsonObject.getInteger("code").equals(200)) {
-//
-// }else {
-// log.error("鍑哄簱寮�濮嬭繍琛岄�氳澶辫触,"+jsonObject.get("msg"));
-//
-// }
-// }
-
+ if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, command))) {
+ log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(command));
+ throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
+ } else {
+ try {
+ // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
+ Date now = new Date();
+ taskWrk.setWrkSts(12);
+ taskWrk.setStatus(2);
+ taskWrk.setExecuteTime(now);
+ if (taskWrkMapper.updateById(taskWrk) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
+ }
+ // 涓婃姤鎵ц鐘舵��
+ toWmsService.executionStatusReport(taskWrk.getTaskNo(), taskWrk.getWrkSts());
+ } catch (Exception e) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
+ log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽紓甯革細" + e);
+ }
+ }
}
}
}
@@ -779,23 +590,17 @@
/**
* 搴撲綅绉昏浆
*/
- public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){
+ public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
// 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑绉诲簱宸ヤ綔妗�
List<TaskWrk> taskWrks = taskWrkMapper.selectList(new EntityWrapper<TaskWrk>()
- .eq("crn_no",slave.getId())
- .eq("wrk_sts",11)
- .eq("io_type",3));
- for (TaskWrk taskWrk : taskWrks){
+ .eq("crn_no", slave.getId())
+ .eq("wrk_sts", 11)
+ .eq("io_type", 3)
+ .orderBy("io_pri", false));
+ for (TaskWrk taskWrk : taskWrks) {
- // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-// if (Utils.isDeepLoc(slaveProperties, taskWrk.getStartPoint())) {
-// String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint());
-// TaskWrk hallowLocNoTask = taskWrkMapper.selectByStartPoint(shallowLocNo);
-// if (!Cools.isEmpty(hallowLocNoTask)){
-// continue;
-// }
-// }
+
// 鍫嗗灈鏈烘帶鍒惰繃婊�
if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
continue;
@@ -818,8 +623,6 @@
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-
-
// 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
CrnCommand crnCommand = new CrnCommand();
crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
@@ -833,45 +636,19 @@
crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞�
crnCommand.setCommand((short) 1);
- if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand),false)) {
+ if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
} else {
// 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
Date now = new Date();
taskWrk.setWrkSts(12);
taskWrk.setStatus(2);
+ taskWrk.setExecuteTime(now);
taskWrk.setModiTime(now);
if (taskWrkMapper.updateById(taskWrk) == 0) {
log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
}
- try{
- HashMap<String, Object> headParam = new HashMap<>();
- headParam.put("taskNo",taskWrk.getTaskNo());
- headParam.put("status",taskWrk.getStatus());
- headParam.put("ioType",taskWrk.getIoType());
- headParam.put("barcode",taskWrk.getBarcode());
- String response;
- response = new HttpHandler.Builder()
- // .setHeaders(headParam)
- .setUri(wmsUrl)
- .setPath(taskStatusFeedbackPath)
- .setJson(JSON.toJSONString(headParam))
- .build()
- .doPost();
- JSONObject jsonObject = JSON.parseObject(response);
- apiLogService.save("wcs娲惧彂绉诲簱浠诲姟涓婃姤wms"
- ,wmsUrl+taskStatusFeedbackPath
- ,null
- ,"127.0.0.1"
- ,JSON.toJSONString(headParam)
- ,response
- ,true
- );
- }catch (Exception e){
- log.error("wcs娲惧彂鍑哄簱浠诲姟涓婃姤wms澶辫触", taskWrk);
- throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触");
- }
-
+ toWmsService.addReportLog(taskWrk);
}
return;
}
@@ -879,53 +656,6 @@
}
- /**
- * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
- */
-// 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);
-// }
-// }
-// }
-// }
/**
* 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
@@ -935,24 +665,28 @@
// 鑾峰彇鍫嗗灈鏈轰俊鎭�
CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
CrnProtocol crnProtocol = crnThread.getCrnProtocol();
- if (crnProtocol == null) { continue; }
+ 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)&&crnProtocol.getTaskNo() !=999) {
+ TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorking(crn.getId(), crnProtocol.getTaskNo().intValue());
+ if (Cools.isEmpty(taskWrk) && crnProtocol.getTaskNo() != 999) {
log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
continue;
}
- Thread.sleep(300);
//纭瀹屾垚淇″彿
- CrnOperatorParam crnOperatorParam=new CrnOperatorParam();
+ CrnOperatorParam crnOperatorParam = new CrnOperatorParam();
crnOperatorParam.setCrnNo(crn.getId());
-
- crnController.crnTaskComplete(crnOperatorParam);
- if(!Cools.isEmpty(taskWrk)){
- if(taskWrk.getIoType()==1 && taskWrk.getWrkSts()==3){
+ R r = crnController.crnTaskComplete(crnOperatorParam);
+ Thread.sleep(1000);
+ if (!r.get("code").equals(200)) {
+ return;
+ }
+ if (!Cools.isEmpty(taskWrk)) {
+ if (taskWrk.getIoType() == 1 && taskWrk.getWrkSts() == 3) {
taskWrk.setWrkSts(4);//鍏ュ簱瀹屾垚
taskWrk.setStatus(5);//瀹岀粨
//鏇存柊搴撲綅鐘舵��
@@ -962,7 +696,7 @@
locMast.setModiTime(new Date());
locMast.setModiUser(9999L);
locMastService.updateById(locMast);
- }else if(taskWrk.getIoType()==2&&taskWrk.getWrkSts()==12){
+ } else if (taskWrk.getIoType() == 2 && taskWrk.getWrkSts() == 12) {
taskWrk.setWrkSts(13);//鍑哄簱瀹屾垚
taskWrk.setStatus(5);//瀹岀粨
//鏇存柊搴撲綅鐘舵��
@@ -972,7 +706,7 @@
locMast.setModiTime(new Date());
locMast.setModiUser(9999L);
locMastService.updateById(locMast);
- }else if(taskWrk.getIoType()==3&&taskWrk.getWrkSts()==12){
+ } else if (taskWrk.getIoType() == 3 && taskWrk.getWrkSts() == 12) {
taskWrk.setWrkSts(4);//鍏ュ簱瀹屾垚
taskWrk.setStatus(5);//瀹岀粨
//鏇存柊搴撲綅鐘舵��
@@ -990,43 +724,8 @@
locMast1.setModiUser(9999L);
locMastService.updateById(locMast1);
}
+ taskWrk.setCompleteTime(new Date());
taskWrkService.updateById(taskWrk);
-
-
- try{
- HashMap<String, Object> headParam = new HashMap<>();
- headParam.put("taskNo",taskWrk.getTaskNo());
- headParam.put("status",taskWrk.getStatus());
- headParam.put("ioType",taskWrk.getIoType());
- headParam.put("barcode",taskWrk.getBarcode());
- String response;
- log.error("wcs瀹岀粨浠诲姟涓婃姤wms==銆�", headParam);
-
- response = new HttpHandler.Builder()
- // .setHeaders(headParam)
- .setUri(wmsUrl)
- .setPath(taskStatusFeedbackPath)
- .setJson(JSON.toJSONString(headParam))
- .build()
- .doPost();
- log.error("wcs瀹岀粨浠诲姟涓婃姤wms==銆�", response);
-
-// JSONObject jsonObject = JSON.parseObject(response);
-// log.error("wcs瀹岀粨浠诲姟涓婃姤wms==銆�", jsonObject);
-
- apiLogService.save("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms"
- ,wmsUrl+taskStatusFeedbackPath
- ,null
- ,"127.0.0.1"
- ,JSON.toJSONString(headParam)
- ,response
- ,true
- );
- }catch (Exception e){
- log.error("wcs瀹岀粨浠诲姟涓婃姤wms澶辫触", taskWrk);
- log.error("wcs瀹岀粨浠诲姟涓婃姤wms澶辫触,鎶ラ敊淇℃伅锛�", e);
-// throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触");
- }
}
}
@@ -1036,7 +735,7 @@
/**
* 鍫嗗灈鏈哄紓甯镐俊鎭褰�
*/
- public void recCrnErr(){
+ public void recCrnErr() {
Date now = new Date();
for (CrnSlave crn : slaveProperties.getCrn()) {
// 鑾峰彇鍫嗗灈鏈轰俊鎭�
@@ -1058,7 +757,7 @@
continue;
}
BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
- String errName = crnError==null? String.valueOf(crnProtocol.getAlarm()):crnError.getErrName();
+ String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
BasErrLog basErrLog = new BasErrLog(
null, // 缂栧彿
wrkMast.getWrkNo(), // 宸ヤ綔鍙�
@@ -1105,7 +804,7 @@
// 璁板綍鏂板紓甯�
if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) {
BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
- String errName = crnError==null? String.valueOf(crnProtocol.getAlarm()):crnError.getErrName();
+ String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
BasErrLog basErrLog = new BasErrLog(
null, // 缂栧彿
null, // 宸ヤ綔鍙�
@@ -1120,7 +819,7 @@
null, // 婧愮珯
null, // 婧愬簱浣�
null, // 鏉$爜
- (int)crnProtocol.getAlarm1(), // 寮傚父鐮�
+ (int) crnProtocol.getAlarm1(), // 寮傚父鐮�
errName, // 寮傚父
1, // 寮傚父鎯呭喌
now, // 娣诲姞鏃堕棿
@@ -1151,37 +850,17 @@
}
}
- //鑷姩娲惧彂浠诲姟
- public void autoDistribute() {
- Config config = configService.selectByCode("autoDistribute");
- if (config == null) {
- return;
- }
-
- if (config.getValue().equals("false")) {//鍒ゆ柇鏄惁寮�鍚嚜鍔ㄦ淳鍙戜换鍔�
- return;
- }
-
- for (TaskWrk taskWrk : taskWrkService.selectReceive()) {
-
- try {
- taskWrkService.distribute(taskWrk.getTaskNo(), 9527L);
- } catch (CoolException e) {
- log.info(e.getMessage());
- }
- }
- }
//agv鍙栨斁璐т换鍔″畬鎴�
public synchronized void autoCompleteAGV() {
List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<>());
- try{
+ try {
Thread.sleep(500);
- }catch (Exception e){
+ } catch (Exception e) {
}
- for (BasDevp basDevp:basDevps){
+ for (BasDevp basDevp : basDevps) {
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
if (staProtocol == null) {
@@ -1189,202 +868,402 @@
} else {
staProtocol = staProtocol.clone();
}
- if (basDevp.getWrkNo()!=0){
- if (basDevp.getAgvTargetPick()!=0){//鍙栬揣
- staProtocol.setAgvTypeSign((short)0);
+ if (basDevp.getWrkNo() != 0) {
+ if (basDevp.getAgvTargetPick() != 0) {//鍙栬揣
+ staProtocol.setAgvTypeSign((short) 0);
staProtocol.setStaNo(basDevp.getDevNo().shortValue());
MessageQueue.offer(SlaveType.Devp, 1, new Task(4, staProtocol));
}
boolean sign = true;
- if (basDevp.getAgvTargetPlace()!=0){
+ if (basDevp.getAgvTargetPlace() != 0) {
sign = false;
basDevp.setAgvTargetPlace(0);
basDevpService.updateById(basDevp);
- staProtocol.setAgvTypeSign((short)3);//1
+ staProtocol.setAgvTypeSign((short) 3);//1
staProtocol.setStaNo(basDevp.getDevNo().shortValue());
MessageQueue.offer(SlaveType.Devp, 1, new Task(4, staProtocol));
}
- }else {
- if (basDevp.getAgvTargetPlace()!=0){
- if (basDevp.getLoading().equals("Y")){
- staProtocol.setAgvTypeSign((short)1);
+ } else {
+ if (basDevp.getAgvTargetPlace() != 0) {
+ if (basDevp.getLoading().equals("Y")) {
+ staProtocol.setAgvTypeSign((short) 1);
staProtocol.setStaNo(basDevp.getDevNo().shortValue());
MessageQueue.offer(SlaveType.Devp, 1, new Task(4, staProtocol));
- }else {
+ } else {
log.error("AGV鏀捐揣瀹屾垚浣嗚緭閫佺嚎鏃犵墿锛屽浣嶄俊鍙� ===>> [staNo:{}] [basDevp:{}]", basDevp.getDevNo(), basDevp);
basDevp.setAgvTargetPlace(0);
basDevpService.updateById(basDevp);
- staProtocol.setAgvTypeSign((short)3);//1
+ staProtocol.setAgvTypeSign((short) 3);//1
staProtocol.setStaNo(basDevp.getDevNo().shortValue());
MessageQueue.offer(SlaveType.Devp, 1, new Task(4, staProtocol));
}
}
- if (basDevp.getAgvTargetPick()!=0){
+ if (basDevp.getAgvTargetPick() != 0) {
basDevp.setAgvTargetPick(0);
basDevpService.updateById(basDevp);
- staProtocol.setAgvTypeSign((short)2);//0
+ staProtocol.setAgvTypeSign((short) 2);//0
staProtocol.setStaNo(basDevp.getDevNo().shortValue());
MessageQueue.offer(SlaveType.Devp, 1, new Task(4, staProtocol));
}
}
}
}
- public synchronized void autoCompleteTask() {
- List<TaskWrk> taskWrks = taskWrkMapper.selectWorkingTask();
- for (TaskWrk taskWrk : taskWrks) {
- //鑾峰彇鍛戒护闆嗗悎
- List<CommandInfo> commandInfos = commandInfoService.selectByTaskNo(taskWrk.getTaskNo());
- if (taskWrk.getCommandStep() < commandInfos.size()) {
- continue;//褰撳墠姝ュ簭娌℃湁鍒拌揪鏈�鍚庝竴鏉″懡浠�
- }
-
- //鍒ゆ柇鏈鍛戒护鏄惁鎵ц瀹屾垚
- CommandInfo commandInfo = commandInfos.get(commandInfos.size() - 1);
- if (commandInfo.getCommandStatus() != CommandStatusType.COMPLETE.id) {
- continue;//鎸囦护鏈畬鎴�
- }
-
- Date now = new Date();
- //鎸囦护宸插畬鎴愶紝鏇存柊浠诲姟
- if (taskWrk.getIoType() == 1) {
- //鍏ュ簱浠诲姟
- taskWrk.setWrkSts(4);//3.鍚婅溅鍏ュ簱涓� => 4.鍏ュ簱瀹屾垚
- //taskWrk.setStatus(TaskStatusType.COMPLETE.id);
- taskWrk.setModiTime(now);
- taskWrkService.updateById(taskWrk);
-
- //鏇存柊搴撲綅鐘舵��
- LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
- locMast.setLocSts("F");//F.鍦ㄥ簱
- locMast.setBarcode(taskWrk.getBarcode());//鎵樼洏鐮�
- locMast.setModiTime(now);
- locMast.setModiUser(9999L);
- locMastService.updateById(locMast);
- } else if (taskWrk.getIoType() == 2) {
- //鍑哄簱浠诲姟
- taskWrk.setWrkSts(14);//12.鍚婅溅鍑哄簱涓� => 14.鍑哄簱瀹屾垚
-// taskWrk.setStatus(TaskStatusType.COMPLETE.id);
- taskWrk.setModiTime(now);
- taskWrkService.updateById(taskWrk);
-
- //鏇存柊搴撲綅鐘舵��
- LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
- locMast.setLocSts("O");//O.绌哄簱浣�
- locMast.setBarcode("");//鎵樼洏鐮�
- locMast.setModiTime(now);
- locMast.setModiUser(9999L);
- locMastService.updateById(locMast);
- }
- }
- }
- public synchronized String CrnStartRunning(TaskWrk taskWrk){
- String tasktype = null;
- switch (taskWrk.getIoType()){
- case 1:
- tasktype= "RK";
- break;
- case 2:
- tasktype= "CK";
- break;
- case 3:
- tasktype= "YK";
- break;
- default:
- tasktype= "鏈煡";
- }
- Map<String, Object> map = new HashMap<>();
- map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2");
- TaskOverToWms taskOverToWms = new TaskOverToWms();
- taskOverToWms.setFeedbackFrom("WCS"); //鏉ユ簮
- taskOverToWms.setWarehouseId("1688469798893297665"); //浠撳簱鏍囪瘑
- taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //浠诲姟鍙�
- taskOverToWms.setTaskType(tasktype); // 浠诲姟绫诲瀷
- taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 瀹瑰櫒缂栫爜
- if (taskWrk.getIoType() ==1 || taskWrk.getIoType() == 3){
- taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //璁惧缂栫爜
- taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //鐩爣搴撲綅
- }else if (taskWrk.getIoType() ==2){
- Map<Integer,String> map1 = new HashMap<>();
- map1.put(102,"J-1101");
- map1.put(106,"J-1103");
- map1.put(110,"J-1105");
- map1.put(114,"J-1107");
- map1.put(118,"J-1109");
- map1.put(122,"J-1111");
- map1.put(305,"H-1101");
- map1.put(405,"G-1101");
- taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //璁惧缂栫爜
- taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //婧愬簱浣�
- }
-
- taskOverToWms.setTaskStatus("executing"); //浠诲姟鐘舵��
- String response = null;
+ /**
+ * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
+ */
+ public synchronized void ioConvert() {
try {
- response = new HttpHandler.Builder()
- .setHeaders(map)
- .setUri(wmsUrl)
- .setPath("wcsManager/wcsInterface/taskStatusFeedback")
- .setJson(JSON.toJSONString(taskOverToWms))
- .build()
- .doPost();
- }catch (Exception e){
- log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛澶辫触");
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ if (devp.getId() == 2) {
+ continue;
+ }
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ for (DevpSlave.Sta inSta : devp.getInSta()) {
+ TaskWrk taskWrk = taskWrkService.selectByTargetPoint(inSta.getBackSta() + "");
+ switch (inSta.getBackSta()) {
+ case 101:
+ if (taskWrk != null) {
+ if (devpThread.ioModeOf1F1 != IoModeType.PAKOUT_MODE) {
+ // 鍑哄簱鍒囨崲涓�
+ devpThread.ioModeOf1F1 = IoModeType.PAKOUT_BOOTING;
+ TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + "");
+ if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+ && !devpThread.getStation().get(inSta.getBackSta()).isLoading()
+ && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) {
+ // 鍑哄簱妯″紡
+ devpThread.ioModeOf1F1 = IoModeType.PAKOUT_MODE;
+ }
+ }
+ } else {
+ // 鍏ュ簱妯″紡
+ devpThread.ioModeOf1F1 = IoModeType.PAKIN_MODE;
+ }
+ break;
+ case 104:
+ if (taskWrk != null) {
+ if (devpThread.ioModeOf1F2 != IoModeType.PAKOUT_MODE) {
+ // 鍑哄簱鍒囨崲涓�
+ devpThread.ioModeOf1F2 = IoModeType.PAKOUT_BOOTING;
+ TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + "");
+ if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+ && !devpThread.getStation().get(inSta.getBackSta()).isLoading()
+ && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) {
+ // 鍑哄簱妯″紡
+ devpThread.ioModeOf1F2 = IoModeType.PAKOUT_MODE;
+ }
+ }
+ } else {
+ // 鍏ュ簱妯″紡
+ devpThread.ioModeOf1F2 = IoModeType.PAKIN_MODE;
+ }
+ break;
+ case 107:
+ if (taskWrk != null) {
+ if (devpThread.ioModeOf1F3 != IoModeType.PAKOUT_MODE) {
+ // 鍑哄簱鍒囨崲涓�
+ devpThread.ioModeOf1F3 = IoModeType.PAKOUT_BOOTING;
+ TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + "");
+ if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+ && !devpThread.getStation().get(inSta.getBackSta()).isLoading()
+ && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) {
+ // 鍑哄簱妯″紡
+ devpThread.ioModeOf1F3 = IoModeType.PAKOUT_MODE;
+ }
+ }
+ } else {
+ // 鍏ュ簱妯″紡
+ devpThread.ioModeOf1F3 = IoModeType.PAKIN_MODE;
+ }
+ break;
+ case 110:
+ if (taskWrk != null) {
+ if (devpThread.ioModeOf1F4 != IoModeType.PAKOUT_MODE) {
+ // 鍑哄簱鍒囨崲涓�
+ devpThread.ioModeOf1F4 = IoModeType.PAKOUT_BOOTING;
+ TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + "");
+ if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+ && !devpThread.getStation().get(inSta.getBackSta()).isLoading()
+ && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) {
+ // 鍑哄簱妯″紡
+ devpThread.ioModeOf1F4 = IoModeType.PAKOUT_MODE;
+ }
+ }
+ } else {
+ // 鍏ュ簱妯″紡
+ devpThread.ioModeOf1F4 = IoModeType.PAKIN_MODE;
+ }
+ break;
+ case 113:
+ if (taskWrk != null) {
+ if (devpThread.ioModeOf1F5 != IoModeType.PAKOUT_MODE) {
+ // 鍑哄簱鍒囨崲涓�
+ devpThread.ioModeOf1F5 = IoModeType.PAKOUT_BOOTING;
+ TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + "");
+ if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+ && !devpThread.getStation().get(inSta.getBackSta()).isLoading()
+ && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) {
+ // 鍑哄簱妯″紡
+ devpThread.ioModeOf1F5 = IoModeType.PAKOUT_MODE;
+ }
+ }
+ } else {
+ // 鍏ュ簱妯″紡
+ devpThread.ioModeOf1F5 = IoModeType.PAKIN_MODE;
+ }
+ break;
+ case 203:
+ if (taskWrk != null) {
+ if (devpThread.ioModeOf2F1 != IoModeType.PAKOUT_MODE) {
+ // 鍑哄簱鍒囨崲涓�
+ devpThread.ioModeOf2F1 = IoModeType.PAKOUT_BOOTING;
+ TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + "");
+ if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+ && !devpThread.getStation().get(inSta.getBackSta()).isLoading()
+ && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) {
+ // 鍑哄簱妯″紡
+ devpThread.ioModeOf2F1 = IoModeType.PAKOUT_MODE;
+ }
+ }
+ } else {
+ // 鍏ュ簱妯″紡
+ devpThread.ioModeOf2F1 = IoModeType.PAKIN_MODE;
+ }
+ break;
+
+ case 207:
+ if (taskWrk != null) {
+ if (devpThread.ioModeOf2F2 != IoModeType.PAKOUT_MODE) {
+ // 鍑哄簱鍒囨崲涓�
+ devpThread.ioModeOf2F2 = IoModeType.PAKOUT_BOOTING;
+ TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + "");
+ if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+ && !devpThread.getStation().get(inSta.getBackSta()).isLoading()
+ && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) {
+ // 鍑哄簱妯″紡
+ devpThread.ioModeOf2F2 = IoModeType.PAKOUT_MODE;
+ }
+ }
+ } else {
+ // 鍏ュ簱妯″紡
+ devpThread.ioModeOf2F2 = IoModeType.PAKIN_MODE;
+ }
+ break;
+
+ case 212:
+ if (taskWrk != null) {
+ if (devpThread.ioModeOf2F3 != IoModeType.PAKOUT_MODE) {
+ // 鍑哄簱鍒囨崲涓�
+ devpThread.ioModeOf2F3 = IoModeType.PAKOUT_BOOTING;
+ TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + "");
+ if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+ && !devpThread.getStation().get(inSta.getBackSta()).isLoading()
+ && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) {
+ // 鍑哄簱妯″紡
+ devpThread.ioModeOf2F3 = IoModeType.PAKOUT_MODE;
+ }
+ }
+ } else {
+ // 鍏ュ簱妯″紡
+ devpThread.ioModeOf2F3 = IoModeType.PAKIN_MODE;
+ }
+ break;
+ }
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
}
- apiLogService.save("鍫嗗灈鏈哄紑濮嬭繍琛�"
- ,wmsUrl+"wcsManager/wcsInterface/taskStatusFeedback"
- ,null
- ,"127.0.0.1"
- ,JSON.toJSONString(taskOverToWms)
- ,response
- ,true
- );
- return response;
}
- private TaskWrk createTask(GetWmsDto dto, String barcode){
- String wcsLocNo = dto.getLocNo();
- if(Cools.isEmpty(wcsLocNo)){
- return null;
+
+ /**
+ * 璺戝簱绋嬪簭
+ */
+ public void debug(String sts, Long modiUser, Integer loc_type1) {
+ if (!enable) {
+ return;
+ }
+ List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>());
+ if (basCrnps.isEmpty()) {
+ return;
+ }
+ for (BasCrnp basCrnp : basCrnps) {
+ if (!basCrnp.getInEnable().equals("N") || !basCrnp.getOutEnable().equals("Y")) {
+ continue;
+ }
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", basCrnp.getCrnNo()).eq("io_type", 11));
+ if (Cools.isEmpty(wrkMasts) || wrkMasts.isEmpty()) {
+ int i = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", sts).eq("loc_type1", loc_type1).ne("modi_user", modiUser));
+ LocMast locMastStart = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", sts).eq("loc_type1", loc_type1).ne("modi_user", modiUser));
+ if (locMastStart == null || i > 1) {
+ continue;
+ }
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("loc_sts", "O")
+ .eq("crn_no", basCrnp.getCrnNo())
+ .eq("loc_type1", locMastStart.getLocType1())
+ .ne("modi_user", 77));
+ if (Cools.isEmpty(locMasts)) {
+ continue;
+ }
+ Random random = new Random();
+ LocMast locMastEnd = locMasts.get(random.nextInt(locMasts.size()));
+ locMove(locMastStart, locMastEnd, Long.parseLong(basCrnp.getCrnNo().toString()));
+ }
+ }
+ }
+
+
+ public void locMove(LocMast sourceLoc, LocMast locNo, Long userId) {
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc.getLocNo()));
+ LocMast loc = locMastService.selectById(locNo);
+ if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
+ throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�");
}
Date now = new Date();
- TaskWrk taskWrk = new TaskWrk();
- int workNo1 = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙�
- taskWrk.setTaskNo(dto.getWrkNo());//浠诲姟鍙�
- taskWrk.setWrkNo(workNo1);
- taskWrk.setStatus(TaskStatusType.RECEIVE.id);//浠诲姟鐘舵�侊細鎺ユ敹
- taskWrk.setCreateTime(now);
- taskWrk.setIoType(1);//浠诲姟绫诲瀷
- taskWrk.setIoPri(Cools.isEmpty(dto.getTaskPriority()) ? 300 : Integer.parseInt(dto.getTaskPriority()));//浼樺厛绾�
- taskWrk.setBarcode(barcode);//鏉$爜
- LocMast locMast = locMastService.selectByLocNo(wcsLocNo);
- taskWrk.setCrnNo(locMast.getCrnNo());
- taskWrk.setTargetPoint(wcsLocNo);
- taskWrk.setStartPoint(dto.getStaNo().toString());
- if(taskWrk.getIoType() == 1){
- taskWrk.setWrkSts(2);
- if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
- 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());
-// }
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+ // 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+ wrkMast.setIoPri(10D);
+ wrkMast.setCrnNo(sourceLoc.getCrnNo());
+ wrkMast.setSourceLocNo(sourceLoc.getLocNo()); // 婧愬簱浣�
+ wrkMast.setLocNo(locNo.getLocNo()); // 鐩爣搴撲綅
+ wrkMast.setFullPlt(Cools.isEmpty(locDetls) ? "N" : "Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+ wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
- return taskWrk;
+ // 宸ヤ綔妗f槑缁嗕繚瀛�
+ for (LocDetl locDetl : locDetls) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAnfme(locDetl.getAnfme());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ // 淇敼婧愬簱浣嶇姸鎬�
+ if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) {
+ sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+ sourceLoc.setModiUser(userId);
+ sourceLoc.setModiTime(now);
+ if (!locMastService.updateById(sourceLoc)) {
+ throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+ }
+ } else {
+ throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細" + sourceLoc.getLocSts$());
+ }
+ // 淇敼鐩爣搴撲綅鐘舵��
+ if (loc.getLocSts().equals("O")) {
+ loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+ loc.setModiTime(now);
+ loc.setModiUser(userId);
+ if (!locMastService.updateById(loc)) {
+ throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$());
+ }
}
+ /**
+ * 杞Щ浠诲姟涓嬪彂
+ */
+ public void transferTaskStart() {
+ for (DevpSlave.Sta sta : slaveProperties.getDevp().get(1).getInSta()) {
+ try {
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+ StaProtocol staProtocol = devpThread.getStation().get(sta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
+ // 鏌ヨ宸ヤ綔妗�
+ TransferTask transferTask = transferTaskService.selectByStartPoint(sta.getStaNo());
+ if (transferTask == null) {
+ continue;
+ }
+ log.info("涓嬪彂杈撻�佺嚎杞Щ浠诲姟锛歵askWrk:" + JSON.toJSONString(transferTask));
+ staProtocol.setWorkNo(transferTask.getWrkNo().shortValue());
+ staProtocol.setStaNo(transferTask.getTargetPoint().shortValue());
+ boolean offer = false;
+ try {
+ offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+ } catch (Exception e) {
+ log.error("涓嬪彂杈撻�佺嚎杞Щ浠诲姟锛氬紓甯�:" + e);
+ log.error("涓嬪彂杈撻�佺嚎杞Щ浠诲姟锛氬紓甯�:offer:" + offer);
+ }
+ if (offer) {
+ log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(transferTask));
+ transferTask.setStatus(2);
+ transferTaskService.updateById(transferTask);
+ } else {
+ log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(transferTask));
+ }
+ }
+ } catch (Exception e) {
+ log.error("杞Щ浠诲姟寮傚父:寮傚父淇℃伅锛�" + e);
+ }
+ }
+
+ }
+
+ /**
+ * 杞Щ浠诲姟瀹屾垚
+ */
+ public void transferTaskEnd() {
+ for (DevpSlave.Sta sta : slaveProperties.getDevp().get(1).getInSta()) {
+ try {
+ // 鑾峰彇缁堢偣绔�
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+ StaProtocol staProtocol = devpThread.getStation().get(sta.getOverSta());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
+ // 鏌ヨ宸ヤ綔妗�
+ TransferTask transferTask = transferTaskService.selectByEndPoint(sta.getStaNo());
+ if (transferTask == null) {
+ continue;
+ }
+ log.info("杞Щ浠诲姟瀹屾垚锛歵ransferTask:" + JSON.toJSONString(transferTask));
+ transferTask.setStatus(3);
+ transferTaskService.updateById(transferTask);
+ }
+ } catch (Exception e) {
+ log.error("杞Щ浠诲姟寮傚父:寮傚父淇℃伅锛�" + e);
+ }
+ }
+
+ }
}
--
Gitblit v1.9.1