From 259e38eb55c12b501427702d551d4de61182406c Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期六, 13 十二月 2025 15:03:12 +0800
Subject: [PATCH] 接口对接功能完善
---
src/main/java/com/zy/asrs/task/handler/JlerHandler.java | 140 ++++++++++
src/main/resources/mapper/WrkMastLogMapper.xml | 3
src/main/java/com/zy/asrs/entity/mes/TransTask.java | 3
src/main/resources/mapper/TaskDetlMapper.xml | 96 +++---
src/main/java/com/zy/asrs/task/JlerScheduler.java | 65 ++++
src/main/java/com/zy/asrs/entity/WrkMast.java | 8
src/main/resources/mapper/WrkMastMapper.xml | 5
src/main/java/com/zy/asrs/entity/WrkMastLog.java | 11
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java | 63 +++
src/main/java/com/zy/asrs/controller/MobileController.java | 11
src/main/java/com/zy/common/web/WcsController.java | 4
src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java | 253 ++++++++++++------
src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java | 93 ++++--
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 54 +++
src/main/resources/application-dev.yml | 3
src/main/java/com/zy/asrs/service/RcsService.java | 2
src/main/java/com/zy/asrs/controller/MesController.java | 7
src/main/java/com/zy/asrs/service/MobileService.java | 8
18 files changed, 640 insertions(+), 189 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/MesController.java b/src/main/java/com/zy/asrs/controller/MesController.java
index 47cf305..d8e2634 100644
--- a/src/main/java/com/zy/asrs/controller/MesController.java
+++ b/src/main/java/com/zy/asrs/controller/MesController.java
@@ -12,6 +12,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
+import java.util.List;
@RestController
@Slf4j
@@ -28,11 +29,13 @@
// 鐗╂枡淇℃伅鍚屾
@PostMapping("/api/mes/synMatInfo")
@AppAuth(memo = "鐗╂枡淇℃伅鍚屾")
- public MesReturn synMatInfo(@RequestHeader(required = false) String appkey,@RequestBody MesMatRecvForm param, HttpServletRequest request){
+ public MesReturn synMatInfo(@RequestHeader(required = false) String appkey, @RequestBody List<MesMatRecvForm> param, HttpServletRequest request){
auth(appkey, param, request);
MesReturn mesReturn = new MesReturn();
try {
- mesReturn = mesService.matInfoAndInBound(param);
+ for(MesMatRecvForm matRecvForm:param) {
+ mesReturn = mesService.matInfoAndInBound(matRecvForm);
+ }
} catch (Exception e) {
mesReturn.setSuccess("2");
mesReturn.setMessage("鐗╂枡淇℃伅鍚屾澶辫触");
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 7e048b2..2335fea 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -532,7 +532,16 @@
if(!param.containsKey("staNo") || !param.containsKey("locType")){ // 1.绐勶紝2.瀹�
return R.parse(BaseRes.PARAM);
}
- return mobileService.callEmptyBinOutBound(param.getString("staNo"),param.getString("locType"),getUserId());
+ return mobileService.callEmptyBinOutBound(null,param.getString("staNo"),param.getString("locType"),getUserId());
+ }
+
+ @PostMapping("/callEmptyBinInBound")
+ @ManagerAuth(memo = "pda鍛煎彨鏂欐鍥炲簱")
+ public synchronized R callEmptyBinInBound(@RequestBody JSONObject param) {
+ if(!param.containsKey("site")){ // 鎼繍璧风偣
+ return R.parse(BaseRes.PARAM);
+ }
+ return mobileService.callEmptyBinInBound(param.getString("site"),getUserId());
}
}
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index daf4250..f828241 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -332,6 +332,14 @@
@TableField("task_no")
private String taskNo;
+ @ApiModelProperty(value= "鏄惁鍛煎彨agv,0.鏈懠鍙紝1.宸插懠鍙�")
+ @TableField("call_agv")
+ private Integer callAgv;
+
+ @ApiModelProperty(value= "agv鐩爣绔欑偣")
+ @TableField("agv_sta")
+ private String agvSta;
+
public WrkMast() {}
public String getYmd$(){
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
index 820f59d..bbffab0 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -327,6 +327,17 @@
@TableField("take_none")
private String takeNone;
+ @TableField("task_no")
+ private String taskNo;
+
+ @ApiModelProperty(value= "鏄惁鍛煎彨agv,0.鏈懠鍙紝1.宸插懠鍙�")
+ @TableField("call_agv")
+ private Integer callAgv;
+
+ @ApiModelProperty(value= "agv鐩爣绔欑偣")
+ @TableField("agv_sta")
+ private String agvSta;
+
public WrkMastLog() {
}
diff --git a/src/main/java/com/zy/asrs/entity/mes/TransTask.java b/src/main/java/com/zy/asrs/entity/mes/TransTask.java
index 02204e0..a70adce 100644
--- a/src/main/java/com/zy/asrs/entity/mes/TransTask.java
+++ b/src/main/java/com/zy/asrs/entity/mes/TransTask.java
@@ -18,7 +18,8 @@
@JsonProperty("OrderNo")
@JSONField(name = "OrderNo")
private String OrderNo;
- // 杩愯緭绫诲瀷锛�01锛氱┖鎵橈紝02锛氭瘺鍧紝03锛氭垚鍝侊紝04锛氳浆搴忥紝鏈帴鍙d负杞簭
+ // 杩愯緭绫诲瀷锛�01涓婄┖鎵� 02 涓嬬┖鎵橈紝姣涘澂 03 涓婃瘺鍧� 04 涓嬫垚鍝� 05 涓婂垁 06 涓嬪垁
+ //涓婂嚭绔嬪簱锛屼笅鍏ョ珛搴�
@JsonProperty("TransType")
@JSONField(name = "TransType")
private String TransType;
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 389b487..de92c86 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -5,6 +5,7 @@
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.entity.mes.MesOutApply;
import com.zy.asrs.entity.param.*;
import java.util.Date;
@@ -106,5 +107,10 @@
* @param locType 鎵樼洏绫诲瀷 1.绐勶紝2.瀹�
* @param userId 鐢ㄦ埛id
*/
- R callEmptyBinOutBound(String staNo, String locType, Long userId);
+ R callEmptyBinOutBound(MesOutApply mesOutApply,String staNo, String locType, Long userId);
+
+ /**
+ * pda鍛煎彨鏂欐鍥炲簱
+ */
+ R callEmptyBinInBound(String site, Long userId);
}
diff --git a/src/main/java/com/zy/asrs/service/RcsService.java b/src/main/java/com/zy/asrs/service/RcsService.java
index 8fddd1c..fdaebe2 100644
--- a/src/main/java/com/zy/asrs/service/RcsService.java
+++ b/src/main/java/com/zy/asrs/service/RcsService.java
@@ -20,7 +20,7 @@
* @param rcsFactory 1 娴峰悍锛�2 鍗庢檽锛�
* @return
*/
- int submitTask(RcsTaskSubmit rcsTaskSubmit, int rcsFactory);
+ RcsReturn submitTask(RcsTaskSubmit rcsTaskSubmit, int rcsFactory);
/**
* 2.1.3浠诲姟缁х画鎵ц鎺ュ彛
diff --git a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
index 02b555d..38a457c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
@@ -4,18 +4,17 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.mes.*;
-import com.zy.asrs.entity.rcs.RcsReporterTask;
-import com.zy.asrs.entity.rcs.RcsTaskContinue;
-import com.zy.asrs.entity.rcs.RcsTaskSubmit;
-import com.zy.asrs.entity.rcs.RcsTaskTargetRoute;
+import com.zy.asrs.entity.rcs.*;
import com.zy.asrs.mapper.AgvInfoMapper;
import com.zy.asrs.mapper.MatItemBarcodeMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.OrderInAndOutUtil;
+import com.zy.common.model.LocDetlDto;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
import lombok.extern.slf4j.Slf4j;
@@ -86,6 +85,12 @@
@Resource
private MobileService mobileService;
+
+ @Resource
+ private WrkMastService wrkMastService;
+
+ @Resource
+ private WrkDetlService wrkDetlService;
// region MES鎺ュ彛
@@ -267,7 +272,7 @@
orderDetlPakin.setMaktx(mat.getMaktx());
orderDetlPakin.setSpecs(mat.getSpecs());
orderDetlPakin.setModel(mat.getModel());
- orderDetlPakin.setStandby1(JSONObject.toJSONString(mesMat.getItemBarcode())); // 闆朵欢浜岀淮鐮�
+ orderDetlPakin.setStandby1(barCodeListToStr(mesMat.getItemBarcode())); // 闆朵欢浜岀淮鐮�
orderDetlPakin.setStandby2("1"); //淇濆瓨榻愬鎬ф鏌ユ爣璇嗭紝1 妫�鏌ワ紱0 涓嶆鏌ワ紱
orderDetlPakin.setCreateBy(defaultUserId);
orderDetlPakin.setCreateTime(now);
@@ -361,48 +366,59 @@
* @param mesOutApply
* @return 1 鎴愬姛锛�-1 璁㈠崟閲嶅锛�
*/
+ @Transactional
public int outBoundOrder(MesOutApply mesOutApply){
// 绌烘墭鍑哄簱
if (StringUtils.isEmpty(mesOutApply.getOrderNo()) && "01".equals(mesOutApply.getTransType())) {
// 鐢熸垚绌烘墭鍑哄簱浠诲姟
- mobileService.callEmptyBinOutBound(WMS_TRANS_START_STATION_1,"1",defaultUserId);
+ mobileService.callEmptyBinOutBound(mesOutApply,WMS_TRANS_START_STATION_1,"1",defaultUserId);
- try {
- if (!StringUtils.isEmpty(mesOutApply.getTaskno()) && !StringUtils.isEmpty(mesOutApply.getStationId())) {
- TransTask transTask = new TransTask();
- transTask.setTaskno(mesOutApply.getTaskno());
- transTask.setTaskname(mesOutApply.getTaskname());
- transTask.setOrderNo(mesOutApply.getOrderNo());
- transTask.setTransType(mesOutApply.getTransType());
- transTask.setCurStationId(WMS_TRANS_START_STATION_1);
- transTask.setNextProcess(mesOutApply.getProductLineId());
- transTask.setNextStationId(mesOutApply.getStationId());
- transTask.setItemno(WMS_ZPALLET_ID); // 鍥哄畾涓虹┖鎵樼殑缂栫爜
- transTask.setQty(1); // 绌烘墭鍙嚭1涓�
- transTask.setProductLineId(mesOutApply.getProductLineId());
- transTask.setOperateType(1);
- transTask.setAgvFactory(1);
- JSONObject sendAgvTask = submitTask(transTask);
- if (!"1".equals(sendAgvTask.getString("Success"))) {
- log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触锛歿}", JSONObject.toJSONString(transTask));
- }
- }
- } catch (Exception e) {
- log.error("涓嬪彂AGV杩愯緭浠诲姟澶辫触", e);
- }
+// try {
+// if (!StringUtils.isEmpty(mesOutApply.getTaskno()) && !StringUtils.isEmpty(mesOutApply.getStationId())) {
+// TransTask transTask = new TransTask();
+// transTask.setTaskno(mesOutApply.getTaskno());
+// transTask.setTaskname(mesOutApply.getTaskname());
+// transTask.setOrderNo(mesOutApply.getOrderNo());
+// transTask.setTransType(mesOutApply.getTransType());
+// transTask.setCurStationId(WMS_TRANS_START_STATION_1);
+// transTask.setNextProcess(mesOutApply.getProductLineId());
+// transTask.setNextStationId(mesOutApply.getStationId());
+// transTask.setItemno(WMS_ZPALLET_ID); // 鍥哄畾涓虹┖鎵樼殑缂栫爜
+// transTask.setQty(1); // 绌烘墭鍙嚭1涓�
+// transTask.setProductLineId(mesOutApply.getProductLineId());
+// transTask.setOperateType(1);
+// transTask.setAgvFactory(1);
+// JSONObject sendAgvTask = submitTask(transTask);
+// if (!"1".equals(sendAgvTask.getString("Success"))) {
+// log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触锛歿}", JSONObject.toJSONString(transTask));
+// }
+// }
+// } catch (Exception e) {
+// log.error("涓嬪彂AGV杩愯緭浠诲姟澶辫触", e);
+// }
return 1;
} else { // 姣涘澂锛堢墿鏂欙級鍑哄簱
// docType鏍规嵁搴撶被鍨嬬‘瀹�
long docType = 7;
- long settle = 1;
+ long settle = 2;
// 鏍¢獙璁㈠崟鏄惁閲嶅
OrderPakout order = orderPakoutService.selectByNo(mesOutApply.getOrderNo());
if (order != null && !StringUtils.isEmpty(order.getOrderNo())) {
log.error("鍑哄簱璁㈠崟鍙烽噸澶嶏細{}",mesOutApply.getOrderNo());
return -1;
+ }
+ String itemBarcode = barCodeListToStr(mesOutApply.getItemBarcode());
+ // 鑷姩鍑哄簱
+ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("standby1", itemBarcode));
+ if (locDetl == null) {
+ throw new CoolException("闆朵欢浜岀淮鐮佹病鏈夊尮閰嶅埌搴撳瓨锛�" +itemBarcode );
+ }
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
+ if (!locMast.getLocSts().equals("F")) {
+ throw new CoolException("搴撲綅鐘舵�佷笉涓篎锛�" +locMast.getLocNo() );
}
// 鐢熸垚璁㈠崟
@@ -420,6 +436,7 @@
orderPakout.setUpdateTime(now);
orderPakout.setMemo(JSONObject.toJSONString(mesOutApply));
orderPakout.setPakinPakoutStatus(2);
+ orderPakout.setNumber(locMast.getBarcode()); // 鎵樼洏鏉$爜锛屼笂鎶ユ椂鐢�
if (!orderPakoutService.insert(orderPakout)) {
log.error("MES淇濆瓨鍑哄簱璁㈠崟涓绘。澶辫触");
throw new CoolException("淇濆瓨鍑哄簱璁㈠崟涓绘。澶辫触");
@@ -431,12 +448,14 @@
orderDetlPakout.setOrderId(orderPakout.getId());
orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
orderDetlPakout.setAnfme(Double.valueOf(mesOutApply.getQty()));
+ orderDetlPakout.setWorkQty(orderDetlPakout.getAnfme());
orderDetlPakout.setQty(0.0);
orderDetlPakout.setMatnr(mat.getMatnr());
orderDetlPakout.setMaktx(mat.getMaktx());
orderDetlPakout.setSpecs(mat.getSpecs());
orderDetlPakout.setModel(mat.getModel());
- orderDetlPakout.setStandby1(barCodeListToStr(mesOutApply.getItemBarcode()));
+
+ orderDetlPakout.setStandby1(itemBarcode);
orderDetlPakout.setCreateBy(defaultUserId);
orderDetlPakout.setCreateTime(now);
orderDetlPakout.setUpdateBy(defaultUserId);
@@ -448,48 +467,102 @@
throw new CoolException("淇濆瓨鍑哄簱璁㈠崟鏄庣粏妗eけ璐�");
}
- // 绔嬪簱鐢熸垚璁㈠崟鍚庯紝鑷姩璋冨害AGV杩愰�佸埌绔欑偣锛岀洰鍓嶅鎵樼敓鎴愬涓��
- try {
- if (!StringUtils.isEmpty(mesOutApply.getTaskno()) && !StringUtils.isEmpty(mesOutApply.getStationId())) {
- // 鎸夐浂浠朵簩缁寸爜鏌ヨ鏈夊嚑涓墭锛屽鎵樼敓鎴愬涓换鍔★紝姣忔墭瀵瑰簲闆朵欢浜岀淮鐮�
- String barCode = barCodeListToStr(mesOutApply.getItemBarcode());
- EntityWrapper<MatItemBarcode> matItemBarcodeEntityWrapper = new EntityWrapper<>();
- matItemBarcodeEntityWrapper.in("item_barcode", barCode);
- List<MatItemBarcode> barcodes = matItemBarcodeMapper.selectList(matItemBarcodeEntityWrapper);
- if (barcodes != null) {
- Map<String, List<MatItemBarcode>> map = barcodes.stream().collect(Collectors.groupingBy(MatItemBarcode::getZapplet));
- for (Map.Entry<String, List<MatItemBarcode>> entry : map.entrySet()) {
- List<MatItemBarcode> list = entry.getValue();
- List<String> codes = new ArrayList<>();
- for (MatItemBarcode zapllet : list) {
- codes.add(zapllet.getItemBarcode());
- }
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(101));
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(101); // 鍏ュ嚭搴撶姸鎬�
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setCrnNo(1);
+ wrkMast.setSourceStaNo("203"); // 婧愮珯
+ wrkMast.setStaNo("204"); // 鐩爣绔�
+ wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMast.setAppeUser(defaultUserId); // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(defaultUserId);
+ wrkMast.setModiTime(now);
+ wrkMast.setMemo(JSONObject.toJSONString(mesOutApply));
+ wrkMast.setTaskNo(mesOutApply.getTaskno());
+ wrkMast.setAgvSta(mesOutApply.getStationId());
+ wrkMastService.insert(wrkMast);
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setOrderNo(orderPakout.getOrderNo()); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAnfme(orderDetlPakout.getAnfme()); // 鏁伴噺
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(defaultUserId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(defaultUserId);
+// wrkDetl.setMatnr(detlDto.getLocDetl().getMatnr());
+// wrkDetl.setMaktx(detlDto.getLocDetl().getMaktx());
+// wrkDetl.setUnit(detlDto.getLocDetl().getUnit());
+// wrkDetl.setSpecs(detlDto.getLocDetl().getSpecs());
+// wrkDetl.setUnit(detlDto.getLocDetl().getUnit());
+// wrkDetl.setModel(detlDto.getLocDetl().getModel());
+ wrkDetlService.insert(wrkDetl);
- TransTask transTask = new TransTask();
- transTask.setTaskno(mesOutApply.getTaskno());
- transTask.setTaskname(mesOutApply.getTaskname());
- transTask.setOrderNo(mesOutApply.getOrderNo());
- transTask.setTransType(mesOutApply.getTransType());
- transTask.setCurStationId(WMS_TRANS_START_STATION_3);
- transTask.setNextProcess(mesOutApply.getProductLineId());
- transTask.setNextStationId(mesOutApply.getStationId());
- transTask.setItemno(mesOutApply.getItemno());
- transTask.setQty(list.size());
- transTask.setProductLineId(mesOutApply.getProductLineId());
- transTask.setItemBarcode(codes);
- transTask.setTuoPanId(entry.getKey());
- transTask.setOperateType(1);
- transTask.setAgvFactory(1);
- JSONObject sendAgvTask = submitTask(transTask);
- if (!"1".equals(sendAgvTask.getString("Success"))) {
- log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触", JSONObject.toJSONString(transTask));
- }
- }
- }
- }
- } catch (Exception e) {
- log.error("涓嬪彂AGV杩愯緭浠诲姟澶辫触", e);
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ if (locMast.getLocSts().equals("F")) {
+ locMast.setLocSts("R");
+ locMast.setModiUser(defaultUserId);
+ locMast.setModiTime(now);
+ locMastService.updateById(locMast);
}
+ log.info("鍑哄簱浠诲姟鐢熸垚鎴愬姛锛屼换鍔″彿锛歿}",workNo);
+ // 绔嬪簱鐢熸垚璁㈠崟鍚庯紝鑷姩璋冨害AGV杩愰�佸埌绔欑偣锛岀洰鍓嶅鎵樼敓鎴愬涓��
+// try {
+// if (!StringUtils.isEmpty(mesOutApply.getTaskno()) && !StringUtils.isEmpty(mesOutApply.getStationId())) {
+// // 鎸夐浂浠朵簩缁寸爜鏌ヨ鏈夊嚑涓墭锛屽鎵樼敓鎴愬涓换鍔★紝姣忔墭瀵瑰簲闆朵欢浜岀淮鐮�
+//// String barCode = barCodeListToStr(mesOutApply.getItemBarcode());
+//// EntityWrapper<MatItemBarcode> matItemBarcodeEntityWrapper = new EntityWrapper<>();
+//// matItemBarcodeEntityWrapper.in("item_barcode", barCode);
+//// List<MatItemBarcode> barcodes = matItemBarcodeMapper.selectList(matItemBarcodeEntityWrapper);
+//// if (barcodes != null) {
+//// Map<String, List<MatItemBarcode>> map = barcodes.stream().collect(Collectors.groupingBy(MatItemBarcode::getZapplet));
+//// for (Map.Entry<String, List<MatItemBarcode>> entry : map.entrySet()) {
+//// List<MatItemBarcode> list = entry.getValue();
+//// List<String> codes = new ArrayList<>();
+//// for (MatItemBarcode zapllet : list) {
+//// codes.add(zapllet.getItemBarcode());
+//// }
+//
+// TransTask transTask = new TransTask();
+// transTask.setTaskno(mesOutApply.getTaskno());
+// transTask.setTaskname(mesOutApply.getTaskname());
+// transTask.setOrderNo(mesOutApply.getOrderNo());
+// transTask.setTransType(mesOutApply.getTransType());
+// transTask.setCurStationId(WMS_TRANS_START_STATION_3);
+// transTask.setNextProcess(mesOutApply.getProductLineId());
+// transTask.setNextStationId(mesOutApply.getStationId());
+// transTask.setItemno(mesOutApply.getItemno());
+// transTask.setQty(mesOutApply.getQty());
+// transTask.setProductLineId(mesOutApply.getProductLineId());
+// transTask.setItemBarcode(mesOutApply.getItemBarcode());
+// transTask.setTuoPanId(locDetl.getZpallet());
+// transTask.setOperateType(1);
+// transTask.setAgvFactory(1);
+// JSONObject sendAgvTask = submitTask(transTask);
+// if (!"1".equals(sendAgvTask.getString("Success"))) {
+// log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触", JSONObject.toJSONString(transTask));
+// }
+//// }
+//// }
+// }
+// } catch (Exception e) {
+// log.error("涓嬪彂AGV杩愯緭浠诲姟澶辫触", e);
+// }
}
return 1;
@@ -513,8 +586,8 @@
transTask.setOrderNo(mesInApply.getOrderNo());
transTask.setTransType(mesInApply.getTransType());
transTask.setCurProcess(mesInApply.getProductLineId());
- transTask.setCurStationId(mesInApply.getStationID());
- transTask.setNextStationId(WMS_TRANS_START_STATION_2);
+ transTask.setCurStationId("A3");
+ transTask.setNextStationId("A4");
transTask.setItemno(WMS_ZPALLET_ID); // 鍥哄畾涓虹┖鎵樼殑缂栫爜
transTask.setQty(1); // 绌烘墭鍙洖1涓�
transTask.setProductLineId(mesInApply.getProductLineId());
@@ -571,9 +644,9 @@
orderDetlPakin.setMaktx(mat.getMaktx());
orderDetlPakin.setSpecs(mat.getSpecs());
orderDetlPakin.setModel(mat.getModel());
- if (mesInApply.getProductInfo() != null) {
- orderDetlPakin.setStandby1(JSONObject.toJSONString(mesInApply.getProductInfo())); //闆朵欢璇︽儏瀛樺湪1
- }
+ List<String> itemBarcode = mesInApply.getProductInfo().stream().map(MesInApply.ProductInfo::getItemBarcode).collect(Collectors.toList());
+ orderDetlPakin.setStandby1(barCodeListToStr(itemBarcode)); //闆朵欢璇︽儏瀛樺湪1
+
orderDetlPakin.setStandby2("0"); //淇濆瓨榻愬鎬ф鏌ユ爣璇嗭紝1 妫�鏌ワ紱0 涓嶆鏌ワ紱
orderDetlPakin.setCreateBy(defaultUserId);
orderDetlPakin.setCreateTime(now);
@@ -597,7 +670,6 @@
waitPakin.setAppeTime(now);
waitPakin.setModiUser(defaultUserId);
waitPakin.setModiTime(now);
- List<String> itemBarcode = mesInApply.getProductInfo().stream().map(MesInApply.ProductInfo::getItemBarcode).collect(Collectors.toList());
waitPakin.setStandby1(barCodeListToStr(itemBarcode));
waitPakinService.insert(waitPakin);
OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE, orderPakin.getId(), orderDetlPakin.getMatnr(), orderDetlPakin.getBatch(),
@@ -770,6 +842,9 @@
* @return
*/
public static String barCodeListToStr(List<String> list) {
+ if(list.isEmpty()) {
+ return "";
+ }
StringBuilder stringBuilder = new StringBuilder();
for (String str : list) {
stringBuilder.append(str).append(",");
@@ -1047,8 +1122,14 @@
rcsTaskSubmit.setTargetRoute(targetRouteList);
// 杞彂缁欐捣搴锋垨鍗庢檽RCS
- int success = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory());
- if (success == 1) {
+ RcsReturn rcsReturn = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory());
+ if (rcsReturn.getCode().equals("SUCCESS")) {
+ JSONObject data = rcsReturn.getData();
+ String robotTaskCode = data.getString("robotTaskCode");
+ if (Cools.isEmpty(transTask.getTaskno())) {
+ transTask.setTaskno(robotTaskCode);
+ result.put("taskno", transTask.getTaskno());
+ }
int workNo = commonService.getWorkNo(WorkNoType.OTHER.type);
Date now = new Date();
Task task = new Task();
@@ -1075,12 +1156,12 @@
taskDetl.setIoTime(task.getIoTime());
taskDetl.setMatnr(transTask.getItemno());
taskDetl.setAnfme(0.0);
- taskDetl.setStandby1(String.valueOf(transTask.getQty()));
+// taskDetl.setStandby1(String.valueOf(transTask.getQty()));
taskDetl.setMaktx(mat.getMaktx());
taskDetl.setSpecs(mat.getSpecs());
taskDetl.setOrderNo(transTask.getOrderNo());
taskDetl.setZpallet(transTask.getTuoPanId());
- taskDetl.setMemo(JSONObject.toJSONString(transTask.getItemBarcode()));
+ taskDetl.setMemo(barCodeListToStr(transTask.getItemBarcode()));
taskDetl.setModiUser(defaultUserId);
taskDetl.setModiTime(now);
taskDetl.setAppeUser(defaultUserId);
@@ -1163,7 +1244,7 @@
* @return
*/
public int applyInStation(TransParent apply) {
- String path = ("LL").equals(apply.getProductLineId()) ? "AGVTransportPalletNotice" : "AprsAGVTransportPalletNotice";
+ String path = ("LL").equals(apply.getProductLineId()) ? "AGVTransportPalletNotice" : "Aprs/AGVTransportPalletNotice";
String url = MES_URL + path;
String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
if (!StringUtils.isEmpty(response) && response.contains("Success")){
@@ -1195,7 +1276,7 @@
// rcsTaskContinue.setTriggerType("ROBOT");
// rcsTaskContinue.setTriggerCode(allow.getAgvCode());
- int success = rcsService.continueTask(rcsTaskContinue, checkRcsFactory(allow.getAgvCode()));
+ int success = rcsService.continueTask(rcsTaskContinue, 1);
mesReturn.setSuccess(success == 1 ? "1" : "2");
mesReturn.setMessage(success == 1 ? "" : "杞彂缁橰CS澶辫触");
}
@@ -1217,7 +1298,8 @@
arrivalStation.setOrderNo(null);
}
- String url = MES_URL + "AGVArrivalCompleted";
+ String path = ("LL").equals(arrivalStation.getProductLineId()) ? "AGVArrivalCompleted" : "Aprs/AGVArrivalCompleted";
+ String url = MES_URL + path;
String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(arrivalStation));
if (!StringUtils.isEmpty(response) && response.contains("Success")){
MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
@@ -1282,7 +1364,8 @@
*/
public int outStation(TransParent apply) {
- String url = MES_URL + "AGVDepartureCompleted";
+ String path = ("LL").equals(apply.getProductLineId()) ? "AGVDepartureCompleted" : "Aprs/AGVDepartureCompleted";
+ String url = MES_URL + path;
String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
if (!StringUtils.isEmpty(response) && response.contains("Success")){
MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index c3021b9..29ffc69 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -7,6 +7,8 @@
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.mes.MesOutApply;
+import com.zy.asrs.entity.mes.TransTask;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.enums.CommonEnum;
import com.zy.asrs.enums.LocStsType;
@@ -25,6 +27,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -41,6 +44,11 @@
@Slf4j
@Service
public class MobileServiceImpl implements MobileService {
+ @Value("${wms.wmsTransStartStation2}")
+ public String WMS_TRANS_START_STATION_2;
+
+ @Value("${wms.zpalletId}")
+ public String WMS_ZPALLET_ID;
@Autowired
private MatService matService;
@@ -114,6 +122,9 @@
private BasStationService basStationService;
@Autowired
private BasContainerService basContainerService;
+
+ @Resource
+ private MesService mesService;
@Override
@Transactional
@@ -654,6 +665,7 @@
elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
detlDto.setOrderId(order.getId());
detlDto.setOrderNo(order.getOrderNo());
+ detlDto.setStandby1(detls.getStandby1());
if (DetlDto.has(detlDtos, detlDto)) {
DetlDto one = DetlDto.findDto(detlDtos, detlDto);
assert one != null;
@@ -706,6 +718,7 @@
waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
waitPakin.setStatus("Y"); // 鐘舵��
+ waitPakin.setStandby1(detlDto.getStandby1());
waitPakin.setAppeUser(userId);
waitPakin.setAppeTime(now);
waitPakin.setModiUser(userId);
@@ -1274,7 +1287,7 @@
@Override
@Transactional
- public R callEmptyBinOutBound(String staNo, String locType, Long userId) {
+ public R callEmptyBinOutBound(MesOutApply mesOutApply, String staNo, String locType, Long userId) {
LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'D').eq("loc_type2", locType));
if(locMast == null) {
return R.parse("璇ョ被鍨嬶細" + locType +"绌烘墭鐩樹笉瀛樺湪");
@@ -1282,11 +1295,11 @@
// 鑾峰彇璺緞
Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
.eq("type_no", 110)
- .eq("stn_no", staNo)
+ .eq("stn_no", 204)
.eq("crn_no", locMast.getCrnNo());
StaDesc staDesc = staDescService.selectOne(wrapper);
if (staDesc == null) {
- R.parse("鍑哄簱璺緞涓嶅瓨鍦�,绔欑偣锛�" + staNo);
+ return R.parse("鍑哄簱璺緞涓嶅瓨鍦�,绔欑偣锛�" + staNo);
}
Date now = new Date();
// 鐢熸垚宸ヤ綔妗�
@@ -1310,6 +1323,14 @@
wrkMast.setAppeTime(now);
wrkMast.setModiUser(userId);
wrkMast.setModiTime(now);
+ if (mesOutApply != null) {
+ wrkMast.setTaskNo(mesOutApply.getTaskno());
+ wrkMast.setAgvSta(mesOutApply.getStationId());
+ wrkMast.setMemo(JSONObject.toJSONString(mesOutApply));
+ } else {
+ wrkMast.setAgvSta(staNo);
+ }
+
wrkMastService.insert(wrkMast);
// 鏇存柊搴撲綅鐘舵��
@@ -1319,10 +1340,35 @@
locMast.setModiTime(now);
locMastService.updateById(locMast);
}
-
+ log.info("鐢熸垚绌烘墭鍑哄簱浠诲姟鎴愬姛,浠诲姟鍙�:{}",wrkMast.getWrkNo());
return R.ok("鍑哄簱鎴愬姛");
}
+ @Override
+ public R callEmptyBinInBound(String site, Long userId) {
+ TransTask transTask = new TransTask();
+// transTask.setTaskno(mesInApply.getTaskno());
+// transTask.setTaskname(mesInApply.getTaskname());
+// transTask.setOrderNo(mesInApply.getOrderNo());
+ transTask.setTransType("02"); // 涓嬫瘺鍧�
+// transTask.setCurProcess(mesInApply.getProductLineId());
+ transTask.setCurStationId(site);
+ transTask.setNextStationId(WMS_TRANS_START_STATION_2);
+ transTask.setItemno(WMS_ZPALLET_ID); // 鍥哄畾涓虹┖鎵樼殑缂栫爜
+ transTask.setQty(1); // 绌烘墭鍙洖1涓�
+// transTask.setProductLineId(mesInApply.getProductLineId());
+ transTask.setOperateType(1);
+ transTask.setAgvFactory(1);
+ JSONObject sendAgvTask = mesService.submitTask(transTask);
+ if ("1".equals(sendAgvTask.getString("Success"))) {
+ log.info("pda鍛煎彨鏂欐鍥炲簱鎴愬姛,{}", JSONObject.toJSONString(transTask));
+ return R.ok("鎴愬姛");
+ } else {
+ log.error("pda鍛煎彨鏂欐鍥炲簱澶辫触,{}", JSONObject.toJSONString(transTask));
+ return R.parse("澶辫触");
+ }
+ }
+
/**
* @author Ryan
* @date 2025/9/25
diff --git a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
index 4ffaa27..d743466 100644
--- a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -1,10 +1,12 @@
package com.zy.asrs.service.impl;
import com.alibaba.excel.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.mes.TransArrivalStation;
+import com.zy.asrs.entity.mes.TransInOutStationAllow;
import com.zy.asrs.entity.mes.TransParent;
import com.zy.asrs.entity.rcs.*;
import com.zy.asrs.enums.RcsRetMethodEnum;
@@ -25,10 +27,7 @@
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -55,7 +54,7 @@
@Resource
private BlockTaskMapper blockTaskMapper;
@Resource
- private TaskDetlServiceImpl taskDetlService;
+ private TaskDetlService taskDetlService;
@Resource
private WrkMastService wrkMastService;
@@ -172,7 +171,7 @@
* @param rcsFactory 1 娴峰悍锛�2 鍗庢檽锛�
* @return
*/
- public int submitTask(RcsTaskSubmit rcsTaskSubmit, int rcsFactory){
+ public RcsReturn submitTask(RcsTaskSubmit rcsTaskSubmit, int rcsFactory){
// String response = "";
// boolean success = false;
@@ -218,22 +217,46 @@
// }
// }
// return success ? 1 : 0;
+ RcsReturn rcsReturn = new RcsReturn();
+ boolean success = false;
+ String url = rcsFactory == 2 ? HX_URL : HIK_URL + "api/robot/controller/task/submit";
+ String response = "";
+ try {
+ response = sendPost(url, JSONObject.toJSONString(rcsTaskSubmit));
+ if (!StringUtils.isEmpty(response) && response.contains("code")) {
+ rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
+ if ("SUCCESS".equals(rcsReturn.getCode())) {
+ // 妯℃嫙杩斿洖
+// rcsReturn.setCode("SUCCESS");
+// JSONObject jsonObject = new JSONObject();
+// jsonObject.put("robotTaskCode",4);
+// rcsReturn.setData(jsonObject);
+ success = true;
- String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/robot/controller/task/submit";
- String response = sendPost(url, JSONObject.toJSONString(rcsTaskSubmit));
-
- if (!StringUtils.isEmpty(response) && response.contains("code")){
- RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
- if("SUCCESS".equals(rcsReturn.getCode())) {
- JSONObject data = rcsReturn.getData();
- String robotTaskCode = data.getString("robotTaskCode");
- if (robotTaskCode.equals(rcsTaskSubmit.getRobotTaskCode())){
- return 1;
+ log.info("鍛煎彨agv鎼繍鎴愬姛锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
+ } else {
+ log.error("鍛煎彨agv鎼繍澶辫触锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
}
}
+ } catch (Exception e) {
+ log.error("鍛煎彨agv鎼繍寮傚父", e);
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鍛煎彨agv鎼繍",
+ url,
+ null,
+ "127.0.0.1",
+ JSON.toJSONString(rcsTaskSubmit),
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("鍛煎彨agv鎼繍淇濆瓨鎺ュ彛鏃ュ織寮傚父", e);
+ }
}
-
- return 0;
+ return rcsReturn;
}
/**
@@ -333,7 +356,7 @@
try {
// q3,q8=1
- if ("1".equals(carrierType)) { //AGV
+// if ("1".equals(carrierType)) { //AGV
EntityWrapper<Task> wrapper = new EntityWrapper<>();
wrapper.eq("task_no", robotTaskCode);
Task task = taskService.selectOne(wrapper);
@@ -403,13 +426,20 @@
mesService.applyOutStation(apply);
} else if (RcsRetMethodEnum.ARRIVE_OFF_STATION.getCode().equals(method)) {
mesService.outStation(apply);
+ // agv缁х画鎵ц
+
+ TransInOutStationAllow inOutStationAllow = new TransInOutStationAllow();
+ inOutStationAllow.setTaskno(robotTaskCode);
+ inOutStationAllow.setStatus("Y");
+ inOutStationAllow.setAgvCode("agv001");
+ mesService.allowOutStation(inOutStationAllow);
}
} break;
case ARRIVE_ON_STATION: {
// TODO: 濡傛灉浜х嚎鏄繍杈撹捣鐐癸紝鍒欎笉鍙戦�佸埌绔欏畬鎴愶紝鏆傛椂璋冭瘯浣跨敤lG锛屾湭瀹炵幇鍒ゆ柇
- if (rcsReporterTask.getCurrentSeq() == 0 && task.getSourceStaNo().startsWith("LG")) {
- break;
- }
+// if (rcsReporterTask.getCurrentSeq() == 0 && task.getSourceStaNo().startsWith("LG") || task.getSourceStaNo().startsWith("LL")) {
+// break;
+// }
EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>();
wapper2.eq("wrk_no", task.getWrkNo())
@@ -419,7 +449,7 @@
TransArrivalStation arrivalStation = new TransArrivalStation();
arrivalStation.setTaskno(robotTaskCode);
arrivalStation.setTaskname(memo.getString("taskName"));
- arrivalStation.setTuoPanId(taskDetl.getZpallet()); // memo.getString("TuoPanId")
+ arrivalStation.setTuoPanId(taskDetl == null ? "":taskDetl.getZpallet()); // memo.getString("TuoPanId")
arrivalStation.setProductLineId(memo.getString("ProductLineId"));
String transType = memo.getString("TransType");
arrivalStation.setDaotype(transType);
@@ -431,18 +461,19 @@
arrivalStation.setOrderNo(memo.getString("OrderNo"));
arrivalStation.setAgvCode(singleRobotCode);
arrivalStation.setItemno(memo.getString("Itemno"));
- String memo2 = taskDetl.getMemo();
- List<String> itemBarCode = new ArrayList<>();
- Matcher matcher = Pattern.compile("\"([^\"]*)\"").matcher(memo2);
- while (matcher.find()) {
- itemBarCode.add(matcher.group(1));
- }
- arrivalStation.setItemBarcode(itemBarCode);
+ String memo2 = taskDetl == null ? "":taskDetl.getMemo();
+ String[] array = memo2.split(",");
+// List<String> itemBarCode = new ArrayList<>();
+// Matcher matcher = Pattern.compile("\"([^\"]*)\"").matcher(memo2);
+// while (matcher.find()) {
+// itemBarCode.add(matcher.group(1));
+// }
+ arrivalStation.setItemBarcode(Arrays.asList(array));
mesService.arriveOnStation(arrivalStation);
} break;
default: {} break;
}
- }
+// }
// else if ("CTU".equals(carrierType)) { //CTU
// EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
// wrapper.eq("task_no", robotTaskCode);
diff --git a/src/main/java/com/zy/asrs/task/JlerScheduler.java b/src/main/java/com/zy/asrs/task/JlerScheduler.java
new file mode 100644
index 0000000..c81f34d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/JlerScheduler.java
@@ -0,0 +1,65 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.entity.Task;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.mapper.WrkMastMapper;
+import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.service.TaskService;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.handler.JlerHandler;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description 娴庡崡浜屾満搴婂姞宸ョ浉鍏冲畾鏃朵换鍔�
+ * @createDate 2025/11/18 14:18
+ */
+@Component
+public class JlerScheduler {
+
+ @Resource
+ private ConfigService configService;
+
+ @Resource
+ private JlerHandler jlerHandler;
+
+ @Resource
+ private TaskService taskService;
+
+ @Resource
+ private WrkMastMapper wrkMastMapper;
+
+ @Resource
+ private BasDevpService basDevpService;
+
+ @Resource
+ private WrkMastService wrkMastService;
+
+ /**
+ * 璐х墿鍒拌揪鍑哄簱鍙o紝鐢熸垚agv浠诲姟
+ */
+ @Scheduled(cron = "0/5 * * * * ? ")
+ private void createAgvOutTasks() {
+ List<BasDevp> devps = basDevpService.selectList(new EntityWrapper<BasDevp>().in("dev_no", 202, 204)
+ .gt("wrk_no",0).lt("wrk_no",9990));
+ for(BasDevp basDevp:devps) {
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()));
+ if(wrkMast != null && wrkMast.getCallAgv() == 0 && !Cools.isEmpty(wrkMast.getAgvSta())) {
+ jlerHandler.createAgvOutTasks(wrkMast);
+ }
+ }
+ }
+
+}
+
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index 8d350c7..357d643 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -5,9 +5,7 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.mes.MesInApply;
-import com.zy.asrs.entity.mes.MesRecvFeedback;
-import com.zy.asrs.entity.mes.MesReturn;
+import com.zy.asrs.entity.mes.*;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.RcsServiceImpl;
import com.zy.asrs.task.core.ReturnT;
@@ -180,7 +178,7 @@
String erpReport = Parameter.get().getErpReport();
if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("settle", 4)
- .eq("doc_type", 3).orderBy("update_time"));
+ .in("doc_type", 3).orderBy("update_time"));
if (orderPakin == null) {
return;
}
@@ -189,16 +187,59 @@
MesInApply result = JSONObject.parseObject(orderPakin.getMemo(), MesInApply.class);
result.setQty(orderDetl.getQty().intValue());
-// String url = MES_URL + "loadComplete";
-// String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(result));
-// if (!StringUtils.isEmpty(response) && response.contains("Success")) {
-// MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
-// if ("1".equals(mesReturn.getSuccess())) {
+ String url = MES_URL + "loadComplete";
+ String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(result));
+ if (!StringUtils.isEmpty(response) && response.contains("Success")) {
+ MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
+ if ("1".equals(mesReturn.getSuccess())) {
orderPakin.setSettle(6L);
orderPakinService.updateById(orderPakin);
log.info("璁㈠崟涓婃姤鎴愬姛锛宱rderNo={}", orderPakin.getOrderNo());
-// }
-// }
+ }
+ }
+ }
+ }
+ }
+
+ // 鍑哄簱瀹屾垚涓婃姤
+ @Scheduled(cron = "0/10 * * * * ? ")
+ @Async("orderThreadPool")
+ void outOrderCompleteReport() {
+ String erpReport = Parameter.get().getErpReport();
+ if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
+
+ List<OrderPakout> orderPakoutList = orderPakoutService.selectList(new EntityWrapper<OrderPakout>().eq("settle", 4).orderBy("update_time"));
+ if (orderPakoutList.size() == 0) {
+ return;
+ }
+
+ for(OrderPakout orderPakout:orderPakoutList) {
+ try {
+ MesOutApply mesOutApply = JSONObject.parseObject(orderPakout.getMemo(), MesOutApply.class);
+ MesOutFeedback mesOutFeedback = new MesOutFeedback();
+ mesOutFeedback.setTaskno(mesOutApply.getTaskno());
+ mesOutFeedback.setTaskname(mesOutApply.getTaskname());
+ mesOutFeedback.setProductLineId(mesOutApply.getProductLineId());
+ mesOutFeedback.setStationId(mesOutApply.getStationId());
+ mesOutFeedback.setItemno(mesOutApply.getItemno());
+ mesOutFeedback.setTuoPanId(orderPakout.getNumber());
+ mesOutFeedback.setQty(mesOutApply.getQty());
+ mesOutFeedback.setItemBarcode(mesOutApply.getItemBarcode());
+ mesOutFeedback.setOrderNo(mesOutApply.getOrderNo());
+
+ String url = MES_URL + "Aprs/issueComplete";
+ String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(mesOutFeedback));
+ if (!StringUtils.isEmpty(response) && response.contains("Success")) {
+ MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
+ if ("1".equals(mesReturn.getSuccess())) {
+ orderPakout.setSettle(6L);
+ orderPakoutService.updateById(orderPakout);
+ log.info("璁㈠崟涓婃姤鎴愬姛锛宱rderNo={}", orderPakout.getOrderNo());
+ }
+ }
+ }catch (Exception e) {
+ log.error("鍑哄簱璁㈠崟涓婃姤澶辫触,orderNo:{},exception:{}",orderPakout.getOrderNo(),e);
+ }
}
}
}
diff --git a/src/main/java/com/zy/asrs/task/handler/JlerHandler.java b/src/main/java/com/zy/asrs/task/handler/JlerHandler.java
new file mode 100644
index 0000000..06862fe
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/JlerHandler.java
@@ -0,0 +1,140 @@
+package com.zy.asrs.task.handler;
+
+import com.alibaba.fastjson.JSONObject;
+import com.core.common.Cools;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.mes.MesInApply;
+import com.zy.asrs.entity.mes.MesOutApply;
+import com.zy.asrs.entity.mes.TransTask;
+import com.zy.asrs.service.MesService;
+import com.zy.asrs.service.WrkMastService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+
+/**
+ * @author pang.jiabao
+ * @description 娴庡崡浜屾満搴婂姞宸ョ浉鍏冲畾鏃朵换鍔�
+ * @createDate 2025/12/10 14:25
+ */
+@Slf4j
+@Service
+public class JlerHandler {
+
+ @Resource
+ private MesService mesService;
+
+ @Value("${wms.wmsTransStartStation3}")
+ public String WMS_TRANS_START_STATION_3;
+
+ @Value("${wms.zpalletId}")
+ public String WMS_ZPALLET_ID;
+
+ @Resource
+ private WrkMastService wrkMastService;
+
+ @Transactional
+ public void createAgvOutTasks(WrkMast wrkMast) {
+
+ String memo = wrkMast.getMemo();
+ MesOutApply mesOutApply = null;
+ if(!Cools.isEmpty(memo)) {
+ mesOutApply = JSONObject.parseObject(memo, MesOutApply.class);
+ }
+
+ // 绌烘墭鍑哄簱
+ if(wrkMast.getIoType() == 110) {
+ if(mesOutApply == null) { // 涓嶆槸mes涓嬪彂鐨勭┖鎵樺嚭搴�
+ TransTask transTask = new TransTask();
+// transTask.setTaskno(mesOutApply.getTaskno());
+// transTask.setTaskname(mesOutApply.getTaskname());
+// transTask.setOrderNo(mesOutApply.getOrderNo());
+ transTask.setTransType("01");
+ transTask.setCurStationId(WMS_TRANS_START_STATION_3);
+// transTask.setNextProcess(mesOutApply.getProductLineId());
+ transTask.setNextStationId(wrkMast.getAgvSta());
+ transTask.setItemno(WMS_ZPALLET_ID); // 鍥哄畾涓虹┖鎵樼殑缂栫爜
+ transTask.setQty(1); // 绌烘墭鍙嚭1涓�
+// transTask.setProductLineId(mesOutApply.getProductLineId());
+ transTask.setOperateType(1);
+ transTask.setAgvFactory(1);
+ JSONObject sendAgvTask = mesService.submitTask(transTask);
+ if ("1".equals(sendAgvTask.getString("Success"))) {
+ String taskno = sendAgvTask.getString("taskno");
+ if(Cools.isEmpty(wrkMast.getTaskNo())) {
+ wrkMast.setTaskNo(taskno);
+ }
+ wrkMast.setCallAgv(1);
+ wrkMastService.updateById(wrkMast);
+ }else {
+ log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触锛歿}", JSONObject.toJSONString(transTask));
+ }
+ } else {
+ TransTask transTask = new TransTask();
+ transTask.setTaskno(mesOutApply.getTaskno());
+ transTask.setTaskname(mesOutApply.getTaskname());
+ transTask.setOrderNo(mesOutApply.getOrderNo());
+ transTask.setTransType(mesOutApply.getTransType());
+ transTask.setCurStationId(WMS_TRANS_START_STATION_3);
+ transTask.setNextProcess(mesOutApply.getProductLineId());
+ transTask.setNextStationId(mesOutApply.getStationId());
+ transTask.setItemno(WMS_ZPALLET_ID); // 鍥哄畾涓虹┖鎵樼殑缂栫爜
+ transTask.setItemBarcode(new ArrayList<>()); // 娌℃湁闆朵欢浜岀淮鐮�
+ transTask.setQty(1); // 绌烘墭鍙嚭1涓�
+ transTask.setProductLineId(mesOutApply.getProductLineId());
+ transTask.setOperateType(1);
+ transTask.setAgvFactory(1);
+ JSONObject sendAgvTask = mesService.submitTask(transTask);
+ if ("1".equals(sendAgvTask.getString("Success"))) {
+// String taskno = sendAgvTask.getString("taskno");
+// if(Cools.isEmpty(wrkMast.getTaskNo())) {
+// wrkMast.setTaskNo(taskno);
+// }
+ wrkMast.setCallAgv(1);
+ wrkMastService.updateById(wrkMast);
+ }else {
+ log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触锛歿}", JSONObject.toJSONString(transTask));
+ }
+ }
+ } else if(wrkMast.getIoType() == 101) { // 婊℃墭鍑哄簱
+ if(mesOutApply == null) {
+ log.error("婊℃墭鍑哄簱鍛煎彨agv鏃爐ransTask锛屼换鍔″彿锛歿}",wrkMast.getWrkNo());
+ } else {
+ TransTask transTask = new TransTask();
+ transTask.setTaskno(mesOutApply.getTaskno());
+ transTask.setTaskname(mesOutApply.getTaskname());
+ transTask.setOrderNo(mesOutApply.getOrderNo());
+ transTask.setTransType(mesOutApply.getTransType());
+ transTask.setCurStationId(WMS_TRANS_START_STATION_3);
+ transTask.setNextProcess(mesOutApply.getProductLineId());
+ transTask.setNextStationId(mesOutApply.getStationId());
+ transTask.setItemno(mesOutApply.getItemno());
+ transTask.setQty(mesOutApply.getQty());
+ transTask.setProductLineId(mesOutApply.getProductLineId());
+ transTask.setItemBarcode(mesOutApply.getItemBarcode());
+ transTask.setTuoPanId(wrkMast.getBarcode());
+ transTask.setOperateType(1);
+ transTask.setAgvFactory(1);
+
+ JSONObject sendAgvTask = mesService.submitTask(transTask);
+ if ("1".equals(sendAgvTask.getString("Success"))) {
+// String taskno = sendAgvTask.getString("taskno");
+// if(Cools.isEmpty(wrkMast.getTaskNo())) {
+// wrkMast.setTaskNo(taskno);
+// }
+ wrkMast.setCallAgv(1);
+ wrkMastService.updateById(wrkMast);
+ }else {
+ log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触锛歿}", JSONObject.toJSONString(transTask));
+ }
+ }
+ } else {
+ log.error("鍑哄簱鍛煎彨agv浠诲姟绫诲瀷閿欒锛屼换鍔″彿锛歿}",wrkMast.getWrkNo());
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 9e43cf2..17a163d 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -82,13 +82,13 @@
return R.error(CodeRes.EXIST_500);
}
}
- if (Cools.isEmpty(param.getLocType1(),param.getLocType2())){
+ if (Cools.isEmpty(param.getLocType2())){ // param.getLocType1(),
return R.error("楂樹綆/闀跨煭妫�娴嬩俊鍙蜂笉鑳戒负绌�");
}
// 婧愮珯鐐圭姸鎬佹娴�
BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
- sourceStaNo.setLocType1(param.getLocType1());
+ sourceStaNo.setLocType1((short) 1); // todo 鍏堥粯璁や綆搴撲綅
sourceStaNo.setLocType2(param.getLocType2());
LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 3d4a5fd..de14ec8 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -121,7 +121,7 @@
#褰撳墠搴撳悕绉�
currentName: 鍔犲伐搴�
#绔嬪簱AGV鑷姩杩愯揣鍑哄簱鍙g紪鐮�
- wmsTransStartStation1: 205
+ wmsTransStartStation1: 204
#绔嬪簱AGV鑷姩杩愯揣鍏ュ簱鍙g紪鐮侊紙杈撻�佺嚎锛�
wmsTransStartStation2: 202
#绔嬪簱AGV鑷姩杩愯揣鍑哄簱鍙g紪鐮侊紙杈撻�佺嚎锛�
@@ -132,6 +132,7 @@
#mes瀵规帴
mes:
url: http://172.26.11.250/dev-api/basicmodel/Api/WMS/
+# url: http://192.9.100.173:8088/prod-api/basicmodel/Api/WMS/
#榛樿鎺ュ彛鎿嶄綔浜哄憳id
defaultUserId: 30
diff --git a/src/main/resources/mapper/TaskDetlMapper.xml b/src/main/resources/mapper/TaskDetlMapper.xml
index 0754c45..0c224d6 100644
--- a/src/main/resources/mapper/TaskDetlMapper.xml
+++ b/src/main/resources/mapper/TaskDetlMapper.xml
@@ -3,54 +3,54 @@
<mapper namespace="com.zy.asrs.mapper.TaskDetlMapper">
<!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="BaseResultMap" type="com.zy.asrs.entity.TaskDetl">
- <result column="wrk_no" property="wrkNo" />
- <result column="io_time" property="ioTime" />
- <result column="anfme" property="anfme" />
- <result column="zpallet" property="zpallet" />
- <result column="matnr" property="matnr" />
- <result column="maktx" property="maktx" />
- <result column="batch" property="batch" />
- <result column="order_no" property="orderNo" />
- <result column="specs" property="specs" />
- <result column="model" property="model" />
- <result column="color" property="color" />
- <result column="brand" property="brand" />
- <result column="unit" property="unit" />
- <result column="price" property="price" />
- <result column="sku" property="sku" />
- <result column="units" property="units" />
- <result column="barcode" property="barcode" />
- <result column="origin" property="origin" />
- <result column="manu" property="manu" />
- <result column="manu_date" property="manuDate" />
- <result column="item_num" property="itemNum" />
- <result column="safe_qty" property="safeQty" />
- <result column="weight" property="weight" />
- <result column="man_length" property="manLength" />
- <result column="volume" property="volume" />
- <result column="three_code" property="threeCode" />
- <result column="supp" property="supp" />
- <result column="supp_code" property="suppCode" />
- <result column="be_batch" property="beBatch" />
- <result column="dead_time" property="deadTime" />
- <result column="dead_warn" property="deadWarn" />
- <result column="source" property="source" />
- <result column="inspect" property="inspect" />
- <result column="danger" property="danger" />
- <result column="modi_user" property="modiUser" />
- <result column="modi_time" property="modiTime" />
- <result column="appe_user" property="appeUser" />
- <result column="appe_time" property="appeTime" />
- <result column="memo" property="memo" />
- <result column="line_number" property="lineNumber" />
- <result column="standby1" property="standby1" />
- <result column="standby2" property="standby2" />
- <result column="standby3" property="standby3" />
- <result column="box_type1" property="boxType1" />
- <result column="box_type2" property="boxType2" />
- <result column="box_type3" property="boxType3" />
+<!-- <resultMap id="BaseResultMap" type="com.zy.asrs.entity.TaskDetl">-->
+<!-- <result column="wrk_no" property="wrkNo" />-->
+<!-- <result column="io_time" property="ioTime" />-->
+<!-- <result column="anfme" property="anfme" />-->
+<!-- <result column="zpallet" property="zpallet" />-->
+<!-- <result column="matnr" property="matnr" />-->
+<!-- <result column="maktx" property="maktx" />-->
+<!-- <result column="batch" property="batch" />-->
+<!-- <result column="order_no" property="orderNo" />-->
+<!-- <result column="specs" property="specs" />-->
+<!-- <result column="model" property="model" />-->
+<!-- <result column="color" property="color" />-->
+<!-- <result column="brand" property="brand" />-->
+<!-- <result column="unit" property="unit" />-->
+<!-- <result column="price" property="price" />-->
+<!-- <result column="sku" property="sku" />-->
+<!-- <result column="units" property="units" />-->
+<!-- <result column="barcode" property="barcode" />-->
+<!-- <result column="origin" property="origin" />-->
+<!-- <result column="manu" property="manu" />-->
+<!-- <result column="manu_date" property="manuDate" />-->
+<!-- <result column="item_num" property="itemNum" />-->
+<!-- <result column="safe_qty" property="safeQty" />-->
+<!-- <result column="weight" property="weight" />-->
+<!-- <result column="man_length" property="manLength" />-->
+<!-- <result column="volume" property="volume" />-->
+<!-- <result column="three_code" property="threeCode" />-->
+<!-- <result column="supp" property="supp" />-->
+<!-- <result column="supp_code" property="suppCode" />-->
+<!-- <result column="be_batch" property="beBatch" />-->
+<!-- <result column="dead_time" property="deadTime" />-->
+<!-- <result column="dead_warn" property="deadWarn" />-->
+<!-- <result column="source" property="source" />-->
+<!-- <result column="inspect" property="inspect" />-->
+<!-- <result column="danger" property="danger" />-->
+<!-- <result column="modi_user" property="modiUser" />-->
+<!-- <result column="modi_time" property="modiTime" />-->
+<!-- <result column="appe_user" property="appeUser" />-->
+<!-- <result column="appe_time" property="appeTime" />-->
+<!-- <result column="memo" property="memo" />-->
+<!-- <result column="line_number" property="lineNumber" />-->
+<!-- <result column="standby1" property="standby1" />-->
+<!-- <result column="standby2" property="standby2" />-->
+<!-- <result column="standby3" property="standby3" />-->
+<!-- <result column="box_type1" property="boxType1" />-->
+<!-- <result column="box_type2" property="boxType2" />-->
+<!-- <result column="box_type3" property="boxType3" />-->
- </resultMap>
+<!-- </resultMap>-->
</mapper>
diff --git a/src/main/resources/mapper/WrkMastLogMapper.xml b/src/main/resources/mapper/WrkMastLogMapper.xml
index 8086afb..6d0ba62 100644
--- a/src/main/resources/mapper/WrkMastLogMapper.xml
+++ b/src/main/resources/mapper/WrkMastLogMapper.xml
@@ -61,6 +61,9 @@
<result column="full_plt" property="fullPlt" />
<result column="pre_have" property="preHave" />
<result column="take_none" property="takeNone" />
+ <result column="task_no" property="taskNo" />
+ <result column="call_agv" property="callAgv" />
+ <result column="agv_sta" property="agvSta" />
</resultMap>
<sql id="queryWhere">
<where>
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 83c4cce..5a9aacd 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -60,6 +60,9 @@
<result column="full_plt" property="fullPlt" />
<result column="pre_have" property="preHave" />
<result column="take_none" property="takeNone" />
+ <result column="task_no" property="taskNo" />
+ <result column="call_agv" property="callAgv" />
+ <result column="agv_sta" property="agvSta" />
</resultMap>
<select id="selectToBeCompleteData" resultMap="BaseResultMap">
@@ -70,7 +73,7 @@
select * from asr_wrk_mast
where wrk_sts=5
or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
- or (wrk_sts=15 and dateadd(mi,3,crn_end_time) <= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
+ or (wrk_sts=15 and dateadd(mi,1,crn_end_time) <= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))
order by io_time,wrk_no asc
</select>
--
Gitblit v1.9.1