|
@@ -17,10 +17,13 @@ import com.ruoyi.common.core.domain.DeviceLog;
|
|
|
import com.ruoyi.system.enums.PLCConnectNameEnum;
|
|
|
import com.ruoyi.system.enums.PLCEnum;
|
|
|
import com.ruoyi.system.init.PlcConnectServiceRunner;
|
|
|
+import com.ruoyi.taiye.service.IDeviceLogService;
|
|
|
import com.ruoyi.taiye.service.ProcessService;
|
|
|
+import com.serotonin.modbus4j.sero.log.SimpleLog;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
@@ -43,40 +46,88 @@ public class ProcessServiceImpl implements ProcessService {
|
|
|
|
|
|
@Autowired
|
|
|
private IInvLotLocIdService invLotLocIdService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private IInvLotAttService iInvLotAttService;
|
|
|
|
|
|
@Autowired
|
|
|
private PlcConnectServiceRunner plcConnectServiceRunner;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IDeviceLogService deviceLogService;
|
|
|
+
|
|
|
@Override
|
|
|
- public void createPackingMachineUnloadingTask(String taskType, Integer from) {
|
|
|
+ @Transactional
|
|
|
+ public synchronized void createPackingMachineUnloadingTask(String taskType, Integer from) {
|
|
|
WcsTask wcsTask = new WcsTask();
|
|
|
- wcsTask.setLocationTo(SMID);
|
|
|
- List<WcsTask> tasking = wcsTaskMapper.getTasking(wcsTask);
|
|
|
- if (!tasking.isEmpty()) {
|
|
|
- log.info(taskType + "请求下料存在进行的任务:" + tasking.stream().map(WcsTask::getTaskNo).collect(Collectors.toList()));
|
|
|
- return;
|
|
|
+ //获取产线上缓存位的状态
|
|
|
+ String s = taskType.split("_")[2];
|
|
|
+ BaseLocationInfo baseLocationInfo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo("DOWN_HC-" + s, Constant.WAREHOUSE_ID);
|
|
|
+ AjaxResult ajaxResult = null;
|
|
|
+ log.info(baseLocationInfo.getIsEmpty());
|
|
|
+ if ("N".equals(baseLocationInfo.getIsEmpty())) {
|
|
|
+ boolean b1 = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).readBoolean(PLCEnum.STACKING_MACHINE_FEEDING.getMetadata());
|
|
|
+ deviceLogService.insertDeviceLog(new DeviceLog(PLCConnectNameEnum.STACKING_MACHINE.getMetadata(), PLCConnectNameEnum.STACKING_MACHINE.getMetaName(), "获取到上料信号:" + b1, "1"));
|
|
|
+ if (!b1) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ wcsTask.setLocationTo(SMID);
|
|
|
+ List<WcsTask> tasking = wcsTaskMapper.getTasking(wcsTask);
|
|
|
+ if (!tasking.isEmpty()) {
|
|
|
+ log.info(taskType + "叠包机上料存在进行的任务:" + tasking.stream().map(WcsTask::getTaskNo).collect(Collectors.toList()));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //生成两个任务 打包机->叠包机,打包机缓存 ->叠包机
|
|
|
+ // 打包机->叠包机
|
|
|
+ AgvCallDTO agvCallDTO = new AgvCallDTO();
|
|
|
+ agvCallDTO.setLocationFrom(String.valueOf(from));
|
|
|
+ agvCallDTO.setLocationTo(SMID);
|
|
|
+ ajaxResult = iBusinessService.agvCall(Constant.FLOW_CONFIG_ID.valueOf(taskType).getValue(), agvCallDTO);
|
|
|
+
|
|
|
+ //打包机缓存 ->叠包机
|
|
|
+ agvCallDTO.setLocationFrom(String.valueOf(baseLocationInfo.getId()));
|
|
|
+ ajaxResult = iBusinessService.agvCall(Constant.FLOW_CONFIG_ID.valueOf("SM_HC_" + s).getValue(), agvCallDTO);
|
|
|
+
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).writeBoolean(PLCEnum.STACKING_MACHINE_FEEDING_RECEPTION.getMetadata(), true);
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.STACKING_MACHINE.getMetadata(), PLCConnectNameEnum.STACKING_MACHINE.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.STACKING_MACHINE_FEEDING_RECEPTION.getMetadata() + "值:true", "1"));
|
|
|
+
|
|
|
+ } else {
|
|
|
+ wcsTask.setLocationTo(baseLocationInfo.getId().toString());
|
|
|
+ List<WcsTask> tasking = wcsTaskMapper.getTasking(wcsTask);
|
|
|
+ if (!tasking.isEmpty()) {
|
|
|
+ log.info(taskType + "下料至暂存区存在进行的任务:" + tasking.stream().map(WcsTask::getTaskNo).collect(Collectors.toList()));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ AgvCallDTO agvCallDTO = new AgvCallDTO();
|
|
|
+ agvCallDTO.setLocationFrom(String.valueOf(from));
|
|
|
+ agvCallDTO.setLocationTo(baseLocationInfo.getId().toString());
|
|
|
+ ajaxResult = iBusinessService.agvCall(Constant.FLOW_CONFIG_ID.valueOf("PM_HC_" + s).getValue(), agvCallDTO);
|
|
|
}
|
|
|
- AgvCallDTO agvCallDTO = new AgvCallDTO();
|
|
|
- agvCallDTO.setLocationFrom(from + "");
|
|
|
- agvCallDTO.setLocationTo(SMID);
|
|
|
- AjaxResult ajaxResult = iBusinessService.agvCall(Constant.FLOW_CONFIG_ID.valueOf(taskType).getValue(), agvCallDTO);
|
|
|
if (ajaxResult.isSuccess()) {
|
|
|
- if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_1.name())) {
|
|
|
+ if (taskType.equals(Constant.FLOW_CONFIG_ID.PM_L_1.name())) {
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_1.getMetadata(), true);
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_1.getMetadata() + "值:true", "1"));
|
|
|
+ }
|
|
|
+ if (taskType.equals(Constant.FLOW_CONFIG_ID.PM_L_2.name())) {
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_2.getMetadata(), true);
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_2.getMetadata() + "值:true", "1"));
|
|
|
+ }
|
|
|
+ if (taskType.equals(Constant.FLOW_CONFIG_ID.PM_L_3.name())) {
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_3.getMetadata(), true);
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_3.getMetadata() + "值:true", "1"));
|
|
|
+ }
|
|
|
+ if (taskType.equals(Constant.FLOW_CONFIG_ID.PM_UP_1.name())) {
|
|
|
plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_1.getMetadata(), true);
|
|
|
SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_1.getMetadata() + "值:true", "1"));
|
|
|
}
|
|
|
- if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_2.name())) {
|
|
|
+ if (taskType.equals(Constant.FLOW_CONFIG_ID.PM_UP_2.name())) {
|
|
|
plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_2.getMetadata(), true);
|
|
|
SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_2.getMetadata() + "值:true", "1"));
|
|
|
}
|
|
|
- if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_3.name())) {
|
|
|
+ if (taskType.equals(Constant.FLOW_CONFIG_ID.PM_UP_3.name())) {
|
|
|
plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_3.getMetadata(), true);
|
|
|
SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_3.getMetadata() + "值:true", "1"));
|
|
|
}
|
|
|
- plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).writeBoolean(PLCEnum.STACKING_MACHINE_FEEDING_RECEPTION.getMetadata(), true);
|
|
|
- SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.STACKING_MACHINE.getMetadata(), PLCConnectNameEnum.STACKING_MACHINE.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.STACKING_MACHINE_FEEDING_RECEPTION.getMetadata() + "值:true", "1"));
|
|
|
}
|
|
|
}
|
|
|
|