qzyReal 3 年之前
父節點
當前提交
a94bdcb59e
共有 24 個文件被更改,包括 395 次插入166 次删除
  1. 8 1
      app/pages.json
  2. 5 31
      app/pages/index/index.vue
  3. 87 0
      app/pages/onely-disinfect/Index.vue
  4. 89 23
      app/pages/onely-disinfect/disinfect-Index.vue
  5. 7 15
      sp-admin/sa-frame/menu-list.js
  6. 2 1
      sp-admin/sa-view/tb-business/tb-car-disincle-list.html
  7. 1 1
      sp-admin/sa-view/tb-item/tb-item-list.html
  8. 2 2
      sp-admin/sa-view/tb-partner/tb-business-item-list.html
  9. 1 3
      sp-admin/sa-view/tb-partner/tb-partner-info.html
  10. 1 1
      sp-admin/sa-view/tb-partner/tb-partner-list.html
  11. 1 1
      sp-server/app.pid
  12. 19 0
      sp-server/src/main/java/com/pj/api/h5/ApiController.java
  13. 15 10
      sp-server/src/main/java/com/pj/api/open/service/OpenService.java
  14. 45 19
      sp-server/src/main/java/com/pj/api/service/ApiService.java
  15. 4 2
      sp-server/src/main/java/com/pj/api/wx/service/WxService.java
  16. 1 0
      sp-server/src/main/java/com/pj/project/tb_business/CarDisincle.java
  17. 14 0
      sp-server/src/main/java/com/pj/project/tb_business/TbBusiness.java
  18. 2 1
      sp-server/src/main/java/com/pj/project/tb_business/TbBusinessMapper.xml
  19. 1 0
      sp-server/src/main/java/com/pj/project/tb_business/TbBusinessService.java
  20. 2 2
      sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarMapper.xml
  21. 8 8
      sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarService.java
  22. 20 0
      sp-server/src/main/java/com/pj/project/tb_costomer/TbCostomer.java
  23. 57 42
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java
  24. 3 3
      sp-server/src/main/resources/application-dev.yml

+ 8 - 1
app/pages.json

@@ -292,9 +292,16 @@
 				"navigationBarTitleText": ""
 			}
 		
+		},
+		
+	{
+			"path": "pages/onely-disinfect/Index",
+			"style": {
+				"navigationBarTitleText": ""
+			}
+	
 		}
 
-
 	],
 	"globalStyle": {
 		"navigationBarTextStyle": "white",

+ 5 - 31
app/pages/index/index.vue

@@ -58,12 +58,6 @@
 					text: '企业注册',
 					url: '/pages/enterprise-reg/enterprise-reg',
 					customer:true
-				},{
-					auth: false,
-					icon: '../../static/home-icon-06.jpg',
-					text: '车辆消杀',
-					url: '/pages/onely-disinfect/disinfect-Index',
-					customer:true
 				}
 				],
 				code: '',
@@ -83,12 +77,6 @@
 					icon: '../../static/home-icon-04.png',
 					text: '用户管理',
 					url: '/pages/user/user-index',
-				},{
-					auth: false,
-					icon: '../../static/home-icon-06.jpg',
-					text: '车辆消杀',
-					url: '/pages/onely-disinfect/disinfect-Index',
-					customer:true
 				}
 				],
 				customerList: [{
@@ -116,14 +104,14 @@
 						id: 'tb-business',
 						auth: true,
 						icon: '../../static/home-icon-02.png',
-						text: '业务录入',
+						text: '录入整车',
 						url: '/pages/business-entering/business-entering',
 					},
 					{
 						id: 'tb-business',
 						auth: true,
 						icon: '../../static/home-icon-03.png',
-						text: '业务订单',
+						text: '整车业务',
 						url: '/pages/business-order/business-order',
 					},
 					{
@@ -140,19 +128,12 @@
 						text: '用户管理',
 						url: '/pages/user/user-index',
 					}
-					,{
-						auth: false,
-						icon: '../../static/home-icon-06.jpg',
-						text: '车辆消杀',
-						url: '/pages/onely-disinfect/disinfect-Index',
-						customer:true
-					}
 				],
 				adminList: [{
 						id: 'tb-business-add',
 						auth: true,
 						icon: '../../static/home-icon-02.png',
-						text: '业务录入',
+						text: '录入整车',
 						url: '/pages/business-entering/business-entering',
 						
 					},
@@ -160,14 +141,14 @@
 						auth: false,
 						icon: '../../static/home-icon-06.jpg',
 						text: '车辆消杀',
-						url: '/pages/onely-disinfect/disinfect-Index',
+						url: '/pages/onely-disinfect/Index',
 						customer:true
 					},
 					{
 						id: 'tb-business-list',
 						auth: true,
 						icon: '../../static/home-icon-03.png',
-						text: '业务订单',
+						text: '整车业务',
 						url: '/pages/business-order/business-order',
 					},
 					{
@@ -314,13 +295,6 @@
 					text: '企业注册',
 					url: '/pages/enterprise-reg/enterprise-reg',
 					customer:true
-				},
-				{
-					auth: false,
-					icon: '../../static/home-icon-06.jpg',
-					text: '车辆消杀',
-					url: '/pages/onely-disinfect/disinfect-Index',
-					customer:true
 				}
 				]
 			},

+ 87 - 0
app/pages/onely-disinfect/Index.vue

@@ -0,0 +1,87 @@
+<template>
+	<view>
+		<view class="box">
+			<view class="top">
+				<text class="title">车辆消杀</text>
+			</view>
+			<view class="add" @click="addFn">+添加</view>
+		</view>
+		<view>
+			<uni-list>
+				<uni-list-item v-for="(item,index) in list" :title="item.carNo"
+				 :note="item.adminConfirmInput==1?'已确认':'未确认'" :rightText="item.createTime" clickable @click="toDetail(item)"/>
+			</uni-list>
+		</view>
+		<noData v-if="list.length==0"></noData>
+		<u-loadmore style="margin: 30rpx;" :status="status" />
+	</view>
+
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				status: 'loadmore',
+				list: [],
+				p: {
+					pageNo: 1,
+					pageSize: 10,
+					dataCount: 0,
+					adminConfirmInput: -1,
+				}
+			}
+		},
+		onLoad() {
+			this.getCarDisinFect();
+		},
+		methods: {
+			toDetail(data){
+				this.$common.to('/pages/onely-disinfect/disinfect-Index?json='+JSON.stringify(data))
+			},
+			addFn() {
+				this.$common.to('/pages/onely-disinfect/disinfect-Index')
+			},
+			getCarDisinFect() {
+				this.$api.getCarDisinFect(this.p).then(resp => {
+					this.list = resp.data;
+					this.p.dataCount=resp.dataCount;
+					this.p.pageNo=resp.pageNo;
+					this.p.pageSize=resp.pageSize
+				})
+			}
+
+		},
+		//上拉加载更多,分页模拟数据
+		onReachBottom() {
+			if (parseInt(this.p.dataCount) > parseInt(this.p.pageSize) * parseInt(this.p.pageNo)) {
+				this.status = 'loading';
+				this.p.pageSize += 5;
+				this.getCarDisinFect();
+			} else {
+				this.status = 'nomore';
+			}
+		}
+
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #fff;
+	}
+
+	.add {
+		position: absolute;
+		right: 40rpx;
+		top: -60rpx;
+		z-index: 999;
+		border: 1rpx solid #359aff;
+		border-radius: 8rpx;
+		color: #c8e4ff;
+		padding: 10rpx 20rpx;
+		font-size: 28rpx;
+	}
+
+	@import '@/common/common.scss'
+</style>

+ 89 - 23
app/pages/onely-disinfect/disinfect-Index.vue

@@ -27,7 +27,7 @@
 				业务项
 			</view>
 			<view class="item" v-for="item in itemList" :key="item.id">
-				<view class="l">{{item.itemName}}:
+				<view class="l" style="flex: 6;">{{item.itemName}}:
 				</view>
 				<view class="r">
 					<view style="margin-left: 20rpx;">
@@ -35,9 +35,6 @@
 					</view>
 				</view>
 			</view>
-			<view class="item-line">
-				其他费用
-			</view>
 			<view class="item">
 				<view class="l">停车费:
 				</view>
@@ -48,8 +45,12 @@
 				</view>
 			</view>
 		</view>
-		<u-button type="primary" text="确定" @click="saveFn"></u-button>
-		<u-button type="info" text="重置" @click="resetFn" style="margin-top: 20rpx;"></u-button>
+		<view v-if="!form.adminConfirmInput">
+			<u-button type="primary" v-if="!obj" text="保存" @click="saveFn"></u-button>
+			<!-- <u-button type="primary" v-if="obj" text="修改" @click="saveFn"></u-button> -->
+			<u-button type="primary" v-if="obj" text="确认账单" @click="confirmFn" style="margin-top: 20rpx;"></u-button>
+			<u-button type="info" text="重置" @click="resetFn" style="margin-top: 20rpx;"></u-button>
+		</view>
 		<!-- ---------------------------------------------------------- -->
 		<view class="bottom-safety"></view>
 
@@ -64,6 +65,7 @@
 					index: 0,
 					list: ['空车', '载货']
 				},
+				obj: null,
 				form: {
 					carNo: ''
 				},
@@ -71,12 +73,18 @@
 				list: []
 			}
 		},
-
+		onLoad(options) {
+			let data = options.json;
+			if (data) {
+				this.obj = JSON.parse(options.json)
+				console.log(this.form)
+			}
+		},
 		mounted() {
 			this.getTypeList();
 		},
 		onBackPress() {
-			this.$common.to('/pages/index/index');
+			this.$common.to('/pages/onely-disinfect/Index');
 			return true;
 		},
 		methods: {
@@ -84,18 +92,36 @@
 				let index = e.detail.value;
 				this.type.index = index //当前picker选中的值
 				if (index == 0) {
-					this.itemList = this.list;
+					this.itemList = this.list.filter(obj => obj.itemName.indexOf('车头车厢') !== -1)
 				} else {
-					this.itemList = this.list.filter(obj => obj.itemName == '车头消杀')
+					this.itemList = this.list.filter(obj => obj.itemName.indexOf('车头消杀') !== -1)
 				}
 			},
 			getTypeList() {
 				this.$api.getItemList({
 					business: 0
 				}).then(resp => {
-					let list = resp.data[0].items;
-					this.itemList = list;
-					this.list = list;
+					let list = resp.data;
+					let itemList = [];
+					for (let i in list) {
+						let item = list[i];
+						itemList.push(item.items[0]);
+					}
+					this.list = itemList;
+					this.itemList = itemList.filter(obj => obj.itemName.indexOf('车头车厢') !== -1);
+					if (this.obj) {
+						this.form.carNo = this.obj.carNo;
+						this.form.businessCarId = this.obj.businessCarId;
+						this.form.adminConfirmInput = this.obj.adminConfirmInput;
+						this.form.id = this.obj.id;
+						let index = this.type.list.indexOf(this.obj.goodsName);
+						this.type.index = index
+						if (index == 0) {
+							this.itemList = this.list.filter(obj => obj.itemName.indexOf('车头车厢') !== -1)
+						} else {
+							this.itemList = this.list.filter(obj => obj.itemName.indexOf('车头消杀') !== -1)
+						}
+					}
 				})
 			},
 			resetFn() {
@@ -104,28 +130,68 @@
 				this.itemList = this.list;
 			},
 			saveFn() {
-				if(!this.form.carNo){
+				if (!this.form.carNo) {
 					this.$common.toast('请输入车牌号')
 					return;
 				}
-				this.form.itemJson=JSON.stringify(this.itemList);
-				this.form.carType=this.type.list[this.type.index]
-				let that=this;
+				this.form.itemJson = JSON.stringify(this.itemList);
+				this.form.carType = this.type.list[this.type.index]
+				let that = this;
+				let content = this.obj ? '确认修改该业务?' : '确认录入该车辆的消杀业务?'
+				uni.showModal({
+					title: '提示',
+					content: content,
+					success(res) {
+						if (res.confirm) {
+							if (!that.obj) {
+								that.addFn();
+							} else {
+								that.editFn()
+							}
+
+						}
+					}
+				})
+			},
+			addFn() {
+				this.$api.addCarDisinfect(this.$common.removeNull(this.form)).then(resp => {
+					if (resp.code == 200) {
+						this.$common.to('/pages/onely-disinfect/addSuccess')
+					}
+				})
+			},
+			confirmFn() {
+				let that = this;
+				console.log(this.form)
 				uni.showModal({
-					title:'提示',
-					content:'确认录入该车辆的消杀业务?',
+					title: '提示',
+					content: '是否确认该账单?',
 					success(res) {
-						if(res.confirm){
-							that.$api.addCarDisinfect(that.$common.removeNull(that.form)).then(resp => {
+						if (res.confirm) {
+							that.$api.adminConfirm({
+								ids: that.form.id
+							}).then(resp => {
 								if (resp.code == 200) {
-									that.$common.to('/pages/onely-disinfect/addSuccess')
+									that.$common.toast('已确认');
+									setTimeout(() => {
+										that.$common.to('/pages/onely-disinfect/Index')
+									}, 1500)
 								}
 							})
 						}
 					}
 				})
-			
 			},
+			editFn() {
+				this.$api.editCarDisinfect(this.$common.removeNull(this.form)).then(resp => {
+					if (resp.code == 200) {
+						this.$common.toast('修改成功');
+						setTimeout(() => {
+							this.$common.to('/pages/onely-disinfect/Index')
+						}, 1500)
+					}
+				})
+			}
 		},
 
 	}

+ 7 - 15
sp-admin/sa-frame/menu-list.js

@@ -241,27 +241,14 @@ var menuList = [{
 		
 		]
 	},
-	
-	{
-		id: 'tb-car-disincle',
-		name: '车辆消杀',
-		icon: 'el-icon-notebook-2',
-		parent: true,
-		childList: [{
-			id: 'tb-car-disincle-list',
-			name: '消杀管理',
-			url: 'sa-view/tb-business/tb-car-disincle-list.html'
-		}, ]
-	},
 	{
 		id: 'tb-business',
-		name: '业务录入',
+		name: '业务管理',
 		icon: 'el-icon-edit-outline',
 		parent: true,
 		childList: [{
-				
 				id: 'tb-business-list',
-				name: '业务列表',
+				name: '整车业务',
 				url: 'sa-view/tb-business/tb-business-list.html',
 				childList: [{
 						
@@ -298,6 +285,11 @@ var menuList = [{
 
 				]
 			},
+			{
+				id: 'tb-car-disincle-list',
+				name: '车辆消杀',
+				url: 'sa-view/tb-business/tb-car-disincle-list.html'
+			}
 
 		]
 	},

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

@@ -85,7 +85,7 @@
 						</el-col>
 						<el-col span="12">
 							<sa-info name="业务费用" br>{{confirm.form.itemPrice}}(元)</sa-info>
-							<sa-info name="停车费" br>{{confirm.form.partMoney}}(元)</sa-info>
+							<sa-info name="停车费" br>{{confirm.form.basePartMoney}}(元)</sa-info>
 							<sa-info name="合计费用" br>{{confirm.form.totalMoney}}(元)</sa-info>
 						</el-col>
 					</el-row>
@@ -146,6 +146,7 @@
 						}.bind(this))
 					},
 					confirmFn(data) {
+						console.log(data);
 						sa.ajax('/TbBusinessItem/getList', {
 							businessId: data.id
 						}, function(resp) {

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

@@ -67,7 +67,7 @@
 						id: '', // 主键
 						name: '', // 项目名称 
 						pageNo: 1, // 当前页 
-						pageSize: 10, // 页大小 
+						pageSize: 20, // 页大小 
 						sortType: 0 // 排序方式 
 					},
 					dataCount: 0,

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

@@ -38,8 +38,8 @@
 					<sa-td name="越南车" prop="cardNo"></sa-td>
 					<sa-td name="中国车" prop="chinaCarNo"></sa-td>
 					<sa-td name="作业公司" prop="pickCustomerName"></sa-td>
-					<sa-td name="项目" prop="itemName"></sa-td>
-					<sa-td name="类型" prop="itemTypeName"></sa-td>
+					<sa-td name="项目" prop="itemName" width="120"></sa-td>
+					<sa-td name="类型" prop="itemTypeName" width="120"></sa-td>
 					<sa-td name="计费标准" prop="unit">
 						<template slot-scope="s">
 							{{s.row.itemPrice}}{{s.row.unit}}

+ 1 - 3
sp-admin/sa-view/tb-partner/tb-partner-info.html

@@ -34,9 +34,7 @@
 							</el-col>
 							<el-col span="12">
 								<sa-info name="类型" br>
-									<span v-if="m.type == 1">消杀公司</span>
-									<span v-if="m.type == 2">装卸公司</span>
-									<span v-if="m.type == 3">核酸检测单位</span>
+									{{m.typeDes}}
 								</sa-info>
 								<sa-info name="创建时间" br>{{m.creareTime}}</sa-info>
 								<sa-info type="img" name="营业执照" :value="m.businessLicence" br></sa-info>

+ 1 - 1
sp-admin/sa-view/tb-partner/tb-partner-list.html

@@ -34,7 +34,7 @@
 				<el-table class="data-table" ref="data-table" :data="dataList">
 					<sa-td type="selection"></sa-td>
 					<sa-td name="名称" prop="name"></sa-td>
-					<sa-td name="类型" prop="type" type="enum" :jv="{1: '消杀公司', 2: '装卸公司',3: '核酸检测单位'}"></sa-td>
+					<sa-td name="类型" prop="typeDes"></sa-td>
 					<sa-td name="联系人" prop="dutyPeople"></sa-td>
 					<sa-td name="联系电话" prop="phone"></sa-td>
 					<sa-td name="营业执照" prop="businessLicence" type="img"></sa-td>

+ 1 - 1
sp-server/app.pid

@@ -1 +1 @@
-8588
+21600

+ 19 - 0
sp-server/src/main/java/com/pj/api/h5/ApiController.java

@@ -7,6 +7,7 @@ import com.pj.api.service.ApiService;
 import com.pj.constants.RoleEnum;
 import com.pj.constants.UserTypeEnum;
 import com.pj.current.satoken.StpUserUtil;
+import com.pj.project.tb_business.CarDisincle;
 import com.pj.project.tb_business.TbBusinessService;
 import com.pj.project.tb_business_car.TbBusinessCar;
 import com.pj.project.tb_business_car.TbBusinessCarService;
@@ -214,4 +215,22 @@ public class ApiController {
         apiService.addCarDisinfect(carNo,itemJson,carType);
         return AjaxJson.getSuccess();
     }
+    @RequestMapping(value = "editCarDisinfect")
+    public AjaxJson editCarDisinfect(CarDisincle carDisincle) {
+        SoMap so = SoMap.getRequestSoMap();
+        String carNo = carDisincle.getCarNo();
+        if (StrUtil.isEmpty(carNo)){
+            throw new BusinessException("请录入车牌号");
+        }
+        String itemJson = so.getString("itemJson");
+        if (StrUtil.isEmpty(itemJson)){
+            throw new BusinessException("业务类型错误");
+        }
+        String carType = so.getString("carType");
+        if (StrUtil.isEmpty(carType)){
+            throw new BusinessException("请选车业务类型");
+        }
+        apiService.editCarDisinfect(carDisincle,itemJson,carType);
+        return AjaxJson.getSuccess();
+    }
 }

+ 15 - 10
sp-server/src/main/java/com/pj/api/open/service/OpenService.java

@@ -16,6 +16,7 @@ import com.pj.project.tb_business_car.TbBusinessCarService;
 import com.pj.project.tb_business_item.TbBusinessItem;
 import com.pj.project.tb_business_item.TbBusinessItemService;
 import com.pj.utils.cache.RedisUtil;
+import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -58,9 +59,9 @@ public class OpenService {
         carNo = carNo.toUpperCase();
         TbBusinessCar tbBusinessCar = tbBusinessCarService.findTheLastRecord(carNo);
         Date now = new Date();
-        if (tbBusinessCar == null||(tbBusinessCar.getRealInTime()!=null&&tbBusinessCar.getRealOutTime()!=null)) {
+        if (tbBusinessCar == null || (tbBusinessCar.getRealInTime() != null && tbBusinessCar.getRealOutTime() != null)) {
             tbBusinessCar = new TbBusinessCar();
-            tbBusinessCar.setCarNo(carNo).setPay(0).setCarSize(3D).setInChannel(channel).setRealInTime(now);
+            tbBusinessCar.setCarNo(carNo).setPay(0).setCarSize(3D).setIsLock(0).setInChannel(channel).setRealInTime(now);
             tbBusinessCarService.save(tbBusinessCar);
             return;
         }
@@ -87,15 +88,16 @@ public class OpenService {
         if (StrUtil.isEmpty(businessId)) {
             return ResultJson.success();
         }
+        TbBusiness business = tbBusinessService.getById(businessId);
+        List<TbBusinessItem> items = tbBusinessItemService.findByBusinessId(businessId)
+                .stream().filter(tbBusinessItem -> tbBusinessItem.getPayStatus() == 1).collect(Collectors.toList());
+        BigDecimal itemPayPrice = new BigDecimal("0");
+        for (TbBusinessItem tbBusinessItem : items) {
+            itemPayPrice = itemPayPrice.add(tbBusinessItem.getItemPrice());
+        }
+
         if (!CAR_LIST.contains(StrUtil.sub(carNo, 0, 1))) {
-            TbBusiness business = tbBusinessService.getById(businessId);
-            List<TbBusinessItem> items = tbBusinessItemService.findByBusinessId(businessId)
-                    .stream().filter(tbBusinessItem -> tbBusinessItem.getPayStatus() == 1).collect(Collectors.toList());
-            BigDecimal itemPayPrice = new BigDecimal("0");
-            for (TbBusinessItem tbBusinessItem : items) {
-                itemPayPrice = itemPayPrice.add(tbBusinessItem.getItemPrice());
-            }
-            if (!business.getItemPrice().equals(itemPayPrice) && business.getCustomerType() != 2&&StrUtil.isNotEmpty(business.getDeclareNo())) {
+            if (!business.getItemPrice().equals(itemPayPrice) && business.getCustomerType() != 2) {
                 return ResultJson.error("请缴纳业务费用");
             }
         }
@@ -107,6 +109,9 @@ public class OpenService {
             RedisUtil.set(channel, carNo);
             return ResultJson.error("请缴停车费" + dif + "元");
         }
+        if (TbBusiness.BusinessType.CAR_DISINCLE.getCode().equals(business.getBusinessType()) && !business.getItemPrice().equals(itemPayPrice)) {
+            return ResultJson.error("请缴纳业务费用");
+        }
         tbBusinessCar.setRealOutTime(now).setOutChannel(channel);
         tbBusinessCarService.updateById(tbBusinessCar);
         return ResultJson.success();

+ 45 - 19
sp-server/src/main/java/com/pj/api/service/ApiService.java

@@ -17,6 +17,7 @@ import com.pj.current.config.WxConfig;
 import com.pj.current.satoken.StpUserUtil;
 import com.pj.project.tb_account.TbAccount;
 import com.pj.project.tb_account.TbAccountService;
+import com.pj.project.tb_business.CarDisincle;
 import com.pj.project.tb_business.TbBusiness;
 import com.pj.project.tb_business.TbBusinessService;
 import com.pj.project.tb_business_car.TbBusinessCar;
@@ -95,6 +96,9 @@ public class ApiService {
     @Resource
     private PartConfig partConfig;
 
+    private final List<String> CAR_LIST = StrUtil.splitTrim("浙,粤,京,津,冀,晋,蒙,辽,黑,沪,吉,苏,皖,赣,鲁,豫,鄂,湘,桂,琼,渝,川,贵,云,藏, 陕, 甘, 青, 宁", ",");
+
+
     public List<InOutRecordBO> getInOutRecord(SoMap so) {
         List<TbPassRecord> passRecords = tbPassRecordService.getList(so);
         List<InOutRecordBO> recordList = new ArrayList<>();
@@ -122,11 +126,14 @@ public class ApiService {
 
     public List<TbBusinessCar> searchPartCar(String carNo) {
         List<TbBusinessCar> list = tbBusinessCarService.searchPartCar(carNo);
-//        list = list.stream().filter(tbBusinessCar -> {
-//            String businessId = tbBusinessCar.getBusinessId();
-//            TbBusiness tbBusiness = tbBusinessService.getById(businessId);
-//            return tbBusiness.getAdminConfirmInput() == 1;
-//        }).collect(Collectors.toList());
+        list = list.stream().filter(tbBusinessCar -> {
+            String businessId = tbBusinessCar.getBusinessId();
+            if (StrUtil.isEmpty(businessId)) {
+                return false;
+            }
+            TbBusiness tbBusiness = tbBusinessService.getById(businessId);
+            return tbBusiness.getAdminConfirmInput() == 1;
+        }).collect(Collectors.toList());
         return list;
     }
 
@@ -244,43 +251,50 @@ public class ApiService {
     }
 
     public void addCarDisinfect(String carNo, String itemJson, String carType) {
+        carNo = carNo.toUpperCase();
         TbBusinessCar db = tbBusinessCarService.checkCar(carNo);
         if (db != null) {
             throw new BusinessException("该车辆有未完成作业");
         }
         db = new TbBusinessCar();
         db.setCarNo(carNo).setIsLock(0);
-        TbBusiness tbBusiness=new TbBusiness();
+        TbBusiness tbBusiness = new TbBusiness();
         if (StpUserUtil.isLogin()) {
             String customerId = StpUserUtil.getCustomerId();
             db.setCustomerId(customerId);
-            TbCostomer tbCostomer=tbCostomerService.getById(customerId);
+            TbCostomer tbCostomer = tbCostomerService.getById(customerId);
             tbBusiness.setCustomerId(customerId).setCustomerName(tbCostomer.getName());
         }
         db.setPay(0).setCarSize(12D);
-        List<TbItem>tbItems= JSONUtil.toList(itemJson,TbItem.class);
-        BigDecimal price=new BigDecimal("0");
-        List<TbBusinessItem>itemList=new ArrayList<>();
-       String no= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm"))+RandomUtil.randomNumbers(4);
-       int index=1;
+        List<TbItem> tbItems = JSONUtil.toList(itemJson, TbItem.class);
+        BigDecimal price = new BigDecimal("0");
+        List<TbBusinessItem> itemList = new ArrayList<>();
+        String no = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + RandomUtil.randomNumbers(4);
+        int index = 1;
         for (TbItem tbItem : tbItems) {
             TbBusinessItem item = new TbBusinessItem();
-            item.setNo(no+"0"+index)
+            item.setNo(no + "0" + index)
                     .setBusinessType(TbCostomer.CustomerEnum.DISINFECT_TYPE.getType());
             item.setItemCode(tbItem.getItemCode()).setNum("1")
                     .setItemName(tbItem.getItemName()).setItemPrice(tbItem.getPrice())
                     .setItemTypeId(tbItem.getTypeId()).setItemTypeName(tbItem.getTypeName())
                     .setUnit(tbItem.getUnit()).setTotal(tbItem.getPrice()).setCreateTime(new Date());
-            price=  price.add(item.getItemPrice());
-         itemList.add(item);
-         index++;
+            price = price.add(item.getItemPrice());
+            itemList.add(item);
+            index++;
         }
         BigDecimal initCarPartMoney = partConfig.getBasePrice();
         tbBusiness.setPartMoney(initCarPartMoney)
                 .setNo(no).setGoodsName(carType)
-                .setCreateTime(new Date())
-        .setItemPrice(price)
-                .setTotalMoney(price.add(initCarPartMoney)).setCardNo(carNo);
+                .setCreateTime(new Date()).setBusinessType(TbBusiness.BusinessType.CAR_DISINCLE.getCode())
+                .setItemPrice(price)
+                .setTotalMoney(price.add(initCarPartMoney));
+        String prefix = carNo.substring(0, 1);
+        if (CAR_LIST.contains(prefix)) {
+            tbBusiness.setChinaCarNo(carNo);
+        } else {
+            tbBusiness.setCardNo(carNo);
+        }
         tbBusinessService.save(tbBusiness);
         db.setBusinessId(tbBusiness.getId());
         tbBusinessCarService.save(db);
@@ -288,4 +302,16 @@ public class ApiService {
         tbBusinessItemService.saveBatch(itemList);
     }
 
+    public void editCarDisinfect(CarDisincle carDisincle, String itemJson, String type) {
+        String carId = carDisincle.getBusinessCarId();
+        TbBusinessCar businessCar = tbBusinessCarService.getById(carId);
+        if (businessCar == null) {
+            throw new BusinessException("数据不存在");
+        }
+        List<TbItem> tbItems = JSONUtil.toList(itemJson, TbItem.class);
+       tbItems.forEach(tbItem -> {
+
+
+       });
+    }
 }

+ 4 - 2
sp-server/src/main/java/com/pj/api/wx/service/WxService.java

@@ -239,8 +239,10 @@ public class WxService {
                 payRecord.setCreateTime(now)
                         .setOutTradeNo(tradeNo)
                         .setTransactionId(transactionId)
-                        .setPayMoney(money)
-                        .setCustomerId(tbCostomer.getId()).setCustomerName(tbCostomer.getName());
+                        .setPayMoney(money);
+                if (tbCostomer!=null){
+                    payRecord.setCustomerId(tbCostomer.getId()).setCustomerName(tbCostomer.getName());
+                }
                 tbPayRecordService.save(payRecord);
             }
             String a = attach.getA();

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

@@ -8,6 +8,7 @@ import java.io.Serializable;
 @Accessors(chain = true)
 public class CarDisincle implements Serializable {
     private String id;
+    private String businessCarId;
     private String no;
     private String itemPrice;
     private String carNo;

+ 14 - 0
sp-server/src/main/java/com/pj/project/tb_business/TbBusiness.java

@@ -218,6 +218,10 @@ public class TbBusiness extends Model<TbBusiness> implements Serializable {
     private String disinfectReport;
     private String checkReport;
     private String outReport;
+    /**
+     * 业务类型(1=车辆消杀,2=录入业务)
+     */
+    private Integer businessType=2;
 
     private transient String itemJson;
     private transient String peopleJson;
@@ -230,6 +234,16 @@ public class TbBusiness extends Model<TbBusiness> implements Serializable {
 
     @Getter
     @AllArgsConstructor
+    public static enum BusinessType{
+        CAR_DISINCLE(1,"车辆消杀"),
+        HOLD_CAR(2,"整车业务"),
+        ;
+        private Integer code;
+        private String desc;
+    }
+
+    @Getter
+    @AllArgsConstructor
    public static enum PayStatus{
         NO_PAY(1,"未支付"),
         HAS_PAY(2,"已支付"),

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

@@ -70,12 +70,13 @@
     <select id="getCarDisincleList" resultType="com.pj.project.tb_business.CarDisincle">
 		SELECT
             a.id,
+            b.id as businessCarId,
             a.`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.real_in_time,b.real_out_time
         from tb_business a,tb_business_car b
-        WHERE a.id=b.business_id
+        WHERE a.id=b.business_id and (a.declare_no='' or a.declare_no is null)
             <if test="cardNo !='' and cardNo !=null">
                 and b.car_no like concat('%',#{cardNo},'%')
             </if>

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

@@ -135,6 +135,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
      * 增
      */
     public AjaxJson addOrUpdate(TbBusiness t) {
+        t.setBusinessType(TbBusiness.BusinessType.HOLD_CAR.getCode());
         if (StrUtil.isEmpty(t.getDeclareNo())) {
             throw new BusinessException("请选择申报单");
         }

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

@@ -56,9 +56,9 @@
 		SELECT
 	        a.*
         FROM
-            tb_business_car a left join
+            tb_business_car a,
             tb_business b
-        on
+        where
             a.business_id = b.id
             AND b.total_money> b.pay_money
             AND a.car_no LIKE CONCAT( '%', #{carNo}, '%' )

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

@@ -86,14 +86,14 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
 
 
     public List<TbBusinessCar> searchPartCar(String carNo) {
-        QueryWrapper<TbBusinessCar> ew = new QueryWrapper<>();
-        ew.like("car_no", carNo);
-        ew.orderByDesc("id");
-        List<TbBusinessCar> list = this.list(ew);
-        list = list.stream().filter(tbBusinessCar -> tbBusinessCar.getPay()==0).collect(
-                Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TbBusinessCar::getCarNo))), ArrayList::new));
-        return list;
-//        return   tbBusinessCarMapper.searchPartCar(carNo.toUpperCase());
+//        QueryWrapper<TbBusinessCar> ew = new QueryWrapper<>();
+//        ew.like("car_no", carNo);
+//        ew.orderByDesc("id");
+//        List<TbBusinessCar> list = this.list(ew);
+//        list = list.stream().filter(tbBusinessCar -> tbBusinessCar.getPay()==0).collect(
+//                Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TbBusinessCar::getCarNo))), ArrayList::new));
+//        return list;
+        return   tbBusinessCarMapper.searchPartCar(carNo.toUpperCase());
     }
 
 

+ 20 - 0
sp-server/src/main/java/com/pj/project/tb_costomer/TbCostomer.java

@@ -1,10 +1,13 @@
 package com.pj.project.tb_costomer;
 
 import java.io.Serializable;
+import java.util.Arrays;
 import java.util.Date;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.pj.project4sp.global.BusinessException;
 import lombok.AllArgsConstructor;
 import lombok.EqualsAndHashCode;
 
@@ -107,6 +110,19 @@ public class TbCostomer extends Model<TbCostomer> implements Serializable {
 	 */
 	private String type="0";
 
+	@TableField(exist = false)
+	private String typeDes;
+
+	public String getTypeDes() {
+		String type=this.type;
+		StringBuilder sb=new StringBuilder();
+		StrUtil.splitTrim(type,",")
+				.forEach(t->{
+					sb.append(CustomerEnum.getDesc(t)).append("、");
+				});
+		return sb.substring(0,sb.lastIndexOf("、"));
+	}
+
 	@Getter
 	@AllArgsConstructor
 	public static enum CustomerEnum{
@@ -117,6 +133,10 @@ public class TbCostomer extends Model<TbCostomer> implements Serializable {
 		;
 		private String type;
 		private String desc;
+		public static String getDesc(String type){
+			return Arrays.stream(CustomerEnum.values()).filter(customerEnum -> customerEnum.getType().equals(type))
+					.findFirst().orElseThrow(()->new BusinessException("不存在")).getDesc();
+		}
 	}
 
 

+ 57 - 42
sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java

@@ -24,6 +24,7 @@ import com.pj.project.tb_business_item.TbBusinessItem;
 import com.pj.project4sp.uploadfile.UploadUtil;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -35,56 +36,70 @@ import javax.annotation.Resource;
 
 /**
  * Service: tb_fee_details -- 收费明细表
- * @author lzm 
+ *
+ * @author lzm
  */
 @Service
 @Transactional
 public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDetails> implements IService<TbFeeDetails> {
 
-	/** 底层 Mapper 对象 */
-	@Autowired
-	TbFeeDetailsMapper tbFeeDetailsMapper;
-	@Resource
+    /**
+     * 底层 Mapper 对象
+     */
+    @Autowired
+    TbFeeDetailsMapper tbFeeDetailsMapper;
+    @Resource
     TbBusinessCarService tbBusinessCarService;
     @Resource
+    @Lazy
     TbBusinessService tbBusinessService;
     @Resource
     private MyConfig myConfig;
     @Resource
     private PartConfig partConfig;
 
-	/** 增 */
-	int add(TbFeeDetails t){
-		return tbFeeDetailsMapper.add(t);
-	}
+    /**
+     * 增
+     */
+    int add(TbFeeDetails t) {
+        return tbFeeDetailsMapper.add(t);
+    }
 
-	/** 删 */
-	int delete(Long id){
-		return tbFeeDetailsMapper.delete(id);
-	}
+    /**
+     * 删
+     */
+    int delete(Long id) {
+        return tbFeeDetailsMapper.delete(id);
+    }
 
-	/** 改 */
-	int update(TbFeeDetails t){
-		return tbFeeDetailsMapper.update(t);
-	}
+    /**
+     * 改
+     */
+    int update(TbFeeDetails t) {
+        return tbFeeDetailsMapper.update(t);
+    }
 
-	/** 查 */
-	TbFeeDetails getById(Long id){
-		return tbFeeDetailsMapper.getById(id);
-	}
+    /**
+     * 查
+     */
+    TbFeeDetails getById(Long id) {
+        return tbFeeDetailsMapper.getById(id);
+    }
 
-	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */  
-	List<TbFeeDetails> getList(SoMap so) {
-		return tbFeeDetailsMapper.getList(so);	
-	}
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    List<TbFeeDetails> getList(SoMap so) {
+        return tbFeeDetailsMapper.getList(so);
+    }
 
-    public TbFeeDetails getByBusinessItemId(String businessItemId){
+    public TbFeeDetails getByBusinessItemId(String businessItemId) {
         QueryWrapper<TbFeeDetails> qw = new QueryWrapper<>();
         qw.eq("business_item_id", businessItemId);
         return getOne(qw);
     }
 
-    public TbFeeDetails getByBusinessIdAndCarNoAndFeeType(String businessId, String carNo, Integer feeType){
+    public TbFeeDetails getByBusinessIdAndCarNoAndFeeType(String businessId, String carNo, Integer feeType) {
         QueryWrapper<TbFeeDetails> qw = new QueryWrapper<>();
         qw.eq("business_id", businessId);
         qw.eq("car_no", carNo);
@@ -92,7 +107,7 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
         return getOne(qw);
     }
 
-    public TbFeeDetails getByBusinessIdAndCarNoAndItemType(String businessId, String carNo, String itemTypeId){
+    public TbFeeDetails getByBusinessIdAndCarNoAndItemType(String businessId, String carNo, String itemTypeId) {
         QueryWrapper<TbFeeDetails> qw = new QueryWrapper<>();
         qw.eq("business_id", businessId);
         qw.eq("car_no", carNo);
@@ -101,7 +116,7 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
     }
 
 
-	public void chargeParkFee(List<PriceBO> cars){
+    public void chargeParkFee(List<PriceBO> cars) {
         Date now = new Date();
         String toDay = DateUtil.format(now, "yyyy-MM-dd");
         for (PriceBO bo1 : cars) {
@@ -109,7 +124,7 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
             TbBusiness business = tbBusinessService.getById(car.getBusinessId());
             String carNo = car.getCarNo();
             TbFeeDetails parkFee = getByBusinessIdAndCarNoAndFeeType(car.getBusinessId(), carNo, TbFeeDetails.fee.PARK_FEE.getCode());
-            if(parkFee == null){
+            if (parkFee == null) {
                 parkFee = new TbFeeDetails();
                 parkFee.setTaxRate(partConfig.getTaxRate());
             }
@@ -125,28 +140,28 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
     }
 
     //@Async
-    public void chargeBusinessFee(List<TbBusinessItem> items){
+    public void chargeBusinessFee(List<TbBusinessItem> items) {
         Date now = new Date();
         String toDay = DateUtil.format(now, "yyyy-MM-dd");
         for (TbBusinessItem item : items) {
             int feeType = -1;
             String itemType = item.getItemTypeName();
-            if(itemType.contains("核酸")){
+            if (itemType.contains("核酸")) {
                 feeType = TbFeeDetails.fee.NUCLEIC_FEE.getCode();
-            } else if(itemType.contains("消毒")){
+            } else if (itemType.contains("消毒")) {
                 feeType = TbFeeDetails.fee.DISINFECT_FEE.getCode();
-            } else if(itemType.contains("装卸")){
+            } else if (itemType.contains("装卸")) {
                 feeType = TbFeeDetails.fee.STEVEDORE_FEE.getCode();
-            } else if(StrUtil.equals(itemType, "特殊车辆") || StrUtil.equals(itemType, "汽车吊" )){
+            } else if (StrUtil.equals(itemType, "特殊车辆") || StrUtil.equals(itemType, "汽车吊")) {
                 feeType = TbFeeDetails.fee.STEVEDORE_FEE.getCode();
-            } else if(itemType.contains("入场管理")){
+            } else if (itemType.contains("入场管理")) {
                 feeType = TbFeeDetails.fee.MANAGE_FEE.getCode();
-            } else if(StrUtil.equals(itemType, "充电打冷")) {
+            } else if (StrUtil.equals(itemType, "充电打冷")) {
                 feeType = TbFeeDetails.fee.CHARGE_FEE.getCode();
             }
             TbBusiness business = tbBusinessService.getById(item.getBusinessId());
             TbFeeDetails businessFee = getByBusinessIdAndCarNoAndItemType(item.getBusinessId(), business.getCardNo(), item.getItemTypeId());
-            if(businessFee == null){
+            if (businessFee == null) {
                 businessFee = new TbFeeDetails();
             }
             businessFee.setBusinessId(item.getBusinessId()).setBusinessNo(business.getNo())
@@ -160,10 +175,10 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
         }
     }
 
-    public String export(SoMap so) throws Exception{
+    public String export(SoMap so) throws Exception {
         Map<String, String> head = new HashMap<>();
         head.put("time", so.getString("payDay"));
-	    List<ExportFeeDetailDTO> exportList = new ArrayList<>();
+        List<ExportFeeDetailDTO> exportList = new ArrayList<>();
         List<TbFeeDetails> list = this.getList(so);
         Integer index = 1;
         for (TbFeeDetails feeDetails : list) {
@@ -189,9 +204,9 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
         }
 
         ClassPathResource classPathResource = new ClassPathResource("static/day-fee.xlsx");
-        InputStream tempInputStream =classPathResource.getInputStream();
+        InputStream tempInputStream = classPathResource.getInputStream();
 
-        ExcelWriter excelWriter = EasyExcel.write(savePath+fileName, ExportFeeDetailDTO.class)
+        ExcelWriter excelWriter = EasyExcel.write(savePath + fileName, ExportFeeDetailDTO.class)
                 .withTemplate(tempInputStream).build();
         WriteSheet writeSheet = EasyExcel.writerSheet().build();
         excelWriter.fill(exportList, writeSheet);

+ 3 - 3
sp-server/src/main/resources/application-dev.yml

@@ -6,7 +6,7 @@ spring:
     # 数据源配置
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        url: jdbc:mysql://127.0.0.1:3306/pco_system?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
+        url: jdbc:mysql://127.0.0.1:3306/pco_system?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
         username: root
         password: 123456
         # 是否打开sql监控台  (生产环境请务必关闭此选项)
@@ -45,8 +45,8 @@ spring:
     # 项目自定义配置
     myconfig:
         # 本项目部署到的服务器域名(文件上传等等模块  要用到)
-        domain: https://192.168.1.7:8099/pro
-        web-domain: https://192.168.1.7:8080
+        domain: https://127.0.0.1:8099/pro
+        web-domain: https://127.0.0.1:8080
 part-config:
     base-price: 30 #基础费用
     extra-price: 0.01 #过夜额外收费