Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -165,7 +165,6 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
||||
} catch (Exception e) {
|
||||
log.error("AGV状态更新失败: {}", e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
else if (phase == 0x68) {
|
||||
// 更新AGV状态
|
||||
|
||||
@@ -56,9 +56,9 @@ export default {
|
||||
codeUrl: '',
|
||||
cookiePass: '',
|
||||
loginForm: {
|
||||
username: 'admin',
|
||||
password: '123456',
|
||||
rememberMe: false,
|
||||
username: '',
|
||||
password: '',
|
||||
rememberMe: true,
|
||||
code: '',
|
||||
uuid: ''
|
||||
},
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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进行合并
|
||||
|
||||
@@ -57,8 +57,8 @@ export default {
|
||||
cookiePass: '',
|
||||
loginForm: {
|
||||
username: 'admin',
|
||||
password: '123456',
|
||||
rememberMe: false,
|
||||
password: '',
|
||||
rememberMe: true,
|
||||
code: '',
|
||||
uuid: ''
|
||||
},
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user