This commit is contained in:
2022-07-13 18:20:46 +08:00
parent 6d88b4aac3
commit 36edf3d0d5
7 changed files with 153 additions and 125 deletions

View File

@@ -66,14 +66,13 @@
:visible.sync="devicedialogVisible"
width="35%"
:before-close="handleClose">
<el-form :model="deviceForm" status-icon ref="deviceForm" label-width="150px" class="demo-ruleForm">
<el-form :model="deviceForm" status-icon label-width="120px" ref="deviceForm" class="demo-ruleForm">
<el-form-item label="选择设备" prop="device_id">
<el-select
v-model="deviceForm.device_id"
clearable
size="mini"
class="filter-item"
style="width: 200px;"
>
<el-option
v-for="item in deviceList"
@@ -95,21 +94,21 @@
:visible.sync="reportdialogVisibler"
width="35%"
:before-close="handleClose">
<el-form :model="reportForm" status-icon ref="reportForm" label-width="150px" class="demo-ruleForm">
<el-form :model="reportForm" status-icon ref="reportForm" label-width="120px" class="demo-ruleForm">
<el-form-item label="生产数量" prop="produce_qty">
<el-input disabled v-model="reportForm.produce_qty" style="width: 200px;" />
<el-input disabled v-model="reportForm.produce_qty" />
</el-form-item>
<el-form-item label="期初数量" prop="init_qty">
<el-input disabled v-model="reportForm.init_qty" style="width: 200px;" />
<el-input disabled v-model="reportForm.init_qty"/>
</el-form-item>
<el-form-item label="期末数量" prop="report_qty">
<el-input disabled v-model="reportForm.finish_qty" style="width: 200px;" />
<el-input disabled v-model="reportForm.finish_qty" />
</el-form-item>
<el-form-item label="完成数量" prop="report_qty">
<el-input disabled v-model="reportForm.finishproduct_qty" style="width: 200px;" />
<el-input disabled v-model="reportForm.finishproduct_qty" />
</el-form-item>
<el-form-item label="报工数量" prop="report_qty">
<el-input oninput="value = value.replace(/[^\d]/g, '')" type="number" :disabled="is_disabled()" v-model="reportForm.report_qty" style="width: 200px;" />
<el-input clearable oninput="value = value.replace(/[^\d]/g, '')" type="number" :disabled="is_disabled()" v-model="reportForm.report_qty" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">

View File

@@ -24,6 +24,9 @@ public class HailiangPackerStationDevice extends AbstractDriverService {
Boolean requireSucess = hailiangPackerStationDeviceDriver.getRequireSucess();
jo.put("requestSucess",StageActorUtil.getRequestSucess(requireSucess));
jo.put("requireSucess",StageActorUtil.getRequireSucess(requireSucess));
Boolean fullrequireSucess = hailiangPackerStationDeviceDriver.getFullrequireSucess();
jo.put("fullrequestSucess",StageActorUtil.getRequestSucess(fullrequireSucess));
jo.put("fullrequireSucess",StageActorUtil.getRequireSucess(fullrequireSucess));
jo.put("driver_type",device.getDeviceDriverDefination().getDriverCode());
return jo;
}

View File

@@ -856,6 +856,7 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial
String vehicle_code = form.getString("vehicle_code");
String islock = form.getString("islock");
String requireSucess = form.getString("requireSucess");
String fullrequireSucess = form.getString("fullrequireSucess");
if (device_code.indexOf(".") != -1) {
device_code = device_code.substring(0, device_code.indexOf("."));
}
@@ -959,6 +960,13 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial
hailiangPackerStationDeviceDriver.setRequireSucess(true);
}
}
if(StrUtil.isNotEmpty(fullrequireSucess)) {
if (fullrequireSucess.equals("0")){
hailiangPackerStationDeviceDriver.setFullrequireSucess(false);
} else {
hailiangPackerStationDeviceDriver.setFullrequireSucess(true);
}
}
}
}

View File

@@ -119,6 +119,7 @@ public class HailiangPackerStationDeviceDriver extends AbstractOpcDeviceDriver i
private int instruction_require_time_out = 3000;
//请求成功标记
Boolean requireSucess = false;
Boolean fullrequireSucess = false;
//申请指令成功标记
Boolean applySucess = false;
String inst_message;
@@ -203,7 +204,7 @@ public class HailiangPackerStationDeviceDriver extends AbstractOpcDeviceDriver i
}
if (req_task_empty != last_req_task_empty) {
if (req_task_empty == 0) {
this.setRequireSucess(false);
this.setFullrequireSucess(false);
}
logServer.deviceLog(this.device_code, "req_task_empty", String.valueOf(req_task_empty));
logServer.deviceLogToacs(this.device_code, "", "", "信号req_task_empty:" + last_req_task_empty + "->" + req_task_empty);
@@ -306,13 +307,12 @@ public class HailiangPackerStationDeviceDriver extends AbstractOpcDeviceDriver i
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":,move:" + move + ",mode:" + mode + ",requireSucess:" + requireSucess + "开始申请缺料请求任务");
apply_task();
}
}
if (!fullrequireSucess){
if (mode == 1 && req_task_empty == 1 && move == 1) {
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":,move:" + move + ",mode:" + mode + ",requireSucess:" + requireSucess + "开始申请请求取走空料斗任务");
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":,move:" + move + ",mode:" + mode + ",fullrequireSucess:" + fullrequireSucess + "开始申请请求取走空料斗任务");
apply_take_empty_task();
}
} else {
logServer.deviceLogToacs(this.device_code, "", "", "是否请求成功requireSucess:" + requireSucess);
}
}
@@ -510,7 +510,7 @@ public class HailiangPackerStationDeviceDriver extends AbstractOpcDeviceDriver i
//生成任务成功
if (flag) {
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":取走空料斗任务创建成功");
requireSucess = true;
fullrequireSucess = true;
} else {
//如果都没有则调用mes接口申请入缓存线
//生成任务

View File

@@ -118,7 +118,7 @@ public class HailiangSpecialPourStationDeviceDriver extends AbstractOpcDeviceDri
String inst_message;
private int instruction_finished_time_out;
private Date instruction_apply_time = new Date();
int agvphase=0;
int index =0;
@@ -245,14 +245,11 @@ public class HailiangSpecialPourStationDeviceDriver extends AbstractOpcDeviceDri
List toInstructions;
if(!requireSucess){
Device device = deviceAppservice.findDeviceByCode(device_code);
Integer min_num = Integer.parseInt(device.getExtraValue().get("min_num")+"");
// TODO 是否需要手自动状态开启判断条件
if ( mode == 1 && storage_stock_num < min_num ) {
if ( mode == 1) {
logServer.deviceLogToacs(this.device_code,"","",device_code+":requireSucess:" + requireSucess + "开始申请任务");
applyOutCacheLineTask();
} else {
logServer.deviceLogToacs(this.device_code,"","",device_code+":requireSucess:" + requireSucess + "倒料位数量:"+storage_stock_num+"最小数量:"+min_num+ "申请任务失败,不符合条件");
logServer.deviceLogToacs(this.device_code,"","",device_code+":requireSucess:" + requireSucess + "申请任务失败,不符合条件");
}
} else {
logServer.deviceLogToacs(this.device_code,"","","是否请求成功requireSucess:"+requireSucess);
@@ -312,60 +309,70 @@ public class HailiangSpecialPourStationDeviceDriver extends AbstractOpcDeviceDri
}
public synchronized boolean applyOutCacheLineTask() throws Exception {
Boolean flag = false;
JSONObject json = new JSONObject();
json.put("device_code",device_code);
json.put("type","2");
HttpResponse httpResponse = acsToWmsService.applyOutCacheLineTask(json);
String body = httpResponse.body();
JSONObject jsonObject = JSONObject.parseObject(body);
String ext_task_id = jsonObject.getString("ext_task_id");
String task_code = jsonObject.getString("task_code");
String start_device_code = jsonObject.getString("start_device_code");
String put_device_code = jsonObject.getString("put_device_code");
String next_device_code = jsonObject.getString("next_device_code");
String task_type = jsonObject.getString("task_type");
TaskDto onedto = new TaskDto();
String now = DateUtil.now();
onedto.setTask_id(IdUtil.simpleUUID());
onedto.setQuantity(String.valueOf(full_number));
onedto.setCreate_by(this.getDevice().getDevice_code());
onedto.setUpdate_by(this.getDevice().getDevice_code());
onedto.setRoute_plan_code("normal");
String taskcode = CodeUtil.getNewCode("TASK_NO");
onedto.setTask_code("-" + taskcode);
onedto.setTask_status("0");
onedto.setPriority("101");
onedto.setAgv_system_type("1");
onedto.setTask_type(task_type);
onedto.setExt_task_id(ext_task_id);
onedto.setTask_id(IdUtil.simpleUUID());
onedto.setTask_code(task_code);
onedto.setStart_device_code(start_device_code);
onedto.setStart_point_code(start_device_code);
onedto.setPut_device_code(put_device_code);
onedto.setPut_point_code(put_device_code);
onedto.setNext_point_code(next_device_code);
onedto.setNext_device_code(next_device_code);
onedto.setUpdate_time(now);
onedto.setCreate_time(now);
try {
taskserver.create(onedto);
flag = true;
} catch (Exception e) {
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":创建任务失败," + String.valueOf(e.getMessage()));
}
//生成任务成功
if (flag) {
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":专机生成任务成功");
requireSucess = true;
Date date = new Date();
if (date.getTime() - this.instruction_apply_time.getTime() < (long) this.instruction_require_time_out) {
log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out);
return false;
} else {
//如果都没有则调用mes接口申请入缓存线
//生成任务
//前往缓存线
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":分配任务缓存线");
Boolean flag = false;
Device device = deviceAppservice.findDeviceByCode(device_code);
Integer min_num = Integer.parseInt(device.getExtraValue().get("min_num")+"");
if (storage_stock_num < min_num ){
JSONObject json = new JSONObject();
json.put("device_code",device_code);
json.put("type","2");
HttpResponse httpResponse = acsToWmsService.applyOutCacheLineTask(json);
String body = httpResponse.body();
JSONObject jsonObject = JSONObject.parseObject(body);
String ext_task_id = jsonObject.getString("ext_task_id");
String task_code = jsonObject.getString("task_code");
String start_device_code = jsonObject.getString("start_device_code");
String put_device_code = jsonObject.getString("put_device_code");
String next_device_code = jsonObject.getString("next_device_code");
String task_type = jsonObject.getString("task_type");
TaskDto onedto = new TaskDto();
String now = DateUtil.now();
onedto.setTask_id(IdUtil.simpleUUID());
onedto.setQuantity(String.valueOf(full_number));
onedto.setCreate_by(this.getDevice().getDevice_code());
onedto.setUpdate_by(this.getDevice().getDevice_code());
onedto.setRoute_plan_code("normal");
String taskcode = CodeUtil.getNewCode("TASK_NO");
onedto.setTask_code("-" + taskcode);
onedto.setTask_status("0");
onedto.setPriority("101");
onedto.setAgv_system_type("1");
onedto.setTask_type(task_type);
onedto.setExt_task_id(ext_task_id);
onedto.setTask_id(IdUtil.simpleUUID());
onedto.setTask_code(task_code);
onedto.setStart_device_code(start_device_code);
onedto.setStart_point_code(start_device_code);
onedto.setPut_device_code(put_device_code);
onedto.setPut_point_code(put_device_code);
onedto.setNext_point_code(next_device_code);
onedto.setNext_device_code(next_device_code);
onedto.setUpdate_time(now);
onedto.setCreate_time(now);
try {
taskserver.create(onedto);
flag = true;
} catch (Exception e) {
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":创建任务失败," + String.valueOf(e.getMessage()));
}
}
//生成任务成功
if (flag) {
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":专机生成任务成功");
requireSucess = true;
} else {
//如果都没有则调用mes接口申请入缓存线
//生成任务
//前往缓存线
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":分配任务缓存线");
}
}
return true;
}

View File

@@ -72,7 +72,7 @@
:disabled="item.device_code == ''"
:popper-class="isErrorColor(item)"
>
<div style="height: 390px;overflow-y: auto" v-if="item.device_code !== ''">
<div v-if="item.device_code !== ''" style="height: 390px;overflow-y: auto">
<div style="padding: 3px;">
设备信息
</div>
@@ -175,15 +175,21 @@
<!--弹窗设置设备与图标绑定与角度-->
<el-dialog title="设备设置" :visible.sync="dialogFormVisible4" width="35%">
<el-form :model="form" size="small">
<el-form-item label="设备编号" prop="device_code" label-width="80px">
<el-form-item label="设备编号" prop="device_code" label-width="120px">
<el-input v-model="form.device_code" :disabled="true" />
</el-form-item>
<el-form-item label="是否请求" prop="requireSucess" label-width="80px">
<el-form-item label="缺料请求成功" prop="requireSucess" label-width="120px">
<el-radio-group v-model="form.requireSucess">
<el-radio-button :label="0"></el-radio-button>
<el-radio-button :label="1"></el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="空想请求成功" prop="fullrequireSucess" label-width="120px">
<el-radio-group v-model="form.fullrequireSucess">
<el-radio-button :label="0"></el-radio-button>
<el-radio-button :label="1"></el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible4 = false"> </el-button>
@@ -207,7 +213,7 @@
<el-button type="primary" @click="saveBarcode"> </el-button>
</div>
</el-dialog>
<XJDeviceMonitor ref="child1"/>
<XJDeviceMonitor ref="child1" />
</div>
</template>
@@ -246,7 +252,8 @@ export default {
barcode: '',
suspended: null,
material_type: '',
requireSucess: ''
requireSucess: '',
fullrequireSucess: ''
},
grid_width: 1000
}
@@ -286,6 +293,7 @@ export default {
this.form.hasGoodStatus = clickObj.data.hasGoods
this.form.material_type = clickObj.data.material_type
this.form.requireSucess = clickObj.data.requireSucess
this.form.fullrequireSucess = clickObj.data.fullrequireSucess
},
hasGoods(item) {
if (item.data && item.data.hasGoods > 0) {
@@ -327,152 +335,155 @@ export default {
continue
}
if (val === 'message' && data.isError === true) {
const obj = {name: '设备信息', value: data[val]}
const obj = { name: '设备信息', value: data[val] }
arr.push(obj)
}
if (val === 'message' && data.isError === 'false') {
const obj = {name: '异常信息', value: data[val]}
const obj = { name: '异常信息', value: data[val] }
arr.push(obj)
}
if (val === 'move') {
const obj = {name: '光电信号', value: data[val]}
const obj = { name: '光电信号', value: data[val] }
arr.push(obj)
} else if (val === 'mode') {
const obj = {name: '模式', value: data[val]}
const obj = { name: '模式', value: data[val] }
arr.push(obj)
} else if (val === 'error') {
const obj = {name: '报警', value: data[val]}
const obj = { name: '报警', value: data[val] }
arr.push(obj)
} else if (val === 'ip') {
const obj = {name: 'IP地址', value: data[val]}
const obj = { name: 'IP地址', value: data[val] }
arr.push(obj)
} else if (val === 'number') {
const obj = {name: '托盘数量', value: data[val]}
const obj = { name: '托盘数量', value: data[val] }
arr.push(obj)
} else if (val === 'qty') {
const obj = {name: '数量', value: data[val]}
const obj = { name: '数量', value: data[val] }
arr.push(obj)
} else if (val === 'weight') {
const obj = {name: '重量', value: data[val]}
const obj = { name: '重量', value: data[val] }
arr.push(obj)
} else if (val === 'instruction_message') {
const obj = {name: '指令信息', value: data[val]}
const obj = { name: '指令信息', value: data[val] }
arr.push(obj)
} else if (val === 'last_instruction_message') {
const obj = {name: '上次指令信息', value: data[val]}
const obj = { name: '上次指令信息', value: data[val] }
arr.push(obj)
} else if (val === 'container') {
const obj = {name: '载具号', value: data[val]}
const obj = { name: '载具号', value: data[val] }
arr.push(obj)
} else if (val === 'last_container') {
const obj = {name: '上次载具号', value: data[val]}
const obj = { name: '上次载具号', value: data[val] }
arr.push(obj)
} else if (val === 'instruction_code') {
const obj = {name: '指令号', value: data[val]}
const obj = { name: '指令号', value: data[val] }
arr.push(obj)
} else if (val === 'last_instruction_code') {
const obj = {name: '上次指令号', value: data[val]}
const obj = { name: '上次指令号', value: data[val] }
arr.push(obj)
} else if (val === 'action') {
const obj = {name: '动作信号', value: data[val]}
const obj = { name: '动作信号', value: data[val] }
arr.push(obj)
} else if (val === 'io_action') {
const obj = {name: '允许进出信号', value: data[val]}
const obj = { name: '允许进出信号', value: data[val] }
arr.push(obj)
} else if (val === 'material') {
const obj = {name: '物料', value: data[val]}
const obj = { name: '物料', value: data[val] }
arr.push(obj)
} else if (val === 'batch') {
const obj = {name: '批次', value: data[val]}
const obj = { name: '批次', value: data[val] }
arr.push(obj)
} else if (val === 'requestSucess') {
const obj = {name: '是否请求任务', value: data[val]}
const obj = { name: '缺料请求成功', value: data[val] }
arr.push(obj)
} else if (val === 'fullrequestSucess') {
const obj = { name: '空箱请求成功', value: data[val] }
arr.push(obj)
} else if (val === 'applySucess') {
const obj = {name: '是否申请指令', value: data[val]}
const obj = { name: '是否申请指令', value: data[val] }
arr.push(obj)
} else if (val === 'message') {
const obj = {name: '说明', value: data[val]}
const obj = { name: '说明', value: data[val] }
arr.push(obj)
} else if (val === 'empty_is_lack') {
const obj = {name: '空箱位缺箱', value: data[val]}
const obj = { name: '空箱位缺箱', value: data[val] }
arr.push(obj)
} else if (val === 'empty_is_finish') {
const obj = {name: '空位完成', value: data[val]}
const obj = { name: '空位完成', value: data[val] }
arr.push(obj)
} else if (val === 'full_ready_req_agv') {
const obj = {name: '满箱位就绪请求AGV', value: data[val]}
const obj = { name: '满箱位就绪请求AGV', value: data[val] }
arr.push(obj)
} else if (val === 'full_out') {
const obj = {name: '满箱已运出满箱位', value: data[val]}
const obj = { name: '满箱已运出满箱位', value: data[val] }
arr.push(obj)
} else if (val === 'finish') {
const obj = {name: '订单完成', value: data[val]}
const obj = { name: '订单完成', value: data[val] }
arr.push(obj)
} else if (val === 'order_compel_finish') {
const obj = {name: '订单强制完成', value: data[val]}
const obj = { name: '订单强制完成', value: data[val] }
arr.push(obj)
} else if (val === 'now_order_prod_num') {
const obj = {name: '当前生产总量', value: data[val]}
const obj = { name: '当前生产总量', value: data[val] }
arr.push(obj)
} else if (val === 'now_one_prod_num') {
const obj = {name: '当前箱生产量', value: data[val]}
const obj = { name: '当前箱生产量', value: data[val] }
arr.push(obj)
} else if (val === 'task') {
const obj = {name: '任务号', value: data[val]}
const obj = { name: '任务号', value: data[val] }
arr.push(obj)
} else if (val === 'full_number') {
const obj = {name: '出料口满框数量', value: data[val]}
const obj = { name: '出料口满框数量', value: data[val] }
arr.push(obj)
} else if (val === 'storage_stock_num') {
const obj = {name: '储料仓库存数量', value: data[val]}
const obj = { name: '储料仓库存数量', value: data[val] }
arr.push(obj)
} else if (val === 'line_stock_num') {
const obj = {name: '线体库存数量', value: data[val]}
const obj = { name: '线体库存数量', value: data[val] }
arr.push(obj)
} else if (val === 'order_prod_allnum') {
const obj = {name: '订单生产总量', value: data[val]}
const obj = { name: '订单生产总量', value: data[val] }
arr.push(obj)
} else if (val === 'order') {
const obj = {name: '工单号', value: data[val]}
const obj = { name: '工单号', value: data[val] }
arr.push(obj)
} else if (val === 'storage_stock_num') {
const obj = {name: '储料仓库存数量', value: data[val]}
const obj = { name: '储料仓库存数量', value: data[val] }
arr.push(obj)
} else if (val === 'line_stock_num') {
const obj = {name: '线体库存数量', value: data[val]}
const obj = { name: '线体库存数量', value: data[val] }
arr.push(obj)
} else if (val === 'material_type') {
const obj = {name: '产品编号', value: data[val]}
const obj = { name: '产品编号', value: data[val] }
arr.push(obj)
} else if (val === 'lack_req') {
const obj = {name: '缺料请求', value: data[val]}
const obj = { name: '缺料请求', value: data[val] }
arr.push(obj)
} else if (val === 'empty_req') {
const obj = {name: '空箱请求', value: data[val]}
const obj = { name: '空箱请求', value: data[val] }
arr.push(obj)
} else if (val === 'address') {
const obj = {name: 'agv位置', value: data[val]}
const obj = { name: 'agv位置', value: data[val] }
arr.push(obj)
} else if (val === 'phaseName') {
const obj = {name: 'phase', value: data[val]}
const obj = { name: 'phase', value: data[val] }
arr.push(obj)
} else if (val === 'full_req') {
const obj = {name: '满箱请求', value: data[val]}
const obj = { name: '满箱请求', value: data[val] }
arr.push(obj)
} else if (val === 'open_time') {
const obj = {name: '开机时间', value: data[val]}
const obj = { name: '开机时间', value: data[val] }
arr.push(obj)
} else if (val === 'close_time') {
const obj = {name: '关机时间', value: data[val]}
const obj = { name: '关机时间', value: data[val] }
arr.push(obj)
} else if (val === 'feeding_qty') {
const obj = {name: '上料数量', value: data[val]}
const obj = { name: '上料数量', value: data[val] }
arr.push(obj)
} else if (val === 'error_num') {
const obj = {name: '故障次数', value: data[val]}
const obj = { name: '故障次数', value: data[val] }
arr.push(obj)
}
}