From 2cd1fab84d88a16063d5036e77d690e9709f5d68 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期三, 10 七月 2024 08:28:32 +0800
Subject: [PATCH] #MES上报
---
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 246 +++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 235 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
index 67392a4..e7a3b9d 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -1,14 +1,20 @@
package com.zy.asrs.task.handler;
+import com.alibaba.fastjson.JSON;
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.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.MesOrderReportParam;
+import com.zy.asrs.entity.param.MesPakinReportParam;
+import com.zy.asrs.entity.param.MesPakoutReportParam;
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
+import com.zy.common.utils.HttpHandler;
+import io.swagger.models.auth.In;
import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -17,17 +23,37 @@
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
public class AgvWrkMastHandler extends AbstractHandler<String> {
+ //鍏ュ簱绫诲瀷鏁扮粍
+ private static final int[] IN_TYPE_ARRAY = new int[1];
+ //鍑哄簱绫诲瀷鏁扮粍
+ private static final int[] OUT_TYPE_ARRAY = new int[1];
+ //绉诲簱绫诲瀷鏁扮粍
+ private static final int[] MOVE_TYPE_ARRAY = new int[1];
+
@Value("${agvBasDev.maxWorkNum}")
private int maxWrokNum;
+ @Value("${mes.url}")
+ private String url;
+ @Value("${mes.orderReportPath}")
+ private String orderReportPath;
+ @Value("${mes.pakinReportPath}")
+ private String pakinReportPath;
+ @Value("${mes.pakoutReportPath}")
+ private String pakoutReportPath;
+ @Value("${mes.getTokenPath}")
+ private String getTokenPath;
+ @Value("${mes.appKey}")
+ private String appKey;
+ @Value("${mes.appSecret}")
+ private String appSecret;
+
@Autowired
private AgvWrkMastService agvWrkMastService;
@@ -51,6 +77,8 @@
private AgvBasDevpService agvBasDevpService;
@Autowired
private AgvWorkService agvWorkService;
+ @Autowired
+ private ApiLogService apiLogService;
@Transactional
public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) {
@@ -65,6 +93,8 @@
agvBasDevp = agvWrkMast.getSourceLocNo();
}
+ //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
+ List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
//淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
agvWrkMast.setWrkSts(207L);
@@ -171,7 +201,11 @@
agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
- agvWrkDetlService.insert(agvWrkDetl);
+ AgvLocDetl locDetl = new AgvLocDetl();
+ locDetl.setLocNo(agvWrkMast.getLocNo());
+ locDetl.sync(agvWrkDetl);
+ locDetl.setModiTime(new Date());
+ agvLocDetlService.insert(locDetl);
}
// 鎺ラ┏浣� -- 搴撲綅
if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
@@ -218,6 +252,12 @@
});
}
+ //涓婃姤mes
+ MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
+ if(!Cools.isEmpty(param)){
+ doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+ }
+
return SUCCESS;
}catch (Exception e){
log.error(""+e.getMessage());
@@ -228,27 +268,35 @@
@Transactional
public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) {
+
try{
+
+ //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
+ List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+
+ Date now = new Date();
int wrkNo = agvWrkMast.getWrkNo();
String orderNo = getOrderNoByWrkNo(wrkNo);
//淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
agvWrkMast.setWrkSts(207L);
agvWrkMastService.updateById(agvWrkMast);
//淇敼婧愬簱浣嶇姸鎬佷负O
- agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
+ if (agvWrkMast.getIoType() == 110) {
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
+ }
if(agvWrkMast.getIoType() == 101){
//鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
//鐢熸垚绌烘澘鍏ュ簱浠诲姟
Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2));
try {
- //agvWorkService.emptyPlateIn(agvWrkMast.getLocNo(),agvWrkMast.getBarcode(),containerType,9527L,true);
+// agvWorkService.emptyPlateIn(agvWrkMast.getLocNo(),agvWrkMast.getBarcode(),containerType,9527L,true);
AgvWrkMast wrkMast = new AgvWrkMast();
//宸ヤ綔鐘舵��
wrkMast.setWrkSts(201L);
//鍏ュ嚭搴撶被鍨�
wrkMast.setIoType(10);
- wrkMast.setIoTime(new Date());
+ wrkMast.setIoTime(now);
//浼樺厛绾�
wrkMast.setIoPri(300.0);
//婧愮珯鐐�
@@ -261,14 +309,22 @@
wrkMast.setWhsType(Integer.valueOf(agvWrkMast.getBarcode().substring(0, 2)));
wrkMast.setAppeUser(9527L);
- wrkMast.setAppeTime(new Date());
+ wrkMast.setAppeTime(now);
wrkMast.setModiUser(9527L);
- wrkMast.setModiTime(new Date());
-
+ wrkMast.setModiTime(now);
+ wrkMast.setLogErrMemo("completedCarryWrk");
if (!agvWrkMastService.insertByIncrease(wrkMast)) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
+ AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getSourceLocNo());
+ agvLocMast.setLocSts("S");
+ agvLocMast.setModiTime(now);
+ agvLocMastService.updateById(agvLocMast);
+ AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getLocNo());
+ agvBasDevp.setLocSts("R");
+ agvBasDevp.setLocType2(Short.valueOf(agvWrkMast.getBarcode().substring(0, 2)));
+ agvBasDevpService.updateById(agvBasDevp);
}catch (Exception e){
e.printStackTrace();
log.error(e.getMessage());
@@ -293,6 +349,13 @@
orderService.checkComplete(o);
});
}
+
+ //涓婃姤mes
+ MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
+ if(!Cools.isEmpty(param)){
+ doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+ }
+
return SUCCESS;
}catch (Exception e){
log.error(""+e.getMessage());
@@ -303,6 +366,9 @@
@Transactional
public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) {
try{
+ //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
+ List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+
int wrkNo = agvWrkMast.getWrkNo();
String orderNo = getOrderNoByWrkNo(wrkNo);
String agvBasDevp = "";
@@ -338,6 +404,11 @@
String o = map.get("orderNo").toString();
orderService.checkComplete(o);
});
+ }
+ //涓婃姤mes
+ MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
+ if(!Cools.isEmpty(param)){
+ doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
}
return SUCCESS;
}catch (Exception e){
@@ -512,4 +583,157 @@
return wrkMast;
}
+
+ private Object getReportParamByIoType(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){
+ if(Cools.isEmpty(agvWrkDetls)){
+ return null;
+ }
+ //鍖哄垎涓嶅悓浠诲姟绫诲瀷鐨勪笂鎶ユ柟寮�
+
+ if(Arrays.asList(IN_TYPE_ARRAY).contains(agvWrkMast.getIoType())){
+
+ }
+ if(Arrays.asList(OUT_TYPE_ARRAY).contains(agvWrkMast.getIoType())){
+
+ }
+ if(Arrays.asList(MOVE_TYPE_ARRAY).contains(agvWrkMast.getIoType())){
+ return generateMesParam(agvWrkMast,agvWrkDetls);
+ }
+
+ return null;
+ }
+
+ private void reportMesPakinOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){
+
+ for (AgvWrkDetl agvWrkDetl : agvWrkDetls){
+ MesPakinReportParam mesPakinReportParam = new MesPakinReportParam();
+ mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo());
+ mesPakinReportParam.setBizType("0");
+ mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(agvWrkDetl.getThreeCode(),agvWrkDetl.getMatnr(),agvWrkMast.getLocNo()));
+ mesPakinReportParam.setNoQrCodeExecAmount(new MesPakinReportParam.NoQrCodeExecAmount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null));
+
+ doHttpRequest(mesPakinReportParam,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+ }
+
+ }
+
+ private void reportMesPakoutOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){
+ for (AgvWrkDetl agvWrkDetl : agvWrkDetls){
+ MesPakoutReportParam mesPakoutReportParam = new MesPakoutReportParam();
+ mesPakoutReportParam.setStorageCode(agvWrkMast.getLocNo());
+ AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo());
+ mesPakoutReportParam.setWareHouseCode(agvLocMast.getPltType().toString());
+ mesPakoutReportParam.setMaterialCode(agvWrkDetl.getMatnr());
+ mesPakoutReportParam.setBatchNos(Arrays.asList(agvWrkDetl.getBatch()));
+ mesPakoutReportParam.setAmount(new MesPakoutReportParam.Amount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null));
+
+ doHttpRequest(mesPakoutReportParam,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+
+ }
+ }
+
+ private MesOrderReportParam generateMesParam(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){
+
+ if(agvWrkMast.getIoType() == 53){
+ String locNo = agvWrkMast.getLocNo();
+ agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo());
+ agvWrkMast.setSourceLocNo(locNo);
+ }
+
+ MesOrderReportParam param = new MesOrderReportParam();
+
+ List<MesOrderReportParam.TransferOrderItem> transferOrderItems = new ArrayList<>();
+ List<MesOrderReportParam.TransferOrderItem.InventoryDetail> inventoryDetails = new ArrayList<>();
+ //娣诲姞transferOrderItem灞炴��
+ MesOrderReportParam.TransferOrderItem transferOrderItem = new MesOrderReportParam.TransferOrderItem();
+ transferOrderItem.setRemark(agvWrkDetls.get(0).getOrderNo());
+ transferOrderItem.setTargetLocationCode(agvWrkMast.getLocNo());
+ transferOrderItems.add(transferOrderItem);
+ transferOrderItem.setInventoryDetails(inventoryDetails);
+
+ param.setTransferOrderItems(transferOrderItems);
+
+ for (AgvWrkDetl agvWrkDetl : agvWrkDetls){
+ MesOrderReportParam.TransferOrderItem.InventoryDetail inventoryDetail = new MesOrderReportParam.TransferOrderItem.InventoryDetail();
+ //娣诲姞amount灞炴��
+ MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount amount = new MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount();
+ amount.setAmount(agvWrkDetl.getAnfme());
+ amount.setUnitName(agvWrkDetl.getUnit());
+ inventoryDetail.setAmount(amount);
+ //娣诲姞bizKey灞炴��
+ MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey bizKey = new MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey();
+ bizKey.setBatchNo(agvWrkDetl.getThreeCode());
+ inventoryDetail.setBizKey(bizKey);
+ //娣诲姞inventoryDetail灞炴��
+ inventoryDetail.setLocationCode(agvWrkMast.getSourceLocNo());
+ inventoryDetail.setMaterialCode(agvWrkDetl.getMatnr());
+ inventoryDetail.setQcStatus(1);
+ inventoryDetail.setStorageStatus(1);
+ inventoryDetails.add(inventoryDetail);
+ }
+
+ return param;
+ }
+
+ //鑾峰彇mes token淇℃伅
+ private Map<String,Object> getMesTokenInfo(){
+ Map<String,String> param = new HashMap<>();
+ param.put("appKey",appKey);
+ param.put("appSecret",appSecret);
+
+ JSONObject jsonObject = doHttpRequest(param,null, "鑾峰彇MesToken", url, getTokenPath, null, "127.0.0.1");
+
+ Map<String,Object> headParam = new HashMap<>();
+ headParam.put("X-AUTH",JSON.parseObject(jsonObject.get("data").toString()).get("appAccessToken").toString());
+
+ return headParam;
+
+ }
+
+ private JSONObject doHttpRequest(Object requestParam,Map<String,Object> headParam, String namespace, String url, String path, String appkey, String ip){
+
+ String response = "";
+ boolean success = false;
+
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(url)
+ .setPath(path)
+ .setHeaders(headParam)
+ .setJson(JSONObject.toJSONString(requestParam))
+ .setHttps(true)
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+
+ if(Cools.isEmpty(jsonObject.get("code")) && Integer.parseInt(jsonObject.get("code").toString()) != 200){
+ throw new CoolException(jsonObject.get("dsc").toString());
+ }
+
+ return jsonObject;
+
+// String succeed = jsonObject.get("succeed").toString();
+//
+// int code = Cools.eq("0",succeed) ? 0 : 1;
+// if(code != 200){
+// throw new CoolException(jsonObject.get("dsc").toString());
+// }
+// success = true;
+
+ }catch (Exception e){
+ log.error(e.getMessage());
+ throw new CoolException(e.getMessage());
+ }finally {
+ apiLogService.save(
+ namespace,
+ url + path,
+ appkey,
+ ip,
+ JSON.toJSONString(JSONObject.toJSONString(requestParam)),
+ response,
+ success
+ );
+ }
+
+ }
}
--
Gitblit v1.9.1