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)//超时,毫秒
.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)) {

View File

@@ -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;

View File

@@ -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;
}

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.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);

View File

@@ -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("当前为非生产模式");
}
}
}

View File

@@ -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);
}
}

View File

@@ -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;
}

View File

@@ -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", "更新成功");

View File

@@ -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);