feat(order): 新增订单管理功能

- 添加订单添加、编辑页面
- 实现订单列表查询、列表展示和操作
- 新增导出功能
- 优化产品订单状态和发货状态字段
- 调整订单详情展示内容
master
chenhao 2025-06-20 14:09:08 +08:00
parent b0c278357c
commit f1c9b9fd0a
11 changed files with 185 additions and 121 deletions

View File

@ -3,31 +3,8 @@
<head>
<title>配置信息表格组件</title>
</head>
<style>
.add-btn-div {
display: flex;
justify-content: space-between;
}
.add-btn {
background: #409eff;
color: #fff;
border: none;
padding: 5px 10px;
cursor: pointer;
margin-bottom: 5px;
}
.section-title {
font-weight: bold;
font-size: 30px;
padding: 10px 0;
color: #0075ff;
}
</style>
<body>
<div id="config-info-component" th:fragment="configInfoTable()">
<div class="layui-tab">
<div class="section-title">配置信息</div>
@ -35,78 +12,83 @@
<h3>软件产品</h3>
<button type="button" class="add-btn" onclick="addProduct({})">添加</button>
</div>
<table id="productTable" class="productTable">
<div class="table-responsive">
<table id="productTable" class="productTable table">
<thead>
<tr>
<th style="width: 50px">序号</th>
<th style="width: 100px;">产品编码</th>
<th style="width: 150px;">产品型号</th>
<th style="min-width: 400px;">描述</th>
<th style="width: 90px;">数量</th>
<th style="min-width: 90px">目录单价(¥)</th>
<th style="min-width: 90px">指导折扣</th>
<th style="width: 94px;">折扣</th>
<th style="width: 100px;">单价(¥)</th>
<th style="min-width: 120px">总价(¥)</th>
<th style="min-width: 120px">目录总价(¥)</th>
<th style="min-width: 120px">备注</th>
<th style="min-width: 60px">操作</th>
<th style="width: 50px;max-width: 50px;">序号</th>
<th style="width: 100px;max-width: 100px;">产品编码</th>
<th style="width: 150px;max-width: 150px;">产品型号</th>
<th style="width: 400px;max-width: 400px;">描述</th>
<th style="width: 100px;max-width: 100px;">数量</th>
<th style="width: 120px;max-width: 120px;">目录单价(¥)</th>
<th style="width: 90px;max-width: 90px;">指导折扣</th>
<th style="width: 94px;max-width: 94px;">折扣</th>
<th style="width: 100px;max-width: 100px;">单价(¥)</th>
<th style="width: 120px;max-width: 120px;">总价(¥)</th>
<th style="width: 120px;max-width: 120px;">目录总价(¥)</th>
<th style="width: 120px;max-width: 120px;">备注</th>
<th style="width: 60px;max-width: 60px;">操作</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div class="add-btn-div">
<h3>终端产品</h3>
<button type="button" class="add-btn" onclick="addProduct2({})">添加</button>
</div>
<table id="productTable2" class="productTable">
<div class="table-responsive">
<table id="productTable2" class="productTable table">
<thead>
<tr>
<th style="width: 50px">序号</th>
<th style="width: 100px;">产品编码</th>
<th style="width: 150px;">产品型号</th>
<th style="min-width: 400px;">描述</th>
<th style="width: 90px;">数量</th>
<th style="min-width: 90px">目录单价(¥)</th>
<th style="min-width: 90px">指导折扣</th>
<th style="width: 94px;">折扣</th>
<th style="width: 100px;">单价(¥)</th>
<th style="min-width: 120px">总价(¥)</th>
<th style="min-width: 120px">目录总价(¥)</th>
<th style="min-width: 120px">备注</th>
<th style="min-width: 60px">操作</th>
<th style="width: 50px;max-width: 50px;">序号</th>
<th style="width: 100px;max-width: 100px;">产品编码</th>
<th style="width: 150px;max-width: 150px;">产品型号</th>
<th style="width: 400px;max-width: 400px;">描述</th>
<th style="width: 100px;max-width: 100px;">数量</th>
<th style="width: 120px;max-width: 120px;">目录单价(¥)</th>
<th style="width: 90px;max-width: 90px;">指导折扣</th>
<th style="width: 94px;max-width: 94px;">折扣</th>
<th style="width: 100px;max-width: 100px;">单价(¥)</th>
<th style="width: 120px;max-width: 120px;">总价(¥)</th>
<th style="width: 120px;max-width: 120px;">目录总价(¥)</th>
<th style="width: 120px;max-width: 120px;">备注</th>
<th style="width: 60px;max-width: 60px;">操作</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div class="add-btn-div">
<h3>服务产品</h3>
<button type="button" class="add-btn" onclick="addProduct3({})">添加</button>
</div>
<table id="productTable3" class="productTable">
<div class="table-responsive">
<table id="productTable3" class="productTable table">
<thead>
<tr>
<th style="width: 50px">序号</th>
<th style="width: 100px;">产品编码</th>
<th style="width: 150px;">产品型号</th>
<th style="min-width: 400px;">描述</th>
<th style="width: 90px;">数量</th>
<th style="min-width: 90px">目录单价(¥)</th>
<th style="min-width: 90px">指导折扣</th>
<th style="width: 94px;">折扣</th>
<th style="width: 100px;">单价(¥)</th>
<th style="min-width: 120px">总价(¥)</th>
<th style="min-width: 120px">目录总价(¥)</th>
<th style="min-width: 120px">备注</th>
<th style="min-width: 60px">操作</th>
<th style="width: 50px;max-width: 50px;">序号</th>
<th style="width: 100px;max-width: 100px;">产品编码</th>
<th style="width: 150px;max-width: 150px;">产品型号</th>
<th style="width: 400px;max-width: 400px;">描述</th>
<th style="width: 100px;max-width: 100px;">数量</th>
<th style="width: 120px;max-width: 120px;">目录单价(¥)</th>
<th style="width: 90px;max-width: 90px;">指导折扣</th>
<th style="width: 94px;max-width: 94px;">折扣</th>
<th style="width: 100px;max-width: 100px;">单价(¥)</th>
<th style="width: 120px;max-width: 120px;">总价(¥)</th>
<th style="width: 120px;max-width: 120px;">目录总价(¥)</th>
<th style="width: 120px;max-width: 120px;">备注</th>
<th style="width: 60px;max-width: 60px;">操作</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
@ -148,15 +130,15 @@
</label>
</td>
<td><input value="${data.discount || ''}" name="softwareProjectProductInfoList[${length}].discount" type="hidden" class="form-control discount" required>
<label style="display: flex;align-items: center"><input style="width: calc(100% - 10px);" value="${data.discountFormat || ''}" type="number" min="0" max="100" step="0.1" class="form-control discount-format" required>%
<label style="display: flex;align-items: center"><input style="width: calc(100% - 10px);" value="${data.discountFormat || ''}" type="number" min="0" max="100" step="0.01" class="form-control discount-format" required>%
</label></td>
<td>
<input value="${data.price || ''}" name="softwareProjectProductInfoList[${length}].price" type="hidden" class="form-control price" placeholder="自动计算" required readonly>
<input type="text" value="${data.priceFormmat || ''}" class="form-control price-formmat" placeholder="自动计算" required readonly>
<input type="text" value="${data.priceFormmat || ''}" class="form-control price-formmat" onfocus="getData(this,'price')" onblur="this.value=formatAmountNumber(this.value)" placeholder="自动计算" required >
</td>
<td>
<input value="${data.allPrice || ''}" name="softwareProjectProductInfoList[${length}].allPrice" type="hidden" class="form-control allPrice" placeholder="自动计算" required readonly>
<input type="text" value="${data.allPriceFormmat || ''}" class="form-control allPrice-formmat" placeholder="自动计算" required readonly>
<input type="text" value="${data.allPriceFormmat || ''}" class="form-control allPrice-formmat" placeholder="自动计算" required readonly>
</td>
<td>
<input value="${data.catalogueAllPrice || ''}" name="softwareProjectProductInfoList[${length}].catalogueAllPrice" type="hidden" class="form-control catalogueAllPrice" placeholder="自动计算" required readonly>
@ -182,7 +164,7 @@
<td><input value="${data.quantity || ''}" name="hardwareProjectProductInfoList[${length}].quantity" type="number" class="form-control quantity" step="1" required></td>
<td>
<input value="${data.cataloguePrice || ''}" name="hardwareProjectProductInfoList[${length}].cataloguePrice" readonly type="hidden" class="form-control cataloguePrice" required>
<input value="${data.cataloguePriceFormmat || ''}" readonly type="text" class="form-control cataloguePrice" required>
<input value="${data.cataloguePriceFormmat || ''}" readonly type="text" class="form-control cataloguePrice" required>
</td>
<td>
<input value="${data.guidanceDiscount || ''}" name="hardwareProjectProductInfoList[${length}].guidanceDiscount" readonly type="hidden" class="form-control guidanceDiscount" >
@ -194,7 +176,7 @@
</label></td>
<td>
<input value="${data.price || ''}" name="hardwareProjectProductInfoList[${length}].price" type="hidden" class="form-control price" placeholder="自动计算" required readonly>
<input type="text" value="${data.priceFormmat || ''}" class="form-control price-formmat" placeholder="自动计算" required readonly>
<input type="text" value="${data.priceFormmat || ''}" class="form-control price-formmat" placeholder="自动计算" onfocus="getData(this,'price')" onblur="this.value=formatAmountNumber(this.value)" required >
</td>
<td>
<input value="${data.allPrice || ''}" name="hardwareProjectProductInfoList[${length}].allPrice" type="hidden" class="form-control allPrice" placeholder="自动计算" required readonly>
@ -231,12 +213,12 @@
</label>
</td>
<td><input value="${data.discount || ''}" name="maintenanceProjectProductInfoList[${length}].discount" type="hidden" class="form-control discount" required>
<label style="display: flex;align-items: center"><input style="width: calc(100% - 10px);" value="${data.discountFormat || ''}" type="number" min="0" max="100" step="0.1" class="form-control discount-format" required>%
<label style="display: flex;align-items: center"><input style="width: calc(100% - 10px);" value="${data.discountFormat || ''}" type="number" min="0" max="100" step="0.01" class="form-control discount-format" required>%
</label>
</td>
<td>
<input value="${data.price || ''}" name="maintenanceProjectProductInfoList[${length}].price" type="hidden" class="form-control price" placeholder="自动计算" required readonly>
<input type="text" value="${data.priceFormmat || ''}" class="form-control price-formmat" placeholder="自动计算" required readonly>
<input type="text" value="${data.priceFormmat || ''}" onfocus="getData(this,'price')" onblur="this.value=formatAmountNumber(this.value)" class="form-control price-formmat" placeholder="自动计算" required >
</td>
<td>
<input value="${data.allPrice || ''}" name="maintenanceProjectProductInfoList[${length}].allPrice" type="hidden" class="form-control allPrice" placeholder="自动计算" required readonly>
@ -254,7 +236,11 @@
initSearchProduct('11,22,99')
initPrice()
}
function getData(that,name){
let currentTd = $(that).closest('td'); // 获取当前 td 元素
let priceVal = currentTd.find('.'+name).val()
$(that).val(priceVal)
}
function initPrice() {
$('.productTable .quantity').on('input', function () {
let num = $(this).val()
@ -291,7 +277,7 @@
}
})
// $('.productTable .guidanceDiscount').on('input', function () {
// $('.productTable .guidanceDiscount-format').on('input', function () {
// let val = $(this).val()
// let cataloguePrice = $(this).parent().parent().find('.cataloguePrice').val()
// $(this).parent().parent().find('.discount').val(val)
@ -317,11 +303,19 @@
let allPrice = $(this).parent().parent().parent().find('.allPrice').val()
$(this).parent().parent().parent().find('.allPrice-formmat').val(formatAmountNumber(allPrice))
})
$('.productTable .price').change('input', function () {
$('.productTable .price-formmat').change('input', function () {
let val = $(this).val()
let num = $(this).parent().parent().find('.quantity').val()
$(this).parent().parent().find('.price').val(val)
$(this).parent().parent().find('.allPrice').val((val * num).toFixed(2))
$(this).parent().parent().find('.allPrice-formmat').val(formatAmountNumber((val * num).toFixed(2)))
let cataloguePrice = $(this).parent().parent().find('.cataloguePrice').val()
let discount = (val*1.0000/cataloguePrice).toFixed(4);
$(this).parent().parent().find('.discount').val(discount)
$(this).parent().parent().find('.discount-format').val(discount * 100)
// $(this).val(formatAmountNumber(val))
})
}
@ -351,6 +345,7 @@
$.modal.close(index);
}
/*]]>*/
</script>
</div>

View File

@ -102,7 +102,7 @@
<label class="col-sm-4 control-label is-required">签定日期:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="orderDate" class="form-control" placeholder="yyyy-MM-dd" type="text" required>
<input name="orderDate" class="form-control" autocomplete="off" placeholder="yyyy-MM-dd" type="text" required>
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>

View File

@ -102,7 +102,7 @@
<div class="col-sm-8">
<div class="input-group date">
<input name="orderDate" th:value="${#dates.format(orderInfo.orderDate, 'yyyy-MM-dd')}"
class="form-control" placeholder="yyyy-MM-dd" type="text" required>
class="form-control" placeholder="yyyy-MM-dd" autocomplete="off" type="text" required>
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>

View File

@ -377,20 +377,13 @@
}
function changeName(){
console.log('11111111')
let name = $('#projectName').val()
console.log(name)
let versionCode = $('#versionCode').val()
console.log(versionCode)
let result='';
if (name){
result=name;
console.log('22222')
console.log(result)
if (versionCode){
result+='Rev '+versionCode;
console.log('33333333')
console.log(result)
result+='Rev.'+versionCode;
}
}
@ -469,7 +462,7 @@
window.localStorage.setItem('getDetail', 1)
$.operate.get(ctx + `sip/project/query/${id}`, function (res) {
let data = res.data
$('#projectNameBox').text(data.projectName+'Rev 1')
$('#projectNameBox').text(data.projectName+'Rev.1')
$('[name="customerCode"]').val(data.customerCode);
$('[name="customerName"]').val(data.customerName);
$('[name="projectCode"]').val(data.projectCode);
@ -523,6 +516,17 @@
minView: "month",
autoclose: true
});
let user=[[${user}]]
if (user){
$("input[name='duty']").val(user.userId)
$("input[name='dutyName']").val(user.userName)
$("input[name='dutyEmail']").val(user.email)
$("input[name='dutyPhone']").val(user.phonenumber)
}
})
function searchProject() {
@ -567,7 +571,7 @@
$.modal.alertWarning("请选择一个项目");
return;
}
$('#projectNameBox').text(rows[0].projectName+'Rev 1')
$('#projectNameBox').text(rows[0].projectName+'Rev.1')
$('[name="customerCode"]').val(rows[0].customerCode);
$('[name="customerName"]').val(rows[0].customerName);
$('[name="projectCode"]').val(rows[0].projectCode);
@ -835,23 +839,25 @@ ${
function initSaveDraft() {
let draft = $(`
<span class="saveDraft" style=" position: absolute;
<span class="saveDraft" style="
right: 160px;
bottom: 12px;
display: inline-block;
background: #ff5722;
padding: 6px 10px;
border-radius: 5px;
color: #fff;cursor: pointer"> 保存草稿</span>`)
parent.$('.layui-layer-btn').before(draft)
color: #fff;cursor: pointer"> 保存</span>`)
parent.$('.layui-layer-btn1').before(draft)
parent.$('.saveDraft').on('click', function () {
$('[name="orderStatus"]').val(0)
submitHandler('draft')
})
parent.$('.layui-layer-btn0').on('click', function () {
$('[name="orderStatus"]').val(1)
submitHandler()
})
parent.$('.layui-layer-btn0').attr('style','display:none')
}

View File

@ -110,6 +110,8 @@
<span class="title-text">编辑订单</span>
<span style="position: relative;top: -3px;margin-left: 10px">|</span>
<span id="projectNameBox" style="margin-left: 10px;color: black;font-size: 24px"></span>
<span style="position: absolute;right: 10px;font-size: 24px;color: black;" id="version-show"
></span>
</div>
<table>
@ -208,7 +210,7 @@
required>
</td>
<td>版本号<span class="is-required">*</span></td>
<td><input name="versionCode" class="form-control" th:field="*{versionCode}"
<td><input onchange="changeName()" name="versionCode" class="form-control" th:field="*{versionCode}"
required type="number" min="0"></td>
</tr>
<tr>
@ -485,6 +487,21 @@
autoclose: true
});
initData()
let user = [[${user}]]
if (user) {
if (!$("input[name='dutyName']").val()) {
$("input[name='dutyName']").val(user.userName)
$("input[name='duty']").val(user.userId)
}
if (!$("input[name='dutyEmail']").val()) {
$("input[name='dutyEmail']").val(user.email)
}
if (!$("input[name='dutyPhone']").val()) {
$("input[name='dutyPhone']").val(user.phonenumber)
}
}
})
function searchProject() {
@ -567,12 +584,32 @@
$('[name="industryType"]').val([[${projectOrderInfo.industryType}]]);
let name = [[${projectOrderInfo.projectName}]];
let versionCode = [[${projectOrderInfo.versionCode}]];
let version = ''
if (versionCode){
name=name + 'Rev ' + versionCode
version += 'Rev.' + versionCode + ' ';
}
let orderDate = [[${projectOrderInfo.estimatedOrderTime}]]
if (orderDate) {
version += [[${#dates.format(projectOrderInfo.estimatedOrderTime, 'yyyy-MM-dd')}]];
}
$('#version-show').text(version)
if (name) {
$('#projectNameBox').text(name)
}
}
function changeName() {
let versionCode = $('input[name="versionCode"]').val()
let version = ''
if (versionCode) {
version += 'Rev.' + versionCode + ' ';
}
let orderDate = [[${projectOrderInfo.estimatedOrderTime}]]
if (orderDate) {
version += [[${#dates.format(projectOrderInfo.estimatedOrderTime, 'yyyy-MM-dd')}]];
}
$('#version-show').text(version)
}
function doSubmitPeople(index, layero) {
var rows = layero.find("iframe")[0].contentWindow.getSelections();
if (rows.length == 0) {
@ -795,15 +832,15 @@ ${
function initSaveDraft() {
let draft = $(`
<span class="saveDraft layui-layer-btn" style=" position: absolute;
<span class="saveDraft layui-layer-btn" style="
right: 160px;
bottom: 12px;
display: inline-block;
background: #ff5722;
padding: 6px 10px;
border-radius: 5px;
color: #fff;cursor: pointer"> 保存草稿</span>`)
parent.$('.layui-layer-btn').before(draft)
color: #fff;cursor: pointer"> 保存</span>`)
parent.$('.layui-layer-btn1').before(draft)
parent.$('.saveDraft').on('click', function () {
$('[name="orderStatus"]').val(0)
submitHandler('draft')
@ -812,6 +849,7 @@ ${
$('[name="orderStatus"]').val(1)
submitHandler()
})
parent.$('.layui-layer-btn0').attr('style', 'display:none')
}

View File

@ -137,7 +137,7 @@
},
{
field: 'createAt',
title: ''
title: '创建时间'
},
{
title: '操作',

View File

@ -94,8 +94,9 @@ public class ProjectOrderInfoController extends BaseController
*/
@RequiresPermissions("project:order:add")
@GetMapping("/add")
public String add()
public String add(ModelMap mmap)
{
mmap.put("user", ShiroUtils.getSysUser());
return prefix + "/add";
}
@ -120,6 +121,7 @@ public class ProjectOrderInfoController extends BaseController
{
ProjectOrderInfo projectOrderInfo = projectOrderInfoService.selectProjectOrderInfoById(id);
mmap.put("projectOrderInfo", projectOrderInfo);
mmap.put("user", ShiroUtils.getSysUser());
return prefix + "/edit";
}

View File

@ -102,6 +102,10 @@ public class OrderInfo extends BaseEntity
private List<OrderList> orderListList;
private String serialNumber;
private String createByName;
/**
* 0: 1:
*/
private String ship;

View File

@ -202,7 +202,7 @@ public class OrderInfoServiceImpl implements IOrderInfoService
if (StringUtils.isNotEmpty(dto.getSerialNumber())){
queryParams.setSerialNumber(dto.getSerialNumber());
}
queryParams.setShip("1");
List<OrderInfo> orderInfos = orderInfoMapper.selectOrderInfoList(queryParams);
if (CollUtil.isEmpty(orderInfos)) {
return Collections.emptyList();

View File

@ -397,25 +397,26 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService {
headerList.add(Collections.singletonList("行业"));
headerList.add(Collections.singletonList("代表处"));
headerList.add(Collections.singletonList("进货商接口人"));
headerList.add(Collections.singletonList("Email"));
// headerList.add(Collections.singletonList("Email"));
headerList.add(Collections.singletonList("联系方式"));
headerList.add(Collections.singletonList("合同编号"));
headerList.add(Collections.singletonList("币种"));
headerList.add(Collections.singletonList("订单金额"));
headerList.add(Collections.singletonList("维保金额"));
headerList.add(Collections.singletonList("执行单有效截止时间"));
headerList.add(Collections.singletonList("要求到货时间"));
headerList.add(Collections.singletonList("公司直发"));
headerList.add(Collections.singletonList("下单时间"));
// headerList.add(Collections.singletonList("执行单有效截止时间"));
// headerList.add(Collections.singletonList("要求到货时间"));
// headerList.add(Collections.singletonList("公司直发"));
headerList.add(Collections.singletonList("下单通路"));
headerList.add(Collections.singletonList("供货商"));
// headerList.add(Collections.singletonList("供货商"));
headerList.add(Collections.singletonList("汇智责任人"));
headerList.add(Collections.singletonList("Email"));
headerList.add(Collections.singletonList("联系方式"));
// headerList.add(Collections.singletonList("Email"));
// headerList.add(Collections.singletonList("联系方式"));
headerList.add(Collections.singletonList("进货商"));
headerList.add(Collections.singletonList("进货商代码"));
// headerList.add(Collections.singletonList("进货商代码"));
headerList.add(Collections.singletonList("进货商类型"));
headerList.add(Collections.singletonList("进货商联系人"));
headerList.add(Collections.singletonList("Email"));
// headerList.add(Collections.singletonList("Email"));
headerList.add(Collections.singletonList("联系方式"));
headerList.add(Collections.singletonList("其他特别说明"));
headerList.add(Collections.singletonList("订单状态"));
@ -463,26 +464,27 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService {
row.add(info.getIndustryType());
row.add(info.getAgentName());
row.add(info.getBusinessPerson());
row.add(info.getBusinessEmail());
// row.add(info.getBusinessEmail());
row.add(info.getBusinessPhone());
row.add(info.getOrderCode());
row.add(DictUtils.getDictLabel("currency_type", info.getCurrencyType()));
row.add(info.getShipmentAmount() != null ? info.getShipmentAmount().toString() : "");
row.add(DateUtil.format(info.getOrderEndTime(), "yyyy-MM-dd"));
row.add(DateUtil.format(info.getDeliveryTime(), "yyyy-MM-dd"));
row.add(DictUtils.getDictLabel("company_delivery", info.getCompanyDelivery()));
row.add(DateUtil.format(info.getEstimatedOrderTime(), "yyyy-MM-dd"));
// row.add(DateUtil.format(info.getOrderEndTime(), "yyyy-MM-dd"));
// row.add(DateUtil.format(info.getDeliveryTime(), "yyyy-MM-dd"));
// row.add(DictUtils.getDictLabel("company_delivery", info.getCompanyDelivery()));
row.add(StringUtils.isEmpty(info.getOrderChannel()) ? "" :
"1".equals(info.getOrderChannel()) ? "总代" : "直签");
row.add(info.getSupplier());
// row.add(info.getSupplier());
row.add(info.getDutyName());
row.add(info.getDutyEmail());
row.add(info.getDutyPhone());
// row.add(info.getDutyEmail());
// row.add(info.getDutyPhone());
row.add(info.getPartnerName());
row.add(info.getPartnerCode());
// row.add(info.getPartnerCode());
row.add(DictUtils.getDictLabel("identify_level", info.getLevel()));
row.add(info.getPartnerUserName());
row.add(info.getPartnerEmail());
// row.add(info.getPartnerEmail());
row.add(info.getPartnerPhone());
row.add(info.getRemark());
row.add(DictUtils.getDictLabel("order_status", info.getOrderStatus()));
@ -537,7 +539,7 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService {
row.add(totalPrice.toString());
//维保金额
row.add(12, maintenancePrice.toString());
row.add(11, maintenancePrice.toString());
dataList.add(row);
}

View File

@ -124,13 +124,30 @@
t1.update_by,
t2.user_name as create_by_name
from order_info t1
left join sys_user t2 on t1.create_by=t2.user_id
left join sys_user t2 on t1.create_by=t2.user_id
<where>
and t1.status=0
<if test="ship!=null and ship!=''">
<choose>
<when test="ship=='1'.toString()">
and t1.id in (SELECT DISTINCT t2.order_id FROM delivery_list t1 INNER JOIN order_delivery t2 ON
t1.delivery_id = t2.id)
</when>
<when test="ship=='0'.toString()">
and t1.id not in (SELECT DISTINCT t2.order_id FROM delivery_list t1 INNER JOIN order_delivery t2
ON t1.delivery_id = t2.id)
</when>
</choose>
</if>
<if test="orderCode != null and orderCode != ''">and t1.order_code like concat('%', #{orderCode}, '%')</if>
<if test="orderName != null and orderName != ''">and t1.order_name like concat('%', #{orderName}, '%')</if>
<if test="projectCode != null and projectCode != ''">and t1.project_code like concat('%', #{projectCode}, '%')</if>
<if test="customerName != null and customerName != ''">and t1.customer_name like concat('%', #{customerName},
<if test="projectCode != null and projectCode != ''">and t1.project_code like concat('%', #{projectCode},
'%')
</if>
<if test="customerName != null and customerName != ''">and t1.customer_name like concat('%',
#{customerName},
'%')
</if>
<if test="orderType != null and orderType != ''">and t1.order_type = #{orderType}</if>