更新
This commit is contained in:
@@ -478,6 +478,7 @@ public class AgvServiceImpl implements AgvService {
|
||||
.timeout(20000)//超时,毫秒
|
||||
.execute();
|
||||
System.out.println("查询agv状态数据:" + result.body());
|
||||
log.info("查询agv状态数据:" + result.body());
|
||||
if (result.getStatus() == 200) {
|
||||
JSONArray ja = JSONArray.fromObject(result.body());
|
||||
for (int i = 0; i < ja.size(); i++) {
|
||||
@@ -486,16 +487,16 @@ public class AgvServiceImpl implements AgvService {
|
||||
String state = jo.getString("state");
|
||||
String energyLevel = jo.getString("energyLevel");
|
||||
String transportOrder = jo.getString("transportOrder");
|
||||
String positionAngle = jo.getString("positionAngle");
|
||||
String positionX = jo.getString("positionX");
|
||||
String positionY = jo.getString("positionY");
|
||||
// String positionAngle = jo.getString("positionAngle");
|
||||
// String positionX = jo.getString("positionX");
|
||||
// String positionY = jo.getString("positionY");
|
||||
AgvDto dto = new AgvDto();
|
||||
dto.setName(name);
|
||||
dto.setEnergyLevel(energyLevel);
|
||||
dto.setState(state);
|
||||
dto.setPositionAngle(positionAngle);
|
||||
dto.setPositionX(positionX);
|
||||
dto.setPositionY(positionY);
|
||||
// dto.setPositionAngle(positionAngle);
|
||||
// dto.setPositionX(positionX);
|
||||
// dto.setPositionY(positionY);
|
||||
dto.setTransportOrder(transportOrder);
|
||||
|
||||
if (AGVDeviceStatus.containsKey(name)) {
|
||||
|
||||
@@ -97,20 +97,20 @@ public class ElectricFenceDeviceDriver extends AbstractOpcDeviceDriver implement
|
||||
}
|
||||
|
||||
int agvidletime = Integer.parseInt(acsConfigService.findConfigFromCache().get(AcsConfig.BUSINESSTYPE));
|
||||
if (start_time == last_start_time) {
|
||||
last_start_time = start_time;
|
||||
}
|
||||
if ((start_time.getTime() - last_start_time.getTime())/(60*1000) >= agvidletime) {
|
||||
List<Device> allDevice = appService.findAllDevice();
|
||||
WeighingSiteDeviceDriver weighingSiteDeviceDriver;
|
||||
for (int i = 0; i < allDevice.size(); i++) {
|
||||
Device device = allDevice.get(i);
|
||||
if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver){
|
||||
weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver();
|
||||
weighingSiteDeviceDriver.setNowMode("0");
|
||||
}
|
||||
}
|
||||
}
|
||||
// if (start_time == last_start_time) {
|
||||
// last_start_time = start_time;
|
||||
// }
|
||||
// if ((start_time.getTime() - last_start_time.getTime())/(60*1000) >= agvidletime) {
|
||||
// List<Device> allDevice = appService.findAllDevice();
|
||||
// WeighingSiteDeviceDriver weighingSiteDeviceDriver;
|
||||
// for (int i = 0; i < allDevice.size(); i++) {
|
||||
// Device device = allDevice.get(i);
|
||||
// if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver){
|
||||
// weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver();
|
||||
// weighingSiteDeviceDriver.setNowMode("0");
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
last_action = action;
|
||||
last_mode = mode;
|
||||
last_error = error;
|
||||
|
||||
@@ -55,16 +55,16 @@ public class ItemProtocol {
|
||||
|
||||
public static List<ItemDto> getReadableItemDtos() {
|
||||
ArrayList list = new ArrayList();
|
||||
list.add(new ItemDto(item_heartbeat, "心跳", "DB51.B0"));
|
||||
list.add(new ItemDto(item_mode, "工作状态", "DB51.B1", Boolean.valueOf(true)));
|
||||
list.add(new ItemDto(item_action, "动作信号", "DB51.B2"));
|
||||
list.add(new ItemDto(item_error, "报警信号", "DB51.B4"));
|
||||
list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0"));
|
||||
list.add(new ItemDto(item_mode, "工作状态", "DB600.B1", Boolean.valueOf(true)));
|
||||
list.add(new ItemDto(item_action, "动作信号", "DB600.B2"));
|
||||
list.add(new ItemDto(item_error, "报警信号", "DB600.B4"));
|
||||
return list;
|
||||
}
|
||||
|
||||
public static List<ItemDto> getWriteableItemDtos() {
|
||||
ArrayList list = new ArrayList();
|
||||
list.add(new ItemDto(item_to_command, "作业命令", "DB52.W2", Boolean.valueOf(true)));
|
||||
list.add(new ItemDto(item_to_command, "作业命令", "DB601.W2", Boolean.valueOf(true)));
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ import org.nl.acs.device_driver.RouteableDeviceDriver;
|
||||
import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver;
|
||||
import org.nl.acs.device_driver.driver.ExecutableDeviceDriver;
|
||||
import org.nl.acs.device_driver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver;
|
||||
import org.nl.acs.device_driver.weighing_site.WeighingSiteDeviceDriver;
|
||||
import org.nl.acs.instruction.service.InstructionService;
|
||||
import org.nl.acs.instruction.service.dto.Instruction;
|
||||
import org.nl.acs.opc.Device;
|
||||
@@ -356,6 +357,18 @@ public class NdxySpecialTwoDeviceDriver extends AbstractOpcDeviceDriver implemen
|
||||
String taskcode = CodeUtil.getNewCode("TASK_NO");
|
||||
dto.setTask_code("-" + taskcode);
|
||||
|
||||
List<Device> allDevice = appService.findAllDevice();
|
||||
WeighingSiteDeviceDriver weighingSiteDeviceDriver;
|
||||
for (int i = 0; i < allDevice.size(); i++) {
|
||||
Device device = allDevice.get(i);
|
||||
if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver){
|
||||
weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver();
|
||||
if (weighingSiteDeviceDriver.getNowMode().equals("0")) {
|
||||
throw new RuntimeException("当前为非生产模式");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WQLObject wo = WQLObject.getWQLObject("acs_task");
|
||||
JSONObject json = JSONObject.fromObject(dto);
|
||||
wo.insert(json);
|
||||
|
||||
@@ -293,7 +293,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
|
||||
if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver){
|
||||
weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver();
|
||||
if (weighingSiteDeviceDriver.getNowMode().equals("0")) {
|
||||
throw new RuntimeException("当前为非工作模式");
|
||||
throw new RuntimeException("当前为非生产模式");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,10 +16,7 @@ import org.nl.modules.system.service.UserService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -148,6 +145,14 @@ public class NdxyHandTwoController {
|
||||
return new ResponseEntity<>(HandService.queryMaterial(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/mode")
|
||||
@Log("查询工作模式")
|
||||
@ApiOperation("查询工作模式")
|
||||
//@PreAuthorize("@el.check('sect:list')")
|
||||
public ResponseEntity<Object> queryMode() {
|
||||
return new ResponseEntity<>(HandService.queryMode(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@AnonymousPostMapping("/task2")
|
||||
@Log("创建普通任务")
|
||||
@ApiOperation("创建普通任务")
|
||||
@@ -156,12 +161,12 @@ public class NdxyHandTwoController {
|
||||
return new ResponseEntity<>(HandService.createTask2(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/mode")
|
||||
@PostMapping("/updateMode")
|
||||
@Log("修改工作模式")
|
||||
@ApiOperation("修改工作模式")
|
||||
//@PreAuthorize("@el.check('sect:list')")
|
||||
public ResponseEntity<Object> updateMode(@RequestBody String mode) {
|
||||
return new ResponseEntity<>(HandService.updateMode(mode), HttpStatus.OK);
|
||||
public ResponseEntity<Object> updateMode(@RequestBody JSONObject json) throws Exception {
|
||||
return new ResponseEntity<>(HandService.updateMode(json), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -114,6 +114,13 @@ public interface NdxyTwoHandService {
|
||||
*/
|
||||
Map<String, Object> queryMaterial();
|
||||
|
||||
/**
|
||||
* 查询工作模式
|
||||
*
|
||||
* @return Map<String, Object>
|
||||
*/
|
||||
Map<String, Object> queryMode();
|
||||
|
||||
/**
|
||||
* 创建普通任务
|
||||
*
|
||||
@@ -126,5 +133,5 @@ public interface NdxyTwoHandService {
|
||||
*
|
||||
* @return Map<String, String>
|
||||
*/
|
||||
Map<String, Object> updateMode(String mode);
|
||||
Map<String, Object> updateMode(JSONObject json) throws Exception;
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -76,10 +77,6 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
|
||||
private final RouteLineService routelineserver;
|
||||
private final TaskService taskService;
|
||||
|
||||
@Autowired
|
||||
AcsConfigController acsConfigService;
|
||||
InstructionService instructionService = null;
|
||||
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryArea(Map map) {
|
||||
@@ -557,12 +554,12 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
|
||||
resultJson.put("result", "");
|
||||
return resultJson;
|
||||
}
|
||||
if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) {
|
||||
resultJson.put("code", "2");
|
||||
resultJson.put("desc", "请填写物料信息!");
|
||||
resultJson.put("result", "");
|
||||
return resultJson;
|
||||
}
|
||||
// if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) {
|
||||
// resultJson.put("code", "2");
|
||||
// resultJson.put("desc", "请填写物料信息!");
|
||||
// resultJson.put("result", "");
|
||||
// return resultJson;
|
||||
// }
|
||||
dto.setStart_device_code(start_device_code);
|
||||
dto.setStart_point_code(start_device_code);
|
||||
dto.setNext_device_code(next_device_code);
|
||||
@@ -626,6 +623,22 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
|
||||
|
||||
DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class);
|
||||
Device device = appService.findDeviceByCode(device_code);
|
||||
|
||||
//判断当前如果为生产模式,那么设备状态不可修改
|
||||
// List<Device> allDevice = deviceAppService.findAllDevice();
|
||||
// WeighingSiteDeviceDriver weighingSiteDeviceDriver;
|
||||
// for (int i = 0; i < allDevice.size(); i++) {
|
||||
// Device deviceBycode = allDevice.get(i);
|
||||
// if (deviceBycode.getDeviceDriver() instanceof WeighingSiteDeviceDriver){
|
||||
// weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) deviceBycode.getDeviceDriver();
|
||||
// if (weighingSiteDeviceDriver.getNowMode().equals("0")) {
|
||||
// resultJson.put("code", "2");
|
||||
// resultJson.put("desc", "当前为非生产模式!");
|
||||
// resultJson.put("result", "");
|
||||
// return resultJson;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//普通站点
|
||||
StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver;
|
||||
if (StrUtil.equals(status,"3")) {
|
||||
@@ -916,6 +929,29 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
|
||||
return jo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryMode() {
|
||||
String nowMode = "";
|
||||
List<Device> allDevice = deviceAppService.findAllDevice();
|
||||
WeighingSiteDeviceDriver weighingSiteDeviceDriver;
|
||||
for (int i = 0; i < allDevice.size(); i++) {
|
||||
Device device = allDevice.get(i);
|
||||
if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver){
|
||||
weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver();
|
||||
nowMode = weighingSiteDeviceDriver.getNowMode();
|
||||
}
|
||||
}
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("mode",nowMode);
|
||||
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("code", "1");
|
||||
jo.put("desc", "查询成功");
|
||||
jo.put("result", json);
|
||||
return jo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> createTask2(JSONObject whereJson) {
|
||||
JSONArray array = (JSONArray) whereJson.get("start_devicecode");
|
||||
@@ -956,17 +992,19 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
|
||||
resultJson.put("result", "");
|
||||
return resultJson;
|
||||
}
|
||||
if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) {
|
||||
resultJson.put("code", "2");
|
||||
resultJson.put("desc", "请填写物料信息!");
|
||||
resultJson.put("result", "");
|
||||
return resultJson;
|
||||
}
|
||||
// if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) {
|
||||
// resultJson.put("code", "2");
|
||||
// resultJson.put("desc", "请填写物料信息!");
|
||||
// resultJson.put("result", "");
|
||||
// return resultJson;
|
||||
// }
|
||||
dto.setStart_device_code(device_code);
|
||||
dto.setStart_point_code(device_code);
|
||||
dto.setNext_device_code(next_device_code);
|
||||
dto.setNext_point_code(next_device_code);
|
||||
dto.setQuantity(new BigDecimal(quantity));
|
||||
if (StrUtil.isNotEmpty(quantity)) {
|
||||
dto.setQuantity(new BigDecimal(quantity));
|
||||
}
|
||||
dto.setRemark(remark);
|
||||
dto.setMaterial(material_type);
|
||||
try {
|
||||
@@ -985,7 +1023,8 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> updateMode(String mode) {
|
||||
public Map<String, Object> updateMode(JSONObject json) throws Exception {
|
||||
String mode = json.getString("mode");
|
||||
List<Device> allDevice = deviceAppService.findAllDevice();
|
||||
WeighingSiteDeviceDriver weighingSiteDeviceDriver;
|
||||
for (int i = 0; i < allDevice.size(); i++) {
|
||||
@@ -995,6 +1034,27 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
|
||||
weighingSiteDeviceDriver.setNowMode(mode);
|
||||
}
|
||||
}
|
||||
List<String> list = new ArrayList<>();
|
||||
List<TaskDto> tasks = taskService.findAllTaskFromCache();
|
||||
if (mode.equals("0")) {
|
||||
InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class);
|
||||
for (int i = 0; i < tasks.size(); i++) {
|
||||
TaskDto taskDto = tasks.get(i);
|
||||
InstructionDto instdto = instructionService.findByTaskid(taskDto.getTask_id(), "instruction_status < 2 ");
|
||||
if (ObjectUtil.isEmpty(instdto)) {
|
||||
list.add(taskDto.getTask_id());
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
String task_id = list.get(i);
|
||||
TaskDto taskDto = taskService.findById(task_id);
|
||||
taskService.finish(task_id);
|
||||
Device startDevice = deviceAppService.findDeviceByCode(taskDto.getStart_device_code());
|
||||
Device nextDevice = deviceAppService.findDeviceByCode(taskDto.getNext_point_code());
|
||||
nextDevice.setIslock("false");
|
||||
startDevice.setIslock("false");
|
||||
}
|
||||
JSONObject resultJson = new JSONObject();
|
||||
resultJson.put("code", "1");
|
||||
resultJson.put("desc", "更新成功");
|
||||
|
||||
@@ -6,6 +6,7 @@ import net.sf.json.JSONArray;
|
||||
import net.sf.json.JSONObject;
|
||||
import org.nl.acs.agv.server.AgvService;
|
||||
import org.nl.acs.device_driver.electric_fence.ElectricFenceDeviceDriver;
|
||||
import org.nl.acs.device_driver.weighing_site.WeighingSiteDeviceDriver;
|
||||
import org.nl.acs.instruction.service.InstructionService;
|
||||
import org.nl.acs.opc.Device;
|
||||
import org.nl.acs.opc.DeviceAppService;
|
||||
@@ -42,19 +43,32 @@ public class QueryMagicAgvDeviceStatus {
|
||||
DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class);
|
||||
|
||||
Date now = new Date();
|
||||
String mode = "";
|
||||
List<Device> allDevice = appService.findAllDevice();
|
||||
WeighingSiteDeviceDriver weighingSiteDeviceDriver;
|
||||
for (int z = 0; z < allDevice.size(); z++) {
|
||||
Device deviceBycode = allDevice.get(z);
|
||||
if (deviceBycode.getDeviceDriver() instanceof WeighingSiteDeviceDriver) {
|
||||
weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) deviceBycode.getDeviceDriver();
|
||||
mode = weighingSiteDeviceDriver.getNowMode();
|
||||
}
|
||||
}
|
||||
|
||||
ElectricFenceDeviceDriver electricFenceDeviceDriver;
|
||||
List<Device> deviceAll = appService.findDevice(DeviceType.safetydoor);
|
||||
for (int j = 0; j < deviceAll.size(); j++) {
|
||||
Device device = deviceAll.get(i);
|
||||
Device device = deviceAll.get(j);
|
||||
if (device.getDeviceDriver() instanceof ElectricFenceDeviceDriver) {
|
||||
electricFenceDeviceDriver = (ElectricFenceDeviceDriver) device.getDeviceDriver();
|
||||
if (jo.optString("state").equals("IDLE")) {
|
||||
if (jo.optString("state").equals("IDLE") && mode.equals("0")) {
|
||||
electricFenceDeviceDriver.setStart_time(now);
|
||||
|
||||
electricFenceDeviceDriver.writing(1);
|
||||
electricFenceDeviceDriver.writing(0);
|
||||
} else if (jo.optString("state").equals("EXECUTING")) {
|
||||
electricFenceDeviceDriver.writing(2);
|
||||
electricFenceDeviceDriver.writing(1);
|
||||
}
|
||||
if (mode.equals("1")) {
|
||||
electricFenceDeviceDriver.writing(1);
|
||||
}
|
||||
if (!jo.optString("state").equals("IDLE")) {
|
||||
electricFenceDeviceDriver.setStart_time(now);
|
||||
|
||||
Reference in New Issue
Block a user