Merge branch 'master' of http://1.13.177.47:3000/Yangwl/SZXBGJ_HT
# Conflicts: # ruoyi-admin/src/main/resources/templates/tyre/tyre/stat.html # ruoyi-system/src/main/java/com/ruoyi/system/domain/BizOrderTireDetail.java # ruoyi-system/src/main/resources/mapper/tyre/BaseTyreMapper.xmlmaster
commit
7361dad99c
@ -0,0 +1,369 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="include :: header('轮胎详情')" />
|
||||
<style>
|
||||
.detail-shell {
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.summary-card,
|
||||
.info-card,
|
||||
.timeline-card {
|
||||
background: #fff;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.06);
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.summary-card {
|
||||
padding: 20px 24px;
|
||||
}
|
||||
|
||||
.summary-title {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.summary-name {
|
||||
font-size: 34px;
|
||||
font-weight: 700;
|
||||
color: #2f4050;
|
||||
line-height: 1.2;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.summary-meta {
|
||||
color: #666;
|
||||
font-size: 14px;
|
||||
line-height: 1.9;
|
||||
}
|
||||
|
||||
.summary-link {
|
||||
display: inline-block;
|
||||
margin-top: 14px;
|
||||
color: #1c84c6;
|
||||
border-bottom: 2px solid #1c84c6;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
.info-card {
|
||||
padding: 18px 20px 10px;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
color: #2f4050;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.section-title i {
|
||||
margin-right: 6px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.info-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
table-layout: fixed;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.info-table th,
|
||||
.info-table td {
|
||||
border: 1px solid #edf1f2;
|
||||
padding: 12px 14px;
|
||||
font-size: 14px;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.info-table th {
|
||||
width: 20%;
|
||||
color: #7a8590;
|
||||
font-weight: 500;
|
||||
background: #fafbfc;
|
||||
}
|
||||
|
||||
.info-table td {
|
||||
color: #2f4050;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.timeline-card {
|
||||
padding: 18px 18px 12px;
|
||||
min-height: 320px;
|
||||
}
|
||||
|
||||
.timeline-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.timeline-header .title {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #2f4050;
|
||||
}
|
||||
|
||||
.mini-tip {
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.life-list {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.life-list:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 22px;
|
||||
top: 8px;
|
||||
bottom: 8px;
|
||||
width: 2px;
|
||||
background: #e4e7ea;
|
||||
}
|
||||
|
||||
.life-item {
|
||||
position: relative;
|
||||
padding-left: 54px;
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
|
||||
.life-dot {
|
||||
position: absolute;
|
||||
left: 14px;
|
||||
top: 4px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
border-radius: 50%;
|
||||
background: #1c84c6;
|
||||
border: 3px solid #d7ebf8;
|
||||
}
|
||||
|
||||
.life-time {
|
||||
color: #909399;
|
||||
font-size: 12px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.life-title {
|
||||
color: #2f4050;
|
||||
font-weight: 600;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.life-body {
|
||||
color: #666;
|
||||
line-height: 1.7;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.text-muted-dash {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
@media (max-width: 991px) {
|
||||
.summary-title {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="wrapper wrapper-content detail-shell">
|
||||
<div class="summary-card">
|
||||
<div class="summary-title">
|
||||
<div>
|
||||
<div class="summary-name" th:text="'胎号:' + ${tyre.tyreNo}">胎号:-</div>
|
||||
<div class="summary-meta">
|
||||
<div th:text="'所属场站:' + (${#strings.isEmpty(tyre.deptName)} ? '-' : tyre.deptName)">所属场站:-</div>
|
||||
<div th:text="'所属车队:' + (${#strings.isEmpty(tyre.team)} ? '-' : tyre.team)">所属车队:-</div>
|
||||
</div>
|
||||
<span class="summary-link" th:text="${tyre.tyreNo}">-</span>
|
||||
</div>
|
||||
<!-- <div>-->
|
||||
<!-- <a class="btn btn-white btn-sm" href="javascript:void(0)" onclick="editTyre()" th:if="${@permission.hasPermi('tyre:tyre:edit')}">编辑</a>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-9 col-md-8 col-sm-12">
|
||||
<div class="info-card">
|
||||
<div class="section-title"><i class="fa fa-bookmark"></i>基本信息</div>
|
||||
<table class="info-table">
|
||||
<tr>
|
||||
<th>胎号</th>
|
||||
<td th:text="${#strings.isEmpty(tyre.tyreNo) ? '-' : tyre.tyreNo}">-</td>
|
||||
<th>轮胎自编号</th>
|
||||
<td th:text="${#strings.isEmpty(tyre.selfNo) ? '-' : tyre.selfNo}">-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- <th>轮胎自编号二</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<th>RFID标签</th>
|
||||
<td th:text="${#strings.isEmpty(tyre.tyreEpc) ? '-' : tyre.tyreEpc}">-</td>
|
||||
<th>轮胎品牌</th>
|
||||
<td th:text="${#strings.isEmpty(tyre.tyreBrand) ? '-' : tyre.tyreBrand}">-</td>
|
||||
</tr>
|
||||
<!-- <tr>-->
|
||||
<!-- <th>供应商</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- </tr>-->
|
||||
|
||||
<tr>
|
||||
<th>轮胎花纹</th>
|
||||
<td th:text="${#strings.isEmpty(tyre.tyrePattern) ? '-' : tyre.tyrePattern}">-</td>
|
||||
<th>轮胎层级</th>
|
||||
<td th:text="${#strings.isEmpty(tyre.tyreLevel) ? '-' : tyre.tyreLevel}">-</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<!-- <th>DOT</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<th>轮胎规格</th>
|
||||
<td th:text="${#strings.isEmpty(tyre.tyreModel) ? '-' : tyre.tyreModel}">-</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="info-card">
|
||||
<div class="section-title"><i class="fa fa-bookmark"></i>状态信息</div>
|
||||
<table class="info-table">
|
||||
<!-- <tr>-->
|
||||
<!-- <th>轮胎状态</th>-->
|
||||
<!-- <td th:text="${tyreStatusText}">在库</td>-->
|
||||
<!-- </tr>-->
|
||||
<tr>
|
||||
<th>轮胎类型</th>
|
||||
<td th:text="${#strings.isEmpty(tyre.tyreType) ? '-' : tyre.tyreType}">-</td>
|
||||
<th>初始花纹深度(mm)</th>
|
||||
<td th:text="${#strings.isEmpty(tyre.patternDepth) ? '-' : tyre.patternDepth}">-</td>
|
||||
<!-- <th>剩余花纹深度(mm)</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
</tr>
|
||||
<!-- <tr>-->
|
||||
<!-- <th>行驶时长(h)</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- <th>花纹磨损(h/mm)</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- </tr>-->
|
||||
<!-- <tr>-->
|
||||
<!-- <th>GPS里程(km)</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- <th>轮胎里程(km)</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- </tr>-->
|
||||
<!-- <tr>-->
|
||||
<!-- <th>预计时长(h)</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- <th>单耗里程(km/mm)</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- </tr>-->
|
||||
<!-- <tr>-->
|
||||
<!-- <th>是否试验胎</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- <th>保行里程(km)</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- </tr>-->
|
||||
<tr>
|
||||
<th>当前车辆</th>
|
||||
<td th:text="${#strings.isEmpty(tyre.carNo) ? '-' : tyre.carNo}">-</td>
|
||||
<th>当前轮位</th>
|
||||
<td th:text="${#strings.isEmpty(tyre.wheelPostion) ? '-' : tyre.wheelPostion}">-</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="info-card">
|
||||
<div class="section-title"><i class="fa fa-bookmark"></i>其他</div>
|
||||
<table class="info-table">
|
||||
<!-- <tr>-->
|
||||
<!-- <th>来源</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- <th>订单编号</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- </tr>-->
|
||||
<tr>
|
||||
<th>RFID</th>
|
||||
<td th:text="${#strings.isEmpty(tyre.tyreEpc) ? '-' : tyre.tyreEpc}">-</td>
|
||||
<th>入库时间</th>
|
||||
<td th:text="${tyre.createTime == null ? '-' : #dates.format(tyre.createTime, 'yyyy-MM-dd HH:mm:ss')}">-</td>
|
||||
<!-- <th>TKPH</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
</tr>
|
||||
<!-- <tr>-->
|
||||
<!-- <th>建议公里</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- <th>补气次数</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- </tr>-->
|
||||
<!-- <tr>-->
|
||||
<!-- <th>修补次数</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- <th>翻新次数</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- </tr>-->
|
||||
<!-- <tr>-->
|
||||
<!-- <th>SKU编码</th>-->
|
||||
<!-- <td>-</td>-->
|
||||
<!-- </tr>-->
|
||||
<tr>
|
||||
<th>备注</th>
|
||||
<td colspan="3" th:text="${#strings.isEmpty(tyre.remark) ? '-' : tyre.remark}">-</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4 col-sm-12">
|
||||
<div class="timeline-card">
|
||||
<div class="timeline-header">
|
||||
<span class="title">生命周期</span>
|
||||
<span class="mini-tip">按时间倒序展示</span>
|
||||
</div>
|
||||
<ul class="life-list" th:if="${!#lists.isEmpty(timelineItems)}">
|
||||
<li class="life-item" th:each="item : ${timelineItems}">
|
||||
<span class="life-dot"></span>
|
||||
<div class="life-time" th:text="${item.time == null ? '-' : #dates.format(item.time, 'yyyy-MM-dd HH:mm:ss')}">-</div>
|
||||
<div class="life-title" th:text="${item.title}">轮胎入库</div>
|
||||
<div class="life-body" th:text="${#strings.isEmpty(item.detail) ? '-' : item.detail}">-</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="text-center text-muted-dash" style="padding: 60px 0;" th:if="${#lists.isEmpty(timelineItems)}">
|
||||
暂无生命周期记录
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<th:block th:include="include :: footer" />
|
||||
<script th:inline="javascript">
|
||||
var prefix = ctx + "tyre/tyre";
|
||||
var tyreId = [[${tyre.tyreId}]];
|
||||
|
||||
function editTyre() {
|
||||
var url = prefix + "/edit/" + tyreId;
|
||||
$.modal.open("编辑轮胎", url, "900", "700");
|
||||
}
|
||||
|
||||
$(function() {
|
||||
// 兜底:关闭父窗口 tab 的 loading 遮罩
|
||||
// 若 iframe 在 index.js 绑定 load 事件前就已加载完毕,遮罩不会自动关闭
|
||||
if (window.parent && window.parent !== window && window.parent.$ && window.parent.$.modal) {
|
||||
window.parent.$.modal.closeLoading();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@ -0,0 +1,13 @@
|
||||
package com.ruoyi.system.service;
|
||||
|
||||
import com.ruoyi.system.domain.BaseTyre;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 库存盘点详情Service接口。
|
||||
*/
|
||||
public interface ITyreStatDetailService
|
||||
{
|
||||
List<BaseTyre> selectStatDetailList(BaseTyre baseTyre, String stockType);
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ruoyi.system.mapper.TyreStatDetailMapper">
|
||||
|
||||
<resultMap type="BaseTyre" id="TyreStatDetailResult">
|
||||
<result property="tyreId" column="tyre_id"/>
|
||||
<result property="tyreNo" column="tyre_no"/>
|
||||
<result property="selfNo" column="self_no"/>
|
||||
<result property="tyreEpc" column="tyre_epc"/>
|
||||
<result property="tyreBrand" column="tyre_brand"/>
|
||||
<result property="tyreModel" column="tyre_model"/>
|
||||
<result property="tyreLevel" column="tyre_level"/>
|
||||
<result property="tyrePattern" column="tyre_pattern"/>
|
||||
<result property="tyreType" column="tyre_type"/>
|
||||
<result property="team" column="team"/>
|
||||
<result property="deptName" column="dept_name"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="carNo" column="car_no"/>
|
||||
<result property="wheelPostion" column="wheel_postion"/>
|
||||
<result property="patternDepth" column="pattern_depth"/>
|
||||
<result property="grooves" column="grooves"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectStatDetailList" resultMap="TyreStatDetailResult">
|
||||
select bt.tyre_id, bt.tyre_no, bt.self_no, bt.tyre_epc, bt.tyre_brand, bt.tyre_model, bt.tyre_level, bt.tyre_pattern,
|
||||
bt.grooves, bt.pattern_depth, bt.tyre_type, bt.team, sd.dept_name,
|
||||
bi.create_time, su.user_name as create_by, bt.car_no, bt.wheel_postion, bi.remark
|
||||
from base_inventory bi
|
||||
inner join base_tyre bt on bi.tyre_rfid = bt.tyre_epc
|
||||
left join sys_dept sd on sd.dept_id = bt.dept_id
|
||||
left join sys_user su on su.login_name = bi.create_by
|
||||
where bi.status = '0'
|
||||
<if test="baseTyre != null">
|
||||
<if test="baseTyre.deptName != null and baseTyre.deptName != ''"> and sd.dept_name = #{baseTyre.deptName}</if>
|
||||
<if test="baseTyre.tyreNo != null and baseTyre.tyreNo != ''"> and bt.tyre_no like concat('%', #{baseTyre.tyreNo}, '%')</if>
|
||||
<if test="baseTyre.selfNo != null and baseTyre.selfNo != ''"> and bt.self_no like concat('%', #{baseTyre.selfNo}, '%')</if>
|
||||
<if test="baseTyre.tyreBrand != null and baseTyre.tyreBrand != ''"> and bt.tyre_brand like concat('%', #{baseTyre.tyreBrand}, '%')</if>
|
||||
<if test="baseTyre.tyreModel != null and baseTyre.tyreModel != ''"> and bt.tyre_model = #{baseTyre.tyreModel}</if>
|
||||
${baseTyre.params.dataScope}
|
||||
</if>
|
||||
<if test="stockType != null and stockType != ''">
|
||||
<choose>
|
||||
<when test="stockType == '新胎'">
|
||||
and bt.tyre_type in ('新胎', '全新胎', 'new')
|
||||
</when>
|
||||
<when test="stockType == '周转胎'">
|
||||
and bt.tyre_type in ('周转胎', 'circulating')
|
||||
</when>
|
||||
<when test="stockType == '翻新胎'">
|
||||
and bt.tyre_type in ('翻新胎', 'renovate')
|
||||
</when>
|
||||
<when test="stockType == '实验胎'">
|
||||
and bt.tyre_type in ('实验胎', 'experimental')
|
||||
</when>
|
||||
</choose>
|
||||
</if>
|
||||
order by bi.create_time desc, bt.tyre_id desc
|
||||
</select>
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue