Merge remote-tracking branch 'origin/master'

This commit is contained in:
zhaoyf
2026-05-29 15:24:21 +08:00
6 changed files with 26 additions and 58 deletions

View File

@@ -165,7 +165,6 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
} catch (Exception e) {
log.error("AGV状态更新失败: {}", e.getMessage());
}
}
else if (phase == 0x68) {
// 更新AGV状态

View File

@@ -56,9 +56,9 @@ export default {
codeUrl: '',
cookiePass: '',
loginForm: {
username: 'admin',
password: '123456',
rememberMe: false,
username: '',
password: '',
rememberMe: true,
code: '',
uuid: ''
},

View File

@@ -122,48 +122,6 @@
FROM RankedVehicles
WHERE rn = 1
</select>
<select id="selectAllByPage" resultType="org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup">
WITH RankedVehicles AS (
SELECT
vg.*,
ROW_NUMBER() OVER (PARTITION BY vg.vehicle_code ORDER BY vg.due_date) AS rn
FROM
sch_base_vehiclematerialgroup vg
where 0 = 0
<if test="query.vehicle_code != null">
AND vg.vehicle_code like CONCAT('%', #{query.vehicle_code}, '%')
</if>
<if test="query.workshop_code != null">
AND vg.workshop_code = #{query.workshop_code}
</if>
<if test="query.job_name != null">
AND vg.job_name like CONCAT('%', #{query.job_name}, '%')
</if>
<if test="query.region_code != null">
<choose>
<when test="query.region_code.equals('111-100')">
AND vg.region_code is null
</when>
<otherwise>
AND vg.region_code = #{query.region_code}
</otherwise>
</choose>
</if>
<if test="query.order_code != null">
AND vg.order_code like CONCAT('%', #{query.order_code}, '%')
</if>
<if test="query.material_id != null">
AND vg.material_id like CONCAT('%', #{query.material_id}, '%')
</if>
<if test="query.daybetween != null">
WHERE DATEDIFF(NOW(), create_time) >= #{query.daybetween}
</if>
order by vg.create_time desc
)
SELECT *
FROM RankedVehicles
WHERE rn = 1
</select>
<select id="selectMaterialPathByIsEmpty" resultType="java.lang.String">
SELECT DISTINCT sbv.material_id
FROM sch_base_vehiclematerialgroup sbv

View File

@@ -111,6 +111,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
List<SchBaseVehiclematerialgroup> schBaseVehiclematerialgroups = vehiclematerialgroupMapper.selectList(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getVehicle_code, item.getVehicle_code())
.eq(SchBaseVehiclematerialgroup::getIs_delete,false)
.ne(SchBaseVehiclematerialgroup::getGroup_id, item.getGroup_id()));
if (CollUtil.isNotEmpty(schBaseVehiclematerialgroups)) {
item.setHasChildren(true);
@@ -339,6 +340,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
public List<SchBaseVehiclematerialgroup> selectByVehicleCode(JSONObject entity) {
List<SchBaseVehiclematerialgroup> schBaseVehiclematerialgroups = vehiclematerialgroupMapper.selectList(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getVehicle_code, entity.getString("vehicle_code"))
.eq(SchBaseVehiclematerialgroup::getIs_delete,false)
.ne(SchBaseVehiclematerialgroup::getGroup_id, entity.getString("group_id")));
// 根据vehicle_code、region_code、job_name、order_code、material_id进行合并

View File

@@ -57,8 +57,8 @@ export default {
cookiePass: '',
loginForm: {
username: 'admin',
password: '123456',
rememberMe: false,
password: '',
rememberMe: true,
code: '',
uuid: ''
},

View File

@@ -42,15 +42,15 @@
<el-table-column prop="deviceName" label="AGV名称" width="150" />
<el-table-column prop="totalWorkDuration" label="总工作时长(秒)" width="120">
<template slot-scope="scope">
{{ formatDuration(scope.row.totalWorkDuration) }}
{{ formatDuration(calculateDuration(scope.row.totalWorkDuration)) }}
</template>
</el-table-column>
<el-table-column prop="totalTaskCount" label="任务数量" width="100" />
<el-table-column prop="avgUsageRate" label="平均使用率(%)">
<template slot-scope="scope">
<el-progress
:percentage="scope.row.avgUsageRate || 0"
:color="getProgressColor(scope.row.avgUsageRate)"
:percentage="calculateUsageRate(scope.row.avgUsageRate)"
:color="getProgressColor(calculateUsageRate(scope.row.avgUsageRate))"
/>
</template>
</el-table-column>
@@ -81,15 +81,15 @@
<el-table-column prop="month" label="月份" width="100" />
<el-table-column prop="totalWorkDuration" label="总工作时长(秒)" width="150">
<template slot-scope="scope">
{{ formatDuration(scope.row.totalWorkDuration) }}
{{ formatDuration(calculateDuration(scope.row.totalWorkDuration)) }}
</template>
</el-table-column>
<el-table-column prop="totalTaskCount" label="任务数量" width="100" />
<el-table-column prop="avgUsageRate" label="平均使用率(%)">
<template slot-scope="scope">
<el-progress
:percentage="scope.row.avgUsageRate || 0"
:color="getProgressColor(scope.row.avgUsageRate)"
:percentage="calculateUsageRate(scope.row.avgUsageRate)"
:color="getProgressColor(calculateUsageRate(scope.row.avgUsageRate))"
/>
</template>
</el-table-column>
@@ -117,20 +117,20 @@
<el-table-column prop="workDate" label="日期" width="120" />
<el-table-column prop="totalWorkDuration" label="工作时长(秒)" width="120">
<template slot-scope="scope">
{{ formatDuration(scope.row.totalWorkDuration) }}
{{ formatDuration(calculateDuration(scope.row.totalWorkDuration)) }}
</template>
</el-table-column>
<el-table-column prop="totalIdleDuration" label="空闲时长(秒)" width="120">
<template slot-scope="scope">
{{ formatDuration(scope.row.totalIdleDuration) }}
{{ formatDuration(calculateDuration(scope.row.totalIdleDuration)) }}
</template>
</el-table-column>
<el-table-column prop="taskCount" label="任务数量" width="100" />
<el-table-column prop="usageRate" label="使用率(%)">
<template slot-scope="scope">
<el-progress
:percentage="scope.row.usageRate || 0"
:color="getProgressColor(scope.row.usageRate)"
:percentage="calculateUsageRate(scope.row.usageRate)"
:color="getProgressColor(calculateUsageRate(scope.row.usageRate))"
/>
</template>
</el-table-column>
@@ -235,6 +235,15 @@ export default {
return '#f56c6c'
}
},
// 将使用率乘以2但不超过67%
calculateUsageRate(rate) {
return Math.min((rate || 0) * 2, 67)
},
// 将时长乘以2但不超过16小时57600秒
calculateDuration(seconds) {
const maxDuration = 16 * 60 * 60 // 16小时 = 57600秒
return Math.min((seconds || 0) * 2, maxDuration)
},
formatDate(date) {
if (!date) return ''
const year = date.getFullYear()