界面调整

This commit is contained in:
lsymicc
2026-04-09 17:21:51 +08:00
parent 9bc0cbf620
commit a490dd0d9a
4 changed files with 113 additions and 106 deletions

View File

@@ -7,6 +7,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
@@ -191,7 +192,7 @@ public class MydoJobServiceImpl extends ServiceImpl<MydoJobMapper, MydoJob> impl
//插入历史表 //插入历史表
mydoJobMapper.insertHistory(jobId); mydoJobMapper.insertHistory(jobId);
//生成回传记录的参数 //生成回传记录
MydoJob mydoJob = mydoJobMapper.selectMydoJobByJobId(jobId); MydoJob mydoJob = mydoJobMapper.selectMydoJobByJobId(jobId);
JobCallBack jobCallBack = new JobCallBack(); JobCallBack jobCallBack = new JobCallBack();
long jobIdNum = Long.parseLong(mydoJob.getInOrOut()); long jobIdNum = Long.parseLong(mydoJob.getInOrOut());
@@ -206,8 +207,8 @@ public class MydoJobServiceImpl extends ServiceImpl<MydoJobMapper, MydoJob> impl
jobCallBack.setTaskNo(Convert.toLong(mydoJob.getTaskNo())); jobCallBack.setTaskNo(Convert.toLong(mydoJob.getTaskNo()));
jobCallBack.setCreateTime(new Date()); jobCallBack.setCreateTime(new Date());
jobCallBack.setTaskCode(mydoJob.getWmsTaskNo()); jobCallBack.setTaskCode(mydoJob.getWmsTaskNo());
// jobCallBack.setTaskTypeCode();//todo wms下发的任务类型 jobCallBack.setTaskTypeCode("");//todo wms下发的任务类型
jobCallBack.setReqCode(mydoJob.getJobId() + mydoJob.getTaskNo()); jobCallBack.setReqCode(UUID.randomUUID().toString());
// jobCallBack.setSpare1("0"); // jobCallBack.setSpare1("0");
jobCallBackService.insertJobCallBack(jobCallBack); jobCallBackService.insertJobCallBack(jobCallBack);

View File

@@ -110,11 +110,12 @@ public class PortConvThread implements Runnable {
// inSsjDevice.setException(0); // inSsjDevice.setException(0);
// inSsjDevice.setRkqq(1); // inSsjDevice.setRkqq(1);
//todo 是否需要校验出入库模式
switch (inSsjDevice.getInOrOut()) { switch (inSsjDevice.getInOrOut()) {
//---------------------------入库模式--------------------------- //---------------------------入库模式---------------------------
case 1: case 1:
//---------------------------入口取输送机(叉车取放货位置)--------------------------- //---------------------------入口取输送机(叉车取放货位置)---------------------------
//输送机【非空闲】、【输送到位】、【入库请求】 //输送机【非空闲】、【输送到位】、【入库请求?】
if (inSsjDevice.getKx() != 1 && inSsjDevice.getDw() == 1) { if (inSsjDevice.getKx() != 1 && inSsjDevice.getDw() == 1) {
//更新入库任务阶段 //更新入库任务阶段
@@ -136,102 +137,6 @@ public class PortConvThread implements Runnable {
} }
public void inDispatch1(DeviceSsj ssjDevice) {
//有入库请求就肯定是电气的任务号的作业
if(StrUtil.isNotBlank(ssjDevice.getTrayCode()) && ssjDevice.getRkqq()==1 && ssjDevice.getTaskNo()<1000){
//,如果有正执行的出库作业退回
MydoJob mydoJobParam = new MydoJob();
// mydoJobParam.setInOut("2");
mydoJobParam.setStatus("3");
mydoJobParam.setExitId(ssjDevice.getDeviceCode());
List<MydoJob> outMydoJobList = mydoJobService.selectInOrOutMydoJobList(mydoJobParam);
if(!outMydoJobList.isEmpty()){
//todo 去向不明朗
int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"99",2,2);
if (i == 1) {
log.info(ssjDevice.getDeviceCode()+"有正执行的出库作业退回" );
}
return;
}
MydoJob mydoJob = new MydoJob();
mydoJob.setInOrOut("1");
// mydoJob.setStatus("1");
String trayCode = ssjDevice.getTrayCode();
//String[] split = trayCode.split("\\s+");
String serial = findFirst(PATTERNS.get("SERIAL"), trayCode);
mydoJob.setTrayCode(serial);
mydoJob.setEntranceId(ssjDevice.getDeviceCode());
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(mydoJob);
if(!mydoJobs.isEmpty()){
MydoJob mydoJob1 = mydoJobs.get(0);
int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob1.getTaskNo(),1,1);
if (i == 1) {
mydoJob1.setExecutionPhase(TASK_EP_SSJ);
mydoJob1.setStatus("3");
mydoJobService.updateMydoJob(mydoJob1);
log.info(ssjDevice.getDeviceCode()+"输送机下发任务号成功:{}" , mydoJob1.getTaskNo());
}
}else{
HashMap<String, Object> map = new HashMap<>();
map.put("trayCode",ssjDevice.getTrayCode());
map.put("entranceId",ssjDevice.getDeviceCode());
map.put("floor", "2");
AjaxResult ajaxResult = apiService.selectMydoJobByTrayCodeAndEntranceId(map);
if(ajaxResult.isSuccess()){
MydoJob mydoJob2 = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class);
mydoJob2.setStatus("1");
mydoJob2.setExecutionPhase(TASK_EP_CREATE);
mydoJob2.setCreateTime(new Date());
mydoJob2.setFaultFlag("0");
mydoJob2.setPriority(10L);
mydoJobService.insertMydoJob(mydoJob2);
int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1);
if (i == 1) {
mydoJob2.setExecutionPhase(TASK_EP_SSJ);
mydoJob2.setStatus("3");
mydoJobService.updateMydoJob(mydoJob2);
log.info(ssjDevice.getDeviceCode()+"输送机下发任务号成功:{}" , mydoJob2.getTaskNo());
}
}else{
//todo 去向不明朗
int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"99",2,2);
if (i == 1) {
log.info(ssjDevice.getDeviceCode()+"输送机没取到作业下发输送线" );
}
}
}
}
}
private static final Map<String, Pattern> PATTERNS = createPatterns();
private static Map<String, Pattern> createPatterns() {
Map<String, Pattern> map = new LinkedHashMap<>();
map.put("MODEL", Pattern.compile("MODEL:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("COLOR", Pattern.compile("COLOR:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("SERIAL", Pattern.compile("SERIAL:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("V", Pattern.compile("V:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("Hz", Pattern.compile("Hz:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("PH", Pattern.compile("PH:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("NW", Pattern.compile("N\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("GW", Pattern.compile("G\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("ITEM_CODE", Pattern.compile("ITEM_CODE:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("@", Pattern.compile("@:([^\\s]+)", Pattern.CASE_INSENSITIVE));
return map;
}
private static String findFirst(Pattern pattern, String input) {
if (pattern == null || input == null) return null;
Matcher m = pattern.matcher(input);
return m.find() ? m.group(1) : null;
}
/** /**
* 请求wms获取wcs任务参数 * 请求wms获取wcs任务参数
* @param inSsjDevice * @param inSsjDevice
@@ -409,4 +314,99 @@ public class PortConvThread implements Runnable {
} }
} }
public void inDispatch1(DeviceSsj ssjDevice) {
//有入库请求就肯定是电气的任务号的作业
if(StrUtil.isNotBlank(ssjDevice.getTrayCode()) && ssjDevice.getRkqq()==1 && ssjDevice.getTaskNo()<1000){
//,如果有正执行的出库作业退回
MydoJob mydoJobParam = new MydoJob();
// mydoJobParam.setInOut("2");
mydoJobParam.setStatus("3");
mydoJobParam.setExitId(ssjDevice.getDeviceCode());
List<MydoJob> outMydoJobList = mydoJobService.selectInOrOutMydoJobList(mydoJobParam);
if(!outMydoJobList.isEmpty()){
//todo 去向不明朗
int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"99",2,2);
if (i == 1) {
log.info(ssjDevice.getDeviceCode()+"有正执行的出库作业退回" );
}
return;
}
MydoJob mydoJob = new MydoJob();
mydoJob.setInOrOut("1");
// mydoJob.setStatus("1");
String trayCode = ssjDevice.getTrayCode();
//String[] split = trayCode.split("\\s+");
String serial = findFirst(PATTERNS.get("SERIAL"), trayCode);
mydoJob.setTrayCode(serial);
mydoJob.setEntranceId(ssjDevice.getDeviceCode());
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(mydoJob);
if(!mydoJobs.isEmpty()){
MydoJob mydoJob1 = mydoJobs.get(0);
int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob1.getTaskNo(),1,1);
if (i == 1) {
mydoJob1.setExecutionPhase(TASK_EP_SSJ);
mydoJob1.setStatus("3");
mydoJobService.updateMydoJob(mydoJob1);
log.info(ssjDevice.getDeviceCode()+"输送机下发任务号成功:{}" , mydoJob1.getTaskNo());
}
}else{
HashMap<String, Object> map = new HashMap<>();
map.put("trayCode",ssjDevice.getTrayCode());
map.put("entranceId",ssjDevice.getDeviceCode());
map.put("floor", "2");
AjaxResult ajaxResult = apiService.selectMydoJobByTrayCodeAndEntranceId(map);
if(ajaxResult.isSuccess()){
MydoJob mydoJob2 = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class);
mydoJob2.setStatus("1");
mydoJob2.setExecutionPhase(TASK_EP_CREATE);
mydoJob2.setCreateTime(new Date());
mydoJob2.setFaultFlag("0");
mydoJob2.setPriority(10L);
mydoJobService.insertMydoJob(mydoJob2);
int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1);
if (i == 1) {
mydoJob2.setExecutionPhase(TASK_EP_SSJ);
mydoJob2.setStatus("3");
mydoJobService.updateMydoJob(mydoJob2);
log.info(ssjDevice.getDeviceCode()+"输送机下发任务号成功:{}" , mydoJob2.getTaskNo());
}
}else{
//todo 去向不明朗
int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"99",2,2);
if (i == 1) {
log.info(ssjDevice.getDeviceCode()+"输送机没取到作业下发输送线" );
}
}
}
}
}
private static final Map<String, Pattern> PATTERNS = createPatterns();
private static Map<String, Pattern> createPatterns() {
Map<String, Pattern> map = new LinkedHashMap<>();
map.put("MODEL", Pattern.compile("MODEL:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("COLOR", Pattern.compile("COLOR:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("SERIAL", Pattern.compile("SERIAL:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("V", Pattern.compile("V:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("Hz", Pattern.compile("Hz:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("PH", Pattern.compile("PH:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("NW", Pattern.compile("N\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("GW", Pattern.compile("G\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("ITEM_CODE", Pattern.compile("ITEM_CODE:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("@", Pattern.compile("@:([^\\s]+)", Pattern.CASE_INSENSITIVE));
return map;
}
private static String findFirst(Pattern pattern, String input) {
if (pattern == null || input == null) return null;
Matcher m = pattern.matcher(input);
return m.find() ? m.group(1) : null;
}
} }

View File

@@ -89,7 +89,7 @@
<div slot="header" class="card-header"> <div slot="header" class="card-header">
<span>任务类型分布</span> <!-- 任务类型分布 --> <span>任务类型分布</span> <!-- 任务类型分布 -->
</div> </div>
<div id="taskTypeChart" style="height: 300px;"></div> <div id="taskTypeChart" style="height: 350px;"></div>
</el-card> </el-card>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@@ -97,7 +97,7 @@
<div slot="header" class="card-header"> <div slot="header" class="card-header">
<span>设备状态分布</span> <!-- 设备状态分布 --> <span>设备状态分布</span> <!-- 设备状态分布 -->
</div> </div>
<div id="deviceStatusChart" style="height: 300px;"></div> <div id="deviceStatusChart" style="height: 350px;"></div>
</el-card> </el-card>
</el-col> </el-col>
</el-row> </el-row>
@@ -149,9 +149,12 @@
style="width: 100%" style="width: 100%"
height="300" height="300"
v-loading="loading.devices"> v-loading="loading.devices">
<el-table-column prop="deviceCode" :label="$t('index.deviceCode')" width="200"/> <!-- 设备编码 --> <!-- 设备编码 -->
<el-table-column prop="deviceName" :label="$t('index.deviceName')" width="200"/> <!-- 设备名称 --> <!-- <el-table-column prop="deviceCode" :label="$t('index.deviceCode')" width="200"/> -->
<el-table-column prop="deviceType" :label="$t('index.type')" width="150"> <!-- 类型 --> <!-- 设备名称 -->
<el-table-column prop="deviceName" :label="$t('index.deviceName')" width="200"/>
<!-- 类型 -->
<el-table-column prop="deviceType" :label="$t('index.type')" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag>{{scope.row.deviceType}}</el-tag> <el-tag>{{scope.row.deviceType}}</el-tag>
</template> </template>
@@ -585,6 +588,8 @@ export default {
height: 120px; height: 120px;
cursor: pointer; cursor: pointer;
transition: all 0.3s; transition: all 0.3s;
overflow-x: auto;
/* white-space: nowrap; */
} }
.stats-card:hover { .stats-card:hover {
@@ -601,6 +606,7 @@ export default {
.stats-icon { .stats-icon {
width: 60px; width: 60px;
/* width: 60vh; */
height: 60px; height: 60px;
border-radius: 50%; border-radius: 50%;
display: flex; display: flex;

View File

@@ -401,7 +401,7 @@ export default {
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const jobIds = row.jobId || this.ids const jobIds = row.jobId || this.ids
this.$modal.confirm('是否确认删除作业信息编号为"' + jobIds + '"的数据项?').then(function() { this.$modal.confirm('是否确认删除作业信息编号为"' + jobIds + '"的数据项?(此操作可能影响任务回传,请和上层系统核对账目)').then(function() {
return delMydoJob(jobIds) return delMydoJob(jobIds)
}).then(() => { }).then(() => {
this.getList() this.getList()