qzyReal 3 жил өмнө
parent
commit
fa8dd26660
24 өөрчлөгдсөн 395 нэмэгдсэн , 185 устгасан
  1. 1 1
      app/manifest.json
  2. 5 4
      app/pages/onely-disinfect/add-remark.vue
  3. 7 4
      app/pages/onely-disinfect/car-manager.vue
  4. 31 9
      app/pages/onely-disinfect/type-business-edit.vue
  5. 38 12
      app/pages/onely-disinfect/type-business.vue
  6. 2 2
      app/utils/request.js
  7. 1 28
      sp-admin/sa-view-sp/console/com-sta-data.vue
  8. 97 12
      sp-admin/sa-view-sp/console/console-main.html
  9. 1 1
      sp-admin/sa-view/tb-business-car/tb-business-car-add.html
  10. 16 12
      sp-admin/sa-view/tb-business/tb-car-disincle-add.html
  11. 36 28
      sp-admin/sa-view/tb-business/tb-car-disincle-edit.html
  12. 3 1
      sp-admin/sa-view/tb-business/tb-car-disincle-info.html
  13. 1 3
      sp-admin/sa-view/tb-fee-statistics/tb-fee-details-list.html
  14. 1 1
      sp-admin/static/sa.js
  15. 4 2
      sp-server/src/main/java/com/pj/api/open/service/OpenService.java
  16. 1 1
      sp-server/src/main/java/com/pj/project/relation_type_item/RelationTypeItemService.java
  17. 17 9
      sp-server/src/main/java/com/pj/project/tb_business/TbBusinessMapper.xml
  18. 27 27
      sp-server/src/main/java/com/pj/project/tb_business/TbBusinessService.java
  19. 37 18
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsController.java
  20. 5 0
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsMapper.java
  21. 15 9
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsMapper.xml
  22. 22 0
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java
  23. 27 0
      sp-server/src/main/java/com/pj/project/tb_fee_details/statics/FeeTypeStatics.java
  24. 0 1
      sp-server/src/main/java/com/pj/project/tb_item_type/TbItemTypeService.java

+ 1 - 1
app/manifest.json

@@ -85,7 +85,7 @@
     "vueVersion" : "2",
     "h5" : {
         "router" : {
-            "base" : "/h5/",
+            "base" : "/test/",
             "mode" : "history"
         },
         "devServer" : {

+ 5 - 4
app/pages/onely-disinfect/add-remark.vue

@@ -2,13 +2,13 @@
 	<view>
 		<view class="box">
 			<view class="top">
-				<text class="title">{{form.title}}</text>
+				<text class="title">备注</text>
 			</view>
 		</view>
 		<view class="box" style="margin-top: 50px;">
 			<view class="item">
 				<view class="l">
-					<text style="color: red;" v-if="form.mustRemark==1">*</text>
+					<text style="color: red;" v-if="form.needRemark==1">*</text>
 					备注:
 				</view>
 				<view class="r">
@@ -31,10 +31,10 @@
 		data() {
 			return {
 				form: {
-					itemId: '',
+					id: '',
 					title: '',
 					remark: '',
-					mustRemark: 1
+					needRemark: 1
 				}
 			}
 		},
@@ -48,6 +48,7 @@
 					this.$common.toast('请填写备注')
 					return false;
 				}
+				console.log(data)
 				uni.navigateBack({
 					delta: 1,
 					success: function(resp) {

+ 7 - 4
app/pages/onely-disinfect/car-manager.vue

@@ -64,7 +64,7 @@
 		},
 		onLoad(options) {
 			this.form = JSON.parse(options.carJson);
-			console.log(this.form)
+			
 			this.needCarSize = options.needCarSize;
 			this.needWeight = options.needWeight;
 			this.getCarType();
@@ -75,14 +75,14 @@
 					let list = resp.data;
 					this.carType.list = list;
 					let form=this.form;
-					if(form.netWeight&&form.netWeight>0){
-						this.carType.index=1;
+					let carType=this.form.carType;
+					if(carType){
+						this.carType.index=this.carType.list.map(obj=>obj.name).indexOf(carType);
 					}
 				})
 			},
 			carTypeChange(e) {
 				var value = e.detail.value; //当前picker选中的值
-				console.log(value)
 				this.carType.index = value;
 			},
 			backFn(){
@@ -104,6 +104,9 @@
 					this.$common.toast('请填写车辆载重')
 					return false;
 				}
+				if(this.carType.index==0){
+					data.netWeight=0;
+				}
 				data.carType=this.carType.list[this.carType.index].name;
 				data.carNo=data.carNo.toUpperCase();
 				uni.navigateBack({

+ 31 - 9
app/pages/onely-disinfect/type-business-edit.vue

@@ -85,12 +85,15 @@
 						</u-row>
 					</u-col>
 				</u-row>
-				<view style="display: flex;position: relative;left: 50%;">
+				<view style="display: flex;position: relative;left: 30%;">
 					<u-number-box style="margin-left: 15rpx;" v-if="item.itemName" :disabled="item.inc==0"
 						v-model="item.num"></u-number-box>
 					<text style="margin-left: 20rpx;color: red;" v-if="item.itemName">
 						¥{{item.num*item.price}}
 					</text>
+					<view style="margin-left: 60rpx;" @click="remarkFn(item)">
+						备注
+					</view>
 				</view>
 				<u-line></u-line>
 			</view>
@@ -176,6 +179,11 @@
 					that.handlerCar(car)
 				})
 			})
+			uni.$on('getRemark', type => {
+				that.$nextTick(() => {
+					that.handlerRemark(type)
+				})
+			})
 
 		},
 		onShow() {
@@ -183,6 +191,14 @@
 			this.perList = uni.getStorageSync('perList')
 		},
 		methods: {
+			remarkFn(type){
+				let remark=type.remark?type.remark:'';
+				this.$common.to('/pages/onely-disinfect/add-remark?needRemark='+type.needRemark+'&typeId='+type.id+'&remark='+remark)
+			},
+			handlerRemark(type){
+				let typeList=this.typeList;
+				typeList.filter(obj=>type.typeId==obj.id).forEach(obj=>obj.remark=type.remark)
+			},
 			addCar() {
 				this.car.list.push({
 					index: Math.random(),
@@ -191,17 +207,18 @@
 					index: 0
 				})
 			},
-			filterItems() {
+			filterItems(car) {
 				let carList = this.car.list;
 				let filterTypeList = JSON.parse(JSON.stringify(this.allTypeList));
 				if (carList.length == 0) {
 					this.typeList = filterTypeList;
 					return;
 				}
-				let car = carList[0];
-				let checkCarList = carList.filter(car => car.carType && car.carType.indexOf('空') == -1);
-				if (checkCarList.length > 0) {
-					car = checkCarList[0];
+				if (!car) {
+					let checkList = carList.filter(obj => obj.carType.indexOf('空') === -1);
+					if (checkList.length > 0) {
+						car = checkList[0];
+					}
 				}
 				let carSize = car.carSize;
 				let carType = car.carType;
@@ -262,6 +279,7 @@
 						obj.itemName = item.itemName;
 						obj.inc = item.inc;
 						obj.price = item.price;
+						obj.needRemark=item.needRemark;
 					})
 				}
 				this.show = false;
@@ -319,15 +337,15 @@
 				} else {
 					this.car.list.push(car);
 				}
-				this.clearEmptyCar();
+				this.clearEmptyCar(car);
 			},
-			clearEmptyCar() {
+			clearEmptyCar(car) {
 				let list = this.car.list;
 				let obj = list.filter(obj => !obj.carNo).pop();
 				if (obj) {
 					this.car.list.splice(list.indexOf(obj), 1);
 				}
-				this.filterItems();
+				this.filterItems(car);
 			},
 			handlerSelectDeclare(declare) {
 				let oldDeclareNo = this.form.declareNo;
@@ -438,6 +456,10 @@
 						this.$common.toast('【' + type.name + '】必选');
 						return false;
 					}
+					if (type.needRemark == 1 && !type.remark) {
+						this.$common.toast('请录入【' + type.name + '】备注');
+						return false;
+					}
 					if (type.itemId) {
 						let obj = {
 							typeId: type.id,

+ 38 - 12
app/pages/onely-disinfect/type-business.vue

@@ -85,12 +85,15 @@
 						</u-row>
 					</u-col>
 				</u-row>
-				<view style="display: flex;position: relative;left: 50%;">
-					<u-number-box style="margin-left: 15rpx;" v-if="item.itemName" :disabled="item.inc==0"
+				<view style="display: flex;position: relative;left: 30%;" v-if="item.itemName">
+					<u-number-box style="margin-left: 15rpx;"  :disabled="item.inc==0"
 						v-model="item.num"></u-number-box>
-					<text style="margin-left: 20rpx;color: red;" v-if="item.itemName">
+					<text style="margin-left: 20rpx;color: red;" >
 						¥{{item.num*item.price}}
 					</text>
+					<view style="margin-left: 60rpx;" @click="remarkFn(item)">
+						备注
+					</view>
 				</view>
 				<u-line></u-line>
 			</view>
@@ -177,8 +180,21 @@
 					that.handlerCar(car)
 				})
 			})
+			uni.$on('getRemark', type => {
+				that.$nextTick(() => {
+					that.handlerRemark(type)
+				})
+			})
 		},
 		methods: {
+			remarkFn(type){
+				let remark=type.remark?type.remark:'';
+				this.$common.to('/pages/onely-disinfect/add-remark?needRemark='+type.needRemark+'&typeId='+type.id+'&remark='+remark)
+			},
+			handlerRemark(type){
+				let typeList=this.typeList;
+				typeList.filter(obj=>type.typeId==obj.id).forEach(obj=>obj.remark=type.remark)
+			},
 			addCar() {
 				this.car.list.push({
 					index: Math.random(),
@@ -187,17 +203,23 @@
 					index: 0
 				})
 			},
-			filterItems() {
+			filterItems(car) {
 				let carList = this.car.list;
 				let filterTypeList = JSON.parse(JSON.stringify(this.allTypeList));
 				if (carList.length == 0) {
 					this.typeList = filterTypeList;
 					return;
 				}
-				let car = carList[0];
-				let checkCarList = carList.filter(car =>car.carType&&car.carType.indexOf('空') == -1);
-				if (checkCarList.length > 0) {
-					car = checkCarList[0];
+				if (!car) {
+					let checkList = carList.filter(obj => obj.carType.indexOf('空') === -1);
+					if (checkList.length > 0) {
+						car = checkList[0];
+					}
+				}
+				let carSize = car.carSize;
+				let carType = car.carType;
+				if (carType.indexOf('空') !== -1 && carList.length > 1) {
+					return;
 				}
 				let carSize = car.carSize;
 				let carType = car.carType;
@@ -245,6 +267,7 @@
 						obj.itemName = item.itemName;
 						obj.inc = item.inc;
 						obj.price = item.price;
+						obj.needRemark=item.needRemark;
 					})
 				}
 				this.show = false;
@@ -285,15 +308,15 @@
 				} else {
 					this.car.list.push(car);
 				}
-				this.clearEmptyCar();
+				this.clearEmptyCar(car);
 			},
-			clearEmptyCar() {
+			clearEmptyCar(car) {
 				let list = this.car.list;
 				let obj = list.filter(obj => !obj.carNo).pop();
 				if (obj) {
 					this.car.list.splice(list.indexOf(obj), 1);
 				}
-				this.filterItems();
+				this.filterItems(car);
 			},
 			handlerSelectDeclare(declare) {
 				let oldDeclareNo = this.form.declareNo;
@@ -331,7 +354,6 @@
 							let car = {
 								carNo: carNo,
 								carType: '空车',
-								netWeight:0
 							}
 							this.car.list.push(car)
 						}
@@ -406,6 +428,10 @@
 						this.$common.toast('【' + type.name + '】必选');
 						return false;
 					}
+					if (type.needRemark == 1 && !type.remark) {
+						this.$common.toast('请录入【' + type.name + '】备注');
+						return false;
+					}
 					if (type.itemId) {
 						let obj = {
 							typeId: type.id,

+ 2 - 2
app/utils/request.js

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

+ 1 - 28
sp-admin/sa-view-sp/console/com-sta-data.vue

@@ -70,34 +70,7 @@
 					this.car=resp.data;
 				}.bind(this))
 			},
-			// 数值跳动 
-			// 对象、属性、结束值、所用时间 
-			slowMotion: function(obj, prop, endValue, time) {
-				let timeNow = 0; 
-				let fn = function() {
-					// 如果已经接近 or 时间已到,则立即结束 
-					var jdz = Math.abs(obj[prop] - endValue);
-					if(jdz < 2 || timeNow >= time) {
-						// console.log('到点了');
-						obj[prop] = endValue;
-					} else {
-						if(jdz < 100) {
-							obj[prop] += 1;
-						} else {
-							obj[prop] += parseInt((endValue - obj[prop]) / 10);		 // 平均一下 
-						}
-						timeNow += 30;
-						setTimeout(fn, 30);
-					}
-				}
-				fn();
-			},
-			// 设置统计数据的数值 
-			setStaDataValue: function(staData) {
-				for (let key in staData) {
-					this.slowMotion(this.sta, key, staData[key], 3000);
-				}
-			},
+		
 		},
 		created() {
 			this.getCarStatics();

+ 97 - 12
sp-admin/sa-view-sp/console/console-main.html

@@ -57,11 +57,58 @@
 	<body>
 		<div class="vue-box" style="height: 980px;width: 100%;">
 			<div class="s-row s-row-1">
-			<com-sta-data></com-sta-data>
-			</div>
-			<div style="text-align: center; margin-top: 113px; font-size: 60px; letter-spacing: 30px;">
-				欢迎使用场站管理系统
+				<com-sta-data></com-sta-data>
 			</div>
+			<el-row :gutter="10">
+				<el-col span="12">
+					<el-card class="box-card" style="height: 600px;overflow-y: auto;">
+						<div slot="header" class="clearfix">
+							<span>业务类型统计</span>
+							<div style="float: right; padding: 3px 0">
+								<el-date-picker v-model="feeType.date" type="daterange" range-separator="至"
+									start-placeholder="开始日期" end-placeholder="结束日期" @change="getFeeTypeStatics">
+								</el-date-picker>
+							</div>
+							<div>
+								<el-table :data="feeType.list">
+									<el-table-column type="index" width="50" label="序号">
+									</el-table-column>
+									<el-table-column prop="name" label="名称">
+									</el-table-column>
+									<el-table-column prop="total" label="数量">
+									</el-table-column>
+									<el-table-column prop="price" label="金额(元)">
+									</el-table-column>
+								</el-table>
+							</div>
+						</div>
+					</el-card>
+				</el-col>
+				<el-col span="12">
+					<el-card class="box-card" style="height: 600px;overflow-y: auto;">
+						<div slot="header" class="clearfix">
+							<span>收费项目统计</span>
+							<div style="float: right; padding: 3px 0">
+								<el-date-picker v-model="feeType.date" type="daterange" range-separator="至"
+									start-placeholder="开始日期" end-placeholder="结束日期" @change="itemTypeStatics">
+								</el-date-picker>
+							</div>
+							<div>
+								<el-table :data="itemType.list">
+									<el-table-column type="index" width="50" label="序号">
+									</el-table-column>
+									<el-table-column prop="name" label="名称">
+									</el-table-column>
+									<el-table-column prop="total" label="数量">
+									</el-table-column>
+									<el-table-column prop="price" label="金额(元)">
+									</el-table-column>
+								</el-table>
+							</div>
+						</div>
+					</el-card>
+				</el-col>
+			</el-row>
 		</div>
 		<script src="../../static/kj/vue.min.js"></script>
 		<script src="../../static/kj/element-ui/index.js"></script>
@@ -84,19 +131,57 @@
 				},
 				el: '.vue-box',
 				data: {
-					car:{
-						totalCar:1,
-						inCar:2,
-						outCar:3,
-						weightCar:0,
-						emptyCar:0
+					feeType: {
+						date: [new Date(), new Date()],
+						list:[],
+						p:{
+							startDay:'',
+							endDay:''
+						}
+					},
+					itemType: {
+						date: [new Date(), new Date()],
+						list:[],
+						p:{
+							startDay:'',
+							endDay:''
+						}
+					},
+					car: {
+						totalCar: 1,
+						inCar: 2,
+						outCar: 3,
+						weightCar: 0,
+						emptyCar: 0
 					}
 				},
 				methods: {
-				
+					itemTypeStatics(){
+						let days=this.itemType.date;
+						let p=this.itemType.p;
+						if(days.length==2){
+							p.startDay=sa.forDate(days[0]);
+							p.endDay=sa.forDate(days[1]);
+						}
+						sa.ajax('/TbFeeDetails/itemTypeStatics',sa.removeNull(p), function(resp) {
+							this.itemType.list=resp.data;
+						}.bind(this))
+					},
+					getFeeTypeStatics() {
+						let days=this.feeType.date;
+						let p=this.feeType.p;
+						if(days.length==2){
+							p.startDay=sa.forDate(days[0]);
+							p.endDay=sa.forDate(days[1]);
+						}
+						sa.ajax('/TbFeeDetails/feeTypeStatics',sa.removeNull(p), function(resp) {
+							this.feeType.list=resp.data;
+						}.bind(this))
+					}
 				},
 				mounted: function() {
-					
+					this.getFeeTypeStatics();
+					this.itemTypeStatics();
 				}
 			})
 

+ 1 - 1
sp-admin/sa-view/tb-business-car/tb-business-car-add.html

@@ -65,7 +65,7 @@
 						</div>
 						<sa-item  type="img" name="入场图片" v-model="m.inImage" br></sa-item>
 
-						<div class="c-item" v-if="(id>0&&m.businessId!=null&&m.isLock==0&&m.pay==1) || (id>0&&m.businessId==null)" >
+						<div class="c-item">
 							<label class="c-label">离场时间:</label>
 							<el-date-picker type="datetime" value-format="yyyy-MM-dd HH:mm:ss" v-model="m.realOutTime"></el-date-picker>
 						</div>

+ 16 - 12
sp-admin/sa-view/tb-business/tb-car-disincle-add.html

@@ -178,12 +178,10 @@
 												</div>
 											</el-col>
 											<el-col span="8">
-												<div class="c-item"  style="position: relative;bottom: 10px;">
-													<label class="c-label">
-														备注:</label>
-													<el-input v-model="type.remark" placeholder="请输入备注" clearable>
-													</el-input>
-												</div>
+												<label class="c-label">
+													备注:</label>
+												<el-input v-model="type.remark" placeholder="请输入备注" clearable>
+												</el-input>
 											</el-col>
 										</el-row>
 										<el-divider></el-divider>
@@ -464,11 +462,13 @@
 						}
 					},
 					confirmAdd() {
+						let list = this.car.list;
 						let carNo = this.car.form.carNo;
 						let netWeight = this.car.form.netWeight;
 						let goods = this.goods;
 						let form = this.car.form;
 						let carType = form.carType;
+
 						if (!carNo) {
 							sa.error('请录入车牌号')
 							return false;
@@ -480,7 +480,6 @@
 						if (carType.indexOf('空') !== -1) {
 							netWeight = 0;
 						}
-						let list = this.car.list;
 						let index = list.map(obj => obj.carNo).indexOf(carNo);
 						if (index > -1) {
 							list.splice(index, 1);
@@ -504,13 +503,18 @@
 							this.itemTypeList = filterTypeList;
 							return;
 						}
-						let car = carList[0];
-						let checkCarList = carList.filter(car => car.carType.indexOf('空') == -1);
-						if (checkCarList.length > 0) {
-							car = checkCarList[0];
+						let car = this.car.form;
+						if (car == null) {
+							let checkList = carList.filter(obj => obj.carType.indexOf('空') === -1);
+							if (checkList.length > 0) {
+								car = checkList[0];
+							}
 						}
 						let carSize = car.carSize;
 						let carType = car.carType;
+						if (carType.indexOf('空') !== -1 && carList.length > 1) {
+							return;
+						}
 						let netWeight = car.netWeight;
 						let tempList = [];
 						for (let i in filterTypeList) {
@@ -543,7 +547,7 @@
 					editFn(data) {
 						Object.assign(this.car, {
 							visible: true,
-							form: data
+							form: JSON.parse(JSON.stringify(data))
 						})
 					},
 					deleteFn(data) {

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

@@ -151,21 +151,18 @@
 								</div>
 								<div>
 									<el-form-item v-for="(type,index) in itemTypeList">
-										<el-row>
+										<el-row justify="center">
 											<el-col span="9">
-												<div style="margin-top: 30px;">
 												<label style="color: red;"
-													v-if="type.need==1">*</label>{{type.name}}</label>
+													v-if="type.need==1">*</label><label>{{type.name}}:</label>
 												<el-select v-model="type.itemId" style="width: 120px;"
 													@change="itemChange(type)" placeholder="请选择">
 													<el-option v-for="item in type.items" :key="item.id"
 														:label="item.itemName" :value="item.id">
 													</el-option>
 												</el-select>
-												</div>
 											</el-col>
 											<el-col span="7">
-												<div style="margin-top: 30px;">
 												<el-input-number style="margin-left: 60px;" class="item-num"
 													v-model="type.num" :min="1" :max="10" size="mini"
 													:disabled="type.inc==0"></el-input-number>
@@ -175,14 +172,12 @@
 														style="margin-left: 5px;cursor: pointer">(<i
 															class="el-icon-delete"></i>)</label>
 												</div>
-												</div>
 											</el-col>
 											<el-col span="8">
-												<div class="c-item"  style="position: relative;bottom: 10px;">
-													<label class="c-label"> 备注:</label>
-													<el-input v-model="type.remark" placeholder="请输入备注" clearable>
-													</el-input>
-												</div>
+												<label class="c-label">
+													备注:</label>
+												<el-input v-model="type.remark" placeholder="请输入备注" clearable>
+												</el-input>
 											</el-col>
 										</el-row>
 										<el-divider></el-divider>
@@ -461,6 +456,8 @@
 						}
 					},
 					confirmAdd() {
+						let list = this.car.list;
+						let weightCar = list.filter(car => car.carType && car.carType.indexOf('空') == -1).pop();
 						let carNo = this.car.form.carNo;
 						let netWeight = this.car.form.netWeight;
 						let goods = this.goods;
@@ -477,7 +474,7 @@
 						if (carType.indexOf('空') !== -1) {
 							netWeight = 0;
 						}
-						let list = this.car.list;
+
 						let index = list.map(obj => obj.carNo).indexOf(carNo);
 						if (index > -1) {
 							list.splice(index, 1);
@@ -492,23 +489,34 @@
 						}
 						this.car.list.push(car);
 						this.car.visible = false;
+						if (weightCar) {
+							if (weightCar.carType == carType &&
+								carSize == weightCar.carSize &&
+								netWeight == weightCar.netWeight) {
+								return;
+							}
+						}
+
 						this.filterItems();
 					},
 					filterItems() {
 						let carList = this.car.list;
-						let length = carList.filter(obj => !obj.carType).length;
-						if (carList.length == length) {
-							return;
-						}
 						let filterTypeList = JSON.parse(JSON.stringify(this.filterTypeList));
 						if (carList.length == 0) {
 							this.itemTypeList = filterTypeList;
 							return;
 						}
-						let car = carList[0];
-						let checkCarList = carList.filter(car => car.carType && car.carType.indexOf('空') == -1);
-						if (checkCarList.length > 0) {
-							car = checkCarList[0];
+						let car = this.car.form;
+						if (car == null) {
+							let checkList = carList.filter(obj => obj.carType.indexOf('空') === -1);
+							if (checkList.length > 0) {
+								car = checkList[0];
+							}
+						}
+						let carSize = car.carSize;
+						let carType = car.carType;
+						if (carType.indexOf('空') !== -1 && carList.length > 1) {
+							return;
 						}
 						let carSize = car.carSize;
 						let carType = car.carType;
@@ -544,7 +552,7 @@
 					editFn(data) {
 						Object.assign(this.car, {
 							visible: true,
-							form: data
+							form: JSON.parse(JSON.stringify(data))
 						})
 					},
 					deleteFn(data) {
@@ -647,14 +655,14 @@
 							return false;
 						}
 						let carList = this.car.list;
-						let needCarSize=goods.needCarSize;
-						for(let i in carList){
-							let car=carList[i];
-							if(needCarSize==1&&!car.carSize){
-								sa.error('请补充'+car.carNo+'规格');
+						let needCarSize = goods.needCarSize;
+						for (let i in carList) {
+							let car = carList[i];
+							if (needCarSize == 1 && !car.carSize) {
+								sa.error('请补充' + car.carNo + '规格');
 								return;
 							}
-							
+
 						}
 						let typeList = this.itemTypeList;
 						let selectList = [];
@@ -676,7 +684,7 @@
 								selectList.push(obj);
 							}
 						}
-						
+
 						m.itemJson = JSON.stringify(selectList);
 						m.carJson = JSON.stringify(carList);
 						let chinaCarNo = carList

+ 3 - 1
sp-admin/sa-view/tb-business/tb-car-disincle-info.html

@@ -65,7 +65,9 @@
 									</div>
 									<el-table :data="m.cars" style="width: 100%">
 										<sa-td name="车牌号" prop="carNo"></sa-td>
-										<sa-td name="车辆规格" prop="carSize"></sa-td>
+										<sa-td name="类型" prop="carType"></sa-td>
+										<sa-td name="载重(kg)" prop="netWeight"></sa-td>
+										<sa-td name="规格(米)" prop="carSize"></sa-td>
 										<sa-td width="130" name="支付状态" prop="payType">
 										</sa-td>
 										<sa-td width="120" name="车辆状态" prop="isLock" type="enum"

+ 1 - 3
sp-admin/sa-view/tb-fee-statistics/tb-fee-details-list.html

@@ -92,9 +92,7 @@
 					<sa-td type="selection"></sa-td>
 					<sa-td name="作业类型" prop="feeType" type="enum"
 						   :jv="{1: '核酸检测',2: '消杀作业', 3: '装卸作业', 4: '停车费', 5: '过磅费', 6: '入场管理费', 7: '充电打冷作业'}"></sa-td>
-					<sa-td name="收费项目" prop="feeType" type="enum"
-						   :jv="{1: '核酸检测',2: '消杀作业', 3: '装卸作业', 4: '停车费', 5: '过磅费', 6: '入场管理费', 7: '充电打冷作业'}"></sa-td>
-					<sa-td name="业务类型" prop="itemTypeName" ></sa-td>
+					<sa-td name="收费项目" prop="itemTypeName" ></sa-td>
 					<sa-td name="车牌号" prop="carNo" width="90px" ></sa-td>
 					<sa-td name="重量(kg)" prop="weight" ></sa-td>
 					<sa-td name="数量" prop="num" ></sa-td>

+ 1 - 1
sp-admin/static/sa.js

@@ -22,7 +22,7 @@ var sa = {
 		api_url: 'http://dxkaa1.gxbtka.com/pro',
 		web_url: 'http://www.baidu.com'
 	}
-	sa.cfg = cfg_prod; // 最终环境 , 上线前请选择正确的环境
+	sa.cfg = cfg_dev; // 最终环境 , 上线前请选择正确的环境
 })();
 
 

+ 4 - 2
sp-server/src/main/java/com/pj/api/open/service/OpenService.java

@@ -108,10 +108,12 @@ public class OpenService {
         TbBusinessCar tbBusinessCar = tbBusinessCarService.findTheLastRecord(carNo);
         Date now = new Date();
         TbCar tbCar = tbCarService.findByCardNo(carNo);
+        //1、记录不存在;
+        // 2、已离场重新入场;
+        // 3、抬杆离场
         if (tbBusinessCar == null
                 || (tbBusinessCar.getRealInTime() != null && tbBusinessCar.getRealOutTime() != null)
-                || (tbBusinessCar.getRealInTime() != null && tbBusinessCar.getRealOutTime() == null)
-                || tbBusinessCar.getPay() == 1) {
+                || (tbBusinessCar.getRealInTime() != null && tbBusinessCar.getRealOutTime() == null)) {
             tbBusinessCar = new TbBusinessCar();
             tbBusinessCar.setCarNo(carNo).setPay(0).setCarSize(0D).setIsLock(0)
                     .setCarCompany(tbCar != null ? tbCar.getCustomerName() : "临时")

+ 1 - 1
sp-server/src/main/java/com/pj/project/relation_type_item/RelationTypeItemService.java

@@ -61,7 +61,7 @@ public class RelationTypeItemService extends ServiceImpl<RelationTypeItemMapper,
         List<String> removeIds = list.stream().filter(relationTypeItem -> !itemIdList.contains(relationTypeItem.getItemId())).map(RelationTypeItem::getId).collect(Collectors.toList());
         this.removeByIds(removeIds);
         List<String> dbItemIdList = list.stream().map(RelationTypeItem::getItemId).collect(Collectors.toList());
-        itemIdList.stream().filter(id -> !dbItemIdList.contains(id)).
+        itemIdList.stream().distinct().filter(id -> !dbItemIdList.contains(id)).
                 forEach(id -> {
                     RelationTypeItem db=findByTypeIdAndItemId(typeId,id);
                     if (db==null){

+ 17 - 9
sp-server/src/main/java/com/pj/project/tb_business/TbBusinessMapper.xml

@@ -112,16 +112,20 @@
         count(a.id)
         FROM
         tb_business_car a,
-        tb_business b
+        relation_business_car b,
+        tb_business c,
+        tb_business_item d
         WHERE
         a.id = b.business_car_id
+        and b.business_id=c.id
+        and c.id=d.business_id
         AND a.car_no =#{carNo}
-        and b.item_type_id=#{typeId}
+        and d.item_type_id=#{typeId}
         <if test="before==1">
-            AND DATE_FORMAT( b.operate_time, '%Y-%m-%d %H:%i:%s' ) &lt; #{operateTime}
+            AND DATE_FORMAT( c.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}
+            AND DATE_FORMAT( c.operate_time, '%Y-%m-%d %H:%i:%s' ) &gt; #{operateTime}
         </if>
     </select>
     <select id="checkCarBusinessTypeByTime" resultType="java.lang.Integer">
@@ -129,15 +133,19 @@
         count(b.id)
         FROM
         tb_business_car a,
-        tb_business b
+        relation_business_car b,
+        tb_business c,
+        tb_business_item d
         WHERE
         a.id = b.business_car_id
+        and b.business_id=c.id
+        and c.id=d.business_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}
+        and d.item_type_id=#{typeId}
+        AND DATE_FORMAT( c.operate_time, '%Y-%m-%d %H:%i:%s' ) &gt; #{timeStart}
+        and DATE_FORMAT( c.operate_time, '%Y-%m-%d %H:%i:%s' ) &lt; #{timeEnd}
         <if test="businessId!=null and businessId !=''">
-            and b.id !=#{businessId}
+            and c.id !=#{businessId}
         </if>
     </select>
 

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

@@ -13,6 +13,7 @@ import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
+import cn.hutool.log.StaticLog;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -27,9 +28,7 @@ import com.pj.current.config.WxConfig;
 import com.pj.current.satoken.StpUserUtil;
 import com.pj.project.relation_business_car.RelationBusinessCar;
 import com.pj.project.relation_business_car.RelationBusinessCarService;
-import com.pj.project.relation_goods_type.RelationGoodsTypeService;
-import com.pj.project.relation_type_item.RelationTypeItem;
-import com.pj.project.relation_type_item.RelationTypeItemService;
+
 import com.pj.project.tb_business_car.TbBusinessCar;
 import com.pj.project.tb_business_car.TbBusinessCarService;
 import com.pj.project.tb_business_item.TbBusinessItem;
@@ -138,8 +137,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
     private TbSortGroupService tbSortGroupService;
     @Resource
     private TbGoodsService tbGoodsService;
-    @Resource
-    private RelationTypeItemService relationTypeItemService;
+
     @Resource
     private RelationBusinessCarService relationBusinessCarService;
 
@@ -349,6 +347,8 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                     .setConfirmInputTime(new Date())
                     .setConfirmInputBy(StpUserUtil.getAdmin().getName());
             this.updateById(business);
+            TbGoods tbGoods = tbGoodsService.getById(business.getGoodsId());
+            Integer payStep = tbGoods.getPayStep();
             List<TbBusinessCar> cars = tbBusinessCarService.findOtherBusinessCar(business.getId());
             String carNoStr = cars.stream().map(TbBusinessCar::getCarNo).collect(Collectors.joining("、"));
             storeMsg(business.getCustomerId(), "业务订单【" + business.getNo() + "】已确认" + DateUtil.now() + "。");
@@ -356,11 +356,14 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             String bigBusinessType = business.getGoodsId();
             items.forEach(item -> {
                 String businessType = item.getBusinessType();
-                if (!StrUtil.equals(businessType, TbCostomer.CustomerEnum.BUSINESS_TYPE.getType())) {
-                    String customerId = business.getCustomerId();
+                //合作伙伴创建+是否下单后付款
+                if (!StrUtil.equals(businessType, TbCostomer.CustomerEnum.BUSINESS_TYPE.getType())
+                        &&TbGoods.PayStep.BEFORE_CONFIRM.getCode().equals(payStep)) {
+                    String customerId = business.getCreateByCustomerId();
                     TbCostomer tbCostomer = tbCostomerService.getById(customerId);
-                    String customerType = tbCostomer.getType();
-                    if (StrUtil.equals(businessType, customerType)) {
+                    List<String> customerType = StrUtil.splitTrim(tbCostomer.getType(),",");
+                    if (customerType.contains(businessType)) {
+                        StaticLog.error("订单自动确认======================="+id);
                         MsgDataBO msgDataBO = new MsgDataBO("订单号:" + item.getNo(), "系统自动确认",
                                 DateUtil.now(),
                                 business.getGoodsName() + "(" + item.getItemTypeName() + item.getItemName() + "-" + carNoStr + ")");
@@ -431,9 +434,6 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
     }
 
 
-
-
-
     public BigDecimal calculationPartMoney(Date iTime, Date oTime) {
         BigDecimal zero = new BigDecimal("0");
         if (iTime == null || oTime == null) {
@@ -477,12 +477,12 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             cars.add(tbBusinessCarService.getById(businessCarId));
         }
         businessList = businessList.stream().filter(tbBusiness -> {
-            TbGoods tbGoods=tbGoodsService.getById(tbBusiness.getGoodsId());
+            TbGoods tbGoods = tbGoodsService.getById(tbBusiness.getGoodsId());
             Integer payStep = tbGoods.getPayStep();
             //确认订单后方可缴费
             return TbGoods.PayStep.AFTER_CONFIRM.getCode().equals(payStep) && tbBusiness.getAdminConfirmInput() == 1
                     //或者下单后可缴费
-                    || TbGoods.PayStep.BEFORE_CONFIRM.getCode().equals(payStep)&& tbBusiness.getAdminConfirmInput() >=0;
+                    || TbGoods.PayStep.BEFORE_CONFIRM.getCode().equals(payStep) && tbBusiness.getAdminConfirmInput() >= 0;
         }).collect(Collectors.toList());
         businessList.forEach(tbBusiness -> {
             List<TbBusinessCar> businessCars = tbBusinessCarService.findOtherBusinessCar(tbBusiness.getId());
@@ -533,12 +533,12 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             }
             carsList.add(carMap);
         }
-        result.put("carList",carsList.stream().sorted(Comparator.comparingDouble(obj->Double.valueOf(obj.get("price").toString()))).collect(Collectors.toList()));
+        result.put("carList", carsList.stream().sorted(Comparator.comparingDouble(obj -> Double.valueOf(obj.get("price").toString()))).collect(Collectors.toList()));
         BigDecimal itemsPrice = new BigDecimal("0");
         List<Map<String, Object>> itemList = new ArrayList<>();
         for (TbBusinessItem item : items) {
             BigDecimal itemPrice = item.getItemPrice().multiply(new BigDecimal(item.getNum()));
-            if (item.getPayStatus()==1){
+            if (item.getPayStatus() == 1) {
                 continue;
             }
             itemsPrice = itemsPrice.add(itemPrice);
@@ -828,10 +828,10 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                 //原来已存在的
                 TbBusinessCar dbBusinessCar = tbBusinessCarService.getById(businessCarId);
                 //如果修改了车牌号
-                String dbCarNo=dbBusinessCar.getCarNo();
+                String dbCarNo = dbBusinessCar.getCarNo();
                 if (!dbCarNo.equals(carNo)) {
                     //把关联删除掉,然后添加新的关联
-                    relationBusinessCarService.removeByBusinessIdAndCarId(dbBusiness.getId(),businessCarId);
+                    relationBusinessCarService.removeByBusinessIdAndCarId(dbBusiness.getId(), businessCarId);
                     TbBusinessCar otherCar = tbBusinessCarService.findTheLastRecord(carNo);
                     if (otherCar == null ||//不存在或者已离场===>新建
                             (otherCar.getRealInTime() != null && otherCar.getRealOutTime() != null)) {
@@ -846,7 +846,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                         tbBusinessCarService.save(otherCar);
                     } else {
                         List<TbBusiness> tbBusinessList = this.findOtherBusinessByCarId(businessCarId);
-                        if (tbBusinessList.size() == 1&&dbBusinessCar.getRealInTime()==null) {
+                        if (tbBusinessList.size() == 1 && dbBusinessCar.getRealInTime() == null) {
                             tbBusinessCarService.removeById(businessCarId);
                         }
                     }
@@ -884,9 +884,9 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         String declareNo = otherBusinessBO.getDeclareNo();
         if (!StrUtil.equals(declareNo, dbBusiness.getDeclareNo())) {
             tbDeclareService.rebackDeclareNo(dbBusiness.getDeclareNo());
-           TbDeclare tbDeclare= tbDeclareService.findByDeclareNo(declareNo);
-           tbDeclare.setBusinessId(dbBusiness.getId());
-           tbDeclareService.updateById(tbDeclare);
+            TbDeclare tbDeclare = tbDeclareService.findByDeclareNo(declareNo);
+            tbDeclare.setBusinessId(dbBusiness.getId());
+            tbDeclareService.updateById(tbDeclare);
         }
         dbBusiness.setCardSize(otherBusinessBO.getCarSize()).setNetWeight(otherBusinessBO.getNetWeight())
                 .setOperator(otherBusinessBO.getOperator()).setOperateTime(otherBusinessBO.getOperateTime())
@@ -925,7 +925,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
     private void checkOtherBusiness(String itemTypeId, String operateTimeStr, String businessId, String carNo) {
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         TbBusinessSort sort = tbBusinessSortService.findByItemTypeId(itemTypeId);
-        if (sort==null){
+        if (sort == null) {
             return;
         }
         List<TbBusinessSort> sorts = tbBusinessSortService.findByGroupId(sort.getGroupId());
@@ -969,9 +969,9 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
 
 
     public TbBusiness findByDeclareNo(String declareNo) {
-        QueryWrapper<TbBusiness>ew=new QueryWrapper<>();
-        ew.eq("declare_no",declareNo).orderByDesc("id");
-        List<TbBusiness>list=this.list(ew);
-        return  list.isEmpty()?null:list.get(0);
+        QueryWrapper<TbBusiness> ew = new QueryWrapper<>();
+        ew.eq("declare_no", declareNo).orderByDesc("id");
+        List<TbBusiness> list = this.list(ew);
+        return list.isEmpty() ? null : list.get(0);
     }
 }

+ 37 - 18
sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsController.java

@@ -3,6 +3,9 @@ package com.pj.project.tb_fee_details;
 import java.math.BigDecimal;
 import java.util.List;
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import com.pj.project.tb_fee_details.statics.FeeTypeStatics;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -107,26 +110,42 @@ public class TbFeeDetailsController {
         tbFeeDetailsService.updateBatchById(list);
         return AjaxJson.getSuccess();
     }
-	
-	
-	
-	// ------------------------- 前端接口 -------------------------
-	
-	
-	/** 改 - 不传不改 [G] */
-	@RequestMapping("updateByNotNull")
-	public AjaxJson updateByNotNull(Long id){
-		AjaxError.throwBy(true, "如需正常调用此接口,请删除此行代码");
-		// 鉴别身份,是否为数据创建者 
-		long userId = SP.publicMapper.getColumnByIdToLong(TbFeeDetails.TABLE_NAME, "user_id", id);
-		AjaxError.throwBy(userId != StpUserUtil.getLoginIdAsLong(), "此数据您无权限修改");
-		// 开始修改 (请只保留需要修改的字段)
+
+	/** 准备打印的数据 */
+	@RequestMapping("feeTypeStatics")
+	public AjaxJson feeTypeStatics(){
 		SoMap so = SoMap.getRequestSoMap();
-		so.clearNotIn("id", "businessNo", "carNo", "itemTypeId", "itemTypeName", "itemId", "itemName", "itemPrice", "payDay", "payType", "createTime").clearNull().humpToLineCase();	
-		int line = SP.publicMapper.updateBySoMapById(TbFeeDetails.TABLE_NAME, so, id);
-		return AjaxJson.getByLine(line);
+		String startDay=so.getString("startDay");
+		String endDay=so.getString("endDay");
+		String today= DateUtil.today();
+		if (StrUtil.isEmpty(startDay)){
+			startDay=today;
+		}
+		if (StrUtil.isEmpty(endDay)){
+			endDay=today;
+		}
+		List<FeeTypeStatics>list=tbFeeDetailsService.getFeeTypeStatics(startDay,endDay);
+		return AjaxJson.getSuccessData(list);
 	}
-	
+
+
+
+	@RequestMapping("itemTypeStatics")
+	public AjaxJson itemTypeStatics(){
+		SoMap so = SoMap.getRequestSoMap();
+		String startDay=so.getString("startDay");
+		String endDay=so.getString("endDay");
+		String today= DateUtil.today();
+		if (StrUtil.isEmpty(startDay)){
+			startDay=today;
+		}
+		if (StrUtil.isEmpty(endDay)){
+			endDay=today;
+		}
+		List<FeeTypeStatics>list=tbFeeDetailsService.itemTypeStatics(startDay,endDay);
+		return AjaxJson.getSuccessData(list);
+	}
+
 	
 	
 	

+ 5 - 0
sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsMapper.java

@@ -3,9 +3,11 @@ package com.pj.project.tb_fee_details;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.pj.project.tb_fee_details.statics.FeeTypeStatics;
 import org.apache.ibatis.annotations.Mapper;
 
 import com.pj.utils.so.*;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 /**
@@ -53,4 +55,7 @@ public interface TbFeeDetailsMapper extends BaseMapper<TbFeeDetails> {
 	List<TbFeeDetails> getList(SoMap so);
 
 
+	List<FeeTypeStatics> getFeeTypeStatics(@Param("startDay") String startDay,@Param("endDay") String endDay);
+
+	List<FeeTypeStatics> itemTypeStatics(@Param("startDay") String startDay,@Param("endDay") String endDay);
 }

+ 15 - 9
sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsMapper.xml

@@ -106,14 +106,20 @@
 			<otherwise> id desc </otherwise>
 		</choose>
 	</select>
-	
-	
-	
-	
-	
-	
-	
-	
-	
+	<select id="getFeeTypeStatics" resultType="com.pj.project.tb_fee_details.statics.FeeTypeStatics">
+		SELECT SUM(item_price*num) as price,SUM(num) as total,fee_type
+		FROM tb_fee_details
+		where DATE_FORMAT(pay_day,'%Y-%m-%d') &gt;= #{startDay}
+		 and DATE_FORMAT(pay_day,'%Y-%m-%d') &lt;= #{endDay}
+		 GROUP BY fee_type order by price;
+	</select>
+	<select id="itemTypeStatics" resultType="com.pj.project.tb_fee_details.statics.FeeTypeStatics">
+			SELECT SUM(item_price*num) as price,SUM(num) as total,item_type_name as name
+		FROM tb_fee_details
+		where DATE_FORMAT(pay_day,'%Y-%m-%d') &gt;= #{startDay}
+		 and DATE_FORMAT(pay_day,'%Y-%m-%d') &lt;= #{endDay}
+		 GROUP BY item_type_name order by price;
+	</select>
+
 
 </mapper>

+ 22 - 0
sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java

@@ -5,6 +5,7 @@ import java.io.InputStream;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
@@ -24,6 +25,7 @@ import com.pj.project.tb_business.TbBusinessService;
 import com.pj.project.tb_business_car.TbBusinessCar;
 import com.pj.project.tb_business_car.TbBusinessCarService;
 import com.pj.project.tb_business_item.TbBusinessItem;
+import com.pj.project.tb_fee_details.statics.FeeTypeStatics;
 import com.pj.project.tb_fee_statistics.TbFeeStatistics;
 import com.pj.project4sp.uploadfile.UploadUtil;
 import com.pj.utils.so.SoMap;
@@ -399,4 +401,24 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
                 .setAllDayTaxes(allDayTaxes).setAllDayNoTaxFee(allDayNoTaxFee);
         return printData;
     }
+
+    public List<FeeTypeStatics> getFeeTypeStatics(String startDay, String endDay) {
+        List<FeeTypeStatics> list=tbFeeDetailsMapper.getFeeTypeStatics(startDay,endDay);
+       Double totalPrice= list.stream().collect(Collectors.summarizingDouble(FeeTypeStatics::getPrice)).getSum();
+       Long total= list.stream().collect(Collectors.summarizingLong(FeeTypeStatics::getTotal)).getSum();
+        FeeTypeStatics feeTypeStatics=new FeeTypeStatics();
+        feeTypeStatics.setName("总计").setPrice(totalPrice).setTotal(total);
+        list.add(feeTypeStatics);
+        return list;
+    }
+
+    public List<FeeTypeStatics> itemTypeStatics(String startDay, String endDay) {
+        List<FeeTypeStatics> list=tbFeeDetailsMapper.itemTypeStatics(startDay,endDay);
+        Double totalPrice= list.stream().collect(Collectors.summarizingDouble(FeeTypeStatics::getPrice)).getSum();
+        Long total= list.stream().collect(Collectors.summarizingLong(FeeTypeStatics::getTotal)).getSum();
+        FeeTypeStatics feeTypeStatics=new FeeTypeStatics();
+        feeTypeStatics.setName("总计").setPrice(totalPrice).setTotal(total);
+        list.add(feeTypeStatics);
+        return list;
+    }
 }

+ 27 - 0
sp-server/src/main/java/com/pj/project/tb_fee_details/statics/FeeTypeStatics.java

@@ -0,0 +1,27 @@
+package com.pj.project.tb_fee_details.statics;
+
+import com.pj.project.tb_fee_details.TbFeeDetails;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+@Accessors(chain = true)
+public class FeeTypeStatics implements Serializable {
+    private Double price;
+    private Long total;
+    private String name;
+    private Integer feeType;
+
+
+
+    public String getName() {
+        Integer feeType=this.getFeeType();
+        if (feeType==null){
+            return this.name;
+        }
+       return TbFeeDetails.fee.getDesc(feeType);
+    }
+}

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

@@ -19,7 +19,6 @@ import com.pj.project.relation_type_item.RelationTypeItem;
 import com.pj.project.relation_type_item.RelationTypeItemService;
 import com.pj.project.tb_costomer.TbCostomer;
 import com.pj.project.tb_costomer.TbCostomerService;
-import com.pj.project.tb_district.TbDistrict;
 import com.pj.project.tb_item.TbItem;
 import com.pj.project.tb_item.TbItemService;
 import com.pj.utils.so.SoMap;