Merge remote-tracking branch 'origin/old-version' into old-version

This commit is contained in:
kuang.yife 2023-06-14 21:07:36 +08:00
commit a82fa6f21f
8 changed files with 287 additions and 68 deletions

View File

@ -875,4 +875,16 @@ public class OrderMasterController extends BaseController {
int i = orderMasterService.reject(orderMaster);
return AjaxResult.success(i);
}
@GetMapping("/differentStatus/count")
@ResponseBody
public AjaxResult differentStatusOrderCount() {
return AjaxResult.success(orderMasterService.differentStatusOrderCount());
}
@GetMapping("/count")
@ResponseBody
public AjaxResult OrderMasterCount(OrderMaster orderMaster) {
return AjaxResult.success(orderMasterService.countOrderMasterList(orderMaster));
}
}

View File

@ -2,6 +2,7 @@
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('模板新增')"/>
<th:block th:include="include :: layout-latest-css"/>
<style>
body {
@ -173,7 +174,7 @@
<div class="col-sm-4">
<div class="input-group date">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
<input type="text" class="form-control" id="servDate" name="servDate" required>
<input type="text" class="form-control" id="servDate" name="servDate" required readonly style="background: white;">
</div>
</div>
<div class="col-sm-4">
@ -202,7 +203,7 @@
<label class="col-sm-2 control-label is-required">图片上传:</label>
<div class="col-sm-8">
<div class="file-loading">
<input id="multipleFile" name="files" type="file" multiple>
<input id="multipleFile" name="files" type="file" multiple required>
</div>
</div>
</div>
@ -245,18 +246,15 @@
<div class="form-group">
<label class="col-sm-2 control-label is-required">下单模式:</label>
<div class="col-sm-8 row">
<div class="col-sm-8 row" id="orderModeRadioGroup">
<div class="col-sm-2">
<label><input type="radio" value="01" name="orderMode" checked=""> 线下到付</label>
<label><input id="publishWithPrice" type="radio" value="02" name="orderMode" checked onclick="selectPublishWithPrice(this)"> 带价发布</label>
</div>
<div class="col-sm-2">
<label><input type="radio" value="02" name="orderMode">价发布</label>
<label><input type="radio" value="01" name="orderMode"> 一票价发布</label>
</div>
<div class="col-sm-2">
<label><input type="radio" value="03" name="orderMode"> 一票价发布</label>
</div>
<div class="col-sm-2">
<label><input type="radio" value="04" name="orderMode"> 回收模式</label>
<label><input type="radio" value="01" name="orderMode"> 回收模式</label>
</div>
</div>
</div>
@ -348,12 +346,11 @@
<span class="yuan-symbol" id="totalMoney">0</span>
</div>
<div class="oper-banner-end col-sm-5">
<!-- <div class="m-r">-->
<!-- <div class="checkbox">-->
<!-- <label>-->
<!-- <input type="checkbox" value="1" name="isPayOffline">线下到付</label>-->
<!-- </div>-->
<!-- </div>-->
<div class="m-r">
<div class="checkbox">
<label><input id="payOnDoorMode" type="checkbox" value="01" name="orderMode" onclick="changePayOnDoorMode(this)">上门到付/保外单</label>
</div>
</div>
<div class="m-r">
<button type="button" class="btn btn-w-m btn-success" onclick="submitOrder()">提交订单</button>
</div>
@ -367,6 +364,7 @@
</form>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: layout-latest-js"/>
<th:block th:include="include :: jquery-cxselect-js" />
<th:block th:include="include :: datetimepicker-js" />
<script th:src="@{/js/plugins/miniCascader/cascader.js}"></script>
@ -534,28 +532,43 @@
<!-- })-->
<!-- }-->
function selectPublishWithPrice(e) {
if ($(e).is(':checked')) {
$('#payOnDoorMode').prop("checked", false);
}
}
function changePayOnDoorMode(e) {
if ($(e).is(':checked')) {
$('#publishWithPrice').prop("checked", false);
}
}
function validSpecialComponent() {
// 类目
let categoryIds = categoryCascader.getCheckedByID();
if (!categoryIds || categoryIds.length === 0) {
$.modal.msgError("服务类目不能为空")
$.modal.msgError("请录入完整必填信息")
return false;
}
// 地区
let checkedAreaPathList = areaCascader.getCheckedPaths();
if (!checkedAreaPathList || checkedAreaPathList.length === 0) {
$.modal.msgError("服务地址不能为空")
$.modal.msgError("请录入完整必填信息")
return false;
}
// 下单模式
if (!$('#orderModeRadioGroup input[name=orderMode]').is(':checked')) {
$.modal.msgError("请录入完整必填信息")
return false;
}
return true;
}
function submitOrder() {
if (!validSpecialComponent()) return;
if ($.validate.form()) {
var data = $("#addTemplateForm").serializeArray();
function translateForm(data) {
var params = {};
data.forEach(function (item){
params[item.name] = item.value;
@ -578,6 +591,15 @@
params.districtId = areaCascader.getCheckedPaths()[0][2];
params.streetId = areaCascader.getCheckedPaths()[0][3];
return params;
}
function submitOrder() {
if (!validSpecialComponent()) return;
if ($.validate.form()) {
var data = $("#addTemplateForm").serializeArray();
var params= translateForm(data);
$.ajax({
type: "POST",
dataType:"json",
@ -586,14 +608,29 @@
contentType: 'application/json',
success: function (result) {
if (result.code == web_status.SUCCESS) {
$.modal.confirm('发单成功,是否前往发单管理?', function() {
layer.open({
type: 0,
area: ['250px', '180px'],
fix: false,
//不固定
maxmin: true,
shade: 0.3,
title: '系统通知',
content: '发单成功,是否前往发单管理?',
btn: ['确定','继续下单'],
// 弹层外区域关闭
shadeClose: true,
yes: function(index) {
$.modal.parentTab('发单管理', 'order/master/pc');
})
}
});
} else {
$.modal.msgError("请求失败")
}
}
})
} else {
$.modal.msgError("请录入完整必填信息")
}
}
@ -601,27 +638,7 @@
if (!validSpecialComponent()) return;
if ($.validate.form()) {
var data = $("#addTemplateForm").serializeArray();
var params= {};
data.forEach(function (item){
params[item.name] = item.value;
});
let categoryIds = categoryCascader.getCheckedByID();
let orderGoodsStandards = [];
categoryIds.forEach(function (item){
orderGoodsStandards.push({
deptCategoryId: item,
goodsStandardNum: $(".goodsNum[name=goodsNum" + item + "]").val()
});
});
params.orderGoodsStandards = orderGoodsStandards;
params.categoryId1 = categoryCascader.getCheckedPaths()[0][0];
params.categoryId2 = categoryCascader.getCheckedPaths()[0][1];
params.categoryId3 = categoryCascader.getCheckedPaths()[0][2];
params.provinceId = areaCascader.getCheckedPaths()[0][0];
params.cityId = areaCascader.getCheckedPaths()[0][1];
params.districtId = areaCascader.getCheckedPaths()[0][2];
params.streetId = areaCascader.getCheckedPaths()[0][3];
var params= translateForm(data);
$.ajax({
type: "POST",

View File

@ -74,12 +74,15 @@
</select>
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this, {orderStatus: 0, sysPayStatus: 0, orderMode: '02'})">
待付款
(<span id="nonPaidOrderNum">0</span>)
</a>
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this, {orderStatus: 0, workerId: -1})">
已发布
(<span id="publishedOrderNum">0</span>)
</a>
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this, {orderStatus: 1})">
已接单
(<span id="acceptedOrderNum">0</span>)
</a>
<!-- <a class="btn btn-default btn-outline" onclick="selectConditionBtn(this, {orderStatus: 1, isCall: '01'})">-->
<!-- 未约时-->
@ -89,30 +92,39 @@
<!-- </a>-->
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this, {orderStatus: 2})">
待上门
(<span id="waitForDoorOrderNum">0</span>)
</a>
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this, {orderStatus: 3})">
进行中
(<span id="servingOrderNum">0</span>)
</a>
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this, {orderStatus: 4})">
确认审核
(<span id="confirmingOrderNum">0</span>)
</a>
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this, {orderStatus: 5})">
完成
(<span id="finishedOrderNum">0</span>)
</a>
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this, {orderStatus: 6})">
关闭
(<span id="canceledOrderNum">0</span>)
</a>
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this)">
<a class="btn btn-default btn-outline" onclick="selectOnDoorOrderToday(this)">
今日待上门
(<span id="todayOrderNum">0</span>)
</a>
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this)">
<a class="btn btn-default btn-outline" onclick="selectOnDoorOrderTomorrow(this)">
明日待上门
(<span id="tomorrowOrderNum">0</span>)
</a>
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this)">
售后
(<span>0</span>)
</a>
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this)">
急报中
(<span>0</span>)
</a>
</div>
<div class="flex-board">
@ -197,7 +209,7 @@
};
$('#scroll-up').toTop(opt);
}
queryOrderList();
initOrderList();
$.ajax({
type: "POST",
@ -245,6 +257,92 @@
})
changeOrderMode();
<!-- 不同状态订单数量统计-->
$.ajax({
type: "GET",
dataType:"json",
url: prefix + '/differentStatus/count',
success: function (result) {
if (result.code == web_status.SUCCESS) {
$('#acceptedOrderNum').text(result.data.acceptedOrderNum);
$('#canceledOrderNum').text(result.data.canceledOrderNum);
$('#confirmingOrderNum').text(result.data.confirmingOrderNum);
$('#finishedOrderNum').text(result.data.finishedOrderNum);
$('#servingOrderNum').text(result.data.servingOrderNum);
$('#waitForDoorOrderNum').text(result.data.waitForDoorOrderNum);
} else {
$.modal.msgError("数据加载错误,请重试!")
}
}
})
<!-- 待付款订单数量统计-->
$.ajax({
type: "GET",
dataType:"json",
url: prefix + '/count',
data: {orderStatus: 0, sysPayStatus: 0, orderMode: '02'},
success: function (result) {
if (result.code == web_status.SUCCESS) {
$('#nonPaidOrderNum').text(result.data);
} else {
$.modal.msgError("数据加载错误,请重试!")
}
}
})
<!-- 已发布订单数量统计-->
$.ajax({
type: "GET",
dataType:"json",
url: prefix + '/count',
data: {orderStatus: 0, workerId: -1},
success: function (result) {
if (result.code == web_status.SUCCESS) {
$('#publishedOrderNum').text(result.data);
} else {
$.modal.msgError("数据加载错误,请重试!")
}
}
})
<!-- 今日和明日单数量统计-->
var date = new Date();
$.ajax({
type: "GET",
dataType:"json",
url: prefix + '/count',
data: {
orderStatus: 2,
expectTimeStart: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 00:00:00",
expectTimeEnd: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 23:59:59"
},
success: function (result) {
if (result.code == web_status.SUCCESS) {
$('#todayOrderNum').text(result.data);
} else {
$.modal.msgError("数据加载错误,请重试!")
}
}
})
$.ajax({
type: "GET",
dataType:"json",
url: prefix + '/count',
data: {
orderStatus: 2,
expectTimeStart: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + (date.getDate() + 1) + " 00:00:00",
expectTimeEnd: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + (date.getDate() + 1) + " 23:59:59"
},
success: function (result) {
if (result.code == web_status.SUCCESS) {
$('#tomorrowOrderNum').text(result.data);
} else {
$.modal.msgError("数据加载错误,请重试!")
}
}
})
});
function changeOrderMode(orderMode) {
@ -287,7 +385,7 @@
})
}
function queryOrderList() {
function initOrderList() {
var options = {
url: prefix + "/list",
exportUrl: prefix + "/export",
@ -422,12 +520,36 @@
});
}
function selectConditionBtn(e, params) {
function changeConditionBtnChosenStyle(e) {
$('.condition-btn .btn').removeClass('active-condition-btn');
$(e).addClass('active-condition-btn');
}
function selectConditionBtn(e, params = {}) {
changeConditionBtnChosenStyle(e);
searchOrderList(params)
}
function selectOnDoorOrderToday(e) {
changeConditionBtnChosenStyle(e);
var date = new Date();
selectConditionBtn(e, {
orderStatus: 2,
expectTimeStart: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 00:00:00",
expectTimeEnd: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 23:59:59"
})
}
function selectOnDoorOrderTomorrow(e) {
changeConditionBtnChosenStyle(e);
var date = new Date();
selectConditionBtn(e, {
orderStatus: 2,
expectTimeStart: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + (date.getDate() + 1) + " 00:00:00",
expectTimeEnd: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + (date.getDate() + 1) + " 23:59:59"
})
}
function searchOrderList(params) {
customParams = params;
$.table.search();

View File

@ -0,0 +1,23 @@
package com.ghy.order.domain;
import lombok.Data;
/**
* @description: 主单统计实体
* @author: yangdanqi
* @date: 2023/6/7
*/
@Data
public class OrderMasterCount {
private Integer acceptedOrderNum;
private Integer waitForDoorOrderNum;
private Integer servingOrderNum;
private Integer confirmingOrderNum;
private Integer finishedOrderNum;
private Integer canceledOrderNum;
}

View File

@ -1,6 +1,7 @@
package com.ghy.order.mapper;
import com.ghy.order.domain.OrderMaster;
import com.ghy.order.domain.OrderMasterCount;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
@ -107,4 +108,6 @@ public interface OrderMasterMapper {
* @return 1
*/
int removeWorker(Long id);
OrderMasterCount differentStatusOrderCount();
}

View File

@ -2,6 +2,7 @@ package com.ghy.order.service;
import com.ghy.common.core.domain.AjaxResult;
import com.ghy.order.domain.OrderMaster;
import com.ghy.order.domain.OrderMasterCount;
import com.ghy.order.request.AppOrderRequest;
import com.huifu.adapay.core.exception.BaseAdaPayException;
@ -165,4 +166,6 @@ public interface OrderMasterService {
int removeWorker(Long id);
int reject(OrderMaster orderMaster);
OrderMasterCount differentStatusOrderCount();
}

View File

@ -15,6 +15,7 @@ import com.ghy.common.utils.AdapayUtils;
import com.ghy.order.domain.OrderDetail;
import com.ghy.order.domain.OrderGoods;
import com.ghy.order.domain.OrderMaster;
import com.ghy.order.domain.OrderMasterCount;
import com.ghy.order.mapper.OrderMasterMapper;
import com.ghy.order.request.AppOrderRequest;
import com.ghy.order.service.OrderDetailService;
@ -557,4 +558,9 @@ public class OrderMasterServiceImpl implements OrderMasterService {
orderDetailService.deleteByMaster(orderMaster.getId());
return 1;
}
@Override
public OrderMasterCount differentStatusOrderCount() {
return orderMasterMapper.differentStatusOrderCount();
}
}

View File

@ -186,6 +186,12 @@
<if test="isCall != null">
AND om.is_call = #{isCall}
</if>
<if test="expectTimeStart != null">
AND om.expect_time_start &gt;= #{expectTimeStart}
</if>
<if test="expectTimeEnd != null">
AND om.expect_time_end &lt;= #{expectTimeEnd}
</if>
</where>
order by om.create_time
<trim suffixOverrides=",">
@ -201,7 +207,9 @@
</select>
<select id="countOrderMasterList" parameterType="com.ghy.order.domain.OrderMaster" resultType="Long">
SELECT COUNT(*) FROM order_master om
SELECT COUNT(*)
FROM order_master om
LEFT JOIN financial_master fm ON om.id = fm.order_master_id
<where>
<if test="isMonitoredOrder">
AND (om.all_self_assigned = 0 or om.all_self_assigned is null) AND om.order_status in (1,2,3,4)
@ -238,6 +246,14 @@
</if>
<if test="workerId == -1">
AND om.worker_id IS NULL
AND ( (om.order_mode in ('01','03','04'))
OR (om.order_mode = '02' and fm.pay_status = 1) )
</if>
<if test="sysPayStatus != null">
AND fm.pay_status = #{sysPayStatus}
</if>
<if test="orderMode != null and orderMode != ''">
AND om.order_mode = #{orderMode}
</if>
<if test="exceptOrderStatus != null">
AND om.order_status != #{exceptOrderStatus}
@ -251,6 +267,12 @@
<if test="isCall != null">
AND om.is_call = #{isCall}
</if>
<if test="expectTimeStart != null">
AND om.expect_time_start &gt;= #{expectTimeStart}
</if>
<if test="expectTimeEnd != null">
AND om.expect_time_end &lt;= #{expectTimeEnd}
</if>
</where>
</select>
@ -401,4 +423,15 @@
WHERE id = #{id}
</update>
<select id="differentStatusOrderCount" resultType="com.ghy.order.domain.OrderMasterCount">
select
count(case when om.order_status = 1 then 1 else null end) as acceptedOrderNum,
count(case when om.order_status = 2 then 1 else null end) as waitForDoorOrderNum,
count(case when om.order_status = 3 then 1 else null end) as servingOrderNum,
count(case when om.order_status = 4 then 1 else null end) as confirmingOrderNum,
count(case when om.order_status = 5 then 1 else null end) as finishedOrderNum,
count(case when om.order_status = 6 then 1 else null end) as canceledOrderNum
from order_master om
</select>
</mapper>