This commit is contained in:
loujf
2022-08-11 18:55:50 +08:00
parent d9cfa27c6b
commit 507ea6e3f3
9 changed files with 156 additions and 56 deletions

View File

@@ -478,6 +478,7 @@ public class AgvServiceImpl implements AgvService {
.timeout(20000)//超时,毫秒 .timeout(20000)//超时,毫秒
.execute(); .execute();
System.out.println("查询agv状态数据:" + result.body()); System.out.println("查询agv状态数据:" + result.body());
log.info("查询agv状态数据:" + result.body());
if (result.getStatus() == 200) { if (result.getStatus() == 200) {
JSONArray ja = JSONArray.fromObject(result.body()); JSONArray ja = JSONArray.fromObject(result.body());
for (int i = 0; i < ja.size(); i++) { for (int i = 0; i < ja.size(); i++) {
@@ -486,16 +487,16 @@ public class AgvServiceImpl implements AgvService {
String state = jo.getString("state"); String state = jo.getString("state");
String energyLevel = jo.getString("energyLevel"); String energyLevel = jo.getString("energyLevel");
String transportOrder = jo.getString("transportOrder"); String transportOrder = jo.getString("transportOrder");
String positionAngle = jo.getString("positionAngle"); // String positionAngle = jo.getString("positionAngle");
String positionX = jo.getString("positionX"); // String positionX = jo.getString("positionX");
String positionY = jo.getString("positionY"); // String positionY = jo.getString("positionY");
AgvDto dto = new AgvDto(); AgvDto dto = new AgvDto();
dto.setName(name); dto.setName(name);
dto.setEnergyLevel(energyLevel); dto.setEnergyLevel(energyLevel);
dto.setState(state); dto.setState(state);
dto.setPositionAngle(positionAngle); // dto.setPositionAngle(positionAngle);
dto.setPositionX(positionX); // dto.setPositionX(positionX);
dto.setPositionY(positionY); // dto.setPositionY(positionY);
dto.setTransportOrder(transportOrder); dto.setTransportOrder(transportOrder);
if (AGVDeviceStatus.containsKey(name)) { if (AGVDeviceStatus.containsKey(name)) {

View File

@@ -97,20 +97,20 @@ public class ElectricFenceDeviceDriver extends AbstractOpcDeviceDriver implement
} }
int agvidletime = Integer.parseInt(acsConfigService.findConfigFromCache().get(AcsConfig.BUSINESSTYPE)); int agvidletime = Integer.parseInt(acsConfigService.findConfigFromCache().get(AcsConfig.BUSINESSTYPE));
if (start_time == last_start_time) { // if (start_time == last_start_time) {
last_start_time = start_time; // last_start_time = start_time;
} // }
if ((start_time.getTime() - last_start_time.getTime())/(60*1000) >= agvidletime) { // if ((start_time.getTime() - last_start_time.getTime())/(60*1000) >= agvidletime) {
List<Device> allDevice = appService.findAllDevice(); // List<Device> allDevice = appService.findAllDevice();
WeighingSiteDeviceDriver weighingSiteDeviceDriver; // WeighingSiteDeviceDriver weighingSiteDeviceDriver;
for (int i = 0; i < allDevice.size(); i++) { // for (int i = 0; i < allDevice.size(); i++) {
Device device = allDevice.get(i); // Device device = allDevice.get(i);
if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver){ // if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver){
weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver(); // weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver();
weighingSiteDeviceDriver.setNowMode("0"); // weighingSiteDeviceDriver.setNowMode("0");
} // }
} // }
} // }
last_action = action; last_action = action;
last_mode = mode; last_mode = mode;
last_error = error; last_error = error;

View File

@@ -55,16 +55,16 @@ public class ItemProtocol {
public static List<ItemDto> getReadableItemDtos() { public static List<ItemDto> getReadableItemDtos() {
ArrayList list = new ArrayList(); ArrayList list = new ArrayList();
list.add(new ItemDto(item_heartbeat, "心跳", "DB51.B0")); list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0"));
list.add(new ItemDto(item_mode, "工作状态", "DB51.B1", Boolean.valueOf(true))); list.add(new ItemDto(item_mode, "工作状态", "DB600.B1", Boolean.valueOf(true)));
list.add(new ItemDto(item_action, "动作信号", "DB51.B2")); list.add(new ItemDto(item_action, "动作信号", "DB600.B2"));
list.add(new ItemDto(item_error, "报警信号", "DB51.B4")); list.add(new ItemDto(item_error, "报警信号", "DB600.B4"));
return list; return list;
} }
public static List<ItemDto> getWriteableItemDtos() { public static List<ItemDto> getWriteableItemDtos() {
ArrayList list = new ArrayList(); 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; return list;
} }

View File

@@ -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.AbstractOpcDeviceDriver;
import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver;
import org.nl.acs.device_driver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; 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.InstructionService;
import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.instruction.service.dto.Instruction;
import org.nl.acs.opc.Device; import org.nl.acs.opc.Device;
@@ -356,6 +357,18 @@ public class NdxySpecialTwoDeviceDriver extends AbstractOpcDeviceDriver implemen
String taskcode = CodeUtil.getNewCode("TASK_NO"); String taskcode = CodeUtil.getNewCode("TASK_NO");
dto.setTask_code("-" + taskcode); 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"); WQLObject wo = WQLObject.getWQLObject("acs_task");
JSONObject json = JSONObject.fromObject(dto); JSONObject json = JSONObject.fromObject(dto);
wo.insert(json); wo.insert(json);

View File

@@ -293,7 +293,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver){ if (device.getDeviceDriver() instanceof WeighingSiteDeviceDriver){
weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver(); weighingSiteDeviceDriver = (WeighingSiteDeviceDriver) device.getDeviceDriver();
if (weighingSiteDeviceDriver.getNowMode().equals("0")) { if (weighingSiteDeviceDriver.getNowMode().equals("0")) {
throw new RuntimeException("当前为非工作模式"); throw new RuntimeException("当前为非生产模式");
} }
} }
} }

View File

@@ -16,10 +16,7 @@ import org.nl.modules.system.service.UserService;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map; import java.util.Map;
@@ -148,6 +145,14 @@ public class NdxyHandTwoController {
return new ResponseEntity<>(HandService.queryMaterial(), HttpStatus.OK); 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") @AnonymousPostMapping("/task2")
@Log("创建普通任务") @Log("创建普通任务")
@ApiOperation("创建普通任务") @ApiOperation("创建普通任务")
@@ -156,12 +161,12 @@ public class NdxyHandTwoController {
return new ResponseEntity<>(HandService.createTask2(whereJson), HttpStatus.OK); return new ResponseEntity<>(HandService.createTask2(whereJson), HttpStatus.OK);
} }
@PostMapping("/mode") @PostMapping("/updateMode")
@Log("修改工作模式") @Log("修改工作模式")
@ApiOperation("修改工作模式") @ApiOperation("修改工作模式")
//@PreAuthorize("@el.check('sect:list')") //@PreAuthorize("@el.check('sect:list')")
public ResponseEntity<Object> updateMode(@RequestBody String mode) { public ResponseEntity<Object> updateMode(@RequestBody JSONObject json) throws Exception {
return new ResponseEntity<>(HandService.updateMode(mode), HttpStatus.OK); return new ResponseEntity<>(HandService.updateMode(json), HttpStatus.OK);
} }
} }

View File

@@ -114,6 +114,13 @@ public interface NdxyTwoHandService {
*/ */
Map<String, Object> queryMaterial(); Map<String, Object> queryMaterial();
/**
* 查询工作模式
*
* @return Map<String, Object>
*/
Map<String, Object> queryMode();
/** /**
* 创建普通任务 * 创建普通任务
* *
@@ -126,5 +133,5 @@ public interface NdxyTwoHandService {
* *
* @return Map<String, String> * @return Map<String, String>
*/ */
Map<String, Object> updateMode(String mode); Map<String, Object> updateMode(JSONObject json) throws Exception;
} }

View File

@@ -55,6 +55,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -76,10 +77,6 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
private final RouteLineService routelineserver; private final RouteLineService routelineserver;
private final TaskService taskService; private final TaskService taskService;
@Autowired
AcsConfigController acsConfigService;
InstructionService instructionService = null;
@Override @Override
public Map<String, Object> queryArea(Map map) { public Map<String, Object> queryArea(Map map) {
@@ -557,12 +554,12 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
resultJson.put("result", ""); resultJson.put("result", "");
return resultJson; return resultJson;
} }
if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) { // if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) {
resultJson.put("code", "2"); // resultJson.put("code", "2");
resultJson.put("desc", "请填写物料信息!"); // resultJson.put("desc", "请填写物料信息!");
resultJson.put("result", ""); // resultJson.put("result", "");
return resultJson; // return resultJson;
} // }
dto.setStart_device_code(start_device_code); dto.setStart_device_code(start_device_code);
dto.setStart_point_code(start_device_code); dto.setStart_point_code(start_device_code);
dto.setNext_device_code(next_device_code); dto.setNext_device_code(next_device_code);
@@ -626,6 +623,22 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class);
Device device = appService.findDeviceByCode(device_code); 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; StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver;
if (StrUtil.equals(status,"3")) { if (StrUtil.equals(status,"3")) {
@@ -916,6 +929,29 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
return jo; 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 @Override
public Map<String, Object> createTask2(JSONObject whereJson) { public Map<String, Object> createTask2(JSONObject whereJson) {
JSONArray array = (JSONArray) whereJson.get("start_devicecode"); JSONArray array = (JSONArray) whereJson.get("start_devicecode");
@@ -956,17 +992,19 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
resultJson.put("result", ""); resultJson.put("result", "");
return resultJson; return resultJson;
} }
if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) { // if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) {
resultJson.put("code", "2"); // resultJson.put("code", "2");
resultJson.put("desc", "请填写物料信息!"); // resultJson.put("desc", "请填写物料信息!");
resultJson.put("result", ""); // resultJson.put("result", "");
return resultJson; // return resultJson;
} // }
dto.setStart_device_code(device_code); dto.setStart_device_code(device_code);
dto.setStart_point_code(device_code); dto.setStart_point_code(device_code);
dto.setNext_device_code(next_device_code); dto.setNext_device_code(next_device_code);
dto.setNext_point_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.setRemark(remark);
dto.setMaterial(material_type); dto.setMaterial(material_type);
try { try {
@@ -985,7 +1023,8 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
} }
@Override @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(); List<Device> allDevice = deviceAppService.findAllDevice();
WeighingSiteDeviceDriver weighingSiteDeviceDriver; WeighingSiteDeviceDriver weighingSiteDeviceDriver;
for (int i = 0; i < allDevice.size(); i++) { for (int i = 0; i < allDevice.size(); i++) {
@@ -995,6 +1034,27 @@ public class NdxyTwoHandServiceImpl implements NdxyTwoHandService {
weighingSiteDeviceDriver.setNowMode(mode); 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(); JSONObject resultJson = new JSONObject();
resultJson.put("code", "1"); resultJson.put("code", "1");
resultJson.put("desc", "更新成功"); resultJson.put("desc", "更新成功");

View File

@@ -6,6 +6,7 @@ import net.sf.json.JSONArray;
import net.sf.json.JSONObject; import net.sf.json.JSONObject;
import org.nl.acs.agv.server.AgvService; import org.nl.acs.agv.server.AgvService;
import org.nl.acs.device_driver.electric_fence.ElectricFenceDeviceDriver; 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.instruction.service.InstructionService;
import org.nl.acs.opc.Device; import org.nl.acs.opc.Device;
import org.nl.acs.opc.DeviceAppService; import org.nl.acs.opc.DeviceAppService;
@@ -42,19 +43,32 @@ public class QueryMagicAgvDeviceStatus {
DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class);
Date now = new Date(); 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; ElectricFenceDeviceDriver electricFenceDeviceDriver;
List<Device> deviceAll = appService.findDevice(DeviceType.safetydoor); List<Device> deviceAll = appService.findDevice(DeviceType.safetydoor);
for (int j = 0; j < deviceAll.size(); j++) { for (int j = 0; j < deviceAll.size(); j++) {
Device device = deviceAll.get(i); Device device = deviceAll.get(j);
if (device.getDeviceDriver() instanceof ElectricFenceDeviceDriver) { if (device.getDeviceDriver() instanceof ElectricFenceDeviceDriver) {
electricFenceDeviceDriver = (ElectricFenceDeviceDriver) device.getDeviceDriver(); electricFenceDeviceDriver = (ElectricFenceDeviceDriver) device.getDeviceDriver();
if (jo.optString("state").equals("IDLE")) { if (jo.optString("state").equals("IDLE") && mode.equals("0")) {
electricFenceDeviceDriver.setStart_time(now); electricFenceDeviceDriver.setStart_time(now);
electricFenceDeviceDriver.writing(1); electricFenceDeviceDriver.writing(0);
} else if (jo.optString("state").equals("EXECUTING")) { } 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")) { if (!jo.optString("state").equals("IDLE")) {
electricFenceDeviceDriver.setStart_time(now); electricFenceDeviceDriver.setStart_time(now);