现场联调优化

This commit is contained in:
pangshenghao
2023-07-29 15:15:18 +08:00
parent e6889dc46e
commit ecb37e4432
16 changed files with 143 additions and 96 deletions

View File

@@ -144,7 +144,7 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp
}
if (this.getApply_handling()) {
String link_device_code = this.getDevice().getExtraValue().get("link_device_code").toString();
String link_device_code = String.valueOf(this.getDevice().getExtraValue().get("link_device_code"));
DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class);
Device link_device = appService.findDeviceByCode(link_device_code);
StandardInspectSiteDeviceDriver standardInspectSiteDevicedriver;

View File

@@ -56,22 +56,7 @@ public class HfStationTwoDefination implements OpcDeviceDriverDefination {
}
public static List<ItemDto> getReadableItemDtos2() {
List<ItemDto> list = new ArrayList();
list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB101.B0"));
list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB101.B1"));
list.add(new ItemDto(ItemProtocol.item_move, "光电信号", "DB101.B2"));
list.add(new ItemDto(ItemProtocol.item_action, "取放信号", "DB101.B3"));
list.add(new ItemDto(ItemProtocol.item_ioaction, "进出信号", "DB101.B4"));
list.add(new ItemDto(ItemProtocol.item_error, "报警信号", "DB101.B5"));
list.add(new ItemDto(ItemProtocol.item_task, "任务号", "DB101.D6"));
list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB101.B10"));
list.add(new ItemDto(ItemProtocol.item_current_order_num, "当前工单数量", "DB101.D12"));
list.add(new ItemDto(ItemProtocol.item_order, "工单号", "DB200.STRING20.50"));
list.add(new ItemDto(ItemProtocol.item_barcode, "条码", "DB200.STRING72.50"));
list.add(new ItemDto(ItemProtocol.item_material_code, "物料号", "DB200.B72"));
list.add(new ItemDto(ItemProtocol.item_product_code,"产品编号","DB200.B124"));
list.add(new ItemDto(ItemProtocol.item_number,"托盘砖数量","DB200.B16"));
return list;
return ItemProtocol.getReadableItemDtos();
}
@Override

View File

@@ -14,8 +14,6 @@ import org.nl.acs.device_driver.DeviceDriver;
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.hongfeng.hf_kiln_manipulator.HfKilnManipulatorDeviceDriver;
import org.nl.acs.device_driver.hongfeng.hf_station.HfStationDeviceDriver;
import org.nl.acs.ext.wms.service.AcsToWmsService;
import org.nl.acs.instruction.service.InstructionService;
import org.nl.acs.instruction.service.dto.Instruction;
@@ -333,6 +331,9 @@ public class HfStationTwoDeviceDriver extends AbstractOpcDeviceDriver implements
finish();
}
break;
case 5:
finish();
break;
case 6:
//满跺完成,请求呼叫
if (!callEmptyRequireSucess && move != 0) {
@@ -692,8 +693,8 @@ public class HfStationTwoDeviceDriver extends AbstractOpcDeviceDriver implements
dto.setUpdate_time(DateUtil.now());
produceshiftorderService.update(dto);
this.setRequireSucess(true);
this.writing(8);
this.writing(8);
this.writing(3);
this.writing(3);
logServer.deviceInfo("人工排产确认", this.getDevice_code(), "人工排产确认成功!");
}
return true;

View File

@@ -173,20 +173,21 @@ public class ItemProtocol {
public static List<ItemDto> getReadableItemDtos() {
ArrayList list = new ArrayList();
list.add(new ItemDto(item_heartbeat, "心跳", "DB101.B0"));
list.add(new ItemDto(item_mode, "工作模式", "DB101.B1"));
list.add(new ItemDto(item_move, "光电信号", "DB101.B2"));
list.add(new ItemDto(item_action, "取放信号", "DB101.B3"));
list.add(new ItemDto(item_ioaction, "进出信号", "DB101.B4"));
list.add(new ItemDto(item_error, "报警信号", "DB101.B5"));
list.add(new ItemDto(item_task, "任务号", "DB101.D6"));
list.add(new ItemDto(item_status, "设备状态", "DB101.B10"));
list.add(new ItemDto(item_current_order_num, "当前工单数量", "DB101.D12"));
list.add(new ItemDto(item_heartbeat, "心跳", "DB200.B0"));
list.add(new ItemDto(item_mode, "工作模式", "DB200.B1"));
list.add(new ItemDto(item_move, "光电信号", "DB200.B2"));
list.add(new ItemDto(item_action, "取放信号", "DB200.B3"));
list.add(new ItemDto(item_ioaction, "进出信号", "DB200.B4"));
list.add(new ItemDto(item_error, "报警信号", "DB200.B5"));
list.add(new ItemDto(item_task, "任务号", "DB200.D6"));
list.add(new ItemDto(item_status, "设备状态", "DB200.B10"));
list.add(new ItemDto(item_current_order_num, "当前工单数量", "DB200.D12"));
list.add(new ItemDto(item_number,"托盘砖数量","DB200.W16"));
list.add(new ItemDto(item_barcode, "条码", "DB200.W18"));
list.add(new ItemDto(item_order, "工单号", "DB200.STRING20.50"));
list.add(new ItemDto(item_barcode, "条码", "DB200.STRING72.50"));
list.add(new ItemDto(item_material_code, "物料", "DB200.B72"));
list.add(new ItemDto(item_product_code,"产品编号","DB200.B124"));
list.add(new ItemDto(item_number,"托盘砖数量","DB200.B16"));
list.add(new ItemDto(item_material_code, "物料号", "DB200.STRING72.50"));
list.add(new ItemDto(item_product_code,"产品编","DB200.W124"));
return list;
}

View File

@@ -142,9 +142,9 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService, A
if (StrUtil.isNotBlank(hfStationDeviceDriver.getOrder())) {
throw new BadRequestException("设备正在生产");
}
if (hfStationDeviceDriver.getStatus() != 2) {
throw new BadRequestException("设备状态不为自动");
}
// if (hfStationDeviceDriver.getStatus() != 2) {
// throw new BadRequestException("设备状态不为自动");
// }
hfStationDeviceDriver.writing("to_order", dto.getOrder_code());
hfStationDeviceDriver.writing("to_order_num", String.valueOf(dto.getQty()));
hfStationDeviceDriver.writing("to_product_number", dto.getMaterial_code());
@@ -154,7 +154,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService, A
hfStationDeviceDriver.writing("to_command", "3");
hfStationDeviceDriver.writing("to_command", "3");
//压力机下发工单同时下发到关联的码盘工位
String device_code=hfStationDeviceDriver.getExtraValue().get("link_device_code").toString();
String device_code=String.valueOf(hfStationDeviceDriver.getExtraValue().get("link_device_code"));
Device linkDevice = deviceAppService.findDeviceByCode(device_code);
if (ObjectUtil.isNotEmpty(linkDevice)&&linkDevice.getDeviceDriver() instanceof HfStationTwoDeviceDriver) {
HfStationTwoDeviceDriver hfStationTwoDeviceDriver = (HfStationTwoDeviceDriver) linkDevice.getDeviceDriver();
@@ -171,14 +171,16 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService, A
hfStationTwoDeviceDriver.writing("to_product_code", dto.getProduct_code());
hfStationTwoDeviceDriver.writing("to_order", dto.getOrder_code());
hfStationTwoDeviceDriver.writing("to_order_num", String.valueOf(dto.getQty()));
hfStationTwoDeviceDriver.writing("to_material_code", dto.getMaterial_code());
hfStationTwoDeviceDriver.writing("to_a", dto.getA());
hfStationTwoDeviceDriver.writing("to_b", dto.getB());
hfStationTwoDeviceDriver.writing("to_h", dto.getH());
hfStationTwoDeviceDriver.writing("to_w", dto.getW());
hfStationTwoDeviceDriver.writing("to_number", dto.getNumber());
hfStationTwoDeviceDriver.writing("to_product_code", dto.getProduct_code());
hfStationTwoDeviceDriver.writing("to_command", "3");
hfStationTwoDeviceDriver.writing("to_command", "3");
hfStationTwoDeviceDriver.writing("to_material_code", dto.getMaterial_code());
hfStationTwoDeviceDriver.writing("to_command", "1");
hfStationTwoDeviceDriver.writing("to_command", "1");
}
}else if (device.getDeviceDriver() instanceof HfStationTwoDeviceDriver) {
HfStationTwoDeviceDriver hfStationTwoDeviceDriver = (HfStationTwoDeviceDriver) device.getDeviceDriver();
@@ -203,8 +205,8 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService, A
hfStationTwoDeviceDriver.writing("to_w", dto.getW());
hfStationTwoDeviceDriver.writing("to_number", dto.getNumber());
hfStationTwoDeviceDriver.writing("to_product_code", dto.getProduct_code());
hfStationTwoDeviceDriver.writing("to_command", "3");
hfStationTwoDeviceDriver.writing("to_command", "3");
hfStationTwoDeviceDriver.writing("to_command", "1");
hfStationTwoDeviceDriver.writing("to_command", "1");
}
JSONObject json = (JSONObject) JSONObject.toJSON(dto);
wo.insert(json);
@@ -367,7 +369,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService, A
hfStationDeviceDriver.writing("to_command", "3");
hfStationDeviceDriver.writing("to_command", "3");
//压力机下发工单同时下发到关联的码盘工位
String link_device_code=hfStationDeviceDriver.getExtraValue().get("link_device_code").toString();
String link_device_code=String.valueOf(hfStationDeviceDriver.getExtraValue().get("link_device_code"));
Device linkDevice = deviceAppService.findDeviceByCode(link_device_code);
if (linkDevice.getDeviceDriver() instanceof HfStationTwoDeviceDriver) {
HfStationTwoDeviceDriver hfStationTwoDeviceDriver = (HfStationTwoDeviceDriver) linkDevice.getDeviceDriver();

View File

@@ -304,7 +304,8 @@ export default {
is_release: true,
address: ''
},
rules: {}
rules: {},
deviceList:{}
}
},
created() {

View File

@@ -283,7 +283,8 @@ export default {
is_release: true,
address: ''
},
rules: {}
rules: {},
deviceList: {}
}
},
created() {

View File

@@ -25,6 +25,8 @@ public class VehicleDetailDto implements Serializable {
private String product_code;
/** 点位编码(窑号1/2) */
private String point_code;
/** 点位编码(窑号1/2) */
private String kiln_code;
/** 区域编码 0-缓存区 1-窑内 2-窑外冷却区 3-已拆垛*/
private String region_code;
/** 顺序号 */

View File

@@ -40,7 +40,9 @@ public class VehicleDetailServiceImpl implements VehicleDetailService {
@Override
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
JSONObject pageQuery = WQL.getWO("QMD_PB_VEHICLE_GROUP").addParamMap(MapOf.of("flag", "1"
, "vehicle_code", whereJson.get("vehicle_code")))
, "vehicle_code", whereJson.get("vehicle_code")
,"region_code",whereJson.get("region_code")
,"is_delete",whereJson.get("is_delete")))
.pageQuery(WqlUtil.getHttpContext(page), "vehicle_code asc");
return pageQuery;
}

View File

@@ -17,6 +17,8 @@
输入.vehicle_code TYPEAS s_string
输入.vehicle_type TYPEAS s_string
输入.vehicle_status TYPEAS s_string
输入.region_code TYPEAS s_string
输入.is_delete TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
@@ -52,6 +54,12 @@
1 = 1
OPTION 输入.vehicle_code <> ""
vd.vehicle_code LIKE '%' 输入.vehicle_code '%'
ENDOPTION
OPTION 输入.region_code <> ""
vd.region_code LIKE '%' 输入.region_code '%'
ENDOPTION
OPTION 输入.is_delete <> ""
vd.is_delete LIKE '%' 输入.is_delete '%'
ENDOPTION
ENDSELECT
ENDPAGEQUERY

View File

@@ -90,4 +90,22 @@ public class WorkorderDto implements Serializable {
/** 修改时间 */
private String update_time;
//A长边
private String a;
//B短边
private String b;
//H梯形高
private String h;
//W厚度
private String w;
//产品编号
private String product_code;
//托盘砖数量
private String number;
}

View File

@@ -215,12 +215,12 @@ public class WorkorderServiceImpl implements WorkordeService {
map.put("material_code", jsonObject.getString("material_code"));
map.put("device_code", json.getString("device_code"));
map.put("material_name",jsonObject.getString("material_name"));
map.put("a",jsonObject.getString("a"));
map.put("b",jsonObject.getString("b"));
map.put("h",jsonObject.getString("h"));
map.put("w",jsonObject.getString("w"));
map.put("product_code",jsonObject.getString("product_code"));
map.put("number",jsonObject.getString("number"));
map.put("a",json.getString("a"));
map.put("b",json.getString("b"));
map.put("h",json.getString("h"));
map.put("w",json.getString("w"));
map.put("product_code",json.getString("product_code"));
map.put("number",json.getString("number"));
array.add(map);
Map<String, Object> resp = wmsToAcsService.order(array);
if (StrUtil.equals(String.valueOf(resp.get("status")), "200")) {

View File

@@ -289,7 +289,7 @@ public class PalletizingTask extends AbstractAcsTask {
.vehicle_code(pointObj.getString("vehicle_code"))
.task_status(TaskStatusEnum.START_AND_POINT.getCode())
.point_code1("YWHC0"+pointObj.getString("order_seq"))
.point_code2("YWHC0"+ (pointObj.getInteger("order_seq")>21?42:21))
.point_code2((pointObj.getInteger("order_seq")>21?"FLW01":"FLW02"))
.priority("1")
.handle_class(THIS_CLASS)
.is_auto_issue(is_auto_issue)

View File

@@ -71,48 +71,6 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="产品编号" prop="product_code">
<el-input v-model="form.product_code" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="物料长度" prop="a">
<el-input v-model="form.a" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="物料宽度" prop="b">
<el-input v-model="form.b" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="物料高度" prop="h">
<el-input v-model="form.h" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="物料厚度" prop="w">
<el-input v-model="form.w" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="托盘砖数量" prop="number">
<el-input v-model="form.number" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="是否启用" prop="is_used">

View File

@@ -184,6 +184,63 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="产品编号" prop="product_code">
<el-select
v-model="form.product_code"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 180px;"
@change="setProduct"
>
<el-option
v-for="item in dict.product_code"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="物料长度" prop="a">
<el-input v-model="form.a" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="物料宽度" prop="b">
<el-input v-model="form.b" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="物料高度" prop="h">
<el-input v-model="form.h" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="物料厚度" prop="w">
<el-input v-model="form.w" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="托盘砖数量" prop="w">
<el-input v-model="form.number" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
<el-form-item v-if="false" label="工单状态">
@@ -423,7 +480,9 @@ export default {
name: 'Produceshiftorder',
components: { pagination, crudOperation, rrOperation, udOperation, MaterDtl, ViewDialog, DeviceDialog },
mixins: [presenter(), header(), form(defaultForm), crud()],
dicts: ['pdm_workorder_status', 'is_used', 'is_or_not', 'vehicle_type', 'workorder_procedure'],
dicts: ['pdm_workorder_status', 'is_used', 'is_or_not', 'vehicle_type', 'workorder_procedure', 'product_code',
'product_code_1', 'product_code_2', 'product_code_3', 'product_code_4', 'product_code_5', 'product_code_6', 'product_code_7',
'product_code_8', 'product_code_9', 'product_code_10'],
cruds() {
return CRUD({
title: '工单', url: 'api/workorder', idField: 'workorder_id', sort: 'workorder_id,desc',
@@ -541,6 +600,15 @@ export default {
return true
}
},
setProduct(row) {
var product_code = 'product_code_' + row
var productValue = this.dict.label[product_code] // 获取包含观察者的对象
// 使用 product_code 作为键名来获取对应的属性值
this.form.a = productValue.a
this.form.b = productValue.b
this.form.h = productValue.h
this.form.w = productValue.w
},
// 新增编辑给form表单物料相关信息赋值
setMaterValue(row) {
this.form.material_id = row.material_id