diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java
index a84caa9c3..571e07595 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java
@@ -72,6 +72,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
int angle = 0; //角度
int electric_qty = 0; //电量
int status = 0; //三色灯状态
+ int last_status = 0; //三色灯状态
int error = 0;
int last_error = 0;
String error_message = "";
@@ -442,6 +443,12 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
dto.setError_code(String.valueOf(error_code));
dto.setError_info(error_message);
deviceErrorLogService.create(dto);
+
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("error", error);
+ param.put("error_msg", this.getError_message());
+ acsToWmsService.sendDeviceStatus(param);
}
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0);
last_error = error;
@@ -460,6 +467,15 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
} else if (phase == 0x74) {
//三色灯状态
status = ikey;
+
+ if (status != last_status) {
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("mode", status);
+ acsToWmsService.sendDeviceStatus(param);
+ }
+
+ last_status = status;
}
if (!ObjectUtil.isEmpty(data)) {
phase = 0;
diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java
index 6a6118704..ae697c853 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java
@@ -80,6 +80,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
int angle = 0; //角度
int electric_qty = 0; //电量
int status = 0; //三色灯状态
+ int last_status = 0; //三色灯状态
String error_message = "";
String error_type = "agv_error_type";
private Instruction instruction;
@@ -685,6 +686,12 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
dto.setError_code(String.valueOf(error_code));
dto.setError_info(error_message);
deviceErrorLogService.create(dto);
+
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("error", error);
+ param.put("error_msg", this.getError_message());
+ acsToWmsService.sendDeviceStatus(param);
}
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
last_error = error;
@@ -703,6 +710,15 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
} else if (phase == 0x74) {
//三色灯状态
status = ikey;
+
+ if (status != last_status) {
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("mode", status);
+ acsToWmsService.sendDeviceStatus(param);
+ }
+
+ last_status = status;
}
//进入区域(phase值)
else if (phase == 0x50) {
diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/device_status/DeviceStatusDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/device_status/DeviceStatusDeviceDriver.java
index d949b9a23..725422341 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/device_status/DeviceStatusDeviceDriver.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/device_status/DeviceStatusDeviceDriver.java
@@ -76,6 +76,7 @@ public class DeviceStatusDeviceDriver extends AbstractOpcDeviceDriver implements
String task_id = "";
Boolean iserror = false;
+ Boolean last_iserror = false;
Boolean hasGoods = false;
@Override
@@ -115,4 +116,15 @@ public class DeviceStatusDeviceDriver extends AbstractOpcDeviceDriver implements
jo.put("hasGoods", this.getHasGoods());
return jo;
}
+ public void setIserror(Boolean iserror) {
+ this.iserror = iserror;
+ if (this.iserror != this.last_iserror && this.iserror && device_id.startsWith("RGV")) {
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_id);
+ param.put("error", alarm);
+ param.put("error_msg", ErrorUtil.getDictDetail("ssx_error_type", alarm));
+ acsToWmsService.sendDeviceStatus(param);
+ }
+ this.last_iserror = iserror;
+ }
}
diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDeviceDriver.java
index e9b680cb0..4e332d911 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDeviceDriver.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDeviceDriver.java
@@ -177,6 +177,11 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task:" + last_to_task + "->" + to_task);
}
if (mode != last_mode) {
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("mode", mode);
+ acsToWmsService.sendDeviceStatus(param);
+
if (mode == 2) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号复位前requireSuccess:" + requireSucess);
this.setRequireSucess(false);
@@ -208,8 +213,15 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i
DeviceErrorLogDto dto = new DeviceErrorLogDto();
dto.setDevice_code(device_code);
dto.setError_code(String.valueOf(error));
- dto.setError_info(ErrorUtil.getDictDetail("hxhj_error_type", String.valueOf(error)));
+ String errorInfo = ErrorUtil.getDictDetail("hxhj_error_type", String.valueOf(error));
+ dto.setError_info(errorInfo);
deviceErrorLogService.create(dto);
+
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("error", error);
+ param.put("error_msg", errorInfo);
+ acsToWmsService.sendDeviceStatus(param);
}
logServer.deviceItemValue(this.device_code, "error", String.valueOf(error));
logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error);
diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java
index 82bc18afe..b6df3b53e 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java
@@ -228,6 +228,14 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme
requireSucess = false;
requireEmptyInSuccess = false;
}
+
+ if ("true".equals(this.device.getExtraValue().get("sendDeviceStatus"))) {
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("mode", mode);
+ acsToWmsService.sendDeviceStatus(param);
+ }
+
logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记:" + requireSucess);
logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode);
}
@@ -258,8 +266,17 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme
DeviceErrorLogDto dto = new DeviceErrorLogDto();
dto.setDevice_code(device_code);
dto.setError_code(String.valueOf(error));
- dto.setError_info(ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error)));
+ String errorInfo = ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error));
+ dto.setError_info(errorInfo);
deviceErrorLogService.create(dto);
+
+ if ("true".equals(this.device.getExtraValue().get("sendDeviceStatus"))) {
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("error", error);
+ param.put("error_msg", errorInfo);
+ acsToWmsService.sendDeviceStatus(param);
+ }
}
logServer.deviceItemValue(this.device_code, "error", String.valueOf(error));
logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error);
diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java
index fd8675851..b53882f36 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java
@@ -187,6 +187,12 @@ public class SiemensConveyorCkkDeviceDriver extends AbstractOpcDeviceDriver impl
requireEmptyOutSuccess = false;
logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记");
}
+
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("mode", mode);
+ acsToWmsService.sendDeviceStatus(param);
+
logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode));
logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode);
}
@@ -216,8 +222,15 @@ public class SiemensConveyorCkkDeviceDriver extends AbstractOpcDeviceDriver impl
DeviceErrorLogDto dto = new DeviceErrorLogDto();
dto.setDevice_code(device_code);
dto.setError_code(String.valueOf(error));
- dto.setError_info(ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error)));
+ String errorInfo = ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error));
+ dto.setError_info(errorInfo);
deviceErrorLogService.create(dto);
+
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("error", error);
+ param.put("error_msg", errorInfo);
+ acsToWmsService.sendDeviceStatus(param);
}
logServer.deviceItemValue(this.device_code, "error", String.valueOf(error));
logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error);
diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java
index 400413818..8cffdb010 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java
@@ -170,6 +170,12 @@ public class SiemensConveyorLabelingDeviceDriver extends AbstractOpcDeviceDriver
requireEmptyOutSuccess = false;
logServer.deviceExecuteLog(this.device_code, "", "", "复位请求标记成功!");
}
+
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("mode", mode);
+ acsToWmsService.sendDeviceStatus(param);
+
logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode));
logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode);
}
@@ -194,8 +200,15 @@ public class SiemensConveyorLabelingDeviceDriver extends AbstractOpcDeviceDriver
DeviceErrorLogDto dto = new DeviceErrorLogDto();
dto.setDevice_code(device_code);
dto.setError_code(String.valueOf(error));
- dto.setError_info(ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error)));
+ String errorInfo = ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error));
+ dto.setError_info(errorInfo);
deviceErrorLogService.create(dto);
+
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("error", error);
+ param.put("error_msg", errorInfo);
+ acsToWmsService.sendDeviceStatus(param);
}
logServer.deviceItemValue(this.device_code, "error", String.valueOf(error));
logServer.deviceExecuteLog(
diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_onefloor_agv_conveyor/SiemensOneFloorAGVConveyorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_onefloor_agv_conveyor/SiemensOneFloorAGVConveyorDeviceDriver.java
index 85bede597..fd0ad57ac 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_onefloor_agv_conveyor/SiemensOneFloorAGVConveyorDeviceDriver.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_onefloor_agv_conveyor/SiemensOneFloorAGVConveyorDeviceDriver.java
@@ -161,6 +161,12 @@ public class SiemensOneFloorAGVConveyorDeviceDriver extends AbstractOpcDeviceDri
to_command = this.itemProtocol.getTo_command();
to_target = this.itemProtocol.getTo_target();
to_task = this.itemProtocol.getTo_task();
+ if (last_mode != mode) {
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("mode", mode);
+ acsToWmsService.sendDeviceStatus(param);
+ }
if (to_command != last_to_command) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command:" + last_to_command + "->" + to_command);
}
@@ -175,8 +181,15 @@ public class SiemensOneFloorAGVConveyorDeviceDriver extends AbstractOpcDeviceDri
DeviceErrorLogDto dto = new DeviceErrorLogDto();
dto.setDevice_code(device_code);
dto.setError_code(String.valueOf(error));
- dto.setError_info(ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error)));
+ String errorInfo = ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error));
+ dto.setError_info(errorInfo);
deviceErrorLogService.create(dto);
+
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("error", error);
+ param.put("error_msg", errorInfo);
+ acsToWmsService.sendDeviceStatus(param);
}
}
} catch (Exception var17) {
diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java
index 32fd2cdf5..ce7e8642c 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java
@@ -230,6 +230,11 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
// logServer.deviceExecuteLog(this.device_code, "", "", "heartbeat:" + last_heartbeat + "->" + heartbeat);
// }
if (mode != last_mode) {
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("mode", mode);
+ acsToWmsService.sendDeviceStatus(param);
+
inst_type = null;
cache_inst = null;
if (mode == 2) {
@@ -252,8 +257,15 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
DeviceErrorLogDto dto = new DeviceErrorLogDto();
dto.setDevice_code(device_code);
dto.setError_code(String.valueOf(error));
- dto.setError_info(ErrorUtil.getDictDetail("fqhj_error_type", String.valueOf(error)));
+ String errorInfo = ErrorUtil.getDictDetail("fqhj_error_type", String.valueOf(error));
+ dto.setError_info(errorInfo);
deviceErrorLogService.create(dto);
+
+ JSONObject param = new JSONObject();
+ param.put("device_code", this.device_code);
+ param.put("error", error);
+ param.put("error_msg", errorInfo);
+ acsToWmsService.sendDeviceStatus(param);
}
logServer.deviceItemValue(this.device_code, "error", String.valueOf(error));
logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error);
diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java
index b30190077..8fab0c4a7 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java
@@ -104,4 +104,6 @@ public interface AcsToWmsService {
// 输送线有货变成无货时向lms请求
HttpResponse shipDeviceUpdate(JSONObject param);
+
+ void sendDeviceStatus(JSONObject param);
}
diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java
index 67d7dc93a..e0659ac70 100644
--- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java
+++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java
@@ -538,4 +538,28 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
return null;
}
+
+ @Override
+ public void sendDeviceStatus(JSONObject param) {
+ try {
+ MDC.put(log_file_type, log_type);
+
+ if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) {
+ String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue();
+ AddressDto addressDto = addressService.findByCode("sendDeviceStatus");
+ String methods_url = addressDto.getMethods_url();
+ String url = wmsUrl + methods_url;
+// log.info("sendDeviceStatus - 请求参数 {}", param);
+ HttpRequest
+ .post(url)
+ .body(param.toString())
+ .execute();
+// log.info("sendDeviceStatus - 返回参数 {}", response.body());
+ }
+ } catch (Throwable ignored) {
+
+ } finally {
+ MDC.remove(log_file_type);
+ }
+ }
}
diff --git a/acs/nladmin-system/src/main/resources/config/application.yml b/acs/nladmin-system/src/main/resources/config/application.yml
index cfc52fe40..f943602c7 100644
--- a/acs/nladmin-system/src/main/resources/config/application.yml
+++ b/acs/nladmin-system/src/main/resources/config/application.yml
@@ -2,7 +2,7 @@ spring:
freemarker:
check-template-location: false
profiles:
- active: prod
+ active: dev
jackson:
time-zone: GMT+8
data:
diff --git a/acs/nladmin-ui/src/views/acs/device/driver/siemens_conveyor.vue b/acs/nladmin-ui/src/views/acs/device/driver/siemens_conveyor.vue
index 1dafcd3d6..50e0323fa 100644
--- a/acs/nladmin-ui/src/views/acs/device/driver/siemens_conveyor.vue
+++ b/acs/nladmin-ui/src/views/acs/device/driver/siemens_conveyor.vue
@@ -147,6 +147,11 @@
+
+
+
+
+
@@ -320,7 +325,8 @@ export default {
is_release: true,
link_device_code: [],
ship_device_update: true,
- special_flag: true
+ special_flag: true,
+ sendDeviceStatus: true
},
rules: {}
}
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java
index 1248ebed8..d21f63840 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java
@@ -21,9 +21,12 @@ import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl;
import org.nl.wms.st.inbill.service.OutChargeService;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
+import java.util.stream.Collectors;
/**
* @author Liuxy
@@ -73,10 +76,12 @@ public class OutChargeServiceImpl implements OutChargeService {
}
@Override
+ @Transactional
public void charge(Map whereJson) {
WQLObject dtl_wql = WQLObject.getWQLObject("st_ivt_iostorinvdtl");
WQLObject mst_wql = WQLObject.getWQLObject("ST_IVT_IOStorInv");
WQLObject dis_wql = WQLObject.getWQLObject("ST_IVT_IOStorInvDis");
+ WQLObject ivtTab = WQLObject.getWQLObject("st_ivt_structivt");
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
@@ -128,10 +133,19 @@ public class OutChargeServiceImpl implements OutChargeService {
whereJson.put("upload_sap", "");
mst_wql.insert(whereJson);
+ ArrayList ivtList = new ArrayList<>(); // 存在库存的集合
for (int i = 0; i < dis_rows.size(); i++) {
//插入明细表
String iostorinvdtl_id = IdUtil.getSnowflake(1, 1).nextId() + "";
JSONObject dis_row = dis_rows.getJSONObject(i);
+
+ // 校验是否存在库存
+ JSONObject jsonIvt = ivtTab.query("pcsn = '" + dis_row.getString("pcsn") + "'").uniqueResult(0);
+
+ if (ObjectUtil.isNotEmpty(jsonIvt)) {
+ ivtList.add(jsonIvt.getString("pcsn"));
+ }
+
//查询对应的出库单明细
JSONObject dtl_row = dtl_wql.query("iostorinvdtl_id = '" + dis_row.getString("iostorinvdtl_id") + "'").uniqueResult(0);
dis_row.put("iostorinvdtl_id", iostorinvdtl_id);
@@ -174,6 +188,13 @@ public class OutChargeServiceImpl implements OutChargeService {
WQLObject.getWQLObject("PDM_BI_SubPackageRelation").update(map, "package_box_SN = '" + dis_row.getString("box_no") + "'");
}
}
+
+ // 判断是否存在库存
+ if (ivtList.size() > 0) {
+ String msg = String.join(",", ivtList);
+ throw new BadRequestException("此子卷已存在库存:"+msg);
+ }
+
}
}
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/CheckServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/CheckServiceImpl.java
index 6a42c29d5..a20b5a3f5 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/CheckServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/CheckServiceImpl.java
@@ -30,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
+import java.util.stream.Collectors;
/**
* PC端出入库新增
@@ -64,7 +65,27 @@ public class CheckServiceImpl implements CheckService {
JSONObject jo = WQL.getWO("QST_IVT_CHECK").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "check_code desc");
JSONArray content = jo.getJSONArray("content");
+ // 拼接主表id
+ String check_id = content.stream()
+ .map(row -> (JSONObject) row)
+ .map(row -> row.getString("check_id"))
+ .collect(Collectors.joining(","));
+
+ JSONArray resultJSONArray = WQL.getWO("QST_IVT_CHECK").addParam("flag", "13").addParam("check_id_in", "(" + check_id + ")").process().getResultJSONArray(0);
+
for (int i = 0; i < content.size(); i++) {
+ JSONObject json = content.getJSONObject(i);
+
+ // 匹配相同check_id的数据条数
+ int pcsn_num = (int) resultJSONArray.stream()
+ .map(row -> (JSONObject) row)
+ .filter(row -> row.getString("check_id").equals(json.getString("check_id")))
+ .count();
+
+ json.put("pcsn_num",pcsn_num);
+ }
+
+ /* for (int i = 0; i < content.size(); i++) {
int pcsn_num = 0;
JSONObject jsonObject = content.getJSONObject(i);
@@ -77,7 +98,7 @@ public class CheckServiceImpl implements CheckService {
pcsn_num += boxNum.size();
}
jsonObject.put("pcsn_num",pcsn_num);
- }
+ }*/
return jo;
}
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_CHECK.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_CHECK.wql
index 814501562..820a10750 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_CHECK.wql
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_CHECK.wql
@@ -42,6 +42,7 @@
输入.box_no TYPEAS s_string
输入.deptIds TYPEAS f_string
输入.in_stor_id TYPEAS f_string
+ 输入.check_id_in TYPEAS f_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
@@ -567,3 +568,22 @@
ENDSELECT
ENDQUERY
ENDIF
+
+ IF 输入.flag = "13"
+ QUERY
+ SELECT
+ sub.*,
+ dtl.check_id
+ FROM
+ pdm_bi_subpackagerelation sub
+ LEFT JOIN st_ivt_checkdtl dtl ON sub.package_box_sn = dtl.storagevehicle_code
+ WHERE
+ 1 = 1
+
+ OPTION 输入.check_id_in <> ""
+ dtl.check_id in 输入.check_id_in
+ ENDOPTION
+
+ ENDSELECT
+ ENDQUERY
+ ENDIF
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java
index b30807b5d..41c658e5b 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java
@@ -5005,7 +5005,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
order_no = jsonSub.getString("sale_order_name");
// 规格: 厚度*幅宽
- String material_spec = jsonSub.getString("thickness_request") + "*" + jsonSub.getString("width");
+ String material_spec = jsonSub.getString("thickness_request") + "*" + jsonSub.getString("width_standard");
// 箱号
String box_no = json.getString("box_no");
String sub_box_no = "";
@@ -5064,7 +5064,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
order_no = jsonSub.getString("sale_order_name");
// 规格: 厚度*幅宽
- String material_spec = jsonSub.getString("thickness_request") + "*" + jsonSub.getString("width");
+ String material_spec = jsonSub.getString("thickness_request") + "*" + jsonSub.getString("width_standard");
// 箱号
String box_no = json.getString("box_no");
String sub_box_no = "";
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java
index 1b73ef9b6..e81cd4102 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java
@@ -532,22 +532,24 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
// 调拨入库
if (StrUtil.equals(bill_type, "0004")) {
// 回传sap
+ JSONObject param = new JSONObject();
+
JSONArray paramSapMstArr = new JSONArray();
JSONArray disArr = wo_dis.query("iostorinv_id = '" + jo_mst.getString("iostorinv_id") + "'").getResultJSONArray(0);
JSONObject jsonDtl = wo_dtl.query("iostorinv_id = '" + jo_mst.getString("iostorinv_id") + "'").uniqueResult(0);
+ param.put("ZDBSQD",jsonDtl.getString("vbeln"));
+ param.put("LGORT2", jo_mst.getString("stor_code"));
+ JSONObject jsonStorOut = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("stor_id = '" + jo_mst.getString("out_stor_id") + "'").uniqueResult(0);
+ param.put("LGORT1", jsonStorOut.getString("stor_code"));
+
for (int j = 0; j < disArr.size(); j++) {
JSONObject jsonDis = disArr.getJSONObject(j);
JSONObject paramDis = new JSONObject();
- paramDis.put("ZDBSQD", jsonDtl.getString("vbeln"));
paramDis.put("ZVBELN", jsonDtl.getString("source_bill_code"));
JSONObject jsonMater = materTab.query("material_id = '" + jsonDis.getString("material_id") + "'").uniqueResult(0);
paramDis.put("MATNR", jsonMater.getString("material_code"));
- paramDis.put("LGORT2", jo_mst.getString("stor_code"));
-
- JSONObject jsonStorOut = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("stor_id = '" + jo_mst.getString("out_stor_id") + "'").uniqueResult(0);
- paramDis.put("LGORT1", jsonStorOut.getString("stor_code"));
JSONObject jsonSub = subTab.query("container_name = '" + jsonDis.getString("pcsn") + "'").uniqueResult(0);
paramDis.put("ZHL02", jsonSub.getString("width"));
@@ -557,8 +559,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
paramDis.put("WERKS", "2460");
paramSapMstArr.add(paramDis);
}
- JSONObject param = new JSONObject();
- param.put("HEAD", paramSapMstArr);
+ param.put("ITEM", paramSapMstArr);
System.out.println(param.toString());
// 调用接口回传
@@ -879,22 +880,24 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
// 调拨入库
if (StrUtil.equals(bill_type, "0004")) {
// 回传sap
+ JSONObject param = new JSONObject();
+
JSONArray paramSapMstArr = new JSONArray();
JSONArray disArr = wo_dis.query("iostorinv_id = '" + jo_mst.getString("iostorinv_id") + "'").getResultJSONArray(0);
JSONObject jsonDtl = wo_dtl.query("iostorinv_id = '" + jo_mst.getString("iostorinv_id") + "'").uniqueResult(0);
+ param.put("ZDBSQD",jsonDtl.getString("vbeln"));
+ param.put("LGORT2", jo_mst.getString("stor_code"));
+ JSONObject jsonStorOut = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("stor_id = '" + jo_mst.getString("out_stor_id") + "'").uniqueResult(0);
+ param.put("LGORT1", jsonStorOut.getString("stor_code"));
+
for (int j = 0; j < disArr.size(); j++) {
JSONObject jsonDis = disArr.getJSONObject(j);
JSONObject paramDis = new JSONObject();
- paramDis.put("ZDBSQD", jsonDtl.getString("vbeln"));
paramDis.put("ZVBELN", jsonDtl.getString("source_bill_code"));
JSONObject jsonMater = materTab.query("material_id = '" + jsonDis.getString("material_id") + "'").uniqueResult(0);
paramDis.put("MATNR", jsonMater.getString("material_code"));
- paramDis.put("LGORT2", jo_mst.getString("stor_code"));
-
- JSONObject jsonStorOut = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("stor_id = '" + jo_mst.getString("out_stor_id") + "'").uniqueResult(0);
- paramDis.put("LGORT1", jsonStorOut.getString("stor_code"));
JSONObject jsonSub = subTab.query("container_name = '" + jsonDis.getString("pcsn") + "'").uniqueResult(0);
paramDis.put("ZHL02", jsonSub.getString("width"));
@@ -904,8 +907,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
paramDis.put("WERKS", "2460");
paramSapMstArr.add(paramDis);
}
- JSONObject param = new JSONObject();
- param.put("HEAD", paramSapMstArr);
+ param.put("ITEM", paramSapMstArr);
System.out.println(param.toString());
// 调用接口回传
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_INBILLQUERY.wql b/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_INBILLQUERY.wql
index 1e612b7e6..0458b9237 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_INBILLQUERY.wql
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_INBILLQUERY.wql
@@ -96,7 +96,23 @@
END AS confirm_time_class
FROM
- st_ivt_iostorinvdis dis
+ (
+ SELECT
+ pcsn,
+ MAX(iostorinv_id) AS iostorinv_id,
+ MAX(sect_id) AS sect_id,
+ MAX(material_id) AS material_id,
+ MAX(box_no) AS box_no,
+ MAX(sect_name) AS sect_name,
+ MAX(struct_code) AS struct_code,
+ MAX(struct_name) AS struct_name,
+ MAX(qty_unit_name) AS qty_unit_name
+ FROM
+ st_ivt_iostorinvdis
+ WHERE
+ 1 = 1
+ GROUP BY pcsn
+ ) AS dis
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
LEFT JOIN st_ivt_sectattr sect ON sect.sect_id = dis.sect_id
LEFT JOIN md_me_materialbase mater ON mater.material_id = dis.material_id
@@ -194,7 +210,23 @@
END AS confirm_time_class
FROM
- st_ivt_iostorinvdis dis
+ (
+ SELECT
+ pcsn,
+ MAX(iostorinv_id) AS iostorinv_id,
+ MAX(sect_id) AS sect_id,
+ MAX(material_id) AS material_id,
+ MAX(box_no) AS box_no,
+ MAX(sect_name) AS sect_name,
+ MAX(struct_code) AS struct_code,
+ MAX(struct_name) AS struct_name,
+ MAX(qty_unit_name) AS qty_unit_name
+ FROM
+ st_ivt_iostorinvdis
+ WHERE
+ 1 = 1
+ GROUP BY pcsn
+ ) AS dis
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
LEFT JOIN st_ivt_sectattr sect ON sect.sect_id = dis.sect_id
LEFT JOIN md_me_materialbase mater ON mater.material_id = dis.material_id
@@ -304,7 +336,23 @@
END AS confirm_time_class
FROM
- st_ivt_iostorinvdis dis
+ (
+ SELECT
+ pcsn,
+ MAX(iostorinv_id) AS iostorinv_id,
+ MAX(sect_id) AS sect_id,
+ MAX(material_id) AS material_id,
+ MAX(box_no) AS box_no,
+ MAX(sect_name) AS sect_name,
+ MAX(struct_code) AS struct_code,
+ MAX(struct_name) AS struct_name,
+ MAX(qty_unit_name) AS qty_unit_name
+ FROM
+ st_ivt_iostorinvdis
+ WHERE
+ 1 = 1
+ GROUP BY pcsn
+ ) AS dis
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
LEFT JOIN st_ivt_sectattr sect ON sect.sect_id = dis.sect_id
LEFT JOIN md_me_materialbase mater ON mater.material_id = dis.material_id
@@ -404,7 +452,23 @@
END AS confirm_time_class
FROM
- st_ivt_iostorinvdis dis
+ (
+ SELECT
+ pcsn,
+ MAX(iostorinv_id) AS iostorinv_id,
+ MAX(sect_id) AS sect_id,
+ MAX(material_id) AS material_id,
+ MAX(box_no) AS box_no,
+ MAX(sect_name) AS sect_name,
+ MAX(struct_code) AS struct_code,
+ MAX(struct_name) AS struct_name,
+ MAX(qty_unit_name) AS qty_unit_name
+ FROM
+ st_ivt_iostorinvdis
+ WHERE
+ 1 = 1
+ GROUP BY pcsn
+ ) AS dis
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
LEFT JOIN st_ivt_sectattr sect ON sect.sect_id = dis.sect_id
LEFT JOIN md_me_materialbase mater ON mater.material_id = dis.material_id
diff --git a/lms/nladmin-ui/src/views/wms/pdm/bi/index.vue b/lms/nladmin-ui/src/views/wms/pdm/bi/index.vue
index b378d9406..4cbe2c59f 100644
--- a/lms/nladmin-ui/src/views/wms/pdm/bi/index.vue
+++ b/lms/nladmin-ui/src/views/wms/pdm/bi/index.vue
@@ -398,6 +398,7 @@
:min-width="flexWidth('product_description',crud.data,'产品描述')"/>
+