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) {
|
} catch (Exception e) {
|
||||||
log.error("AGV状态更新失败: {}", e.getMessage());
|
log.error("AGV状态更新失败: {}", e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (phase == 0x68) {
|
else if (phase == 0x68) {
|
||||||
// 更新AGV状态
|
// 更新AGV状态
|
||||||
|
|||||||
@@ -56,9 +56,9 @@ export default {
|
|||||||
codeUrl: '',
|
codeUrl: '',
|
||||||
cookiePass: '',
|
cookiePass: '',
|
||||||
loginForm: {
|
loginForm: {
|
||||||
username: 'admin',
|
username: '',
|
||||||
password: '123456',
|
password: '',
|
||||||
rememberMe: false,
|
rememberMe: true,
|
||||||
code: '',
|
code: '',
|
||||||
uuid: ''
|
uuid: ''
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -122,48 +122,6 @@
|
|||||||
FROM RankedVehicles
|
FROM RankedVehicles
|
||||||
WHERE rn = 1
|
WHERE rn = 1
|
||||||
</select>
|
</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 id="selectMaterialPathByIsEmpty" resultType="java.lang.String">
|
||||||
SELECT DISTINCT sbv.material_id
|
SELECT DISTINCT sbv.material_id
|
||||||
FROM sch_base_vehiclematerialgroup sbv
|
FROM sch_base_vehiclematerialgroup sbv
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
|||||||
|
|
||||||
List<SchBaseVehiclematerialgroup> schBaseVehiclematerialgroups = vehiclematerialgroupMapper.selectList(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
|
List<SchBaseVehiclematerialgroup> schBaseVehiclematerialgroups = vehiclematerialgroupMapper.selectList(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
|
||||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, item.getVehicle_code())
|
.eq(SchBaseVehiclematerialgroup::getVehicle_code, item.getVehicle_code())
|
||||||
|
.eq(SchBaseVehiclematerialgroup::getIs_delete,false)
|
||||||
.ne(SchBaseVehiclematerialgroup::getGroup_id, item.getGroup_id()));
|
.ne(SchBaseVehiclematerialgroup::getGroup_id, item.getGroup_id()));
|
||||||
if (CollUtil.isNotEmpty(schBaseVehiclematerialgroups)) {
|
if (CollUtil.isNotEmpty(schBaseVehiclematerialgroups)) {
|
||||||
item.setHasChildren(true);
|
item.setHasChildren(true);
|
||||||
@@ -339,6 +340,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
|||||||
public List<SchBaseVehiclematerialgroup> selectByVehicleCode(JSONObject entity) {
|
public List<SchBaseVehiclematerialgroup> selectByVehicleCode(JSONObject entity) {
|
||||||
List<SchBaseVehiclematerialgroup> schBaseVehiclematerialgroups = vehiclematerialgroupMapper.selectList(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
|
List<SchBaseVehiclematerialgroup> schBaseVehiclematerialgroups = vehiclematerialgroupMapper.selectList(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
|
||||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, entity.getString("vehicle_code"))
|
.eq(SchBaseVehiclematerialgroup::getVehicle_code, entity.getString("vehicle_code"))
|
||||||
|
.eq(SchBaseVehiclematerialgroup::getIs_delete,false)
|
||||||
.ne(SchBaseVehiclematerialgroup::getGroup_id, entity.getString("group_id")));
|
.ne(SchBaseVehiclematerialgroup::getGroup_id, entity.getString("group_id")));
|
||||||
|
|
||||||
// 根据vehicle_code、region_code、job_name、order_code、material_id进行合并
|
// 根据vehicle_code、region_code、job_name、order_code、material_id进行合并
|
||||||
|
|||||||
@@ -57,8 +57,8 @@ export default {
|
|||||||
cookiePass: '',
|
cookiePass: '',
|
||||||
loginForm: {
|
loginForm: {
|
||||||
username: 'admin',
|
username: 'admin',
|
||||||
password: '123456',
|
password: '',
|
||||||
rememberMe: false,
|
rememberMe: true,
|
||||||
code: '',
|
code: '',
|
||||||
uuid: ''
|
uuid: ''
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -42,15 +42,15 @@
|
|||||||
<el-table-column prop="deviceName" label="AGV名称" width="150" />
|
<el-table-column prop="deviceName" label="AGV名称" width="150" />
|
||||||
<el-table-column prop="totalWorkDuration" label="总工作时长(秒)" width="120">
|
<el-table-column prop="totalWorkDuration" label="总工作时长(秒)" width="120">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ formatDuration(scope.row.totalWorkDuration) }}
|
{{ formatDuration(calculateDuration(scope.row.totalWorkDuration)) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="totalTaskCount" label="任务数量" width="100" />
|
<el-table-column prop="totalTaskCount" label="任务数量" width="100" />
|
||||||
<el-table-column prop="avgUsageRate" label="平均使用率(%)">
|
<el-table-column prop="avgUsageRate" label="平均使用率(%)">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-progress
|
<el-progress
|
||||||
:percentage="scope.row.avgUsageRate || 0"
|
:percentage="calculateUsageRate(scope.row.avgUsageRate)"
|
||||||
:color="getProgressColor(scope.row.avgUsageRate)"
|
:color="getProgressColor(calculateUsageRate(scope.row.avgUsageRate))"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -81,15 +81,15 @@
|
|||||||
<el-table-column prop="month" label="月份" width="100" />
|
<el-table-column prop="month" label="月份" width="100" />
|
||||||
<el-table-column prop="totalWorkDuration" label="总工作时长(秒)" width="150">
|
<el-table-column prop="totalWorkDuration" label="总工作时长(秒)" width="150">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ formatDuration(scope.row.totalWorkDuration) }}
|
{{ formatDuration(calculateDuration(scope.row.totalWorkDuration)) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="totalTaskCount" label="任务数量" width="100" />
|
<el-table-column prop="totalTaskCount" label="任务数量" width="100" />
|
||||||
<el-table-column prop="avgUsageRate" label="平均使用率(%)">
|
<el-table-column prop="avgUsageRate" label="平均使用率(%)">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-progress
|
<el-progress
|
||||||
:percentage="scope.row.avgUsageRate || 0"
|
:percentage="calculateUsageRate(scope.row.avgUsageRate)"
|
||||||
:color="getProgressColor(scope.row.avgUsageRate)"
|
:color="getProgressColor(calculateUsageRate(scope.row.avgUsageRate))"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -117,20 +117,20 @@
|
|||||||
<el-table-column prop="workDate" label="日期" width="120" />
|
<el-table-column prop="workDate" label="日期" width="120" />
|
||||||
<el-table-column prop="totalWorkDuration" label="工作时长(秒)" width="120">
|
<el-table-column prop="totalWorkDuration" label="工作时长(秒)" width="120">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ formatDuration(scope.row.totalWorkDuration) }}
|
{{ formatDuration(calculateDuration(scope.row.totalWorkDuration)) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="totalIdleDuration" label="空闲时长(秒)" width="120">
|
<el-table-column prop="totalIdleDuration" label="空闲时长(秒)" width="120">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ formatDuration(scope.row.totalIdleDuration) }}
|
{{ formatDuration(calculateDuration(scope.row.totalIdleDuration)) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="taskCount" label="任务数量" width="100" />
|
<el-table-column prop="taskCount" label="任务数量" width="100" />
|
||||||
<el-table-column prop="usageRate" label="使用率(%)">
|
<el-table-column prop="usageRate" label="使用率(%)">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-progress
|
<el-progress
|
||||||
:percentage="scope.row.usageRate || 0"
|
:percentage="calculateUsageRate(scope.row.usageRate)"
|
||||||
:color="getProgressColor(scope.row.usageRate)"
|
:color="getProgressColor(calculateUsageRate(scope.row.usageRate))"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -235,6 +235,15 @@ export default {
|
|||||||
return '#f56c6c'
|
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) {
|
formatDate(date) {
|
||||||
if (!date) return ''
|
if (!date) return ''
|
||||||
const year = date.getFullYear()
|
const year = date.getFullYear()
|
||||||
|
|||||||
Reference in New Issue
Block a user