Merge branch 'master' of http://1.13.177.47:3000/Yangwl/SZXBGJ_HT
commit
0bbf2338a5
@ -0,0 +1,225 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="include :: header('补胎工单详情')" />
|
||||
<style>
|
||||
.image-gallery {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 15px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.image-item {
|
||||
width: 150px;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
padding: 5px;
|
||||
background: #f9f9f9;
|
||||
}
|
||||
.image-item img {
|
||||
width: 100%;
|
||||
height: 120px;
|
||||
object-fit: cover;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.image-info {
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
margin-top: 5px;
|
||||
color: #666;
|
||||
word-break: break-all;
|
||||
}
|
||||
.field-label {
|
||||
font-weight: bold;
|
||||
color: #555;
|
||||
}
|
||||
.readonly-field {
|
||||
background-color: #f8f9fa;
|
||||
border-color: #dee2e6;
|
||||
color: #495057;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<!-- 基本信息 -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">基本信息</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form class="form-horizontal m">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label field-label">工单编号:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control readonly-field" th:value="${bizMaintenanceOrder.orderNo}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label field-label">车牌号:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control readonly-field" th:value="${bizMaintenanceOrder.plateNumber}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label field-label">维保类型:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control readonly-field" th:value="${bizMaintenanceOrder.typeCode}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label field-label">仪表盘录入里程:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control readonly-field" th:value="${bizMaintenanceOrder.inputMileage}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label field-label">上次维保里程:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control readonly-field" th:value="${bizMaintenanceOrder.lastMileage}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label field-label">保养日期:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control readonly-field" th:value="${#dates.format(bizMaintenanceOrder.maintainDate, 'yyyy-MM-dd')}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label field-label">维修站点:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control readonly-field" th:value="${bizMaintenanceOrder.factoryName}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label field-label">提交人:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control readonly-field" th:value="${bizMaintenanceOrder.createBy}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label field-label">提交日期:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control readonly-field" th:value="${#dates.format(bizMaintenanceOrder.createTime, 'yyyy-MM-dd HH:mm:ss')}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label field-label">状态:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control readonly-field" th:value="${bizMaintenanceOrder.status}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label field-label">补充说明:</label>
|
||||
<div class="col-sm-8">
|
||||
<textarea class="form-control readonly-field" th:text="${bizMaintenanceOrder.description}" readonly rows="3"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label field-label">修补人:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control readonly-field" th:value="${bizMaintenanceOrder.maintainer}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label field-label">修补日期:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control readonly-field" th:value="${#dates.format(bizMaintenanceOrder.maintainerDate, 'yyyy-MM-dd')}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 图片 -->
|
||||
<!-- <div class="panel panel-default">-->
|
||||
<!-- <div class="panel-heading">-->
|
||||
<!-- <h3 class="panel-title">图片</h3>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="panel-body">-->
|
||||
<!-- <div th:if="${attachments != null and not attachments.empty}">-->
|
||||
<!-- <div class="image-gallery">-->
|
||||
<!-- <div th:each="attachment : ${attachments}" class="image-item preview-item" style="cursor: pointer;" th:data-src="@{${attachment.filePath}}" th:data-name="${attachment.fileName}">-->
|
||||
<!-- <img th:src="@{${attachment.filePath}}" th:alt="${attachment.fileName}" >-->
|
||||
<!-- <div class="image-info">-->
|
||||
<!-- <div th:text="${attachment.fileName}" style="font-weight: bold; font-size: 11px;"></div>-->
|
||||
<!-- <div th:text="${#dates.format(attachment.uploadTime, 'yyyy-MM-dd HH:mm')}" style="font-size: 10px; color: #888;"></div>-->
|
||||
<!-- <div th:text="${attachment.uploadBy}" style="font-size: 10px; color: #666;"></div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div th:if="${attachments == null or attachments.empty}" class="text-center text-muted">-->
|
||||
<!-- <p>暂无上传图片</p>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
|
||||
<!-- 轮胎信息 -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">轮胎信息</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div th:if="${tireDetails != null and not tireDetails.empty}">
|
||||
<table class="table table-bordered table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 60px;">序号</th>
|
||||
<th>轮胎编号</th>
|
||||
<th>轮胎位置</th>
|
||||
<th>品牌</th>
|
||||
<th>型号</th>
|
||||
<th>花纹深度(mm)</th>
|
||||
<th>状态描述</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="tire, iterStat : ${tireDetails}">
|
||||
<td th:text="${iterStat.count}"></td>
|
||||
<td th:text="${tire.tireCode}"></td>
|
||||
<td th:text="${tire.positionDesc}"></td>
|
||||
<td th:text="${tire.tyreBrand}"></td>
|
||||
<td th:text="${tire.tyreModel}"></td>
|
||||
<td th:text="${tire.treadDepth}"></td>
|
||||
<td th:text="${tire.tireStatus}"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div th:if="${tireDetails == null or tireDetails.empty}" class="text-center text-muted">
|
||||
<p>暂无轮胎信息</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<th:block th:include="include :: footer" />
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
// 图片点击预览
|
||||
$(document).on('click', '.preview-item', function() {
|
||||
var imgSrc = $(this).data('src');
|
||||
var imgTitle = $(this).data('name') || '工单图片';
|
||||
previewImage(imgSrc, imgTitle);
|
||||
});
|
||||
});
|
||||
|
||||
// 图片点击预览
|
||||
function previewImage(imgSrc, imgTitle) {
|
||||
layer.open({
|
||||
type: 1,
|
||||
title: imgTitle || '工单图片',
|
||||
shadeClose: true,
|
||||
shade: 0.8,
|
||||
area: ['90%', '90%'],
|
||||
content: '<div style="text-align:center; padding: 20px;"><img src="' + imgSrc + '" style="max-width:100%;max-height:100%;" /></div>'
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@ -0,0 +1,143 @@
|
||||
package com.ruoyi.system.domain;
|
||||
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
/**
|
||||
* 系统附件表 sys_attachment
|
||||
*
|
||||
* @author
|
||||
* @date 2026-04-15
|
||||
*/
|
||||
public class SysAttachment extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 附件ID */
|
||||
private Long attachmentId;
|
||||
|
||||
/** 文件名 */
|
||||
private String fileName;
|
||||
|
||||
/** 文件存储路径 */
|
||||
private String filePath;
|
||||
|
||||
/** 文件大小(字节) */
|
||||
private Long fileSize;
|
||||
|
||||
/** 文件类型 */
|
||||
private String fileType;
|
||||
|
||||
/** 上传时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date uploadTime;
|
||||
|
||||
/** 上传人 */
|
||||
private String uploadBy;
|
||||
|
||||
/** 工单ID */
|
||||
private Long orderId;
|
||||
|
||||
/** 备注 */
|
||||
private String remark;
|
||||
|
||||
public void setAttachmentId(Long attachmentId)
|
||||
{
|
||||
this.attachmentId = attachmentId;
|
||||
}
|
||||
|
||||
public Long getAttachmentId()
|
||||
{
|
||||
return attachmentId;
|
||||
}
|
||||
public void setFileName(String fileName)
|
||||
{
|
||||
this.fileName = fileName;
|
||||
}
|
||||
|
||||
public String getFileName()
|
||||
{
|
||||
return fileName;
|
||||
}
|
||||
public void setFilePath(String filePath)
|
||||
{
|
||||
this.filePath = filePath;
|
||||
}
|
||||
|
||||
public String getFilePath()
|
||||
{
|
||||
return filePath;
|
||||
}
|
||||
public void setFileSize(Long fileSize)
|
||||
{
|
||||
this.fileSize = fileSize;
|
||||
}
|
||||
|
||||
public Long getFileSize()
|
||||
{
|
||||
return fileSize;
|
||||
}
|
||||
public void setFileType(String fileType)
|
||||
{
|
||||
this.fileType = fileType;
|
||||
}
|
||||
|
||||
public String getFileType()
|
||||
{
|
||||
return fileType;
|
||||
}
|
||||
public void setUploadTime(Date uploadTime)
|
||||
{
|
||||
this.uploadTime = uploadTime;
|
||||
}
|
||||
|
||||
public Date getUploadTime()
|
||||
{
|
||||
return uploadTime;
|
||||
}
|
||||
public void setUploadBy(String uploadBy)
|
||||
{
|
||||
this.uploadBy = uploadBy;
|
||||
}
|
||||
|
||||
public String getUploadBy()
|
||||
{
|
||||
return uploadBy;
|
||||
}
|
||||
public void setOrderId(Long orderId)
|
||||
{
|
||||
this.orderId = orderId;
|
||||
}
|
||||
|
||||
public Long getOrderId()
|
||||
{
|
||||
return orderId;
|
||||
}
|
||||
public void setRemark(String remark)
|
||||
{
|
||||
this.remark = remark;
|
||||
}
|
||||
|
||||
public String getRemark()
|
||||
{
|
||||
return remark;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("attachmentId", getAttachmentId())
|
||||
.append("fileName", getFileName())
|
||||
.append("filePath", getFilePath())
|
||||
.append("fileSize", getFileSize())
|
||||
.append("fileType", getFileType())
|
||||
.append("uploadTime", getUploadTime())
|
||||
.append("uploadBy", getUploadBy())
|
||||
.append("orderId", getOrderId())
|
||||
.append("remark", getRemark())
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,112 @@
|
||||
package com.ruoyi.system.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.system.domain.BizMaintenanceOrder;
|
||||
|
||||
/**
|
||||
* 维保工单主表Mapper接口
|
||||
*
|
||||
* @author yangwanli
|
||||
* @date 2026-04-15
|
||||
*/
|
||||
public interface BizMaintenanceOrderMapper
|
||||
{
|
||||
/**
|
||||
* 查询维保工单主表
|
||||
*
|
||||
* @param orderId 维保工单主表主键
|
||||
* @return 维保工单主表
|
||||
*/
|
||||
public BizMaintenanceOrder selectBizMaintenanceOrderById(Long orderId);
|
||||
|
||||
/**
|
||||
* 查询维保工单主表列表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 维保工单主表集合
|
||||
*/
|
||||
public List<BizMaintenanceOrder> selectBizMaintenanceOrderList(BizMaintenanceOrder bizMaintenanceOrder);
|
||||
|
||||
/**
|
||||
* 新增维保工单主表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertBizMaintenanceOrder(BizMaintenanceOrder bizMaintenanceOrder);
|
||||
|
||||
/**
|
||||
* 修改维保工单主表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateBizMaintenanceOrder(BizMaintenanceOrder bizMaintenanceOrder);
|
||||
|
||||
/**
|
||||
* 删除维保工单主表
|
||||
*
|
||||
* @param orderId 维保工单主表主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteBizMaintenanceOrderById(Long orderId);
|
||||
|
||||
/**
|
||||
* 批量删除维保工单主表
|
||||
*
|
||||
* @param orderIds 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteBizMaintenanceOrderByIds(String[] orderIds);
|
||||
|
||||
/**
|
||||
* 查询工单数量
|
||||
*
|
||||
* @param status 状态
|
||||
* @return 数量
|
||||
*/
|
||||
public int selectOrderCountByStatus(String status);
|
||||
|
||||
/**
|
||||
* 根据车牌号查询工单列表
|
||||
*
|
||||
* @param plateNumber 车牌号
|
||||
* @return 工单列表
|
||||
*/
|
||||
public List<BizMaintenanceOrder> selectOrderByPlateNumber(String plateNumber);
|
||||
|
||||
/**
|
||||
* 根据轮胎编号查询工单
|
||||
*
|
||||
* @param tireCode 轮胎编号
|
||||
* @return 工单列表
|
||||
*/
|
||||
public List<BizMaintenanceOrder> selectOrderByTireCode(String tireCode);
|
||||
|
||||
/**
|
||||
* 更新工单状态
|
||||
*
|
||||
* @param orderId 工单ID
|
||||
* @param status 状态
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateOrderStatus(Long orderId, String status);
|
||||
|
||||
/**
|
||||
* 查询修补工单主表列表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 维保工单主表集合
|
||||
*/
|
||||
public List<BizMaintenanceOrder> selectBizRepairOrderList(BizMaintenanceOrder bizMaintenanceOrder);
|
||||
|
||||
/**
|
||||
* 查询报废工单主表列表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 维保工单主表集合
|
||||
*/
|
||||
public List<BizMaintenanceOrder> selectBizScrapOrderList(BizMaintenanceOrder bizMaintenanceOrder);
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,77 @@
|
||||
package com.ruoyi.system.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.system.domain.SysAttachment;
|
||||
|
||||
/**
|
||||
* 系统附件表 数据层
|
||||
*
|
||||
* @author
|
||||
* @date 2026-04-15
|
||||
*/
|
||||
public interface SysAttachmentMapper
|
||||
{
|
||||
/**
|
||||
* 查询系统附件表
|
||||
*
|
||||
* @param attachmentId 系统附件表ID
|
||||
* @return 系统附件表
|
||||
*/
|
||||
public SysAttachment selectSysAttachmentById(Long attachmentId);
|
||||
|
||||
/**
|
||||
* 查询系统附件表列表
|
||||
*
|
||||
* @param sysAttachment 系统附件表
|
||||
* @return 系统附件表集合
|
||||
*/
|
||||
public List<SysAttachment> selectSysAttachmentList(SysAttachment sysAttachment);
|
||||
|
||||
/**
|
||||
* 新增系统附件表
|
||||
*
|
||||
* @param sysAttachment 系统附件表
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertSysAttachment(SysAttachment sysAttachment);
|
||||
|
||||
/**
|
||||
* 修改系统附件表
|
||||
*
|
||||
* @param sysAttachment 系统附件表
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateSysAttachment(SysAttachment sysAttachment);
|
||||
|
||||
/**
|
||||
* 删除系统附件表
|
||||
*
|
||||
* @param attachmentId 系统附件表ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteSysAttachmentById(Long attachmentId);
|
||||
|
||||
/**
|
||||
* 批量删除系统附件表
|
||||
*
|
||||
* @param attachmentIds 需要删除的数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteSysAttachmentByIds(Long[] attachmentIds);
|
||||
|
||||
/**
|
||||
* 根据工单ID查询附件列表
|
||||
*
|
||||
* @param orderId 工单ID
|
||||
* @return 附件列表
|
||||
*/
|
||||
public List<SysAttachment> selectAttachmentsByOrderId(Long orderId);
|
||||
|
||||
/**
|
||||
* 根据工单ID删除附件
|
||||
*
|
||||
* @param orderId 工单ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteAttachmentsByOrderId(Long orderId);
|
||||
}
|
||||
@ -0,0 +1,123 @@
|
||||
package com.ruoyi.system.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ruoyi.common.annotation.DataScope;
|
||||
import com.ruoyi.system.domain.BizMaintenanceOrder;
|
||||
import com.ruoyi.system.domain.BizOrderTireDetail;
|
||||
|
||||
/**
|
||||
* 维保工单主表Service接口
|
||||
*
|
||||
* @author yangwanli
|
||||
* @date 2026-04-15
|
||||
*/
|
||||
public interface IBizMaintenanceOrderService
|
||||
{
|
||||
/**
|
||||
* 查询维保工单主表
|
||||
*
|
||||
* @param orderId 维保工单主表主键
|
||||
* @return 维保工单主表
|
||||
*/
|
||||
public BizMaintenanceOrder selectBizMaintenanceOrderById(Long orderId);
|
||||
|
||||
/**
|
||||
* 查询维保工单主表列表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 维保工单主表集合
|
||||
*/
|
||||
public List<BizMaintenanceOrder> selectBizMaintenanceOrderList(BizMaintenanceOrder bizMaintenanceOrder);
|
||||
|
||||
/**
|
||||
* 新增维保工单主表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertBizMaintenanceOrder(BizMaintenanceOrder bizMaintenanceOrder);
|
||||
|
||||
/**
|
||||
* 修改维保工单主表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateBizMaintenanceOrder(BizMaintenanceOrder bizMaintenanceOrder);
|
||||
|
||||
/**
|
||||
* 批量删除维保工单主表
|
||||
*
|
||||
* @param orderIds 需要删除的维保工单主表主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteBizMaintenanceOrderByIds(String orderIds);
|
||||
|
||||
/**
|
||||
* 删除维保工单主表信息
|
||||
*
|
||||
* @param orderId 维保工单主表主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteBizMaintenanceOrderById(Long orderId);
|
||||
|
||||
/**
|
||||
* 根据车牌号查询工单列表
|
||||
*
|
||||
* @param plateNumber 车牌号
|
||||
* @return 工单列表
|
||||
*/
|
||||
public List<BizMaintenanceOrder> selectOrderByPlateNumber(String plateNumber);
|
||||
|
||||
/**
|
||||
* 根据轮胎编号查询工单
|
||||
*
|
||||
* @param tireCode 轮胎编号
|
||||
* @return 工单列表
|
||||
*/
|
||||
public List<BizMaintenanceOrder> selectOrderByTireCode(String tireCode);
|
||||
|
||||
/**
|
||||
* 更新工单状态
|
||||
*
|
||||
* @param orderId 工单ID
|
||||
* @param status 状态
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateOrderStatus(Long orderId, String status);
|
||||
|
||||
/**
|
||||
* 查询工单数量
|
||||
*
|
||||
* @param status 状态
|
||||
* @return 数量
|
||||
*/
|
||||
public int selectOrderCountByStatus(String status);
|
||||
|
||||
/**
|
||||
* 保存工单及轮胎明细
|
||||
*
|
||||
* @param bizMaintenanceOrder 工单信息
|
||||
* @param tireDetails 轮胎明细列表
|
||||
* @return 结果
|
||||
*/
|
||||
public int saveOrderWithDetails(BizMaintenanceOrder bizMaintenanceOrder, List<BizOrderTireDetail> tireDetails);
|
||||
|
||||
/**
|
||||
* 查询修补工单主表列表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 维保工单主表
|
||||
*/
|
||||
public List<BizMaintenanceOrder> selectBizRepairOrderList(BizMaintenanceOrder bizMaintenanceOrder);
|
||||
|
||||
|
||||
/**
|
||||
* 查询报废工单主表列表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 维保工单主表
|
||||
*/
|
||||
public List<BizMaintenanceOrder> selectBizScrapOrderList(BizMaintenanceOrder bizMaintenanceOrder);
|
||||
}
|
||||
@ -0,0 +1,94 @@
|
||||
package com.ruoyi.system.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.system.domain.BizOrderTireDetail;
|
||||
|
||||
/**
|
||||
* 工单轮胎执行明细表Service接口
|
||||
*
|
||||
* @author yangwanli
|
||||
* @date 2026-04-15
|
||||
*/
|
||||
public interface IBizOrderTireDetailService
|
||||
{
|
||||
/**
|
||||
* 查询工单轮胎执行明细表
|
||||
*
|
||||
* @param detailId 工单轮胎执行明细表主键
|
||||
* @return 工单轮胎执行明细表
|
||||
*/
|
||||
public BizOrderTireDetail selectBizOrderTireDetailById(Long detailId);
|
||||
|
||||
/**
|
||||
* 查询工单轮胎执行明细表列表
|
||||
*
|
||||
* @param bizOrderTireDetail 工单轮胎执行明细表
|
||||
* @return 工单轮胎执行明细表集合
|
||||
*/
|
||||
public List<BizOrderTireDetail> selectBizOrderTireDetailList(BizOrderTireDetail bizOrderTireDetail);
|
||||
|
||||
/**
|
||||
* 新增工单轮胎执行明细表
|
||||
*
|
||||
* @param bizOrderTireDetail 工单轮胎执行明细表
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertBizOrderTireDetail(BizOrderTireDetail bizOrderTireDetail);
|
||||
|
||||
/**
|
||||
* 修改工单轮胎执行明细表
|
||||
*
|
||||
* @param bizOrderTireDetail 工单轮胎执行明细表
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateBizOrderTireDetail(BizOrderTireDetail bizOrderTireDetail);
|
||||
|
||||
/**
|
||||
* 批量删除工单轮胎执行明细表
|
||||
*
|
||||
* @param detailIds 需要删除的工单轮胎执行明细表主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteBizOrderTireDetailByIds(String detailIds);
|
||||
|
||||
/**
|
||||
* 删除工单轮胎执行明细表信息
|
||||
*
|
||||
* @param detailId 工单轮胎执行明细表主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteBizOrderTireDetailById(Long detailId);
|
||||
|
||||
/**
|
||||
* 根据工单ID查询轮胎明细列表
|
||||
*
|
||||
* @param orderId 工单ID
|
||||
* @return 轮胎明细列表
|
||||
*/
|
||||
public List<BizOrderTireDetail> selectTireDetailByOrderId(Long orderId);
|
||||
|
||||
/**
|
||||
* 批量插入轮胎明细
|
||||
*
|
||||
* @param tireDetails 轮胎明细列表
|
||||
* @return 结果
|
||||
*/
|
||||
public int batchInsertTireDetail(List<BizOrderTireDetail> tireDetails);
|
||||
|
||||
/**
|
||||
* 根据工单ID删除轮胎明细
|
||||
*
|
||||
* @param orderId 工单ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteTireDetailByOrderId(Long orderId);
|
||||
|
||||
/**
|
||||
* 保存轮胎明细列表
|
||||
*
|
||||
* @param orderId 工单ID
|
||||
* @param tireDetails 轮胎明细列表
|
||||
* @return 结果
|
||||
*/
|
||||
public int saveTireDetails(Long orderId, List<BizOrderTireDetail> tireDetails);
|
||||
}
|
||||
@ -0,0 +1,235 @@
|
||||
package com.ruoyi.system.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ruoyi.common.annotation.DataScope;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.common.utils.ShiroUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import com.ruoyi.system.mapper.BizMaintenanceOrderMapper;
|
||||
import com.ruoyi.system.domain.BizMaintenanceOrder;
|
||||
import com.ruoyi.system.service.IBizMaintenanceOrderService;
|
||||
import com.ruoyi.system.service.IBizOrderTireDetailService;
|
||||
import com.ruoyi.system.domain.BizOrderTireDetail;
|
||||
import com.ruoyi.common.core.text.Convert;
|
||||
|
||||
/**
|
||||
* 维保工单主表Service业务层处理
|
||||
*
|
||||
* @author yangwanli
|
||||
* @date 2026-04-15
|
||||
*/
|
||||
@Service
|
||||
public class BizMaintenanceOrderServiceImpl implements IBizMaintenanceOrderService
|
||||
{
|
||||
@Autowired
|
||||
private BizMaintenanceOrderMapper bizMaintenanceOrderMapper;
|
||||
|
||||
@Autowired
|
||||
private IBizOrderTireDetailService bizOrderTireDetailService;
|
||||
|
||||
/**
|
||||
* 查询维保工单主表
|
||||
*
|
||||
* @param orderId 维保工单主表主键
|
||||
* @return 维保工单主表
|
||||
*/
|
||||
@Override
|
||||
public BizMaintenanceOrder selectBizMaintenanceOrderById(Long orderId)
|
||||
{
|
||||
BizMaintenanceOrder order = bizMaintenanceOrderMapper.selectBizMaintenanceOrderById(orderId);
|
||||
if (order != null) {
|
||||
// 查询轮胎明细
|
||||
List<BizOrderTireDetail> tireDetails = bizOrderTireDetailService.selectTireDetailByOrderId(orderId);
|
||||
order.setTireDetails(tireDetails);
|
||||
}
|
||||
return order;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询维保工单主表列表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 维保工单主表
|
||||
*/
|
||||
@Override
|
||||
@DataScope(deptAlias = "d", userAlias = "u")
|
||||
public List<BizMaintenanceOrder> selectBizMaintenanceOrderList(BizMaintenanceOrder bizMaintenanceOrder)
|
||||
{
|
||||
return bizMaintenanceOrderMapper.selectBizMaintenanceOrderList(bizMaintenanceOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增维保工单主表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertBizMaintenanceOrder(BizMaintenanceOrder bizMaintenanceOrder)
|
||||
{
|
||||
bizMaintenanceOrder.setCreateTime(DateUtils.getNowDate());
|
||||
bizMaintenanceOrder.setCreateBy(ShiroUtils.getLoginName());
|
||||
bizMaintenanceOrder.setOrderType("1"); // 默认设置为汽车类型
|
||||
return bizMaintenanceOrderMapper.insertBizMaintenanceOrder(bizMaintenanceOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改维保工单主表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int updateBizMaintenanceOrder(BizMaintenanceOrder bizMaintenanceOrder)
|
||||
{
|
||||
bizMaintenanceOrder.setUpdateTime(DateUtils.getNowDate());
|
||||
bizMaintenanceOrder.setUpdateBy(ShiroUtils.getLoginName());
|
||||
return bizMaintenanceOrderMapper.updateBizMaintenanceOrder(bizMaintenanceOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除维保工单主表
|
||||
*
|
||||
* @param orderIds 需要删除的维保工单主表主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int deleteBizMaintenanceOrderByIds(String orderIds)
|
||||
{
|
||||
String[] ids = Convert.toStrArray(orderIds);
|
||||
for (String id : ids) {
|
||||
Long orderId = Long.parseLong(id);
|
||||
// 先删除轮胎明细
|
||||
bizOrderTireDetailService.deleteTireDetailByOrderId(orderId);
|
||||
}
|
||||
return bizMaintenanceOrderMapper.deleteBizMaintenanceOrderByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除维保工单主表信息
|
||||
*
|
||||
* @param orderId 维保工单主表主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int deleteBizMaintenanceOrderById(Long orderId)
|
||||
{
|
||||
// 先删除轮胎明细
|
||||
bizOrderTireDetailService.deleteTireDetailByOrderId(orderId);
|
||||
return bizMaintenanceOrderMapper.deleteBizMaintenanceOrderById(orderId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据车牌号查询工单列表
|
||||
*
|
||||
* @param plateNumber 车牌号
|
||||
* @return 工单列表
|
||||
*/
|
||||
@Override
|
||||
public List<BizMaintenanceOrder> selectOrderByPlateNumber(String plateNumber)
|
||||
{
|
||||
return bizMaintenanceOrderMapper.selectOrderByPlateNumber(plateNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据轮胎编号查询工单
|
||||
*
|
||||
* @param tireCode 轮胎编号
|
||||
* @return 工单列表
|
||||
*/
|
||||
@Override
|
||||
public List<BizMaintenanceOrder> selectOrderByTireCode(String tireCode)
|
||||
{
|
||||
return bizMaintenanceOrderMapper.selectOrderByTireCode(tireCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新工单状态
|
||||
*
|
||||
* @param orderId 工单ID
|
||||
* @param status 状态
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateOrderStatus(Long orderId, String status)
|
||||
{
|
||||
return bizMaintenanceOrderMapper.updateOrderStatus(orderId, status);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询工单数量
|
||||
*
|
||||
* @param status 状态
|
||||
* @return 数量
|
||||
*/
|
||||
@Override
|
||||
public int selectOrderCountByStatus(String status)
|
||||
{
|
||||
return bizMaintenanceOrderMapper.selectOrderCountByStatus(status);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存工单及轮胎明细
|
||||
*
|
||||
* @param bizMaintenanceOrder 工单信息
|
||||
* @param tireDetails 轮胎明细列表
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int saveOrderWithDetails(BizMaintenanceOrder bizMaintenanceOrder, List<BizOrderTireDetail> tireDetails)
|
||||
{
|
||||
// 保存工单
|
||||
bizMaintenanceOrder.setCreateTime(DateUtils.getNowDate());
|
||||
bizMaintenanceOrder.setCreateBy(ShiroUtils.getLoginName());
|
||||
bizMaintenanceOrder.setOrderType("1"); // 默认设置为汽车类型
|
||||
|
||||
int result = bizMaintenanceOrderMapper.insertBizMaintenanceOrder(bizMaintenanceOrder);
|
||||
if (result > 0 && tireDetails != null && tireDetails.size() > 0) {
|
||||
// 保存轮胎明细
|
||||
for (BizOrderTireDetail detail : tireDetails) {
|
||||
detail.setOrderId(bizMaintenanceOrder.getOrderId());
|
||||
detail.setCreateTime(DateUtils.getNowDate());
|
||||
detail.setCreateBy(ShiroUtils.getLoginName());
|
||||
}
|
||||
bizOrderTireDetailService.batchInsertTireDetail(tireDetails);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询修补工单主表列表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 维保工单主表
|
||||
*/
|
||||
@Override
|
||||
@DataScope(deptAlias = "d", userAlias = "u")
|
||||
public List<BizMaintenanceOrder> selectBizRepairOrderList(BizMaintenanceOrder bizMaintenanceOrder)
|
||||
{
|
||||
return bizMaintenanceOrderMapper.selectBizRepairOrderList(bizMaintenanceOrder);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询报废工单主表列表
|
||||
*
|
||||
* @param bizMaintenanceOrder 维保工单主表
|
||||
* @return 维保工单主表
|
||||
*/
|
||||
@Override
|
||||
@DataScope(deptAlias = "d", userAlias = "u")
|
||||
public List<BizMaintenanceOrder> selectBizScrapOrderList(BizMaintenanceOrder bizMaintenanceOrder)
|
||||
{
|
||||
return bizMaintenanceOrderMapper.selectBizScrapOrderList(bizMaintenanceOrder);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,166 @@
|
||||
package com.ruoyi.system.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.common.utils.ShiroUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import com.ruoyi.system.mapper.BizOrderTireDetailMapper;
|
||||
import com.ruoyi.system.domain.BizOrderTireDetail;
|
||||
import com.ruoyi.system.service.IBizOrderTireDetailService;
|
||||
import com.ruoyi.common.core.text.Convert;
|
||||
|
||||
/**
|
||||
* 工单轮胎执行明细表Service业务层处理
|
||||
*
|
||||
* @author yangwanli
|
||||
* @date 2026-04-15
|
||||
*/
|
||||
@Service
|
||||
public class BizOrderTireDetailServiceImpl implements IBizOrderTireDetailService
|
||||
{
|
||||
@Autowired
|
||||
private BizOrderTireDetailMapper bizOrderTireDetailMapper;
|
||||
|
||||
/**
|
||||
* 查询工单轮胎执行明细表
|
||||
*
|
||||
* @param detailId 工单轮胎执行明细表主键
|
||||
* @return 工单轮胎执行明细表
|
||||
*/
|
||||
@Override
|
||||
public BizOrderTireDetail selectBizOrderTireDetailById(Long detailId)
|
||||
{
|
||||
return bizOrderTireDetailMapper.selectBizOrderTireDetailById(detailId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询工单轮胎执行明细表列表
|
||||
*
|
||||
* @param bizOrderTireDetail 工单轮胎执行明细表
|
||||
* @return 工单轮胎执行明细表
|
||||
*/
|
||||
@Override
|
||||
public List<BizOrderTireDetail> selectBizOrderTireDetailList(BizOrderTireDetail bizOrderTireDetail)
|
||||
{
|
||||
return bizOrderTireDetailMapper.selectBizOrderTireDetailList(bizOrderTireDetail);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增工单轮胎执行明细表
|
||||
*
|
||||
* @param bizOrderTireDetail 工单轮胎执行明细表
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertBizOrderTireDetail(BizOrderTireDetail bizOrderTireDetail)
|
||||
{
|
||||
bizOrderTireDetail.setCreateTime(DateUtils.getNowDate());
|
||||
bizOrderTireDetail.setCreateBy(ShiroUtils.getLoginName());
|
||||
return bizOrderTireDetailMapper.insertBizOrderTireDetail(bizOrderTireDetail);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改工单轮胎执行明细表
|
||||
*
|
||||
* @param bizOrderTireDetail 工单轮胎执行明细表
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateBizOrderTireDetail(BizOrderTireDetail bizOrderTireDetail)
|
||||
{
|
||||
return bizOrderTireDetailMapper.updateBizOrderTireDetail(bizOrderTireDetail);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除工单轮胎执行明细表
|
||||
*
|
||||
* @param detailIds 需要删除的工单轮胎执行明细表主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteBizOrderTireDetailByIds(String detailIds)
|
||||
{
|
||||
return bizOrderTireDetailMapper.deleteBizOrderTireDetailByIds(Convert.toStrArray(detailIds));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除工单轮胎执行明细表信息
|
||||
*
|
||||
* @param detailId 工单轮胎执行明细表主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteBizOrderTireDetailById(Long detailId)
|
||||
{
|
||||
return bizOrderTireDetailMapper.deleteBizOrderTireDetailById(detailId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据工单ID查询轮胎明细列表
|
||||
*
|
||||
* @param orderId 工单ID
|
||||
* @return 轮胎明细列表
|
||||
*/
|
||||
@Override
|
||||
public List<BizOrderTireDetail> selectTireDetailByOrderId(Long orderId)
|
||||
{
|
||||
return bizOrderTireDetailMapper.selectTireDetailByOrderId(orderId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量插入轮胎明细
|
||||
*
|
||||
* @param tireDetails 轮胎明细列表
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int batchInsertTireDetail(List<BizOrderTireDetail> tireDetails)
|
||||
{
|
||||
if (tireDetails == null || tireDetails.size() == 0) {
|
||||
return 0;
|
||||
}
|
||||
return bizOrderTireDetailMapper.batchInsertTireDetail(tireDetails);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据工单ID删除轮胎明细
|
||||
*
|
||||
* @param orderId 工单ID
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteTireDetailByOrderId(Long orderId)
|
||||
{
|
||||
return bizOrderTireDetailMapper.deleteTireDetailByOrderId(orderId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存轮胎明细列表
|
||||
*
|
||||
* @param orderId 工单ID
|
||||
* @param tireDetails 轮胎明细列表
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int saveTireDetails(Long orderId, List<BizOrderTireDetail> tireDetails)
|
||||
{
|
||||
// 先删除原有明细
|
||||
bizOrderTireDetailMapper.deleteTireDetailByOrderId(orderId);
|
||||
|
||||
// 插入新明细
|
||||
if (tireDetails != null && tireDetails.size() > 0) {
|
||||
for (BizOrderTireDetail detail : tireDetails) {
|
||||
detail.setOrderId(orderId);
|
||||
detail.setCreateTime(DateUtils.getNowDate());
|
||||
detail.setCreateBy(ShiroUtils.getLoginName());
|
||||
}
|
||||
return bizOrderTireDetailMapper.batchInsertTireDetail(tireDetails);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,212 @@
|
||||
<?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.BizMaintenanceOrderMapper">
|
||||
|
||||
<resultMap type="BizMaintenanceOrder" id="BizMaintenanceOrderResult">
|
||||
<result property="orderId" column="order_id" />
|
||||
<result property="orderNo" column="order_no" />
|
||||
<result property="vehicleId" column="vehicle_id" />
|
||||
<result property="plateNumber" column="plate_number" />
|
||||
<result property="typeCode" column="type_code" />
|
||||
<result property="factoryId" column="factory_id" />
|
||||
<result property="inputMileage" column="input_mileage" />
|
||||
<result property="lastMileage" column="last_mileage" />
|
||||
<result property="maintainDate" column="maintain_date" />
|
||||
<result property="description" column="description" />
|
||||
<result property="status" column="status" />
|
||||
<result property="orderType" column="order_type" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="remark" column="remark" />
|
||||
<result property="factoryName" column="factory_name" />
|
||||
<result property="maintainer" column="maintainer" />
|
||||
<result property="maintainerDate" column="maintainer_date" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectBizMaintenanceOrderVo">
|
||||
select order_id, order_no, vehicle_id, plate_number, type_code, factory_id, input_mileage, last_mileage, maintain_date, description, status, order_type, create_by, create_time, update_by, update_time, remark from biz_maintenance_order
|
||||
</sql>
|
||||
|
||||
<select id="selectBizMaintenanceOrderList" parameterType="BizMaintenanceOrder" resultMap="BizMaintenanceOrderResult">
|
||||
select o.order_id, o.order_no, o.vehicle_id, o.plate_number, o.type_code, o.factory_id, o.input_mileage, o.last_mileage, o.maintain_date, o.description, o.status, o.order_type, o.create_by, o.create_time, o.update_by, o.update_time, o.remark, d.dept_name as factory_name
|
||||
from biz_maintenance_order o
|
||||
left join sys_dept d on d.dept_id = o.factory_id
|
||||
<where>
|
||||
<if test="orderNo != null and orderNo != ''"> and o.order_no like concat('%', #{orderNo}, '%')</if>
|
||||
<if test="plateNumber != null and plateNumber != ''"> and o.plate_number like concat('%', #{plateNumber}, '%')</if>
|
||||
<if test="typeCode != null and typeCode != ''"> and o.type_code = #{typeCode}</if>
|
||||
<if test="factoryId != null "> and o.factory_id = #{factoryId}</if>
|
||||
<if test="inputMileage != null "> and o.input_mileage = #{inputMileage}</if>
|
||||
<if test="lastMileage != null "> and o.last_mileage = #{lastMileage}</if>
|
||||
<if test="maintainDate != null "> and o.maintain_date = #{maintainDate}</if>
|
||||
<if test="description != null and description != ''"> and o.description like concat('%', #{description}, '%')</if>
|
||||
<if test="status != null and status != ''"> and o.status = #{status}</if>
|
||||
<if test="orderType != null and orderType != ''"> and o.order_type = #{orderType}</if>
|
||||
<!-- 按照补胎工单查询 -->
|
||||
<if test="orderType == null or orderType == ''"> and o.order_type = '1'</if>
|
||||
${params.dataScope}
|
||||
</where>
|
||||
order by o.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="selectBizRepairOrderList" parameterType="BizMaintenanceOrder" resultMap="BizMaintenanceOrderResult">
|
||||
select o.order_id, o.order_no, o.vehicle_id, o.plate_number, o.type_code, o.factory_id, o.input_mileage, o.last_mileage, o.maintain_date, o.description, o.status, o.order_type, o.create_by, o.create_time, o.update_by, o.update_time, o.remark, d.dept_name as factory_name
|
||||
from biz_maintenance_order o
|
||||
left join sys_dept d on d.dept_id = o.factory_id
|
||||
<where>
|
||||
and o.type_code in ('1','2','4','5')
|
||||
<if test="orderNo != null and orderNo != ''"> and o.order_no like concat('%', #{orderNo}, '%')</if>
|
||||
<if test="plateNumber != null and plateNumber != ''"> and o.plate_number like concat('%', #{plateNumber}, '%')</if>
|
||||
<if test="typeCode != null and typeCode != ''"> and o.type_code = #{typeCode}</if>
|
||||
<if test="factoryId != null "> and o.factory_id = #{factoryId}</if>
|
||||
<if test="inputMileage != null "> and o.input_mileage = #{inputMileage}</if>
|
||||
<if test="lastMileage != null "> and o.last_mileage = #{lastMileage}</if>
|
||||
<if test="maintainDate != null "> and o.maintain_date = #{maintainDate}</if>
|
||||
<if test="description != null and description != ''"> and o.description like concat('%', #{description}, '%')</if>
|
||||
<if test="status != null and status != ''"> and o.status = #{status}</if>
|
||||
<if test="orderType != null and orderType != ''"> and o.order_type = #{orderType}</if>
|
||||
<!-- 按照补胎工单查询 -->
|
||||
<if test="orderType == null or orderType == ''"> and o.order_type = '1'</if>
|
||||
${params.dataScope}
|
||||
</where>
|
||||
order by o.create_time desc
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectBizScrapOrderList" parameterType="BizMaintenanceOrder" resultMap="BizMaintenanceOrderResult">
|
||||
select o.order_id, o.order_no, o.vehicle_id, o.plate_number, o.type_code, o.factory_id, o.input_mileage, o.last_mileage, o.maintain_date, o.description, o.status, o.order_type, o.create_by, o.create_time, o.update_by, o.update_time, o.remark, d.dept_name as factory_name
|
||||
from biz_maintenance_order o
|
||||
left join sys_dept d on d.dept_id = o.factory_id
|
||||
<where>
|
||||
and o.type_code = '3'
|
||||
<if test="orderNo != null and orderNo != ''"> and o.order_no like concat('%', #{orderNo}, '%')</if>
|
||||
<if test="plateNumber != null and plateNumber != ''"> and o.plate_number like concat('%', #{plateNumber}, '%')</if>
|
||||
<if test="typeCode != null and typeCode != ''"> and o.type_code = #{typeCode}</if>
|
||||
<if test="factoryId != null "> and o.factory_id = #{factoryId}</if>
|
||||
<if test="inputMileage != null "> and o.input_mileage = #{inputMileage}</if>
|
||||
<if test="lastMileage != null "> and o.last_mileage = #{lastMileage}</if>
|
||||
<if test="maintainDate != null "> and o.maintain_date = #{maintainDate}</if>
|
||||
<if test="description != null and description != ''"> and o.description like concat('%', #{description}, '%')</if>
|
||||
<if test="status != null and status != ''"> and o.status = #{status}</if>
|
||||
<if test="orderType != null and orderType != ''"> and o.order_type = #{orderType}</if>
|
||||
<!-- 按照补胎工单查询 -->
|
||||
<if test="orderType == null or orderType == ''"> and o.order_type = '1'</if>
|
||||
${params.dataScope}
|
||||
</where>
|
||||
order by o.create_time desc
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectBizMaintenanceOrderById" parameterType="Long" resultMap="BizMaintenanceOrderResult">
|
||||
select o.order_id, o.order_no, o.vehicle_id, o.plate_number, o.type_code, o.factory_id, o.input_mileage, o.last_mileage, o.maintain_date, o.description, o.status, o.order_type, o.create_by, o.create_time, o.update_by, o.update_time, o.remark, d.dept_name as factory_name
|
||||
from biz_maintenance_order o
|
||||
left join sys_dept d on d.dept_id = o.factory_id
|
||||
where o.order_id = #{orderId}
|
||||
</select>
|
||||
|
||||
<insert id="insertBizMaintenanceOrder" parameterType="BizMaintenanceOrder" useGeneratedKeys="true" keyProperty="orderId">
|
||||
insert into biz_maintenance_order
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="orderNo != null">order_no,</if>
|
||||
<if test="vehicleId != null">vehicle_id,</if>
|
||||
<if test="plateNumber != null">plate_number,</if>
|
||||
<if test="typeCode != null">type_code,</if>
|
||||
<if test="factoryId != null">factory_id,</if>
|
||||
<if test="inputMileage != null">input_mileage,</if>
|
||||
<if test="lastMileage != null">last_mileage,</if>
|
||||
<if test="maintainDate != null">maintain_date,</if>
|
||||
<if test="description != null">description,</if>
|
||||
<if test="status != null">status,</if>
|
||||
<if test="orderType != null">order_type,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="updateBy != null">update_by,</if>
|
||||
<if test="updateTime != null">update_time,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
<if test="maintainer != null">maintainer,</if>
|
||||
<if test="maintainerDate != null">maintainer_date,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="orderNo != null">#{orderNo},</if>
|
||||
<if test="vehicleId != null">#{vehicleId},</if>
|
||||
<if test="plateNumber != null">#{plateNumber},</if>
|
||||
<if test="typeCode != null">#{typeCode},</if>
|
||||
<if test="factoryId != null">#{factoryId},</if>
|
||||
<if test="inputMileage != null">#{inputMileage},</if>
|
||||
<if test="lastMileage != null">#{lastMileage},</if>
|
||||
<if test="maintainDate != null">#{maintainDate},</if>
|
||||
<if test="description != null">#{description},</if>
|
||||
<if test="status != null">#{status},</if>
|
||||
<if test="orderType != null">#{orderType},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
<if test="updateTime != null">#{updateTime},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
<if test="maintainer != null">#{maintainer},</if>
|
||||
<if test="maintainerDate != null">#{maintainerDate},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateBizMaintenanceOrder" parameterType="BizMaintenanceOrder">
|
||||
update biz_maintenance_order
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="orderNo != null">order_no = #{orderNo},</if>
|
||||
<if test="vehicleId != null">vehicle_id = #{vehicleId},</if>
|
||||
<if test="plateNumber != null">plate_number = #{plateNumber},</if>
|
||||
<if test="typeCode != null">type_code = #{typeCode},</if>
|
||||
<if test="factoryId != null">factory_id = #{factoryId},</if>
|
||||
<if test="inputMileage != null">input_mileage = #{inputMileage},</if>
|
||||
<if test="lastMileage != null">last_mileage = #{lastMileage},</if>
|
||||
<if test="maintainDate != null">maintain_date = #{maintainDate},</if>
|
||||
<if test="description != null">description = #{description},</if>
|
||||
<if test="status != null">status = #{status},</if>
|
||||
<if test="orderType != null">order_type = #{orderType},</if>
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
<if test="maintainer != null">maintainer = #{maintainer},</if>
|
||||
<if test="maintainerDate != null">maintainer_date = #{maintainerDate},</if>
|
||||
</trim>
|
||||
where order_id = #{orderId}
|
||||
</update>
|
||||
|
||||
<delete id="deleteBizMaintenanceOrderById" parameterType="Long">
|
||||
delete from biz_maintenance_order where order_id = #{orderId}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteBizMaintenanceOrderByIds" parameterType="String">
|
||||
delete from biz_maintenance_order where order_id in
|
||||
<foreach item="orderId" collection="array" open="(" separator="," close=")">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<select id="selectOrderCountByStatus" parameterType="String" resultType="int">
|
||||
select count(*) from biz_maintenance_order where status = #{status} and order_type = '1'
|
||||
</select>
|
||||
|
||||
<select id="selectOrderByPlateNumber" parameterType="String" resultMap="BizMaintenanceOrderResult">
|
||||
<include refid="selectBizMaintenanceOrderVo"/>
|
||||
where plate_number like concat('%', #{plateNumber}, '%') and order_type = '1'
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
<select id="selectOrderByTireCode" parameterType="String" resultMap="BizMaintenanceOrderResult">
|
||||
select distinct o.order_id, o.order_no, o.vehicle_id, o.plate_number, o.type_code, o.factory_id, o.input_mileage, o.last_mileage, o.maintain_date, o.description, o.status, o.order_type, o.create_by, o.create_time, o.update_by, o.update_time, o.remark
|
||||
from biz_maintenance_order o
|
||||
inner join biz_order_tire_detail d on o.order_id = d.order_id
|
||||
where d.tire_code like concat('%', #{tireCode}, '%') and o.order_type = '1'
|
||||
order by o.create_time desc
|
||||
</select>
|
||||
|
||||
<update id="updateOrderStatus" parameterType="map">
|
||||
update biz_maintenance_order
|
||||
set status = #{status}, update_time = now()
|
||||
where order_id = #{orderId}
|
||||
</update>
|
||||
</mapper>
|
||||
@ -0,0 +1,123 @@
|
||||
<?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.BizOrderTireDetailMapper">
|
||||
|
||||
<resultMap type="BizOrderTireDetail" id="BizOrderTireDetailResult">
|
||||
<result property="detailId" column="detail_id" />
|
||||
<result property="orderId" column="order_id" />
|
||||
<result property="positionId" column="position_id" />
|
||||
<result property="tireId" column="tire_id" />
|
||||
<result property="tireCode" column="tire_code" />
|
||||
<result property="treadDepth" column="tread_depth" />
|
||||
<result property="tireStatus" column="tire_status" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<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="grooves" column="grooves" />
|
||||
<result property="patternDepth" column="pattern_depth" />
|
||||
<result property="tyreType" column="tyre_type" />
|
||||
<result property="selfNo" column="self_no" />
|
||||
<result property="tyreEpc" column="tyre_epc" />
|
||||
<result property="positionDesc" column="position_desc" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectBizOrderTireDetailVo">
|
||||
select detail_id, order_id, position_id, tire_id, tire_code, tread_depth, tire_status, create_time from biz_order_tire_detail
|
||||
</sql>
|
||||
|
||||
<select id="selectBizOrderTireDetailList" parameterType="BizOrderTireDetail" resultMap="BizOrderTireDetailResult">
|
||||
<include refid="selectBizOrderTireDetailVo"/>
|
||||
<where>
|
||||
<if test="orderId != null "> and order_id = #{orderId}</if>
|
||||
<if test="positionId != null "> and position_id = #{positionId}</if>
|
||||
<if test="tireId != null "> and tire_id = #{tireId}</if>
|
||||
<if test="tireCode != null and tireCode != ''"> and tire_code like concat('%', #{tireCode}, '%')</if>
|
||||
<if test="treadDepth != null "> and tread_depth = #{treadDepth}</if>
|
||||
<if test="tireStatus != null and tireStatus != ''"> and tire_status = #{tireStatus}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectBizOrderTireDetailById" parameterType="Long" resultMap="BizOrderTireDetailResult">
|
||||
<include refid="selectBizOrderTireDetailVo"/>
|
||||
where detail_id = #{detailId}
|
||||
</select>
|
||||
|
||||
<select id="selectTireDetailByOrderId" parameterType="Long" resultMap="BizOrderTireDetailResult">
|
||||
select d.detail_id, d.order_id, d.position_id, d.tire_id, d.tire_code, d.tread_depth, d.tire_status, d.create_time,
|
||||
t.tyre_brand, t.tyre_model, t.tyre_level, t.tyre_pattern, t.grooves, t.pattern_depth, t.tyre_type, t.self_no, t.tyre_epc,
|
||||
p.dict_label as position_desc
|
||||
from biz_order_tire_detail d
|
||||
left join base_tyre t on d.tire_id = t.tyre_id
|
||||
left join sys_dict_data p on d.position_id = p.dict_code and p.dict_type='WheelPosition'
|
||||
where d.order_id = #{orderId}
|
||||
order by d.position_id
|
||||
</select>
|
||||
|
||||
<insert id="insertBizOrderTireDetail" parameterType="BizOrderTireDetail">
|
||||
insert into biz_order_tire_detail
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="detailId != null">detail_id,</if>
|
||||
<if test="orderConservativeId != null">order_id,</if>
|
||||
<if test="positionId != null">position_id,</if>
|
||||
<if test="tireId != null">tire_id,</if>
|
||||
<if test="tireCode != null">tire_code,</if>
|
||||
<if test="treadDepth != null">tread_depth,</if>
|
||||
<if test="tireStatus != null">tire_status,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="detailId != null">#{detailId},</if>
|
||||
<if test="orderId != null">#{orderId},</if>
|
||||
<if test="positionId != null>">#{positionId},</if>
|
||||
<if test="tireId != null>">#{tireId},</if>
|
||||
<if test="tireCode != null>">#{tireCode},</if>
|
||||
<if test="treadDepth != null>">#{treadDepth},</if>
|
||||
<if test="tireStatus != null>">#{tireStatus},</if>
|
||||
<if test="createTime != null>">#{createTime},</if>
|
||||
<if test="createBy != null>">#{createBy},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateBizOrderTireDetail" parameterType="BizOrderTireDetail">
|
||||
update biz_order_tire_detail
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="orderId != null">order_id = #{orderId},</if>
|
||||
<if test="positionId != null">position_id = #{positionId},</if>
|
||||
<if test="tireId != null">tire_id = #{tireId},</if>
|
||||
<if test="tireCode != null">tire_code = #{tireCode},</if>
|
||||
<if test="treadDepth != null">tread_depth = #{treadDepth},</if>
|
||||
<if test="tireStatus != null">tire_status = #{tireStatus},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
</trim>
|
||||
where detail_id = #{detailId}
|
||||
</update>
|
||||
|
||||
<delete id="deleteBizOrderTireDetailById" parameterType="Long">
|
||||
delete from biz_order_tire_detail where detail_id = #{detailId}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteBizOrderTireDetailByIds" parameterType="String">
|
||||
delete from biz_order_tire_detail where detail_id in
|
||||
<foreach item="detailId" collection="array" open="(" separator="," close=")">
|
||||
#{detailId}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<insert id="batchInsertTireDetail" parameterType="java.util.List">
|
||||
insert into biz_order_tire_detail (order_id, position_id, tire_id, tire_code, tread_depth, tire_status, create_time, create_by) values
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(#{item.orderId}, #{item.positionId}, #{item.tireId}, #{item.tireCode}, #{item.treadDepth}, #{item.tireStatus}, #{item.createTime}, #{item.createBy})
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<delete id="deleteTireDetailByOrderId" parameterType="Long">
|
||||
delete from biz_order_tire_detail where order_id = #{orderId}
|
||||
</delete>
|
||||
</mapper>
|
||||
@ -0,0 +1,98 @@
|
||||
<?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.SysAttachmentMapper">
|
||||
|
||||
<resultMap type="SysAttachment" id="SysAttachmentResult">
|
||||
<result property="attachmentId" column="attachment_id" />
|
||||
<result property="fileName" column="file_name" />
|
||||
<result property="filePath" column="file_path" />
|
||||
<result property="fileSize" column="file_size" />
|
||||
<result property="fileType" column="file_type" />
|
||||
<result property="uploadTime" column="upload_time" />
|
||||
<result property="uploadBy" column="upload_by" />
|
||||
<result property="orderId" column="order_id" />
|
||||
<result property="remark" column="remark" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectSysAttachmentVo">
|
||||
select attachment_id, file_name, file_path, file_size, file_type, upload_time, upload_by, order_id, remark from sys_attachment
|
||||
</sql>
|
||||
|
||||
<select id="selectSysAttachmentList" parameterType="SysAttachment" resultMap="SysAttachmentResult">
|
||||
<include refid="selectSysAttachmentVo"/>
|
||||
<where>
|
||||
<if test="fileName != null and fileName != ''"> and file_name like concat('%', #{fileName}, '%')</if>
|
||||
<if test="filePath != null and filePath != ''"> and file_path = #{filePath}</if>
|
||||
<if test="fileType != null and fileType != ''"> and file_type = #{fileType}</if>
|
||||
<if test="uploadBy != null and uploadBy != ''"> and upload_by = #{uploadBy}</if>
|
||||
<if test="orderId != null "> and order_id = #{orderId}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectSysAttachmentById" parameterType="Long" resultMap="SysAttachmentResult">
|
||||
<include refid="selectSysAttachmentVo"/>
|
||||
where attachment_id = #{attachmentId}
|
||||
</select>
|
||||
|
||||
<select id="selectAttachmentsByOrderId" parameterType="Long" resultMap="SysAttachmentResult">
|
||||
<include refid="selectSysAttachmentVo"/>
|
||||
where order_id = #{orderId}
|
||||
order by upload_time desc
|
||||
</select>
|
||||
|
||||
<insert id="insertSysAttachment" parameterType="SysAttachment" useGeneratedKeys="true" keyProperty="attachmentId">
|
||||
insert into sys_attachment
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="fileName != null and fileName != ''">file_name,</if>
|
||||
<if test="filePath != null and filePath != ''">file_path,</if>
|
||||
<if test="fileSize != null">file_size,</if>
|
||||
<if test="fileType != null and fileType != ''">file_type,</if>
|
||||
<if test="uploadTime != null">upload_time,</if>
|
||||
<if test="uploadBy != null and uploadBy != ''">upload_by,</if>
|
||||
<if test="orderId != null">order_id,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="fileName != null and fileName != ''">#{fileName},</if>
|
||||
<if test="filePath != null and filePath != ''">#{filePath},</if>
|
||||
<if test="fileSize != null">#{fileSize},</if>
|
||||
<if test="fileType != null and fileType != ''">#{fileType},</if>
|
||||
<if test="uploadTime != null">#{uploadTime},</if>
|
||||
<if test="uploadBy != null and uploadBy != ''">#{uploadBy},</if>
|
||||
<if test="orderId != null">#{orderId},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateSysAttachment" parameterType="SysAttachment">
|
||||
update sys_attachment
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="fileName != null and fileName != ''">file_name = #{fileName},</if>
|
||||
<if test="filePath != null and filePath != ''">file_path = #{filePath},</if>
|
||||
<if test="fileSize != null">file_size = #{fileSize},</if>
|
||||
<if test="fileType != null and fileType != ''">file_type = #{fileType},</if>
|
||||
<if test="uploadTime != null">upload_time = #{uploadTime},</if>
|
||||
<if test="uploadBy != null and uploadBy != ''">upload_by = #{uploadBy},</if>
|
||||
<if test="orderId != null">order_id = #{orderId},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
</trim>
|
||||
where attachment_id = #{attachmentId}
|
||||
</update>
|
||||
|
||||
<delete id="deleteSysAttachmentById" parameterType="Long">
|
||||
delete from sys_attachment where attachment_id = #{attachmentId}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteAttachmentsByOrderId" parameterType="Long">
|
||||
delete from sys_attachment where order_id = #{orderId}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteSysAttachmentByIds" parameterType="String">
|
||||
delete from sys_attachment where attachment_id in
|
||||
<foreach item="attachmentId" collection="array" open="(" separator="," close=")">
|
||||
#{attachmentId}
|
||||
</foreach>
|
||||
</delete>
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue