Browse Source

Merge branch 'fearture/limit' into dev

# Conflicts:
#	sp-server/app.pid
qzyReal 3 years ago
parent
commit
4f95193520
27 changed files with 1073 additions and 71 deletions
  1. 65 7
      app/pages/onely-disinfect/type-business.vue
  2. 2 2
      app/utils/request.js
  3. 27 24
      sp-admin/sa-frame/menu-list.js
  4. 183 0
      sp-admin/sa-view/tb-business-sort/tb-business-sort-add.html
  5. 63 0
      sp-admin/sa-view/tb-business-sort/tb-business-sort-info.html
  6. 190 0
      sp-admin/sa-view/tb-business-sort/tb-business-sort-list.html
  7. 29 4
      sp-admin/sa-view/tb-business/tb-car-disincle-add.html
  8. 28 4
      sp-admin/sa-view/tb-business/tb-car-disincle-edit.html
  9. 2 1
      sp-admin/sa-view/tb-business/tb-car-disincle-list.html
  10. 2 2
      sp-admin/sa-view/tb-item-type/tb-item-list.html
  11. 58 13
      sp-server/src/main/java/com/pj/api/service/ApiService.java
  12. 1 0
      sp-server/src/main/java/com/pj/project/tb_business/CarDisincle.java
  13. 1 1
      sp-server/src/main/java/com/pj/project/tb_business/TbBusinessController.java
  14. 6 0
      sp-server/src/main/java/com/pj/project/tb_business/TbBusinessMapper.java
  15. 34 1
      sp-server/src/main/java/com/pj/project/tb_business/TbBusinessMapper.xml
  16. 12 1
      sp-server/src/main/java/com/pj/project/tb_business/TbBusinessService.java
  17. 6 0
      sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarController.java
  18. 2 0
      sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarMapper.java
  19. 18 4
      sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarMapper.xml
  20. 24 6
      sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarService.java
  21. 15 0
      sp-server/src/main/java/com/pj/project/tb_business_sort/AddBusinessSortBO.java
  22. 69 0
      sp-server/src/main/java/com/pj/project/tb_business_sort/TbBusinessSort.java
  23. 76 0
      sp-server/src/main/java/com/pj/project/tb_business_sort/TbBusinessSortController.java
  24. 29 0
      sp-server/src/main/java/com/pj/project/tb_business_sort/TbBusinessSortMapper.java
  25. 50 0
      sp-server/src/main/java/com/pj/project/tb_business_sort/TbBusinessSortMapper.xml
  26. 80 0
      sp-server/src/main/java/com/pj/project/tb_business_sort/TbBusinessSortService.java
  27. 1 1
      sp-server/src/main/java/com/pj/project/tb_item_type/TbItemTypeService.java

+ 65 - 7
app/pages/onely-disinfect/type-business.vue

@@ -21,14 +21,21 @@
 			<view class="item">
 			<view class="item">
 				<view class="l"><text style="color: red;">*</text>车牌号:</view>
 				<view class="l"><text style="color: red;">*</text>车牌号:</view>
 				<view class="r">
 				<view class="r">
-					<u-input placeholder="请填写车牌号" v-model="form.carNo" />
+					<u-input @input="carInputFn" placeholder="请填写车牌号" v-model="form.carNo" />
 				</view>
 				</view>
 			</view>
 			</view>
+			<view class="list" v-show="carList.length>0">
+				<u-radio-group v-model="form.carNo" placement="column" @change="groupChange">
+					<u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in carList" :key="index"
+						:label="item.carNo" :name="item.carNo">
+					</u-radio>
+				</u-radio-group>
+			</view>
 			<view class="item">
 			<view class="item">
 				<view class="l">车辆类型:</view>
 				<view class="l">车辆类型:</view>
 				<view class="r">
 				<view class="r">
-					<picker v-if="type.list.length>0" class="p-picker" id="qy" @change="bindPickerChange($event)" :value="type.index"
-						:range="type.list" range-key="name">
+					<picker v-if="type.list.length>0" class="p-picker" id="qy" @change="bindPickerChange($event)"
+						:value="type.index" :range="type.list" range-key="name">
 						<text class="p-text">{{type.list[type.index].name}}</text>
 						<text class="p-text">{{type.list[type.index].name}}</text>
 						<u-icon class="p-icon" name="arrow-down-fill" size="20"></u-icon>
 						<u-icon class="p-icon" name="arrow-down-fill" size="20"></u-icon>
 					</picker>
 					</picker>
@@ -99,6 +106,11 @@
 		</view>
 		</view>
 		<!-- ---------------------------------------------------------- -->
 		<!-- ---------------------------------------------------------- -->
 		<view class="bottom-safety"></view>
 		<view class="bottom-safety"></view>
+		<uni-popup ref="popup" type="bottom" background-color="#fff">
+			<view style="height: 300rpx;overflow-y: auto;">
+
+			</view>
+		</uni-popup>
 	</view>
 	</view>
 </template>
 </template>
 
 
@@ -121,7 +133,8 @@
 					carNo: '',
 					carNo: '',
 					carSize: '',
 					carSize: '',
 					carWeight: '',
 					carWeight: '',
-					operator: ''
+					operator: '',
+					operateTime: '',
 				},
 				},
 				list: [],
 				list: [],
 				checkList: [],
 				checkList: [],
@@ -129,7 +142,32 @@
 					id: '',
 					id: '',
 					name: '',
 					name: '',
 					items: []
 					items: []
-				}
+				},
+				carList: [{
+						id: '1234',
+						carNo: '桂a09345'
+					},
+					{
+						id: '342',
+						carNo: '桂a09343'
+					},
+					{
+						id: '5431',
+						carNo: '桂a09645'
+					},
+					{
+						id: '5431',
+						carNo: '桂a09645'
+					},
+					{
+						id: '5431',
+						carNo: '桂a09645'
+					},
+					{
+						id: '5431',
+						carNo: '桂a09645'
+					},
+				]
 			}
 			}
 		},
 		},
 		computed: {
 		computed: {
@@ -165,6 +203,14 @@
 		},
 		},
 
 
 		methods: {
 		methods: {
+			carInputFn() {
+			},
+			showWin() {
+				this.$refs.popup.open('bottom')
+			},
+			groupChange() {
+				console.log(11)
+			},
 			getItemTypeEnum() {
 			getItemTypeEnum() {
 				this.$api.getItemTypeEnum().then(resp => {
 				this.$api.getItemTypeEnum().then(resp => {
 					this.type.list = resp.data;
 					this.type.list = resp.data;
@@ -195,8 +241,9 @@
 				}).then(resp => {
 				}).then(resp => {
 					let data = resp.data;
 					let data = resp.data;
 					let items = data.items
 					let items = data.items
-					.filter(obj => obj.itemType && obj.itemType.indexOf(this.type.list[this.type.index].name) !== -1);
-					data.items=items;
+						.filter(obj => obj.itemType && obj.itemType.indexOf(this.type.list[this.type.index]
+							.name) !== -1);
+					data.items = items;
 					this.itemType = data;
 					this.itemType = data;
 					this.checkList = items.filter(obj => obj.need == 1).map(obj => obj.id)
 					this.checkList = items.filter(obj => obj.need == 1).map(obj => obj.id)
 
 
@@ -262,6 +309,17 @@
 		text-align: center;
 		text-align: center;
 	}
 	}
 
 
+	.list {
+		position: absolute;
+		left: 34%;
+		z-index: 999;
+		background: #e5e5e5;
+		padding: 10rpx 200rpx 10rpx 40rpx;
+		border-radius: 10rpx;
+		height: 120rpx;
+		overflow-y: auto;
+	}
+
 	.item-line {
 	.item-line {
 		color: #a2a2a2;
 		color: #a2a2a2;
 		padding: 5px 0 10px 29px;
 		padding: 5px 0 10px 29px;

+ 2 - 2
app/utils/request.js

@@ -1,6 +1,6 @@
-// const server = 'http://127.0.0.1:8099/pro';
+const server = 'http://127.0.0.1:8099/pro';
 // const server = 'https://pco.aseanbusiness.cn/pro';
 // const server = 'https://pco.aseanbusiness.cn/pro';
-const server = 'https://dxkaa1.bgigc.com/pro';
+// const server = 'https://dxkaa1.bgigc.com/pro';
 
 
 import common from '../common/js/common.js';
 import common from '../common/js/common.js';
 
 

+ 27 - 24
sp-admin/sa-frame/menu-list.js

@@ -318,8 +318,7 @@ var menuList = [{
 				id: 'tb-car-disincle-list',
 				id: 'tb-car-disincle-list',
 				name: '其他业务',
 				name: '其他业务',
 				url: 'sa-view/tb-business/tb-car-disincle-list.html',
 				url: 'sa-view/tb-business/tb-car-disincle-list.html',
-				childList:[
-					{
+				childList: [{
 						id: 'tb-flex-business-add',
 						id: 'tb-flex-business-add',
 						name: '添加业务',
 						name: '添加业务',
 						isShow: false
 						isShow: false
@@ -340,7 +339,8 @@ var menuList = [{
 						isShow: false
 						isShow: false
 					},
 					},
 				]
 				]
-			}
+			},
+			
 
 
 		]
 		]
 	},
 	},
@@ -353,8 +353,7 @@ var menuList = [{
 				id: 'tb-item-type-list',
 				id: 'tb-item-type-list',
 				name: '收费项管理',
 				name: '收费项管理',
 				url: 'sa-view/tb-item-type/tb-item-type-list.html',
 				url: 'sa-view/tb-item-type/tb-item-type-list.html',
-				childList:[
-					{
+				childList: [{
 						id: 'tb-item-type-add',
 						id: 'tb-item-type-add',
 						name: '添加收费项',
 						name: '添加收费项',
 						isShow: false
 						isShow: false
@@ -374,15 +373,15 @@ var menuList = [{
 						name: '删除收费项',
 						name: '删除收费项',
 						isShow: false
 						isShow: false
 					},
 					},
-					
+
 				]
 				]
 			},
 			},
+			
 			{
 			{
 				id: 'tb-item-re-list',
 				id: 'tb-item-re-list',
 				name: '明细管理',
 				name: '明细管理',
 				url: 'sa-view/tb-item-type/tb-item-list.html',
 				url: 'sa-view/tb-item-type/tb-item-list.html',
-				childList:[
-					{
+				childList: [{
 						id: 'tb-item-manager-add',
 						id: 'tb-item-manager-add',
 						name: '添加明细',
 						name: '添加明细',
 						isShow: false
 						isShow: false
@@ -399,6 +398,17 @@ var menuList = [{
 					},
 					},
 				]
 				]
 			},
 			},
+			{
+				id: 'tb-business-sort-list',
+				name: '项目顺序',
+				url: 'sa-view/tb-business-sort/tb-business-sort-list.html',
+				childList: [{
+						id: 'tb-business-sort-edit',
+						name: '修改',
+						isShow: false
+					},
+				]
+			},
 		],
 		],
 
 
 	},
 	},
@@ -438,8 +448,7 @@ var menuList = [{
 				},
 				},
 			]
 			]
 		}, ]
 		}, ]
-	},
-	{
+	}, {
 		id: 'info-setting',
 		id: 'info-setting',
 		name: '信息设置',
 		name: '信息设置',
 		icon: 'el-icon-monitor',
 		icon: 'el-icon-monitor',
@@ -463,8 +472,7 @@ var menuList = [{
 				},
 				},
 			]
 			]
 		}, ]
 		}, ]
-	},
-	{
+	}, {
 		id: 'tb-notices',
 		id: 'tb-notices',
 		name: '消息管理',
 		name: '消息管理',
 		icon: 'el-icon-news',
 		icon: 'el-icon-news',
@@ -496,8 +504,7 @@ var menuList = [{
 			},
 			},
 
 
 		]
 		]
-	},
-	{
+	}, {
 		id: 'tb-charge-record',
 		id: 'tb-charge-record',
 		name: '充值记录',
 		name: '充值记录',
 		icon: 'el-icon-folder-opened',
 		icon: 'el-icon-folder-opened',
@@ -507,8 +514,7 @@ var menuList = [{
 			name: '充值记录',
 			name: '充值记录',
 			url: 'sa-view/tb-charge-record/tb-charge-record-list.html'
 			url: 'sa-view/tb-charge-record/tb-charge-record-list.html'
 		}, ]
 		}, ]
-	},
-	{
+	}, {
 		id: 'tb-pay-record',
 		id: 'tb-pay-record',
 		name: '支付记录',
 		name: '支付记录',
 		icon: 'el-icon-folder-opened',
 		icon: 'el-icon-folder-opened',
@@ -518,8 +524,7 @@ var menuList = [{
 			name: '支付记录',
 			name: '支付记录',
 			url: 'sa-view/tb-pay-record/tb-pay-record-list.html'
 			url: 'sa-view/tb-pay-record/tb-pay-record-list.html'
 		}, ]
 		}, ]
-	},
-	{
+	}, {
 		id: 'tb-declare',
 		id: 'tb-declare',
 		name: '申报信息',
 		name: '申报信息',
 		icon: 'el-icon-folder-opened',
 		icon: 'el-icon-folder-opened',
@@ -546,8 +551,7 @@ var menuList = [{
 				},
 				},
 			]
 			]
 		}, ]
 		}, ]
-	},
-	{
+	}, {
 		id: 'tb-disinfect',
 		id: 'tb-disinfect',
 		name: '消毒信息',
 		name: '消毒信息',
 		icon: 'el-icon-folder-opened',
 		icon: 'el-icon-folder-opened',
@@ -573,8 +577,7 @@ var menuList = [{
 				},
 				},
 			]
 			]
 		}, ]
 		}, ]
-	},
-	{
+	}, {
 		id: 'tb-discount',
 		id: 'tb-discount',
 		name: '折扣管理',
 		name: '折扣管理',
 		icon: 'el-icon-folder-opened',
 		icon: 'el-icon-folder-opened',
@@ -605,8 +608,7 @@ var menuList = [{
 				},
 				},
 			]
 			]
 		}, ]
 		}, ]
-	},
-	{
+	}, {
 		id: 'tb-fee-statistics',
 		id: 'tb-fee-statistics',
 		name: '收费统计',
 		name: '收费统计',
 		icon: 'el-icon-folder-opened',
 		icon: 'el-icon-folder-opened',
@@ -633,4 +635,5 @@ var menuList = [{
 			},
 			},
 		]
 		]
 	},
 	},
+
 ]
 ]

+ 183 - 0
sp-admin/sa-view/tb-business-sort/tb-business-sort-add.html

@@ -0,0 +1,183 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>业务顺序-添加/修改</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+		<meta name="viewport"
+			content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<!-- 所有的 css js 资源 -->
+		<link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+		<link rel="stylesheet" href="../../static/sa.css">
+		<script src="../../static/kj/vue.min.js"></script>
+		<script src="../../static/kj/element-ui/index.js"></script>
+		<script src="../../static/kj/httpVueLoader.js"></script>
+		<script src="../../static/kj/jquery.min.js"></script>
+		<script src="../../static/kj/layer/layer.js"></script>
+		<script src="../../static/sa.js"></script>
+		<style type="text/css">
+			.c-panel .el-form .c-label {
+				width: 7em !important;
+			}
+
+			.c-panel .el-form .el-input,
+			.c-panel .el-form .el-textarea__inner {
+				width: 250px;
+			}
+
+			.item-num .el-input__inner {
+				width: 130px;
+				display: inline;
+			}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box" :class="{sbot: id}" style="display: none;" :style="'display: block;'">
+			<!-- ------- 内容部分 ------- -->
+			<div class="s-body">
+				<div class="c-panel">
+					<div class="c-title" v-if="id == 0">数据添加</div>
+					<div class="c-title" v-else>数据修改</div>
+					<el-form v-if="m">
+						<div v-for="item in list" :key="item.index">
+							<div class="c-item" v-if="item.index>0">
+								<label class="c-label">间隔(分):</label>
+								<el-input-number class="item-num" v-model="item.interval" :step="10" :min="1"
+									:max="9999">
+								</el-input-number>
+							</div>
+							<div class="c-item">
+								<label class="c-label">第{{item.index+1}}个:</label>
+								<el-select v-model="item.typeId" placeholder="请选择">
+									<el-option :label="type.name" :value="type.id"
+										v-for="(type,index) in item.businessTypeList">
+									</el-option>
+								</el-select>
+								<el-button @click="handlerAdd" v-if="item.index==0">添加项</el-button>
+								<el-button @click="handlerDel(item.index)" v-if="item.index>0">删除项</el-button>
+							</div>
+						</div>
+						<sa-item name="" class="s-ok" br>
+							<el-button type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
+						</sa-item>
+					</el-form>
+				</div>
+			</div>
+			<!-- ------- 底部按钮 ------- -->
+			<div class="s-foot">
+				<el-button type="primary" @click="ok()">确定</el-button>
+				<el-button @click="sa.closeCurrIframe()">取消</el-button>
+			</div>
+		</div>
+		<script>
+			var app = new Vue({
+				components: {
+					"sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue')
+				},
+				el: '.vue-box',
+				data: {
+					id: sa.p('id', 0), // 获取超链接中的id参数(0=添加,非0=修改) 
+					m: null, // 实体对象 
+					list: [],
+					businessTypeList: [],
+				},
+				methods: {
+					handlerAdd() {
+						let list = this.list;
+						let businessTypeList = this.businessTypeList;
+						this.list.push({
+							index: list.length,
+							typeId: businessTypeList[0].id,
+							interval: 30,
+							businessTypeList: businessTypeList
+						})
+					},
+					handlerDel(index) {
+						let list = this.list;
+						list.splice(index, 1);
+						for (let i in list) {
+							let obj = list[i];
+							if (obj.index > index) {
+								obj.index = obj.index - 1;
+							}
+						}
+						this.list = list;
+					},
+					getBusinessType() {
+						this.list = [];
+						sa.ajax('/TbItemType/getList', function(resp) {
+							let list = resp.data;
+							this.businessTypeList = list;
+							this.getSortList();
+						}.bind(this))
+					},
+					getSortList() {
+						console.log(111)
+						sa.ajax('/TbBusinessOrder/getList', function(resp) {
+							let dbList = resp.data;
+							let businessTypeList = this.businessTypeList;
+							let index = 0;
+							let list = [];
+							for (let i in dbList) {
+								let item = dbList[i];
+								let obj = {
+									id: item.id,
+									index: index,
+									typeId: item.typeId,
+									interval: item.intervalTime,
+									businessTypeList: businessTypeList
+								}
+								list.push(obj);
+								index++;
+							}
+							this.list = list;
+						}.bind(this))
+					},
+					// 创建一个 默认Model 
+					createModel: function() {
+						return {
+							id: '', //  
+							name: '', //  
+							typeId: '',
+							typeName: '', //  
+							sort: '', //  
+						}
+					},
+					// 提交数据 
+					ok: function() {
+						// 表单校验 
+						let m = this.m;
+						sa.checkNull(m.id, '请输入 []');
+						sa.checkNull(m.name, '请输入 []');
+						sa.checkNull(m.typeName, '请输入 []');
+						sa.checkNull(m.sort, '请输入 []');
+
+						// 开始增加或修改
+						if (this.id <= 0) { // 添加
+							sa.ajax('/TbBusinessOrder/add', m, function(res) {
+								sa.alert('增加成功', this.clean);
+							}.bind(this));
+						} else { // 修改
+							sa.ajax('/TbBusinessOrder/update', m, function(res) {
+								sa.alert('修改成功', this.clean);
+							}.bind(this));
+						}
+					},
+					// 添加/修改 完成后的动作
+					clean: function() {
+						if (this.id == 0) {
+							this.m = this.createModel();
+						} else {
+							parent.app.f5(); // 刷新父页面列表
+							sa.closeCurrIframe(); // 关闭本页 
+						}
+					}
+				},
+				mounted: function() {
+					this.getBusinessType();
+					// 初始化数据 
+
+				}
+			})
+		</script>
+	</body>
+</html>

+ 63 - 0
sp-admin/sa-view/tb-business-sort/tb-business-sort-info.html

@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>业务顺序-详情</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<!-- 所有的 css js 资源 -->
+		<link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+		<link rel="stylesheet" href="../../static/sa.css">
+		<script src="../../static/kj/vue.min.js"></script>
+		<script src="../../static/kj/element-ui/index.js"></script>
+		<script src="../../static/kj/httpVueLoader.js"></script>
+		<script src="../../static/kj/jquery.min.js"></script>
+		<script src="../../static/kj/layer/layer.js"></script>
+		<script src="../../static/sa.js"></script>
+		<style type="text/css">
+			.c-panel .c-label{width: 8em;}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box sbot" style="display: none;" :style="'display: block;'">
+			<!-- ------- 内容部分 ------- -->
+			<div class="s-body">
+				<div class="c-panel">
+					<el-form v-if="m">
+						<sa-info name="" br>{{m.id}}</sa-info>
+						<sa-info name="" br>{{m.name}}</sa-info>
+						<sa-info name="" br>{{m.typeName}}</sa-info>
+						<sa-info name="" br>{{m.sort}}</sa-info>
+					</el-form>
+				</div>
+			</div>
+			<!-- ------- 底部按钮 ------- -->
+			<div class="s-foot">
+				<el-button type="success" @click="sa.closeCurrIframe()">确定</el-button>
+				<el-button @click="sa.closeCurrIframe()">取消</el-button>
+			</div>
+		</div>
+		<script>
+			var app = new Vue({
+				components: {
+					"sa-info": httpVueLoader('../../sa-frame/com/sa-info.vue')
+				},
+				el: '.vue-box',
+				data: {
+					id: sa.p('id', 0),	// 获取数据ID 
+					m: null
+				},
+				methods: {
+				},
+				mounted: function() {
+					sa.ajax('/TbBusinessOrder/getById?id=' + this.id, function(res) {
+						this.m = res.data;
+						if(res.data == null) {
+							sa.alert('未能查找到 id=' + this.id + " 详细数据");
+						}
+					}.bind(this))
+				}
+			})
+			
+		</script>
+	</body>
+</html>

+ 190 - 0
sp-admin/sa-view/tb-business-sort/tb-business-sort-list.html

@@ -0,0 +1,190 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>业务顺序-添加/修改</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+		<meta name="viewport"
+			content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<!-- 所有的 css js 资源 -->
+		<link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+		<link rel="stylesheet" href="../../static/sa.css">
+		<script src="../../static/kj/vue.min.js"></script>
+		<script src="../../static/kj/element-ui/index.js"></script>
+		<script src="../../static/kj/httpVueLoader.js"></script>
+		<script src="../../static/kj/jquery.min.js"></script>
+		<script src="../../static/kj/layer/layer.js"></script>
+		<script src="../../static/sa.js"></script>
+		<style type="text/css">
+			.c-panel .el-form .c-label {
+				width: 8em !important;
+			}
+
+			.c-panel .el-form .el-input,
+			.c-panel .el-form .el-textarea__inner {
+				width: 250px;
+			}
+
+			.item-num .el-input__inner {
+				width: 130px;
+				display: inline;
+			}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box" :class="{sbot: id}" style="display: none;" :style="'display: block;'">
+			<!-- ------- 内容部分 ------- -->
+			<div class="s-body">
+				<div class="c-panel">
+					<div class="c-title" v-if="id == 0">数据添加</div>
+					<div class="c-title" v-else>数据修改</div>
+					<el-form>
+						<div style="width: 850px;">
+							<div v-for="item in list" :key="item.index">
+								<div class="c-item" v-if="item.index>0">
+									<label class="c-label">项目间隔(分):</label>
+									<el-input-number :disabled="!sa.isAuth('tb-business-sort-edit')" class="item-num" v-model="item.interval" :step="10" :min="1"
+										:max="9999">
+									</el-input-number>
+								</div>
+								<div class="c-item">
+									<label class="c-label">第{{item.index+1}}个:</label>
+									<el-select :disabled="!sa.isAuth('tb-business-sort-edit')" v-model="item.typeId" placeholder="请选择">
+										<el-option :label="type.name" :value="type.id"
+											v-for="(type,index) in item.businessTypeList">
+										</el-option>
+									</el-select>
+									<label class="c-label" style="width: 160px;">单项间隔(小时):</label>
+									<el-input-number :disabled="!sa.isAuth('tb-business-sort-edit')" class="item-num" v-model="item.singleIntervalTime" :step="1"
+										:min="1" :max="48">
+									</el-input-number>
+									<label style="position: relative;left: 50px;">
+										<el-button style="cursor: pointer;" @click="handlerAdd" v-if="item.index==0&&sa.isAuth('tb-business-sort-edit')">添加项
+										</el-button>
+										<el-button @click="handlerDel(item.index)" v-if="item.index>0&&sa.isAuth('tb-business-sort-edit')">删除项</el-button>
+									</label>
+								</div>
+							</div>
+						</div>
+						<sa-item name="" class="s-ok" br v-if="sa.isAuth('tb-business-sort-edit')">
+							<el-button type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
+						</sa-item>
+					</el-form>
+				</div>
+			</div>
+		</div>
+		<script>
+			var app = new Vue({
+				components: {
+					"sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue')
+				},
+				el: '.vue-box',
+				data: {
+					id: sa.p('id', 0), // 获取超链接中的id参数(0=添加,非0=修改) 
+					m: null, // 实体对象 
+					list: [],
+					businessTypeList: [],
+				},
+				methods: {
+					handlerAdd() {
+						let list = this.list;
+						this.list.push({
+							index: list.length,
+							typeId: '',
+							interval: 30,
+							singleIntervalTime:24,
+							businessTypeList: this.businessTypeList
+						})
+					},
+					handlerDel(index) {
+						let list = this.list;
+						list.splice(index, 1);
+						for (let i in list) {
+							let obj = list[i];
+							if (obj.index > index) {
+								obj.index = obj.index - 1;
+							}
+						}
+						this.list = list;
+					},
+					getBusinessType() {
+						this.list = [];
+						sa.ajax('/TbItemType/getList', {
+							business: 0,
+							sortType: 0
+						}, function(resp) {
+							let list = resp.data;
+							this.businessTypeList = list;
+							this.getSortList();
+						}.bind(this))
+					},
+					getSortList() {
+						sa.ajax('/TbBusinessOrder/getList', function(resp) {
+							let dbList = resp.data;
+							let businessTypeList = this.businessTypeList;
+							let index = 0;
+							let list = [];
+							for(let i in dbList){
+								let item=dbList[i];
+								let obj={
+									index:index,
+									typeId:item.typeId,
+									interval:item.intervalTime,
+									singleIntervalTime:item.singleIntervalTime,
+									businessTypeList:businessTypeList
+								}
+								index++;
+								list.push(obj);
+							}
+							this.list = list;
+						}.bind(this))
+					},
+					// 创建一个 默认Model 
+					createModel: function() {
+						return {
+							id: '', //  
+							name: '', //  
+							typeId: '',
+							typeName: '', //  
+							sort: '', //  
+						}
+					},
+					// 提交数据 
+					ok: function() {
+						let list = this.list.filter(obj=>obj.itemId!='');
+						if(list.length==0){
+							sa.error('请设置项目')
+							return;
+						}
+						for (let i in list) {
+							let obj = list[i];
+							if(i==0){
+								obj.intervalTime=0;
+							}
+							let businessList = obj.businessTypeList;
+							let name = businessList.filter(type => type.id == obj.typeId)[0].name;
+							obj.typeName=name;
+						}
+						let obj={addJson:JSON.stringify(list)};
+						sa.ajax('/TbBusinessOrder/add', obj, function(res) {
+							sa.alert('设置成功', this.getBusinessType());
+						}.bind(this));
+					},
+					// 添加/修改 完成后的动作
+					clean: function() {
+						if (this.id == 0) {
+							this.m = this.createModel();
+						} else {
+							parent.app.f5(); // 刷新父页面列表
+							sa.closeCurrIframe(); // 关闭本页 
+						}
+					}
+				},
+				mounted: function() {
+					this.getBusinessType();
+					// 初始化数据 
+
+				}
+			})
+		</script>
+	</body>
+</html>

+ 29 - 4
sp-admin/sa-view/tb-business/tb-car-disincle-add.html

@@ -51,8 +51,13 @@
 											</el-option>
 											</el-option>
 										</el-select>
 										</el-select>
 									</div>
 									</div>
-									<sa-item name="车牌号" placeholder="请输入车牌号" v-model="m.carNo" br>
-									</sa-item>
+									<div class="c-item">
+										<label class="c-label"><span style="color: red;">*</span>车牌号:</label>
+										<el-autocomplete v-model="m.carNo" placeholder="请输入车牌号"
+											@select="handleSelectCar" value-key='carNo'
+											:fetch-suggestions="queryCarAsync">
+										</el-autocomplete>
+									</div>
 									<sa-item type="num" name="车辆规格(米)" placeholder="请输入车辆规格" v-model="m.carSize" br>
 									<sa-item type="num" name="车辆规格(米)" placeholder="请输入车辆规格" v-model="m.carSize" br>
 									</sa-item>
 									</sa-item>
 									<sa-item name="作业人员" placeholder="请输入作业人员" v-model="m.operator" br>
 									<sa-item name="作业人员" placeholder="请输入作业人员" v-model="m.operator" br>
@@ -71,7 +76,7 @@
 										placeholder="请输入车辆载重" v-model="m.carWeight" br>
 										placeholder="请输入车辆载重" v-model="m.carWeight" br>
 									</sa-item>
 									</sa-item>
 									<div class="c-item">
 									<div class="c-item">
-										<label class="c-label">作业时间:</label>
+										<label class="c-label"><span style="color: red;">*</span>作业时间:</label>
 										<el-date-picker type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
 										<el-date-picker type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
 											v-model="m.operateTime"></el-date-picker>
 											v-model="m.operateTime"></el-date-picker>
 									</div>
 									</div>
@@ -142,6 +147,7 @@
 						carSize: '',
 						carSize: '',
 						customerId: '',
 						customerId: '',
 						carType: '载重',
 						carType: '载重',
+						operateTime:'',
 						carWeight: '',
 						carWeight: '',
 						itemTypeId: ''
 						itemTypeId: ''
 					}, // 实体对象 
 					}, // 实体对象 
@@ -165,10 +171,25 @@
 					}
 					}
 				},
 				},
 				methods: {
 				methods: {
+					queryCarAsync(queryStr, cb) {
+						if(!queryStr){
+							cb([]);
+							return;
+						}
+						sa.ajaxNoLoading('/TbBusinessCar/searchInNotOutCar',{carNo:queryStr},function(resp){
+							cb(resp.data)
+						}.bind(this))
+					},
+					handleSelectCar(data) {
+						this.m.carNo = data.carNo;
+						if(!this.m.carSize){
+							this.m.carSize=data.carSize;
+						}
+					},
 					getCustomer() {
 					getCustomer() {
 						sa.ajax('/TbCostomer/getCurrentCustomerId', function(resp) {
 						sa.ajax('/TbCostomer/getCurrentCustomerId', function(resp) {
 							let id = resp.data;
 							let id = resp.data;
-							if (id == 1) {
+							if (id == '1') {
 								this.getCustomerList();
 								this.getCustomerList();
 							} else {
 							} else {
 								this.m.customerId = id;
 								this.m.customerId = id;
@@ -236,6 +257,10 @@
 							sa.error('请输入车牌号')
 							sa.error('请输入车牌号')
 							return false;
 							return false;
 						}
 						}
+						if (!m.operateTime) {
+							sa.error('请选择作业时间')
+							return false;
+						}
 						let checkList = this.checkList;
 						let checkList = this.checkList;
 						let itemList = this.items;
 						let itemList = this.items;
 						let list = itemList.filter(obj => checkList.indexOf(obj.id) !== -1);
 						let list = itemList.filter(obj => checkList.indexOf(obj.id) !== -1);

+ 28 - 4
sp-admin/sa-view/tb-business/tb-car-disincle-edit.html

@@ -51,8 +51,13 @@
 											</el-option>
 											</el-option>
 										</el-select>
 										</el-select>
 									</div>
 									</div>
-									<sa-item name="车牌号" placeholder="请输入车牌号" v-model="m.carNo" br>
-									</sa-item>
+									<div class="c-item">
+										<label class="c-label"><span style="color: red;">*</span>车牌号:</label>
+										<el-autocomplete v-model="m.carNo" placeholder="请输入车牌号"
+											@select="handleSelectCar" value-key='carNo'
+											:fetch-suggestions="queryCarAsync">
+										</el-autocomplete>
+									</div>
 									<sa-item type="num" name="车辆规格(米)" placeholder="请输入车辆规格" v-model="m.carSize" br>
 									<sa-item type="num" name="车辆规格(米)" placeholder="请输入车辆规格" v-model="m.carSize" br>
 									</sa-item>
 									</sa-item>
 									<sa-item name="作业人员" placeholder="请输入作业人员" v-model="m.operator" br>
 									<sa-item name="作业人员" placeholder="请输入作业人员" v-model="m.operator" br>
@@ -71,7 +76,7 @@
 										placeholder="请输入车辆载重" v-model="m.carWeight" br>
 										placeholder="请输入车辆载重" v-model="m.carWeight" br>
 									</sa-item>
 									</sa-item>
 									<div class="c-item">
 									<div class="c-item">
-										<label class="c-label">作业时间:</label>
+										<label class="c-label"><span style="color: red;">*</span>作业时间:</label>
 										<el-date-picker type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
 										<el-date-picker type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
 											v-model="m.operateTime"></el-date-picker>
 											v-model="m.operateTime"></el-date-picker>
 									</div>
 									</div>
@@ -168,6 +173,21 @@
 					}
 					}
 				},
 				},
 				methods: {
 				methods: {
+					queryCarAsync(queryStr, cb) {
+						if(!queryStr){
+							cb([]);
+							return;
+						}
+						sa.ajaxNoLoading('/TbBusinessCar/searchInNotOutCar',{carNo:queryStr},function(resp){
+							cb(resp.data)
+						}.bind(this))
+					},
+					handleSelectCar(data) {
+						this.m.carNo = data.carNo;
+						if(!this.m.carSize){
+							this.m.carSize=data.carSize;
+						}
+					},
 					itemChange() {
 					itemChange() {
 						sa.ajax('/TbItem/getTypeItemList', {
 						sa.ajax('/TbItem/getTypeItemList', {
 							pageNo: 1,
 							pageNo: 1,
@@ -196,7 +216,7 @@
 					getCustomer() {
 					getCustomer() {
 						sa.ajax('/TbCostomer/getCurrentCustomerId', function(resp) {
 						sa.ajax('/TbCostomer/getCurrentCustomerId', function(resp) {
 							let id = resp.data;
 							let id = resp.data;
-							if (id == 1) {
+							if (id == '1') {
 								this.getCustomerList();
 								this.getCustomerList();
 							} else {
 							} else {
 								this.m.customerId = id;
 								this.m.customerId = id;
@@ -261,6 +281,10 @@
 							sa.error('请输入车牌号')
 							sa.error('请输入车牌号')
 							return false;
 							return false;
 						}
 						}
+						if (!m.operateTime) {
+							sa.error('请选择作业时间')
+							return false;
+						}
 						let checkList = this.checkList;
 						let checkList = this.checkList;
 						let itemList = this.items;
 						let itemList = this.items;
 						let list = itemList.filter(obj => checkList.indexOf(obj.id) !== -1);
 						let list = itemList.filter(obj => checkList.indexOf(obj.id) !== -1);

+ 2 - 1
sp-admin/sa-view/tb-business/tb-car-disincle-list.html

@@ -51,6 +51,7 @@
 					<sa-td name="车辆类型" prop="goodsName"></sa-td>
 					<sa-td name="车辆类型" prop="goodsName"></sa-td>
 					<sa-td name="业务项" prop="itemTypeName" width="160"></sa-td>
 					<sa-td name="业务项" prop="itemTypeName" width="160"></sa-td>
 					<sa-td name="车牌号" prop="carNo"></sa-td>
 					<sa-td name="车牌号" prop="carNo"></sa-td>
+					<sa-td name="作业时间" prop="operateTime" width="160"></sa-td>
 					<sa-td name="确认" prop="adminConfirmInput" type="enum" :jv="{1: '已确认', 0: '未确认'}"></sa-td>
 					<sa-td name="确认" prop="adminConfirmInput" type="enum" :jv="{1: '已确认', 0: '未确认'}"></sa-td>
 					<sa-td name="已支付(元)" prop="payMoney" width="140"></sa-td>
 					<sa-td name="已支付(元)" prop="payMoney" width="140"></sa-td>
 					<sa-td name="业务用费(元)" prop="totalMoney" width="120"></sa-td>
 					<sa-td name="业务用费(元)" prop="totalMoney" width="120"></sa-td>
@@ -183,7 +184,7 @@
 					// 删除
 					// 删除
 					del: function(data) {
 					del: function(data) {
 						sa.confirm('是否删除,此操作不可撤销', function() {
 						sa.confirm('是否删除,此操作不可撤销', function() {
-							sa.ajax('/TbBusiness/deleteOtherBusiness?id=' + data.id, function(res) {
+							sa.ajax('/TbBusiness/deleteOtherBusiness?id=' + data.id+'&businessCarId='+data.businessCarId, function(res) {
 								sa.arrayDelete(this.dataList, data);
 								sa.arrayDelete(this.dataList, data);
 								sa.ok('删除成功');
 								sa.ok('删除成功');
 								sa.f5TableHeight(); // 刷新表格高度 
 								sa.f5TableHeight(); // 刷新表格高度 

+ 2 - 2
sp-admin/sa-view/tb-item-type/tb-item-list.html

@@ -40,12 +40,12 @@
 					<sa-td name="价格" prop="price"></sa-td>
 					<sa-td name="价格" prop="price"></sa-td>
 					<sa-td name="计价单位" prop="unit"></sa-td>
 					<sa-td name="计价单位" prop="unit"></sa-td>
 					<sa-td name="税率(%)" prop="taxRate"></sa-td>
 					<sa-td name="税率(%)" prop="taxRate"></sa-td>
-					<sa-td name="适合规格(米)">
+					<sa-td name="适合规格(米)" width="120">
 						<template slot-scope="s">
 						<template slot-scope="s">
 							<label>{{s.row.minLength}}—{{s.row.carLength}}</label>
 							<label>{{s.row.minLength}}—{{s.row.carLength}}</label>
 						</template>
 						</template>
 					</sa-td>
 					</sa-td>
-					<sa-td name="适合载重(吨)">
+					<sa-td name="适合载重(kg)" width="120">
 						<template slot-scope="s">
 						<template slot-scope="s">
 							<label>{{s.row.minWeight}}—{{s.row.maxWeight}}</label>
 							<label>{{s.row.minWeight}}—{{s.row.maxWeight}}</label>
 						</template>
 						</template>

+ 58 - 13
sp-server/src/main/java/com/pj/api/service/ApiService.java

@@ -27,6 +27,8 @@ import com.pj.project.tb_business_car.TbBusinessCar;
 import com.pj.project.tb_business_car.TbBusinessCarService;
 import com.pj.project.tb_business_car.TbBusinessCarService;
 import com.pj.project.tb_business_item.TbBusinessItem;
 import com.pj.project.tb_business_item.TbBusinessItem;
 import com.pj.project.tb_business_item.TbBusinessItemService;
 import com.pj.project.tb_business_item.TbBusinessItemService;
+import com.pj.project.tb_business_sort.TbBusinessSort;
+import com.pj.project.tb_business_sort.TbBusinessSortService;
 import com.pj.project.tb_car.TbCar;
 import com.pj.project.tb_car.TbCar;
 import com.pj.project.tb_car.TbCarService;
 import com.pj.project.tb_car.TbCarService;
 import com.pj.project.tb_costomer.TbCostomer;
 import com.pj.project.tb_costomer.TbCostomer;
@@ -58,6 +60,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.*;
@@ -109,6 +112,9 @@ public class ApiService {
     @Resource
     @Resource
     private TbItemTypeService tbItemTypeService;
     private TbItemTypeService tbItemTypeService;
 
 
+    @Resource
+    private TbBusinessSortService tbBusinessSortService;
+
     private final List<String> CAR_LIST = StrUtil.splitTrim("浙,粤,京,津,冀,晋,蒙,辽,黑,沪,吉,苏,皖,赣,鲁,豫,鄂,湘,桂,琼,渝,川,贵,云,藏, 陕, 甘, 青, 宁", ",");
     private final List<String> CAR_LIST = StrUtil.splitTrim("浙,粤,京,津,冀,晋,蒙,辽,黑,沪,吉,苏,皖,赣,鲁,豫,鄂,湘,桂,琼,渝,川,贵,云,藏, 陕, 甘, 青, 宁", ",");
 
 
 
 
@@ -307,27 +313,23 @@ public class ApiService {
             throw new BusinessException("请选择明细");
             throw new BusinessException("请选择明细");
         }
         }
         String carNo = otherBusinessBO.getCarNo().trim().toUpperCase();
         String carNo = otherBusinessBO.getCarNo().trim().toUpperCase();
-        for (TbItem tbItem1 : tbItems) {
-            List<TbBusinessCar> tbBusinessCarList = tbBusinessCarService.findTodayRecord(carNo, tbItem1.getId());
-            if (!tbBusinessCarList.isEmpty()) {
-                throw new BusinessException("该车当天已有相同业务");
-            }
-        }
+        checkOtherBusiness(otherBusinessBO, tbItems, carNo);
         TbBusinessCar db = tbBusinessCarService.findNotOutCar(carNo);
         TbBusinessCar db = tbBusinessCarService.findNotOutCar(carNo);
         String customerId = otherBusinessBO.getCustomerId();
         String customerId = otherBusinessBO.getCustomerId();
         TbItemType tbItemType = tbItemTypeService.getById(otherBusinessBO.getItemTypeId());
         TbItemType tbItemType = tbItemTypeService.getById(otherBusinessBO.getItemTypeId());
+        TbCar tbCar = tbCarService.findByCardNo(carNo);
         if (db == null) {
         if (db == null) {
             db = tbBusinessCarService.findNotInCar(carNo);
             db = tbBusinessCarService.findNotInCar(carNo);
             if (db == null) {
             if (db == null) {
-                TbCar tbCar = tbCarService.findByCardNo(carNo);
                 db = new TbBusinessCar();
                 db = new TbBusinessCar();
-                db.setPay(0).setCarNo(carNo).setBusinessType(TbBusiness.BusinessType.CAR_DISINCLE.getCode())
-                        .setIsLock(0).setCarCompany(tbCar != null ? tbCar.getCustomerName() : "临时");
-                db.setCarSize(otherBusinessBO.getCarSize()).setTimeUpdate(new Date()).setCustomerId(customerId)
-                        .setNo(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + RandomUtil.randomNumbers(4));
-                tbBusinessCarService.save(db);
             }
             }
         }
         }
+        db.setPay(0).setCarNo(carNo).setBusinessType(TbBusiness.BusinessType.CAR_DISINCLE.getCode())
+                .setBusinessType(TbBusiness.BusinessType.CAR_DISINCLE.getCode())
+                .setIsLock(0).setCarCompany(tbCar != null ? tbCar.getCustomerName() : "临时");
+        db.setCarSize(otherBusinessBO.getCarSize()).setTimeUpdate(new Date()).setCustomerId(customerId)
+                .setNo(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + RandomUtil.randomNumbers(4));
+        tbBusinessCarService.saveOrUpdate(db);
         TbBusiness tbBusiness = new TbBusiness();
         TbBusiness tbBusiness = new TbBusiness();
         tbBusiness.setBusinessCarId(db.getId()).setPayStep(tbItemType.getPayStep());
         tbBusiness.setBusinessCarId(db.getId()).setPayStep(tbItemType.getPayStep());
         TbCostomer tbCostomer = tbCostomerService.getById(customerId);
         TbCostomer tbCostomer = tbCostomerService.getById(customerId);
@@ -388,9 +390,10 @@ public class ApiService {
         }
         }
         TbItemType tbItemType = tbItemTypeService.getById(otherBusinessBO.getItemTypeId());
         TbItemType tbItemType = tbItemTypeService.getById(otherBusinessBO.getItemTypeId());
         String businessId = otherBusinessBO.getId();
         String businessId = otherBusinessBO.getId();
+        tbBusinessItemService.removeByBusinessId(businessId);
         String carNo = otherBusinessBO.getCarNo();
         String carNo = otherBusinessBO.getCarNo();
         String customerId = otherBusinessBO.getCustomerId();
         String customerId = otherBusinessBO.getCustomerId();
-        tbBusinessItemService.removeByBusinessId(businessId);
+        checkOtherBusiness(otherBusinessBO, tbItems, carNo);
         TbCostomer tbCostomer = tbCostomerService.getById(customerId);
         TbCostomer tbCostomer = tbCostomerService.getById(customerId);
         TbBusiness tbBusiness = tbBusinessService.getById(businessId);
         TbBusiness tbBusiness = tbBusinessService.getById(businessId);
         tbBusiness.setOperateTime(otherBusinessBO.getOperateTime())
         tbBusiness.setOperateTime(otherBusinessBO.getOperateTime())
@@ -440,4 +443,46 @@ public class ApiService {
 
 
     }
     }
 
 
+    private void checkOtherBusiness(OtherBusinessBO otherBusinessBO, List<TbItem> tbItems, String carNo) {
+        SoMap soMap = SoMap.getRequestSoMap();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        List<TbBusinessSort> sorts = tbBusinessSortService.getList(soMap);
+        LocalDateTime operateTime = LocalDateTime.parse(otherBusinessBO.getOperateTime(), formatter);
+        String today=DateUtil.today();
+        int i = 0;
+        List<String> businessTypeList = tbItems.stream().map(TbItem::getBusinessType).collect(Collectors.toList());
+        for (TbBusinessSort tbBusinessSort : sorts) {
+            if (i==0&&StrUtil.equals(tbBusinessSort.getTypeId(),otherBusinessBO.getItemTypeId())&&sorts.size()>1){
+                TbBusinessSort afterItem = sorts.get(i +1);
+                String typeId = afterItem.getTypeId();
+                Integer interval = afterItem.getIntervalTime();
+                LocalDateTime endTime = operateTime.plusMinutes(interval);
+                int count = tbBusinessService.checkCarBusinessType(typeId, carNo, endTime.format(formatter),1);
+                if (count > 0) {
+                    throw new BusinessException("车辆:[" + carNo + "]" + tbBusinessSort.getTypeName() + "后" + afterItem.getIntervalTime() + "分钟才可以执行" + afterItem.getTypeName());
+                }
+            }
+            if (i > 0 &&StrUtil.equals(tbBusinessSort.getTypeId(),otherBusinessBO.getItemTypeId())) {
+                TbBusinessSort beforeItem = sorts.get(i - 1);
+                String typeId = beforeItem.getTypeId();
+                Integer interval = tbBusinessSort.getIntervalTime();
+                LocalDateTime endTime = operateTime.minusMinutes(interval);
+                int count = tbBusinessService.checkCarBusinessType(typeId, carNo, endTime.format(formatter),0);
+                if (count > 0) {
+                    throw new BusinessException("车辆:[" + carNo + "]" + beforeItem.getTypeName() + "后" + tbBusinessSort.getIntervalTime() + "分钟才可以执行" + tbBusinessSort.getTypeName());
+                }
+            }
+            String typeId = otherBusinessBO.getItemTypeId();
+            Integer singleIntervalTime = tbBusinessSort.getSingleIntervalTime();
+            String timeStart = operateTime.minusHours(singleIntervalTime).format(formatter);
+            String businessId = otherBusinessBO.getId();
+            String timeEnd = operateTime.plusHours(singleIntervalTime).format(formatter);
+            int count = tbBusinessService.checkCarBusinessType(typeId, carNo, timeStart, timeEnd, businessId);
+            if (count > 0) {
+                throw new BusinessException("车辆:[" + carNo + "]" + singleIntervalTime + "小时内已有相同作业");
+            }
+            i++;
+        }
+    }
+
 }
 }

+ 1 - 0
sp-server/src/main/java/com/pj/project/tb_business/CarDisincle.java

@@ -14,6 +14,7 @@ public class CarDisincle implements Serializable {
     private String carNo;
     private String carNo;
     private String cardSize;
     private String cardSize;
     private String netWeight;
     private String netWeight;
+    private String operateTime;
     private String goodsName;
     private String goodsName;
     private String payStatus;
     private String payStatus;
     private Integer adminConfirmInput;
     private Integer adminConfirmInput;

+ 1 - 1
sp-server/src/main/java/com/pj/project/tb_business/TbBusinessController.java

@@ -319,7 +319,7 @@ public class TbBusinessController {
     }
     }
 
 
     @RequestMapping("deleteOtherBusiness")
     @RequestMapping("deleteOtherBusiness")
-    public AjaxJson deleteOtherBusiness(String id) {
+    public AjaxJson deleteOtherBusiness(String id,String businessCarId) {
         tbBusinessService.deleteOtherBusiness(id);
         tbBusinessService.deleteOtherBusiness(id);
         return AjaxJson.getSuccess();
         return AjaxJson.getSuccess();
     }
     }

+ 6 - 0
sp-server/src/main/java/com/pj/project/tb_business/TbBusinessMapper.java

@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 
 
 import com.pj.utils.so.*;
 import com.pj.utils.so.*;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 import org.springframework.stereotype.Repository;
 
 
 /**
 /**
@@ -28,4 +29,9 @@ public interface TbBusinessMapper extends BaseMapper<TbBusiness> {
 
 
     List<CarDisincle> getCarDisincleList(SoMap soMap);
     List<CarDisincle> getCarDisincleList(SoMap soMap);
 
 
+    int checkCarBusinessType(@Param("typeId") String typeId,@Param("carNo") String carNo, @Param("operateTime")String operateTime,@Param("before")int before);
+
+    int checkCarBusinessTypeByTime(@Param("typeId") String typeId, @Param("carNo") String carNo,
+                                          @Param("timeStart")String timeStart,
+                                          @Param("timeEnd") String timeEnd,  @Param("businessId")String businessId);
 }
 }

+ 34 - 1
sp-server/src/main/java/com/pj/project/tb_business/TbBusinessMapper.xml

@@ -71,7 +71,7 @@
 		SELECT
 		SELECT
             a.id,
             a.id,
             b.id as businessCarId,
             b.id as businessCarId,
-            a.`no`,
+            a.`no`,a.operate_time,
             a.item_price,a.goods_name,a.admin_confirm_input,b.car_no,
             a.item_price,a.goods_name,a.admin_confirm_input,b.car_no,
             b.base_part_money,a.total_money,a.pay_money,a.create_time,
             b.base_part_money,a.total_money,a.pay_money,a.create_time,
             b.real_in_time,b.real_out_time,b.car_no ,a.net_weight,a.card_size,a.pay_status,a.item_type_name
             b.real_in_time,b.real_out_time,b.car_no ,a.net_weight,a.card_size,a.pay_status,a.item_type_name
@@ -91,6 +91,39 @@
         </if>
         </if>
         ORDER BY a.create_time desc
         ORDER BY a.create_time desc
 	</select>
 	</select>
+    <select id="checkCarBusinessType" resultType="java.lang.Integer">
+        SELECT
+	        count(a.id)
+        FROM
+            tb_business_car a,
+            tb_business b
+        WHERE
+            a.id = b.business_car_id
+            AND a.car_no =#{carNo}
+            and b.item_type_id=#{typeId}
+            <if test="before==1">
+                AND DATE_FORMAT( b.operate_time, '%Y-%m-%d %H:%i:%s' ) &lt; #{operateTime}
+            </if>
+        <if test="before==0">
+            AND DATE_FORMAT( b.operate_time, '%Y-%m-%d %H:%i:%s' ) &gt; #{operateTime}
+        </if>
+    </select>
+    <select id="checkCarBusinessTypeByTime" resultType="java.lang.Integer">
+          SELECT
+	        count(b.id)
+        FROM
+            tb_business_car a,
+            tb_business b
+        WHERE
+            a.id = b.business_car_id
+            AND a.car_no =#{carNo}
+            and b.item_type_id=#{typeId}
+            AND DATE_FORMAT( b.operate_time, '%Y-%m-%d %H:%i:%s' ) &gt; #{timeStart}
+            and DATE_FORMAT( b.operate_time, '%Y-%m-%d %H:%i:%s' ) &lt; #{timeEnd}
+            <if test="businessId!=null and businessId !=''">
+                and b.id !=#{businessId}
+            </if>
+    </select>
 
 
 
 
 </mapper>
 </mapper>

+ 12 - 1
sp-server/src/main/java/com/pj/project/tb_business/TbBusinessService.java

@@ -652,8 +652,19 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
 
 
     public void deleteOtherBusiness(String id) {
     public void deleteOtherBusiness(String id) {
         TbBusiness db = super.getById(id);
         TbBusiness db = super.getById(id);
+        List<TbBusiness>businesses=this.findOtherBusinessByCarId(db.getBusinessCarId());
+        if (businesses.size()==1){
+            tbBusinessCarService.removeById(db.getBusinessCarId());
+        }
         this.removeById(id);
         this.removeById(id);
         tbBusinessItemService.removeByBusinessId(id);
         tbBusinessItemService.removeByBusinessId(id);
-        tbBusinessCarService.removeById(db.getBusinessCarId());
+    }
+
+    public int checkCarBusinessType(String typeId, String carNo, String operateTime,int before) {
+        return tbBusinessMapper.checkCarBusinessType(typeId,carNo,operateTime,before);
+    }
+
+    public int checkCarBusinessType(String typeId, String carNo, String timeStart, String timeEnd, String businessId) {
+        return tbBusinessMapper.checkCarBusinessTypeByTime(typeId,carNo,timeStart,timeEnd,businessId);
     }
     }
 }
 }

+ 6 - 0
sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarController.java

@@ -111,6 +111,12 @@ public class TbBusinessCarController {
     	SoMap soMap=SoMap.getRequestSoMap();
     	SoMap soMap=SoMap.getRequestSoMap();
         return AjaxJson.getSuccessData( tbBusinessCarService.export(soMap));
         return AjaxJson.getSuccessData( tbBusinessCarService.export(soMap));
     }
     }
+    @RequestMapping("searchInNotOutCar")
+    public AjaxJson searchInNotOutCar() {
+		SoMap soMap=SoMap.getRequestSoMap();
+		String carNo=soMap.getString("carNo");
+        return AjaxJson.getSuccessData( tbBusinessCarService.findNotOutCarLike(carNo));
+    }
 
 
 
 
 	
 	

+ 2 - 0
sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarMapper.java

@@ -36,4 +36,6 @@ public interface TbBusinessCarMapper extends BaseMapper<TbBusinessCar> {
     List<TbBusinessCar> searchOtherBusinessCar(String carNo);
     List<TbBusinessCar> searchOtherBusinessCar(String carNo);
 
 
     List<TbBusinessCar> findTodayRecord(@Param("carNo") String carNo, @Param("itemId") String itemId);
     List<TbBusinessCar> findTodayRecord(@Param("carNo") String carNo, @Param("itemId") String itemId);
+
+    int checkCarBusinessType(@Param("typeId")String typeId, @Param("carNo")String carNo,@Param("timeEnd") String timeEnd);
 }
 }

+ 18 - 4
sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarMapper.xml

@@ -45,16 +45,16 @@
                 and   real_out_time is  null
                 and   real_out_time is  null
             </if>
             </if>
             <if test="leaveStart!=null and leaveStart !=''">
             <if test="leaveStart!=null and leaveStart !=''">
-              and  date_format(real_out_time,'%Y-%m-%d %H:%m:%s') &gt;=#{leaveStart}
+              and  date_format(real_out_time,'%Y-%m-%d %H:%i:%s') &gt;=#{leaveStart}
             </if>
             </if>
             <if test="leaveEnd!=null and leaveEnd !=''">
             <if test="leaveEnd!=null and leaveEnd !=''">
-                and  date_format(real_out_time,'%Y-%m-%d %H:%m:%s') &lt;=#{leaveEnd}
+                and  date_format(real_out_time,'%Y-%m-%d %H:%i:%s') &lt;=#{leaveEnd}
             </if>
             </if>
             <if test="inStart!=null and inStart !=''">
             <if test="inStart!=null and inStart !=''">
-                and  date_format(real_in_time,'%Y-%m-%d %H:%m:%s') &gt;=#{inStart}
+                and  date_format(real_in_time,'%Y-%m-%d %H:%i:%s') &gt;=#{inStart}
             </if>
             </if>
             <if test="inEnd!=null and inEnd !=''">
             <if test="inEnd!=null and inEnd !=''">
-                and  date_format(real_in_time,'%Y-%m-%d %H:%m:%s') &lt;=#{inEnd}
+                and  date_format(real_in_time,'%Y-%m-%d %H:%i:%s') &lt;=#{inEnd}
             </if>
             </if>
             <if test="color !=null and color !='' and color !='其他'">
             <if test="color !=null and color !='' and color !='其他'">
                 and color=#{color}
                 and color=#{color}
@@ -122,6 +122,20 @@
          and c.item_id=#{itemId};
          and c.item_id=#{itemId};
 
 
     </select>
     </select>
+    <select id="checkCarBusinessType" resultType="java.lang.Integer">
+        SELECT
+            count(a.id)
+            FROM
+            tb_business_car a,
+            tb_business b,
+            tb_business_item c
+        WHERE
+            a.id = b.business_car_id
+            AND b.id = c.business_id
+        AND a.car_no=#{carNo}
+        and c.business_type=#{typeId}
+        and DATE_FORMAT(b.operate_time,'%y-%m-%d %H:%i:%s') &gt;#{timeEnd}
+    </select>
 
 
 
 
 </mapper>
 </mapper>

+ 24 - 6
sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarService.java

@@ -33,6 +33,7 @@ import com.pj.project.tb_car_no_color.TbCarNoColor;
 import com.pj.project.tb_car_no_color.TbCarNoColorService;
 import com.pj.project.tb_car_no_color.TbCarNoColorService;
 import com.pj.project.tb_fee_details.TbFeeDetails;
 import com.pj.project.tb_fee_details.TbFeeDetails;
 import com.pj.project.tb_fee_details.TbFeeDetailsService;
 import com.pj.project.tb_fee_details.TbFeeDetailsService;
+import com.pj.project4sp.global.BusinessException;
 import com.pj.project4sp.uploadfile.UploadConfig;
 import com.pj.project4sp.uploadfile.UploadConfig;
 import com.pj.utils.so.SoMap;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -81,15 +82,15 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
     List<TbBusinessCar> getList(SoMap so) {
     List<TbBusinessCar> getList(SoMap so) {
         List<TbBusinessCar> list = tbBusinessCarMapper.getList(so);
         List<TbBusinessCar> list = tbBusinessCarMapper.getList(so);
         List<TbCarNoColor> carNoColors = tbCarNoColorService.getFreeColor();
         List<TbCarNoColor> carNoColors = tbCarNoColorService.getFreeColor();
-       String colorStr= carNoColors.stream().map(TbCarNoColor::getCarNoColor).collect(Collectors.joining(""));
+        String colorStr = carNoColors.stream().map(TbCarNoColor::getCarNoColor).collect(Collectors.joining(""));
         for (TbBusinessCar tbBusinessCar : list) {
         for (TbBusinessCar tbBusinessCar : list) {
-            String color=tbBusinessCar.getColor();
+            String color = tbBusinessCar.getColor();
             TbCar tbCar = tbCarService.findByCardNo(tbBusinessCar.getCarNo());
             TbCar tbCar = tbCarService.findByCardNo(tbBusinessCar.getCarNo());
             if (tbCar != null && !TbCar.CarTypeEnum.BUSINESS_CAR.getType().equals(tbCar.getCarType())) {
             if (tbCar != null && !TbCar.CarTypeEnum.BUSINESS_CAR.getType().equals(tbCar.getCarType())) {
                 tbBusinessCar.setPayType("免费");
                 tbBusinessCar.setPayType("免费");
                 continue;
                 continue;
             }
             }
-            if (StrUtil.isNotEmpty(color)&&colorStr.contains(color.substring(0,1))){
+            if (StrUtil.isNotEmpty(color) && colorStr.contains(color.substring(0, 1))) {
                 tbBusinessCar.setPayType("免费");
                 tbBusinessCar.setPayType("免费");
                 continue;
                 continue;
             }
             }
@@ -101,7 +102,7 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
                 long minutes = ChronoUnit.MINUTES.between(inDayTime, outDayTime);
                 long minutes = ChronoUnit.MINUTES.between(inDayTime, outDayTime);
                 PartConfig partConfig = SpringUtil.getBean(PartConfig.class);
                 PartConfig partConfig = SpringUtil.getBean(PartConfig.class);
                 if (minutes < partConfig.getFreeMinutes()
                 if (minutes < partConfig.getFreeMinutes()
-                        || (!CAR_LIST.contains(tbBusinessCar.getCarNo().substring(0, 1)) &&TbBusiness.BusinessType.HOLD_CAR.getCode().equals(tbBusinessCar.getBusinessType()))) {
+                        || (!CAR_LIST.contains(tbBusinessCar.getCarNo().substring(0, 1)) && TbBusiness.BusinessType.HOLD_CAR.getCode().equals(tbBusinessCar.getBusinessType()))) {
                     tbBusinessCar.setPayType("免费");
                     tbBusinessCar.setPayType("免费");
                     continue;
                     continue;
                 }
                 }
@@ -127,6 +128,7 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
                 .isNull("real_out_time");
                 .isNull("real_out_time");
         return getOne(ew);
         return getOne(ew);
     }
     }
+
     public TbBusinessCar findInAndHasBusinessCar(String carNo) {
     public TbBusinessCar findInAndHasBusinessCar(String carNo) {
         QueryWrapper<TbBusinessCar> ew = new QueryWrapper<>();
         QueryWrapper<TbBusinessCar> ew = new QueryWrapper<>();
         ew.eq("car_no", carNo.toUpperCase())
         ew.eq("car_no", carNo.toUpperCase())
@@ -172,6 +174,10 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
         ew.eq("car_no", carNo.toUpperCase())
         ew.eq("car_no", carNo.toUpperCase())
                 .isNull("real_out_time")
                 .isNull("real_out_time")
                 .isNotNull("real_in_time");
                 .isNotNull("real_in_time");
+        List<TbBusinessCar> list = list(ew);
+        if (list.size() > 1) {
+            throw new BusinessException("该车有多个未出场记录");
+        }
         return getOne(ew);
         return getOne(ew);
     }
     }
 
 
@@ -385,10 +391,22 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
     }
     }
 
 
     public List<TbBusinessCar> searchOtherBusinessCar(String carNo) {
     public List<TbBusinessCar> searchOtherBusinessCar(String carNo) {
-       return tbBusinessCarMapper.searchOtherBusinessCar(carNo);
+        return tbBusinessCarMapper.searchOtherBusinessCar(carNo);
     }
     }
 
 
     public List<TbBusinessCar> findTodayRecord(String carNo, String itemId) {
     public List<TbBusinessCar> findTodayRecord(String carNo, String itemId) {
-        return tbBusinessCarMapper.findTodayRecord(carNo,itemId);
+        return tbBusinessCarMapper.findTodayRecord(carNo, itemId);
+    }
+
+    public int checkCarBusinessType(String typeId, String carNo, String timeEnd) {
+        return tbBusinessCarMapper.checkCarBusinessType(typeId, carNo, timeEnd);
+    }
+
+    public List<TbBusinessCar> findNotOutCarLike(String carNo) {
+        QueryWrapper<TbBusinessCar> ew = new QueryWrapper<>();
+        ew.select("car_no,car_size");
+        ew.like("car_no", carNo.toUpperCase());
+        List<TbBusinessCar>list=list(ew);
+        return list.stream().distinct().collect(Collectors.toList());
     }
     }
 }
 }

+ 15 - 0
sp-server/src/main/java/com/pj/project/tb_business_sort/AddBusinessSortBO.java

@@ -0,0 +1,15 @@
+package com.pj.project.tb_business_sort;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+@Data
+@Accessors(chain = true)
+public class AddBusinessSortBO implements Serializable {
+    private String id;
+    private String typeId;
+    private String typeName;
+    private Integer interval;
+    private Integer singleIntervalTime;
+}

+ 69 - 0
sp-server/src/main/java/com/pj/project/tb_business_sort/TbBusinessSort.java

@@ -0,0 +1,69 @@
+package com.pj.project.tb_business_sort;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.EqualsAndHashCode;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * Model: tb_business_order -- 业务顺序
+ * @author qzy 
+ */
+@Data
+@Accessors(chain = true)
+@TableName(TbBusinessSort.TABLE_NAME)
+@EqualsAndHashCode(callSuper = false)
+public class TbBusinessSort extends Model<TbBusinessSort> implements Serializable {
+
+	// ---------- 模块常量 ----------
+	/**
+	 * 序列化版本id 
+	 */
+	private static final long serialVersionUID = 1L;	
+	/**
+	 * 此模块对应的表名 
+	 */
+	public static final String TABLE_NAME = "tb_business_sort";
+	/**
+	 * 此模块对应的权限码 
+	 */
+	public static final String PERMISSION_CODE = "tb_business_sort";
+
+
+	// ---------- 表中字段 ----------
+	/**
+	 *  
+	 */
+	@TableId(type = IdType.AUTO)
+	private Long id;	
+
+	/**
+	 *  
+	 */
+	private String name;	
+
+	/**
+	 *  
+	 */
+	private String typeId;
+
+	private String typeName;
+
+	/**
+	 *  
+	 */
+	private Integer sort=1;
+	private Integer intervalTime=30;
+	private Integer singleIntervalTime=24;
+
+
+
+
+
+	
+
+
+}

+ 76 - 0
sp-server/src/main/java/com/pj/project/tb_business_sort/TbBusinessSortController.java

@@ -0,0 +1,76 @@
+package com.pj.project.tb_business_sort;
+
+import java.util.List;
+
+import com.pj.utils.so.SoMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import com.pj.utils.sg.*;
+import com.pj.project4sp.SP;
+
+import com.pj.current.satoken.StpUserUtil;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+
+/**
+ * Controller: tb_business_order -- 业务顺序
+ * @author qzy 
+ */
+@RestController
+@RequestMapping("/TbBusinessOrder/")
+public class TbBusinessSortController {
+
+	/** 底层 Service 对象 */
+	@Autowired
+	TbBusinessSortService tbBusinessSortService;
+
+	/** 增 */  
+	@RequestMapping("add")
+	public AjaxJson add(){
+		SoMap so = SoMap.getRequestSoMap();
+		String addJson=so.getString("addJson");
+		tbBusinessSortService.add(addJson);
+
+		return AjaxJson.getSuccess();
+	}
+
+	
+	/** 改 */  
+	@RequestMapping("update")
+	@SaCheckPermission(TbBusinessSort.PERMISSION_CODE)
+	public AjaxJson update(TbBusinessSort t){
+		tbBusinessSortService.update(t);
+		return AjaxJson.getSuccess();
+	}
+
+	/** 查 - 根据id */  
+	@RequestMapping("getById")
+	public AjaxJson getById(Long id){
+		TbBusinessSort t = tbBusinessSortService.getById(id);
+		return AjaxJson.getSuccessData(t);
+	}
+
+	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */  
+	@RequestMapping("getList")
+	public AjaxJson getList() { 
+		SoMap so = SoMap.getRequestSoMap();
+		List<TbBusinessSort> list = tbBusinessSortService.getList(so.startPage());
+		return AjaxJson.getPageData(so.getDataCount(), list);
+	}
+	
+	
+	
+	
+	// ------------------------- 前端接口 -------------------------
+	
+	
+
+	
+	
+	
+	
+	
+
+}

+ 29 - 0
sp-server/src/main/java/com/pj/project/tb_business_sort/TbBusinessSortMapper.java

@@ -0,0 +1,29 @@
+package com.pj.project.tb_business_sort;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+
+import com.pj.utils.so.*;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * Mapper: tb_business_order -- 业务顺序
+ * @author qzy 
+ */
+
+@Mapper
+@Repository
+public interface TbBusinessSortMapper extends BaseMapper <TbBusinessSort> {
+
+
+	/**
+	 * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+	 * @param so 参数集合 
+	 * @return 数据列表 
+	 */
+	List<TbBusinessSort> getList(SoMap so);
+
+
+}

+ 50 - 0
sp-server/src/main/java/com/pj/project/tb_business_sort/TbBusinessSortMapper.xml

@@ -0,0 +1,50 @@
+<?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.pj.project.tb_business_sort.TbBusinessSortMapper">
+
+	<!-- ================================== 查询相关 ================================== -->
+	<!-- select id, name, type_name, sort from tb_business_sort  -->
+	
+	<!-- 通用映射:手动模式 -->
+	<resultMap id="model" type="com.pj.project.tb_business_sort.TbBusinessSort">
+		<result property="id" column="id" />
+		<result property="name" column="name" />
+		<result property="typeName" column="type_name" />
+		<result property="sort" column="sort" />
+	</resultMap>
+	
+	<!-- 公共查询sql片段 -->
+	<sql id="select_sql">
+		select * 
+		from tb_business_sort 
+	</sql>
+
+	
+	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
+	<select id="getList" resultMap="model">
+		<include refid="select_sql"></include>
+		<where>
+			<if test=' this.has("name") '> and name = #{name} </if>
+			<if test=' this.has("typeName") '> and type_name = #{typeName} </if>
+			<if test=' this.has("sort") '> and sort = #{sort} </if>
+		</where>
+		order by
+		<choose>
+			<when test='sortType == 1'> id desc </when>
+			<when test='sortType == 2'> name desc </when>
+			<when test='sortType == 3'> type_name desc </when>
+			<when test='sortType == 4'> sort desc </when>
+			<otherwise> sort asc </otherwise>
+		</choose>
+	</select>
+	
+	
+	
+	
+	
+	
+	
+	
+	
+
+</mapper>

+ 80 - 0
sp-server/src/main/java/com/pj/project/tb_business_sort/TbBusinessSortService.java

@@ -0,0 +1,80 @@
+package com.pj.project.tb_business_sort;
+
+import java.util.List;
+
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.pj.project.tb_costomer.TbCostomer;
+import com.pj.project.tb_costomer.TbCostomerMapper;
+import com.pj.project.tb_item_type.TbItemType;
+import com.pj.project.tb_item_type.TbItemTypeService;
+import com.pj.utils.so.SoMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+
+/**
+ * Service: tb_business_order -- 业务顺序
+ *
+ * @author qzy
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class TbBusinessSortService extends ServiceImpl<TbBusinessSortMapper, TbBusinessSort> implements IService<TbBusinessSort> {
+
+    /**
+     * 底层 Mapper 对象
+     */
+    @Autowired
+    TbBusinessSortMapper tbBusinessOrderMapper;
+    @Resource
+    private TbItemTypeService tbItemTypeService;
+
+    /**
+     * 增
+     */
+    void add(String addJson) {
+        remove(new QueryWrapper<>());
+        List<AddBusinessSortBO> businessSortBOS = JSONUtil.toList(addJson, AddBusinessSortBO.class);
+        int sort = 1;
+        for (AddBusinessSortBO addBusinessSortBO : businessSortBOS) {
+            TbBusinessSort tbBusinessSort = new TbBusinessSort();
+            tbBusinessSort.setSingleIntervalTime(addBusinessSortBO.getSingleIntervalTime())
+                    .setTypeId(addBusinessSortBO.getTypeId())
+                    .setTypeName(addBusinessSortBO.getTypeName()).setSort(sort)
+                    .setIntervalTime(addBusinessSortBO.getInterval());
+            if (sort == 1) {
+                tbBusinessSort.setIntervalTime(0);
+            }
+            this.save(tbBusinessSort);
+            sort++;
+        }
+    }
+
+    /**
+     * 改
+     */
+    void update(TbBusinessSort t) {
+        this.updateById(t);
+    }
+
+    /**
+     * 查
+     */
+    TbBusinessSort getById(Long id) {
+        return super.getById(id);
+    }
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    public List<TbBusinessSort> getList(SoMap so) {
+        return tbBusinessOrderMapper.getList(so);
+    }
+
+
+}

+ 1 - 1
sp-server/src/main/java/com/pj/project/tb_item_type/TbItemTypeService.java

@@ -64,7 +64,7 @@ public class TbItemTypeService extends ServiceImpl<TbItemTypeMapper, TbItemType>
     /**
     /**
      * 查集合 - 根据条件(参数为空时代表忽略指定条件)
      * 查集合 - 根据条件(参数为空时代表忽略指定条件)
      */
      */
-    List<TbItemType> getList(SoMap so) {
+  public   List<TbItemType> getList(SoMap so) {
         List<TbItemType> list = tbItemTypeMapper.getList(so);
         List<TbItemType> list = tbItemTypeMapper.getList(so);
         String customerId = StpUserUtil.getCustomerId();
         String customerId = StpUserUtil.getCustomerId();
         if (!UserTypeEnum.PLATFORM_ADMIN.getCustomerId().equals(customerId)) {
         if (!UserTypeEnum.PLATFORM_ADMIN.getCustomerId().equals(customerId)) {