Ver código fonte

Merge branch 'dev' into debug

# Conflicts:
#	sp-server/src/main/java/com/pj/api/open/service/OpenService.java
#	sp-server/src/main/java/com/pj/api/wx/service/WxService.java
#	sp-server/src/main/java/com/pj/project/tb_business/TbBusinessService.java
qzyReal 2 anos atrás
pai
commit
741ba74794
45 arquivos alterados com 1029 adições e 713 exclusões
  1. 1 1
      app-ui/pages/wx/pay.vue
  2. 7 1
      sp-admin/sa-frame/menu-list-sp.js
  3. 26 10
      sp-admin/sa-view/tb-account/balance-print.html
  4. 11 3
      sp-admin/sa-view/tb-account/tb-account-add.html
  5. 5 5
      sp-admin/sa-view/tb-account/tb-account-info.html
  6. 5 5
      sp-admin/sa-view/tb-account/tb-account-list.html
  7. 24 1
      sp-admin/sa-view/tb-business-car/tb-business-car-info.html
  8. 0 7
      sp-admin/sa-view/tb-business/tb-business-info.html
  9. 128 243
      sp-admin/sa-view/tb-business/tb-car-disincle-add.html
  10. 112 237
      sp-admin/sa-view/tb-business/tb-car-disincle-edit.html
  11. 27 7
      sp-admin/sa-view/tb-business/tb-car-disincle-info.html
  12. 21 5
      sp-admin/sa-view/tb-business/tb-car-disincle-judge.html
  13. 15 10
      sp-admin/sa-view/tb-business/tb-car-disincle-list.html
  14. 5 5
      sp-admin/sa-view/tb-charge-record/tb-charge-record-info.html
  15. 5 5
      sp-admin/sa-view/tb-charge-record/tb-charge-record-list.html
  16. 5 5
      sp-admin/sa-view/tb-deduction-record/tb-deduction-record-error-list.html
  17. 5 5
      sp-admin/sa-view/tb-deduction-record/tb-deduction-record-list.html
  18. 1 7
      sp-admin/sa-view/tb-goods/tb-goods-add.html
  19. 1 1
      sp-admin/sa-view/tb-goods/tb-goods-list.html
  20. 1 1
      sp-admin/sa-view/tb-item-type/tb-item-add.html
  21. 1 1
      sp-admin/sa-view/tb-item-type/tb-item-edit.html
  22. 2 0
      sp-admin/sa-view/tb-item-type/tb-item-type-add.html
  23. 1 0
      sp-admin/sa-view/tb-item-type/tb-item-type-list.html
  24. 1 1
      sp-admin/static/sa.js
  25. 2 2
      sp-server/src/main/java/com/pj/api/jh/service/JhService.java
  26. 15 11
      sp-server/src/main/java/com/pj/api/open/service/OpenService.java
  27. 7 17
      sp-server/src/main/java/com/pj/api/wx/service/WxService.java
  28. 28 0
      sp-server/src/main/java/com/pj/current/config/MyConfig.java
  29. 4 0
      sp-server/src/main/java/com/pj/project/sync/bo/ItemTypeBO.java
  30. 2 0
      sp-server/src/main/java/com/pj/project/sync/request/item/IFactorItem.java
  31. 255 60
      sp-server/src/main/java/com/pj/project/tb_business/TbBusinessService.java
  32. 6 0
      sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarController.java
  33. 31 17
      sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarService.java
  34. 36 0
      sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItem.java
  35. 8 0
      sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemController.java
  36. 1 0
      sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemMapper.java
  37. 18 0
      sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemMapper.xml
  38. 135 5
      sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemService.java
  39. 13 11
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java
  40. 25 7
      sp-server/src/main/java/com/pj/project/tb_item/TbItem.java
  41. 3 1
      sp-server/src/main/java/com/pj/project/tb_item/TbItemService.java
  42. 6 10
      sp-server/src/main/java/com/pj/project/tb_item_fac/TbItemFacService.java
  43. 4 1
      sp-server/src/main/java/com/pj/project/tb_item_type/TbItemType.java
  44. 11 3
      sp-server/src/main/java/com/pj/project/tb_item_type/TbItemTypeService.java
  45. 9 2
      sp-server/src/main/resources/application-dev.yml

+ 1 - 1
app-ui/pages/wx/pay.vue

@@ -348,7 +348,7 @@
 				}).then(resp => {
 					let code = resp.code;
 					if (code !== 200) {
-						this.$common.toast('系统异常');
+						this.$common.toast(resp.msg);
 						return;
 					}
 					let data = resp.data;

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

@@ -374,7 +374,8 @@ window.menuList.unshift({
 		name: '业务管理',
 		icon: 'el-icon-edit-outline',
 		parent: true,
-		childList: [{
+		childList: [
+			{
 				id: 'tb-car-disincle-list',
 				name: '业务管理',
 				url: 'sa-view/tb-business/tb-car-disincle-list.html',
@@ -429,6 +430,11 @@ window.menuList.unshift({
 				]
 			},
 			{
+				id: 'tb-abinet-record',
+				name: '存/取柜记录',
+				url: 'sa-view/tb-business/tb-abinet-record.html',
+			},
+			{
 				id: 'tb-supplement-list',
 				name: '补录订单',
 				url: 'sa-view/tb-business/tb-supplement-list.html',

+ 26 - 10
sp-admin/sa-view/tb-account/balance-print.html

@@ -50,6 +50,14 @@
 			.title-top {
 				margin-top: 248px;
 			}
+			.hide-border{
+				border-bottom-style:none;
+				border-left-style:none;
+				border-right-style: none;
+			}
+			tr td:first-child {
+			  border-left: none;
+			}
 		</style>
 		<link rel="stylesheet" href="../../static/sa.css">
 		<script src="../../static/kj/vue.min.js"></script>
@@ -90,9 +98,6 @@
 								<th style="min-width: 60px;">余额退款</th>
 								<th style="min-width: 60px;">异常退款</th>
 								<th style="width: 70px;">期末余额</th>
-								<th style="width: 110px;">统计稽核员</th>
-								<th style="width: 100px;">复核员</th>
-								<th style="width: 100px;">开单员</th>
 							</tr>
 							<tr v-for="(cel,i) in item.list" :key="cel.index" style="height:60px;font-size: 10px;">
 								<td>{{i+1}}</td>
@@ -103,11 +108,8 @@
 								<td>{{cel.balanceRefundMoney}}</td>
 								<td>{{cel.errorRefundMoney}}</td>
 								<td>{{cel.endMoney}}</td>
-								<td></td>
-								<td></td>
-								<td></td>
 							</tr>
-							<tr style="height: 60px;padding: 0 0.5px;" v-if="index==dataList.length-1">
+							<tr style="height: 40px;padding: 0 0.5px;" v-if="index==dataList.length-1">
 								<td></td>
 								<td>合计</td>
 								<td>{{totalInit}}</td>
@@ -116,11 +118,25 @@
 								<td>{{totalRefundMoney}}</td>
 								<td>{{totalErrorRefund}}</td>
 								<td>{{totalEnd}}</td>
-								<td></td>
-								<td></td>
-								<td></td>
 							</tr>
+						<!-- 	<tr style="height: 40px;padding: 0 0.5px;" v-if="index==dataList.length-1">
+								<td class="hide-border"></td>
+								<td class="hide-border"></td>
+								<td class="hide-border">统计稽核员:</td>
+								<td class="hide-border"></td>
+								<td class="hide-border">复核员:</td>
+								<td class="hide-border"></td>
+								<td class="hide-border">开单员:</td>
+								<td class="hide-border"></td>
+							</tr> -->
 						</table>
+						<div>
+							<div style="display: flex;margin-top: 15px;">
+								<div style="flex: 2;text-align: right;margin-right: 50px;">统计稽核员:</div>
+								<div style="flex: 1;">复核员:</div>
+								<div style="flex: 1;margin-right: 20px;">开单员:</div>
+							</div>
+						</div>
 						<span style="position: absolute;top: 1250px;left: 750px">{{index+1}}/{{dataList.length}}</span>
 					</div>
 				</div>

+ 11 - 3
sp-admin/sa-view/tb-account/tb-account-add.html

@@ -42,7 +42,7 @@
 						<sa-item type="text" name="客户名称" v-model="m.customerName" :disabled="true" br></sa-item>
 						<sa-item type="text" name="客户余额" v-model="m.totalMoney" :disabled="true" br></sa-item>
 						<sa-item name="实际收款" br>
-							<el-input type="number" v-model="m.totalTopup" >
+							<el-input type="number" step="0.01" @input="totalTopupInput" v-model="m.totalTopup" >
 								<template slot="suffix">元</template>
 							</el-input>
 						</sa-item>
@@ -90,15 +90,23 @@
 				},
 				computed: {
 					preTopupMoney() {
-						let money= parseInt(this.m.totalTopup) + parseInt(this.m.discountMoney);
+						let money= parseFloat(this.m.totalTopup) + parseFloat(this.m.discountMoney);
 						if(money<0){
 							money=0;
 							sa.error('金额不正确');
 						}
-						return money;
+						return money.toFixed(2);
 					}
 				},
 				methods: {
+					totalTopupInput(){
+						let totalTopup=this.m.totalTopup;
+					  	if(totalTopup&&totalTopup.indexOf('.')>-1){
+							if(totalTopup.substr('.').length>2){
+								this.m.totalTopup=totalTopup.substr(0,totalTopup.indexOf('.')+3);
+							}
+						}
+					},
 					// 提交数据
 					ok: function() {
 						this.m.preTopupMoney=this.preTopupMoney;

+ 5 - 5
sp-admin/sa-view/tb-account/tb-account-info.html

@@ -8,11 +8,11 @@
     <!-- 所有的 css js 资源 -->
     <link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
     <link rel="stylesheet" href="../../static/sa.css">
-    <script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script>
-    <script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
-    <script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
-    <script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
-    <script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
+    <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 {

+ 5 - 5
sp-admin/sa-view/tb-account/tb-account-list.html

@@ -8,11 +8,11 @@
 		<!-- 所有的 css & js 资源 -->
 		<link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
 		<link rel="stylesheet" href="../../static/sa.css">
-		<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
-		<script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
-		<script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
-		<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
-		<script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
+		<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>
 		<script src="../../static/node_modules/crypto-js/crypto-js.js"></script>
 		<style>

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

@@ -109,8 +109,31 @@
 										</el-table-column>
 										<el-table-column prop="unit" label="计费标准" width="160">
 										</el-table-column>
-										<el-table-column prop="num" label="数量" width="160">
+										<el-table-column prop="cabinetNo" label="柜号" >
 										</el-table-column>
+										<el-table-column prop="cabinetType" label="取/存" >
+											<template slot-scope="s">
+												<label v-if="s.row.cabinetType==-1">-</label>
+												<label v-if="s.row.cabinetType==0">存柜</label>
+												<label v-if="s.row.cabinetType==1">取柜</label>
+											</template>
+										</el-table-column>
+										<el-table-column prop="cabinetType" label="柜状态" >
+											<template slot-scope="s">
+												<label v-if="s.row.cabinetStatus==0">未取</label>
+												<label v-if="s.row.cabinetStatus==1">已取</label>
+											</template>
+										</el-table-column>
+										<el-table-column prop="num" label="数量">
+										</el-table-column>
+										<el-table-column prop="coldStartTime" label="开始时间" width="160">
+										</el-table-column>
+										<sa-td name="开始时间图片" width="130" prop="startImage" type="img" >
+										</sa-td>
+										<el-table-column prop="coldEndTime" label="结束时间" width="160" >
+										</el-table-column>
+										<sa-td name="结束时间图片" width="130" prop="endImage" type="img" >
+										</sa-td>
 										<el-table-column prop="total" label="合计" width="120">
 										</el-table-column>
 										<el-table-column prop="payStatus" label="支付状态" width="100">

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

@@ -60,8 +60,6 @@
                                         <sa-info name="业务费用" br>{{m.itemPrice}}(元)</sa-info>
                                         <sa-info name="合计费用" br>{{m.totalMoney}}(元)</sa-info>
                                         <sa-info name="支付时间" br>{{m.payTime}}</sa-info>
-                                        <sa-info type="img" name="检验检疫证" :value="m.checkReport" br></sa-info>
-                                        <sa-info type="img" name="出仓证明" :value="m.outReport" br></sa-info>
                                     </el-col>
                                 </el-row>
                             </div>
@@ -77,14 +75,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 width="130" name="支付状态" prop="pay" type="enum"
                                        :jv="{0: '未支付[#ff0000]', 1: '已支付[#005500]'}">
                                 </sa-td>
-                                <sa-td width="120" name="车辆状态" prop="isLock" type="enum"
-                                       :jv="{1: '锁定[#ff0000]', 0: '正常[#005500]'}">
-                                </sa-td>
-
                                 <el-table-column label="停车费">
                                     <template slot-scope="s">
                                         <label v-if="s.row.money">{{s.row.money}}</label>

+ 128 - 243
sp-admin/sa-view/tb-business/tb-car-disincle-add.html

@@ -45,6 +45,10 @@
 			.china-car-size .el-input__inner {
 				width: 130px;
 			}
+			.flex-item {
+				width: 360px;
+				padding-bottom: 20px;
+			}
 		</style>
 	</head>
 	<body>
@@ -97,7 +101,8 @@
 										<el-col span=8>
 											<div class="c-item" v-if="goods.needPartner">
 												<label class="c-label"><span style="color: red;">*</span>合作伙伴:</label>
-												<el-select v-model="m.pickCustomerId" placeholder="请选择" filterable :disabled="partnerDis">
+												<el-select v-model="m.pickCustomerId" placeholder="请选择" filterable
+													:disabled="partnerDis">
 													<el-option v-for="item in partnerList" :key="item.id"
 														:label="item.name" :value="item.id">
 													</el-option>
@@ -117,7 +122,7 @@
 						<el-row>
 							<el-card class="box-card">
 								<div slot="header" class="clearfix">
-									<span>车辆</span>
+									<span>业务车辆</span>
 									<el-button style="float: right;" icon="el-icon-plus" type="primary"
 										@click="showAddModal" v-if="goods.mulCar==1||car.list.length==0">添加
 									</el-button>
@@ -127,13 +132,13 @@
 									</el-table-column>
 									<el-table-column prop="carNo" label="车牌号">
 									</el-table-column>
-									<el-table-column prop="carSize" label="规格(米)">
-									</el-table-column>
 									<el-table-column prop="carType" label="类型">
 									</el-table-column>
-									<el-table-column prop="netWeight" label="载重(kg)">
+									<el-table-column prop="driverName" label="司机姓名" v-if="car.list.length>0&&car.list[0].driverName">
+									</el-table-column>
+									<el-table-column prop="driverPhone" label="司机电话" v-if="car.list.length>0&&car.list[0].driverName">
 									</el-table-column>
-									<el-table-column label="操作">
+									<el-table-column label="操作" fixed="right" width="140">
 										<template slot-scope="s">
 											<el-button class="c-btn" type="info" @click="editFn(s.row)">修改</el-button>
 											<el-button class="c-btn" type="danger" @click="deleteFn(s.row)">删除
@@ -146,46 +151,74 @@
 						<el-row>
 							<el-card class="box-card">
 								<div slot="header" class="clearfix">
-									<span>收费项</span>
+									<span>业务类型</span>
 								</div>
 								<div>
-									<el-form-item v-for="(type,index) in itemTypeList">
-										<el-row justify="center">
-											<el-col span="8">
+									<div v-for="(type,index) in itemTypeList">
+										<div style="display: flex;flex-wrap: wrap;">
+											<div style="width: 360px;padding-bottom: 20px;">
 												<label style="color: red;"
 													v-if="type.need==1">*</label><label>{{type.name}}:</label>
-												<el-select v-model="type.itemId" style="width: 120px;"
-													@change="itemChange(type)" placeholder="请选择">
+												<el-select v-model="type.itemId" @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>
-											</el-col>
-											<el-col span="8">
-												<el-input-number style="margin-left: 60px;" class="item-num"
-													v-model="type.num" :min="1" :disabled="type.disabled" :max="100" size="mini"></el-input-number>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;"
+												v-show="(type.itemAlias&&(type.itemAlias=='emptyStore'||type.itemAlias=='heavyStore'))">
+												<label class="c-label">
+													<span style="color: red;">*</span>
+													取/存:</label>
+												<el-select v-model="type.cabinetType" placeholder="请选择">
+													<el-option v-for="item in type.cabinetTypeList" :key="item.value"
+														:label="item.name" :value="item.value">
+													</el-option>
+												</el-select>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;" v-if="(type.itemName&&type.itemName.indexOf('集装箱')!==-1)
+												||(type.itemName&&type.itemName.indexOf('堆存')!==-1)">
+												<label class="c-label">
+													<span style="color: red;">*</span>
+													柜号:</label>
+												<el-input v-model="type.cabinetNo" placeholder="柜号" clearable>
+												</el-input>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;">
+												<label class="c-label">
+													<span style="color: red;">*</span>
+													数量:</label>
+												<el-input-number style="margin-left: 20px;" class="item-num"
+													v-model="type.num" :min="1" :disabled="type.disabled" :max="100"
+													size="mini"></el-input-number>
 												<div class="xj" v-if="type.itemId">
-													{{type.price * type.num}}元
+													<label v-if="type.price>1">{{type.price * type.num}}元</label>
+													<label v-else>—</label>
 													<label @click="cleanItem(type)"
-														style="margin-left: 5px;cursor: pointer">(<i
+														style="margin-left: 5px;cursor: pointer;z-index: 999;">(<i
 															class="el-icon-delete"></i>)</label>
 												</div>
-											</el-col>
-											<el-col span="8">
-												<div v-if="(type.itemName&&type.itemName.indexOf('集装箱')!==-1)
-												||(type.itemName&&type.itemName.indexOf('堆存')!==-1)">
-													<label class="c-label">
-														<span style="color: red;">*</span>
-														柜号:</label>
-													<el-input v-model="type.cabinetNo"  placeholder="柜号" clearable>
-													</el-input>
-												</div>
-											</el-col>
-										</el-row>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;"
+												v-if="(type.itemAlias&&(type.itemAlias=='coldTruck'||type.itemAlias.indexOf('Store')>-1))">
+												<label class="c-label">
+													<span style="color: red;">*</span>
+													<span v-if="type.cabinetType&&type.cabinetType==1">结束时间:</span>
+													<span v-else>开始时间:</span></label>
+												<el-date-picker type="datetime" v-model="type.coldStartTime"
+													:placeholder="type.cabinetType&&type.cabinetType==1?'结束时间':'开始时间'"></el-date-picker>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;" v-if="type.itemAlias&&type.itemAlias=='coldTruck'">
+												<sa-item type="img" name="开始时间图片" v-model="type.startImage"></sa-item>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;"></div>
+										</div>
 										<el-divider></el-divider>
-									</el-form-item>
-									<div class="hj" v-if="totalPrice>0">
-										合计费用:{{totalPrice}}<label>元</label>
+									</div>
+									<div class="hj">
+										合计费用:<label v-if="totalPrice>5">{{totalPrice}}元</label>
+										<label v-else>未计算</label>
 									</div>
 								</div>
 							</el-card>
@@ -198,14 +231,13 @@
 				<el-button type="primary" @click="ok()">确定</el-button>
 				<el-button @click="closeFn()">取消</el-button>
 			</div>
-			<el-dialog title="车辆录入" :visible.sync="car.visible" width="400">
+			<el-dialog title="车辆录入" :visible.sync="car.visible" width="300">
 				<span>
 					<el-form label-position="left">
 						<div class="c-item">
 							<label class="c-label"><span style="color: red;">*</span>车牌号:</label>
-							<el-autocomplete v-model="car.form.carNo" placeholder="请输入车牌号" value-key='carNo'
-								:fetch-suggestions="queryCarAsync">
-							</el-autocomplete>
+							<el-input v-model="car.form.carNo" placeholder="请输入车牌号" value-key='carNo'>
+							</el-input>
 						</div>
 						<div class="c-item">
 							<label class="c-label">车辆类型:</label>
@@ -214,19 +246,15 @@
 								</el-option>
 							</el-select>
 						</div>
-						<div class="c-item">
-							<label class="c-label">
-								<span style="color: red;" v-if="goods.needCarSize==1">*</span>
-								规格(米):</label>
-							<el-input-number class="item-num" v-model="car.form.carSize" :min="1" :max="50">
-							</el-input-number>
+						<div class="c-item" v-if="m.goodsName=='集装箱正面吊装'">
+							<label class="c-label">司机姓名:</label>
+							<el-input v-model="car.form.driverName" placeholder="司机姓名">
+							</el-input>
 						</div>
-						<div class="c-item" v-if="car.form.carType.indexOf('空')==-1">
-							<label class="c-label">
-								<span style="color: red;" v-if="goods.needCarSize==1">*</span>
-								载重(kg):</label>
-							<el-input-number class="item-num" v-model="car.form.netWeight" :min="1" :max="999999">
-							</el-input-number>
+						<div class="c-item"  v-if="m.goodsName=='集装箱正面吊装'">
+							<label class="c-label">司机号码:</label>
+							<el-input v-model="car.form.driverPhone" placeholder="司机号码">
+							</el-input>
 						</div>
 					</el-form>
 				</span>
@@ -235,50 +263,6 @@
 					<el-button type="primary" @click="confirmAdd">确 定</el-button>
 				</span>
 			</el-dialog>
-			<el-dialog title="申报单" :visible.sync="declare.visible" width="90%">
-				<div class="delect-search">
-					申报人:
-					<el-input style="width: 140px;" v-model="declare.p.declarePeople" placeholder="申报人">
-					</el-input>
-					<el-button type="primary" @click="getDeclareList">搜索</el-button>
-					<el-button type="info" @click="resetDclare">重置</el-button>
-				</div>
-				<el-card class="box-card" style="margin-top: 20px;">
-					<div slot="header">
-						<span>列表</span>
-					</div>
-					<el-table :data="declare.list" ref="declareTable">
-						<el-table-column type="selection">
-						</el-table-column>
-						<el-table-column prop="declarePeople" label="申报人">
-						</el-table-column>
-						<el-table-column prop="customerName" label="申报公司" width=200>
-						</el-table-column>
-						<el-table-column prop="sendUnit" label="货主" width=200>
-						</el-table-column>
-						<el-table-column prop="createTime" width="140" label="申报时间">
-						</el-table-column>
-						<el-table-column prop="declareNo" width="180" label="申报单号">
-						</el-table-column>
-						<el-table-column prop="goodsName" label="产品学名">
-						</el-table-column>
-						<el-table-column prop="carNo" label="越南车牌">
-						</el-table-column>
-						<el-table-column prop="grossWeight" label="毛重(kg)">
-						</el-table-column>
-					</el-table>
-					<div class="block">
-						<el-pagination layout="prev, pager, next" @current-change="currentPageChange"
-							:page-size="declare.p.pageSize" :total="declare.p.dataCount"
-							:current-page="declare.p.pageNo">
-						</el-pagination>
-					</div>
-				</el-card>
-				<span slot="footer" class="dialog-footer">
-					<el-button @click="declare.visible = false">取 消</el-button>
-					<el-button type="primary" @click="confirmSelectDeclare">确 定</el-button>
-				</span>
-			</el-dialog>
 		</div>
 		<script>
 			var app = new Vue({
@@ -291,7 +275,7 @@
 					m: {
 						id: '', // 主键
 						customerId: '', // 客户id
-						pickCustomerId:'',
+						pickCustomerId: '',
 						customerName: '', // 客户名称
 						operateTime: '',
 						no: '', // 编号
@@ -300,7 +284,7 @@
 						businessGoodsNum: 1,
 						businessGoodsName: ''
 					}, // 实体对象
-					partnerDis:false,
+					partnerDis: false,
 					customerList: [],
 					partnerList: [],
 					carList: [],
@@ -316,6 +300,8 @@
 							carNo: '',
 							carType: '',
 							netWeight: '',
+							driverName:'',
+							driverPhone:'',
 							carSize: ''
 						}
 					},
@@ -364,6 +350,9 @@
 					}
 				},
 				methods: {
+					cabinetTypeChange(type) {
+						console.log(type);
+					},
 					resetDclare() {
 						this.declare.p.pageNo = 1;
 						this.declare.p.pageSize = 8;
@@ -398,79 +387,27 @@
 							})
 						}.bind(this))
 					},
-					confirmSelectDeclare() {
-						// 获取选中元素的id列表
-						let selection = this.$refs['declareTable'].selection;
-						let declareNo = sa.getArrayField(selection, 'declareNo');
-						if (selection.length == 0) {
-							return sa.msg('请至少选择一条数据')
-						}
-						if (selection.length > 1) {
-							return sa.msg('只能选择一条数据')
-						}
-						let declare = selection[0];
-						let oldNo = this.m.declareNo;
-						if (oldNo && oldNo !== declare.declareNo) {
-							this.car.list = [];
-						}
-						if (oldNo !== declare.declareNo) {
-							this.m.declareNo = declare.declareNo;
-							this.m.customerId = declare.customerId;
-							this.m.customerName = declare.customerName;
-							this.m.owner = declare.sendUnit;
-							let carNo = declare.carNo;
-							let grossWeight = declare.grossWeight;
-							let carList = this.car.list;
-							let exit = carList.filter(obj => obj.carNo == carNo).pop();
-							if (!exit) {
-								let car = {
-									carNo: carNo,
-									netWeight: grossWeight,
-									carType: '载重'
-								}
-								this.car.list.push(car)
-							}
-							this.m.cardNo = declare.carNo;
-							this.m.chinaCarNo = declare.chinaCarNo;
-							this.m.netWeight = declare.grossWeight;
-							let chinaCarNo = declare.chinaCarNo;
-							if (chinaCarNo) {
-								let list = [];
-								chinaCarNo.replace(",", ",").split(",").forEach(carNo => {
-									let exit = carList.filter(obj => obj.carNo == carNo).pop();
-									if (!exit) {
-										let car = {
-											carNo: carNo,
-											carType: '空车'
-										}
-										this.car.list.push(car)
-									}
-								})
-							}
-							this.filterItems();
-						}
-						this.declare.visible = false;
-					},
 					cleanItem(type) {
 						type.itemId = '';
 						type.itemName = '';
 						type.price = '';
+						type.cabinetNo = '';
+						type.coldStartTime = '';
 					},
 					itemChange(type) {
-						if (this.validBefore()) {
 							let itemId = type.itemId;
 							let item = type.items.filter(obj => obj.id == itemId).pop();
 							if (item) {
 								type.inc = item.inc;
 								type.price = item.price;
 								type.needRemark = item.needRemark;
-								type.disabled=false;
-								type.itemName=item.itemName;
-								if(item.itemName=='人工、机械装卸车辆'){
-									type.disabled=true;
+								type.disabled = false;
+								type.itemName = item.itemName;
+								type.itemAlias = item.itemAlias;
+								if (item.itemName == '人工、机械装卸车辆') {
+									type.disabled = true;
 								}
 							}
-						}
 					},
 					confirmAdd() {
 						let list = this.car.list;
@@ -479,15 +416,10 @@
 						let goods = this.goods;
 						let form = this.car.form;
 						let carType = form.carType;
-
 						if (!carNo) {
 							sa.error('请录入车牌号')
 							return false;
 						}
-						if (!form.carSize && goods.needCarSize == 1) {
-							sa.error('请填入车辆规格')
-							return false;
-						}
 						if (carType.indexOf('空') !== -1) {
 							netWeight = 0;
 						}
@@ -495,65 +427,32 @@
 						if (index > -1) {
 							list.splice(index, 1);
 						}
+						let phone=form.driverPhone;
+						if(phone&&!sa.isPhone(phone)){
+							sa.error('司机号码不正确')
+							return;
+						}
 						let carSize = form.carSize;
 						let car = {
 							id: form.id,
 							carNo: form.carNo.toUpperCase(),
 							carType: carType,
 							carSize: carSize,
-							netWeight: netWeight
+							netWeight: netWeight,
+							driverName:form.driverName,
+							driverPhone:phone
 						}
 						this.car.list.push(car);
 						this.car.visible = false;
-						this.filterItems();
-					},
-					filterItems() {
-						let carList = this.car.list;
-						let filterTypeList = JSON.parse(JSON.stringify(this.filterTypeList));
-						if (carList.length == 0) {
-							this.itemTypeList = filterTypeList;
-							return;
-						}
-						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) {
-							let type = filterTypeList[i];
-							let items = type.items;
-							if (carType) {
-								items = items.filter(item => item.itemType && item.itemType.indexOf(carType) !== -1);
-							}
-							if (carSize && carSize > 1) {
-								items = items.filter(item => item.minLength <= carSize && item.carLength >= carSize);
-							}
-							if (netWeight && netWeight > 1 && carType.indexOf('空') == -1) {
-								items = items.filter(item => item.minWeight <= netWeight && item.maxWeight >= netWeight);
-							}
-							let itemIds = items.map(item => item.id);
-							if (itemIds.indexOf(type.itemId) == -1) {
-								this.cleanItem(type);
-							}
-							type.items = items;
-							tempList.push(type);
-						}
-						this.itemTypeList = tempList;
+
 					},
 					showAddModal() {
 						this.car.visible = true;
 						this.car.form.carNo = '';
 						this.car.form.carSize = '';
 						this.car.form.netWeight = '';
+						this.car.form.driverName='';
+						this.car.form.driverPhone='';
 					},
 					editFn(data) {
 						Object.assign(this.car, {
@@ -563,7 +462,6 @@
 					},
 					deleteFn(data) {
 						this.car.list.splice(this.car.list.indexOf(data), 1);
-						this.filterItems();
 					},
 					getGoods() {
 						sa.ajax('/TbGoods/getList', {
@@ -594,10 +492,21 @@
 							goodsId: this.m.goodsId
 						}, function(resp) {
 							let list = resp.data;
+							for (let i in list) {
+								let type = list[i];
+								let cabinetTypeList = [{
+									value: 0,
+									name: '存柜'
+								}, {
+									value: 1,
+									name: '取柜'
+								}];
+								type.cabinetTypeList = cabinetTypeList;
+								type.cabinetType = 0;
+							}
 							this.itemTypeList = list.filter(type => type.status == 1);
-							console.log(this.itemTypeList);
-							this.filterTypeList = JSON.parse(JSON.stringify(this.itemTypeList));
-							this.filterItems();
+
+							//this.filterTypeList = JSON.parse(JSON.stringify(this.itemTypeList));
 						}.bind(this))
 					},
 					getItemType() {
@@ -625,13 +534,6 @@
 							this.getCurrentCustomer();
 						}.bind(this));
 					},
-					queryCarAsync(queryStr, cb) {
-						sa.ajaxNoLoading('/TbBusinessCar/searchByNo', {
-							carNo: queryStr
-						}, function(resp) {
-							cb(resp.data)
-						}.bind(this))
-					},
 					closeFn() {
 						parent.app.f5();
 						sa.closeCurrIframe();
@@ -656,15 +558,6 @@
 							sa.error('请录入车辆');
 							return false;
 						}
-						let needCarSize = goods.needCarSize;
-						let carList = this.car.list;
-						for (let i in carList) {
-							let car = carList[i];
-							if (needCarSize == 1 && !car.carSize) {
-								sa.error('请补充' + car.carNo + '规格');
-								return;
-							}
-						}
 						return true;
 					},
 					// 提交数据
@@ -689,16 +582,6 @@
 							sa.error('请录入车辆');
 							return false;
 						}
-						let needCarSize = goods.needCarSize;
-						let carList = this.car.list;
-						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 = [];
 						for (let i in typeList) {
@@ -707,10 +590,7 @@
 								sa.error('【' + type.name + '】必选');
 								return false;
 							}
-							if (type.needRemark == 1 && !type.remark) {
-								sa.error('请输入【' + type.name + '】的备注');
-								return false;
-							}
+
 							if (type.itemId) {
 								let obj = {
 									typeId: type.id,
@@ -719,7 +599,11 @@
 									num: type.num,
 									price: type.price,
 									remark: type.remark,
-									cabinetNo:type.cabinetNo
+									cabinetNo: type.cabinetNo,
+									coldStartTime: type.coldStartTime,
+									itemAlias: type.itemAlias,
+									cabinetType: type.cabinetType,
+									startImage:type.startImage
 								}
 								selectList.push(obj);
 							}
@@ -728,6 +612,7 @@
 							m.customerId = '';
 						}
 						m.itemJson = JSON.stringify(selectList);
+						let carList = this.car.list;
 						m.carJson = JSON.stringify(carList);
 						let chinaCarNo = carList
 							.filter(car => sa.isCarNo(car.carNo.toUpperCase()))
@@ -754,10 +639,10 @@
 							this.currentCustomerId = id;
 							let partnerList = this.partnerList;
 							let arr = partnerList.filter(obj => obj.id == id);
-							if(arr.length>0){
-								this.m.pickCustomerId=id;
-								this.partnerDis=true;
-								this.m.customerId=id;
+							if (arr.length > 0) {
+								this.m.pickCustomerId = id;
+								this.partnerDis = true;
+								this.m.customerId = id;
 							}
 						}.bind(this));
 					},
@@ -770,4 +655,4 @@
 			})
 		</script>
 	</body>
-</html>
+</html>

+ 112 - 237
sp-admin/sa-view/tb-business/tb-car-disincle-edit.html

@@ -41,6 +41,11 @@
 				font-weight: bold;
 
 			}
+
+			.flex-item {
+				width: 360px;
+				padding-bottom: 20px;
+			}
 		</style>
 	</head>
 	<body>
@@ -117,7 +122,7 @@
 						<el-row>
 							<el-card class="box-card">
 								<div slot="header" class="clearfix">
-									<span>车辆</span>
+									<span>业务车辆</span>
 									<el-button style="float: right;" icon="el-icon-plus" type="primary"
 										@click="showAddModal" v-if="goods.mulCar==1||car.list.length==0">添加
 									</el-button>
@@ -127,11 +132,13 @@
 									</el-table-column>
 									<el-table-column prop="carNo" label="车牌号">
 									</el-table-column>
-									<el-table-column prop="carSize" label="规格(米)">
-									</el-table-column>
 									<el-table-column prop="carType" label="类型">
 									</el-table-column>
-									<el-table-column prop="netWeight" label="载重(kg)">
+									<el-table-column prop="driverName" label="司机姓名"
+										v-if="car.list.length>0&&car.list[0].driverName">
+									</el-table-column>
+									<el-table-column prop="driverPhone" label="司机电话"
+										v-if="car.list.length>0&&car.list[0].driverName">
 									</el-table-column>
 									<el-table-column label="操作">
 										<template slot-scope="s">
@@ -146,47 +153,81 @@
 						<el-row>
 							<el-card class="box-card">
 								<div slot="header" class="clearfix">
-									<span>收费项</span>
+									<span>业务类型</span>
 								</div>
 								<div>
 									<el-form-item v-for="(type,index) in itemTypeList">
-										<el-row justify="center">
-											<el-col span="8">
+										<div style="display: flex;flex-wrap: wrap;">
+											<div class="flex-item">
 												<label style="color: red;"
 													v-if="type.need==1">*</label><label>{{type.name}}:</label>
-												<el-select v-model="type.itemId" style="width: 120px;"
+												<el-select v-model="type.itemId" style="width: 100px;"
 													@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>
-											</el-col>
-											<el-col span="8">
-												<el-input-number style="margin-left: 60px;" class="item-num"
-													v-model="type.num" :min="1" :max="100" size="mini"
-													:disabled="type.disabled"></el-input-number>
+											</div>
+											<div class="flex-item">
+												<el-input-number style="margin-left: 20px;" class="item-num"
+													v-model="type.num" :min="1" :disabled="type.disabled" :max="100"
+													size="mini"></el-input-number>
 												<div class="xj" v-if="type.itemId">
-													{{type.price * type.num}}元
-													<label @click="cleanItem(type)"
-														style="margin-left: 5px;cursor: pointer">(<i
-															class="el-icon-delete"></i>)</label>
+													<label v-if="type.price>1">{{type.price * type.num}}元</label>
+													<label v-else>—</label>
+													<!-- <label @click="cleanItem(type)"
+														style="margin-left: 5px;cursor: pointer;z-index: 999;">(<i
+															class="el-icon-delete"></i>)</label> -->
 												</div>
-											</el-col>
-											<el-col span="8">
-												<div v-if="(type.itemName&&type.itemName.indexOf('集装箱')!==-1)
+											</div>
+											<div class="flex-item" v-if="(type.itemName&&type.itemName.indexOf('集装箱')!==-1)
 												||(type.itemName&&type.itemName.indexOf('堆存')!==-1)">
-													<label class="c-label">
-														<span style="color: red;">*</span>
-														柜号:</label>
-													<el-input v-model="type.cabinetNo" placeholder="柜号" clearable>
-													</el-input>
-												</div>
-											</el-col>
-										</el-row>
+												<label class="c-label">
+													<span style="color: red;">*</span>
+													柜号:</label>
+												<el-input v-model="type.cabinetNo" placeholder="柜号" clearable>
+												</el-input>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;"
+												v-show="(type.itemAlias&&(type.itemAlias=='emptyStore'||type.itemAlias=='heavyStore'))">
+												<label class="c-label">
+													<span style="color: red;">*</span>
+													取/存:</label>
+												<el-select v-model="type.cabinetType" disabled placeholder="请选择">
+													<el-option v-for="item in type.cabinetTypeList" :key="item.value"
+														:label="item.name" :value="item.value">
+													</el-option>
+												</el-select>
+											</div>
+											<div class="flex-item"
+												v-if="(type.itemAlias&&(type.itemAlias=='coldTruck'||type.itemAlias.indexOf('Store')>-1))">
+												<label class="c-label" v-if="type.itemAlias.indexOf('Store')>-1">
+													<span style="color: red;">*</span>存柜时间:</label>
+													<label class="c-label" v-else>
+														<span style="color: red;">*</span>开始时间:</label>
+												<el-date-picker type="datetime" disabled v-model="type.coldStartTime"></el-date-picker>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;"
+												v-if="type.itemAlias&&type.itemAlias=='coldTruck'">
+												<sa-item type="img" name="开始时间图片" v-model="type.startImage"></sa-item>
+											</div>
+											<div class="flex-item"
+												v-if="(type.itemAlias&&(type.itemAlias=='coldTruck'||type.itemAlias.indexOf('Store')>-1))">
+												<label class="c-label">
+													结束时间:</label>
+												<el-date-picker type="datetime" v-model="type.coldEndTime"
+													placeholder="结束时间"></el-date-picker>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;"
+												v-if="type.itemAlias&&type.itemAlias=='coldTruck'">
+												<sa-item type="img" name="结束时间图片" v-model="type.endImage"></sa-item>
+											</div>
+										</div>
 										<el-divider></el-divider>
 									</el-form-item>
-									<div class="hj" v-if="totalPrice>0">
-										合计费用:{{totalPrice}}<label>元</label>
+									<div class="hj">
+										合计费用:<label v-if="totalPrice>5">{{totalPrice}}元</label>
+										<label v-else>-</label>
 									</div>
 								</div>
 							</el-card>
@@ -215,19 +256,15 @@
 								</el-option>
 							</el-select>
 						</div>
-						<div class="c-item">
-							<label class="c-label">
-								<span style="color: red;" v-if="goods.needCarSize==1">*</span>
-								规格(米):</label>
-							<el-input-number class="item-num" v-model="car.form.carSize" :min="1" :max="50">
-							</el-input-number>
+						<div class="c-item" v-if="m.goodsName=='集装箱正面吊装'">
+							<label class="c-label">司机姓名:</label>
+							<el-input v-model="car.form.driverName" placeholder="司机姓名">
+							</el-input>
 						</div>
-						<div class="c-item" v-if="car.form.carType&&car.form.carType.indexOf('空')==-1">
-							<label class="c-label">
-								<span style="color: red;" v-if="goods.needCarSize==1">*</span>
-								载重(kg):</label>
-							<el-input-number class="item-num" v-model="car.form.netWeight" :min="1" :max="999999">
-							</el-input-number>
+						<div class="c-item" v-if="m.goodsName=='集装箱正面吊装'">
+							<label class="c-label">司机号码:</label>
+							<el-input v-model="car.form.driverPhone" placeholder="司机号码">
+							</el-input>
 						</div>
 					</el-form>
 				</span>
@@ -236,50 +273,7 @@
 					<el-button type="primary" @click="confirmAdd">确 定</el-button>
 				</span>
 			</el-dialog>
-			<el-dialog title="申报单" :visible.sync="declare.visible" width="90%">
-				<div class="delect-search">
-					申报人:
-					<el-input style="width: 140px;" v-model="declare.p.declarePeople" placeholder="申报人">
-					</el-input>
-					<el-button type="primary" @click="getDeclareList">搜索</el-button>
-					<el-button type="info" @click="resetDclare">重置</el-button>
-				</div>
-				<el-card class="box-card" style="margin-top: 20px;">
-					<div slot="header">
-						<span>列表</span>
-					</div>
-					<el-table :data="declare.list" ref="declareTable">
-						<el-table-column type="selection">
-						</el-table-column>
-						<el-table-column prop="declarePeople" label="申报人">
-						</el-table-column>
-						<el-table-column prop="customerName" label="申报公司" width=200>
-						</el-table-column>
-						<el-table-column prop="sendUnit" label="货主" width=200>
-						</el-table-column>
-						<el-table-column prop="createTime" width="140" label="申报时间">
-						</el-table-column>
-						<el-table-column prop="declareNo" width="180" label="申报单号">
-						</el-table-column>
-						<el-table-column prop="goodsName" label="产品学名">
-						</el-table-column>
-						<el-table-column prop="carNo" label="越南车牌">
-						</el-table-column>
-						<el-table-column prop="grossWeight" label="毛重(kg)">
-						</el-table-column>
-					</el-table>
-					<div class="block">
-						<el-pagination layout="prev, pager, next" @current-change="getDeclareList"
-							:page-size="declare.p.pageSize" :total="declare.p.dataCount"
-							:current-page="declare.p.pageNo">
-						</el-pagination>
-					</div>
-				</el-card>
-				<span slot="footer" class="dialog-footer">
-					<el-button @click="declare.visible = false">取 消</el-button>
-					<el-button type="primary" @click="confirmSelectDeclare">确 定</el-button>
-				</span>
-			</el-dialog>
+
 		</div>
 		<script>
 			var app = new Vue({
@@ -366,87 +360,9 @@
 						this.declare.p.pageSize = 8;
 						this.declare.p.production = '';
 						this.declare.p.declarePeople = '';
-						this.getDeclareList();
 					},
 					handlerDeclare() {
 						this.declare.visible = true;
-						this.getDeclareList();
-					},
-					getDeclareList() {
-						let currentCustomerId = this.currentCustomerId;
-						if (currentCustomerId != '1') {
-							this.declare.p.customerId = this.currentCustomerId;
-						}
-						let declareNo = this.m.declareNo;
-						if (declareNo) {
-							this.declare.p.declareNo = declareNo;
-						}
-						sa.ajax('/TbDeclare/getNotBindList', sa.removeNull(this.declare.p), function(resp) {
-							let list = resp.data;
-							this.declare.list = list;
-							this.declare.p.pageNo = resp.pageNo;
-							this.declare.p.dataCount = resp.dataCount;
-							list.forEach(row => {
-								if (row.declareNo == this.m.declareNo) {
-									this.$nextTick(() => {
-										this.$refs['declareTable'].toggleRowSelection(row, true)
-									})
-								}
-							})
-						}.bind(this))
-					},
-					confirmSelectDeclare() {
-						// 获取选中元素的id列表
-						let selection = this.$refs['declareTable'].selection;
-						let declareNo = sa.getArrayField(selection, 'declareNo');
-						if (selection.length == 0) {
-							return sa.msg('请至少选择一条数据')
-						}
-						if (selection.length > 1) {
-							return sa.msg('只能选择一条数据')
-						}
-						let declare = selection[0];
-						let oldNo = this.m.declareNo;
-						if (oldNo && oldNo !== declare.declareNo) {
-							this.car.list = [];
-						}
-						if (oldNo !== declare.declareNo) {
-							this.m.declareNo = declare.declareNo;
-							this.m.customerId = declare.customerId;
-							this.m.customerName = declare.customerName;
-							this.m.owner = declare.sendUnit;
-							let carNo = declare.carNo;
-							let grossWeight = declare.grossWeight;
-							let carList = this.car.list;
-							let exit = carList.filter(obj => obj.carNo == carNo).pop();
-							if (!exit) {
-								let car = {
-									carNo: carNo,
-									netWeight: grossWeight,
-									carType: '载重'
-								}
-								this.car.list.push(car)
-							}
-							this.m.cardNo = declare.carNo;
-							this.m.chinaCarNo = declare.chinaCarNo;
-							this.m.netWeight = declare.grossWeight;
-							let chinaCarNo = declare.chinaCarNo;
-							if (chinaCarNo) {
-								let list = [];
-								chinaCarNo.replace(",", ",").split(",").forEach(carNo => {
-									let exit = carList.filter(obj => obj.carNo == carNo).pop();
-									if (!exit) {
-										let car = {
-											carNo: carNo,
-											carType: '空车'
-										}
-										this.car.list.push(car)
-									}
-								})
-							}
-							// this.filterItems();
-						}
-						this.declare.visible = false;
 					},
 					cleanItem(type) {
 						type.itemId = '';
@@ -461,12 +377,12 @@
 							type.price = item.price;
 							type.disabled = false;
 							type.itemName = item.itemName;
+							type.itemAlias = item.itemAlias;
 							if (item.itemName == '人工、机械装卸车辆') {
 								type.disabled = true;
 							}
 						}
-						console.log(type);
-						this.validBefore();
+
 					},
 					confirmAdd() {
 						let list = this.car.list;
@@ -480,10 +396,6 @@
 							sa.error('请录入车牌号')
 							return false;
 						}
-						if (!form.carSize && goods.needCarSize == 1) {
-							sa.error('请填入车辆规格')
-							return false;
-						}
 						if (carType.indexOf('空') !== -1) {
 							netWeight = 0;
 						}
@@ -512,48 +424,6 @@
 
 						// this.filterItems();
 					},
-					filterItems() {
-						let carList = this.car.list;
-						let filterTypeList = JSON.parse(JSON.stringify(this.filterTypeList));
-						if (carList.length == 0) {
-							this.itemTypeList = filterTypeList;
-							return;
-						}
-						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) {
-							let type = filterTypeList[i];
-							let items = type.items;
-							if (carType) {
-								items = items.filter(item => item.itemType && item.itemType.indexOf(carType) !== -1);
-							}
-							if (carSize && carSize > 1) {
-								items = items.filter(item => item.minLength <= carSize && item.carLength >= carSize);
-							}
-							if (netWeight && netWeight > 1 && carType && carType.indexOf('空') == -1) {
-								items = items.filter(item => item.minWeight <= netWeight && item.maxWeight >= netWeight);
-							}
-							let itemIds = items.map(item => item.id);
-							if (itemIds.indexOf(type.itemId) == -1) {
-								this.cleanItem(type);
-							}
-							type.items = items;
-							tempList.push(type);
-						}
-						this.itemTypeList = tempList;
-					},
 					showAddModal() {
 						this.car.visible = true;
 						this.car.form.carNo = '';
@@ -577,7 +447,7 @@
 							return;
 						}
 						this.car.list.splice(this.car.list.indexOf(data), 1);
-						this.filterItems();
+						// this.filterItems();
 					},
 					getGoods() {
 						sa.ajaxNoLoading('/TbGoods/getList', {
@@ -612,11 +482,29 @@
 										type.price = initItem.itemPrice;
 										type.itemId = initItem.itemId;
 										type.remark = initItem.remark;
-										type.itemName= initItem.itemName;
-										type.cabinetNo=initItem.cabinetNo
+										type.itemName = initItem.itemName;
+										type.cabinetNo = initItem.cabinetNo;
+										type.itemAlias = initItem.itemAlias;
+										type.coldStartTime = initItem.coldStartTime;
+										type.coldEndTime = initItem.coldEndTime;
+										type.cabinetType = initItem.cabinetType;
+										type.businessItemId = initItem.id;
+										type.startImage = initItem.startImage;
+										type.endImage = initItem.endImage;
 									}
 								}
 							}
+							for (let i in list) {
+								let type = list[i];
+								let cabinetTypeList = [{
+									value: 0,
+									name: '存柜'
+								}, {
+									value: 1,
+									name: '取柜'
+								}];
+								type.cabinetTypeList = cabinetTypeList;
+							}
 							this.itemTypeList = list;
 							this.filterTypeList = JSON.parse(JSON.stringify(this.itemTypeList));
 							//this.filterItems();
@@ -678,16 +566,6 @@
 							sa.error('请录入车辆');
 							return false;
 						}
-						let needCarSize = goods.needCarSize;
-						let carList = this.car.list;
-						for (let i in carList) {
-							let car = carList[i];
-							if (needCarSize == 1 && !car.carSize) {
-								sa.error('请补充' + car.carNo + '规格');
-								return;
-							}
-
-						}
 					},
 					// 提交数据
 					ok: function() {
@@ -706,15 +584,6 @@
 							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 + '规格');
-								return;
-							}
-
-						}
 						let typeList = this.itemTypeList;
 						let selectList = [];
 						for (let i in typeList) {
@@ -731,7 +600,14 @@
 									num: type.num,
 									price: type.price,
 									remark: type.remark,
-									cabinetNo:type.cabinetNo
+									cabinetNo: type.cabinetNo,
+									coldStartTime: type.coldStartTime,
+									coldEndTime: type.coldEndTime,
+									itemAlias: type.itemAlias,
+									cabinetType: type.cabinetType,
+									businessItemId: type.businessItemId,
+									startImage: type.startImage,
+									endImage: type.endImage
 								}
 								selectList.push(obj);
 							}
@@ -783,7 +659,6 @@
 					},
 				},
 				mounted: function() {
-
 					this.getOtherBusinessById();
 					this.getCustomerList();
 					this.getItemType();
@@ -791,4 +666,4 @@
 			})
 		</script>
 	</body>
-</html>
+</html>

+ 27 - 7
sp-admin/sa-view/tb-business/tb-car-disincle-info.html

@@ -102,8 +102,8 @@
 									<el-table :data="m.cars" style="width: 100%">
 										<sa-td name="车牌号" prop="carNo"></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 name="司机姓名" prop="driverName" v-if="m.goodsCode=='A10003'"></sa-td>
+										<sa-td name="司机号码" prop="driverPhone" width=130 v-if="m.goodsCode=='A10003'"></sa-td>
 										<sa-td name="入场时间" prop="realInTime" width=180></sa-td>
 										<sa-td name="离场时间" prop="realOutTime" width=180></sa-td>
 										<el-table-column label="停车费">
@@ -135,23 +135,43 @@
 								</div>
 							</div>
 							<el-table :data="tableData" style="width: 100%;margin-top: 20px;">
-								<el-table-column prop="itemTypeName" label="业务类型" width="180">
+								<el-table-column prop="itemTypeName" label="业务类型">
 								</el-table-column>
-								<el-table-column prop="itemName" label="车型" width="180">
+								<el-table-column prop="itemName" label="车型" >
 								</el-table-column>
 								<el-table-column prop="itemPrice" label="单价">
 								</el-table-column>
 								<el-table-column prop="unit" label="计费标准">
 								</el-table-column>
-								<el-table-column prop="cabinetNo" label="柜号">
-									
+								<el-table-column prop="cabinetNo" label="柜号" v-if="m.goodsCode=='A10003'">
+								</el-table-column>
+								<el-table-column prop="cabinetType" label="取/存" v-if="m.goodsCode=='A10003'">
+									<template slot-scope="s">
+										<label v-if="s.row.cabinetType==-1">-</label>
+										<label v-if="s.row.cabinetType==0">存柜</label>
+										<label v-if="s.row.cabinetType==1">取柜</label>
+									</template>
+								</el-table-column>
+								<el-table-column prop="cabinetType" label="柜状态" v-if="m.goodsCode=='A10003'">
+									<template slot-scope="s">
+										<label v-if="s.row.cabinetStatus==0">未取</label>
+										<label v-if="s.row.cabinetStatus==1">已取</label>
+									</template>
 								</el-table-column>
 								<el-table-column prop="num" label="数量">
 								</el-table-column>
+								<el-table-column prop="coldStartTime" label="开始时间" width="160" v-if="m.goodsCode=='A10003'||m.goodsCode=='A10004'||m.goodsCode=='A10005'">
+								</el-table-column>
+								<sa-td name="开始时间图片" width="130" prop="startImage" type="img" v-if="m.goodsCode=='A10004'">
+								</sa-td>
+								<el-table-column prop="coldEndTime" label="结束时间" width="160" v-if="m.goodsCode=='A10003'||m.goodsCode=='A10004'||m.goodsCode=='A10005'">
+								</el-table-column>
+								<sa-td name="结束时间图片" width="130" prop="endImage" type="img" v-if="m.goodsCode=='A10004'">
+								</sa-td>
 								<el-table-column prop="total" label="合计">
 								</el-table-column>
 								<sa-td width="120" name="支付状态" prop="payStatus" type="enum"
-									:jv="{0: '未支付[#ff0000]', 1: '已支付[#005500]', 4: '已退款[#ff0000]'}">
+									:jv="{0: '未支付[#ff0000]', 1: '已支付[#005500]',3: '无需支付[#005500]', 4: '已退款[#ff0000]'}">
 								</sa-td>
 								<el-table-column prop="refundMoney" label="退款金额">
 								</el-table-column>

+ 21 - 5
sp-admin/sa-view/tb-business/tb-car-disincle-judge.html

@@ -102,8 +102,8 @@
 									<el-table :data="m.cars" style="width: 100%">
 										<sa-td name="车牌号" prop="carNo"></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 name="司机姓名" prop="driverName" v-if="m.goodsCode=='A10003'"></sa-td>
+										<sa-td name="司机号码" prop="driverPhone" width=130 v-if="m.goodsCode=='A10003'"></sa-td>
 										<sa-td name="入场时间" prop="realInTime" width=180></sa-td>
 										<sa-td name="离场时间" prop="realOutTime" width=180></sa-td>
 										<el-table-column label="停车费">
@@ -143,15 +143,31 @@
 								</el-table-column>
 								<el-table-column prop="unit" label="计费标准">
 								</el-table-column>
-								<el-table-column prop="cabinetNo" label="柜号">
-									
+								<el-table-column prop="cabinetNo" label="柜号" v-if="m.goodsCode=='A10003'">
+								</el-table-column>
+								<el-table-column prop="cabinetType" label="取/存" v-if="m.goodsCode=='A10003'">
+									<template slot-scope="s">
+										<label v-if="s.row.cabinetType==-1">-</label>
+										<label v-if="s.row.cabinetType==0">存柜</label>
+										<label v-if="s.row.cabinetType==1">取柜</label>
+									</template>
+								</el-table-column>
+								<el-table-column prop="cabinetType" label="柜状态" v-if="m.goodsCode=='A10003'">
+									<template slot-scope="s">
+										<label v-if="s.row.cabinetStatus==0">未取</label>
+										<label v-if="s.row.cabinetStatus==1">已取</label>
+									</template>
+								</el-table-column>
+								<el-table-column prop="coldStartTime" label="开始时间" width="160" v-if="m.goodsCode=='A10003'||m.goodsCode=='A10004'||m.goodsCode=='A10005'">
+								</el-table-column>
+								<el-table-column prop="coldEndTime" label="结束时间" width="160" v-if="m.goodsCode=='A10003'||m.goodsCode=='A10004'||m.goodsCode=='A10005'">
 								</el-table-column>
 								<el-table-column prop="num" label="数量">
 								</el-table-column>
 								<el-table-column prop="total" label="合计">
 								</el-table-column>
 								<sa-td width="120" name="支付状态" prop="payStatus" type="enum"
-									:jv="{0: '未支付[#ff0000]', 1: '已支付[#005500]', 4: '已退款[#ff0000]'}">
+									:jv="{0: '未支付[#ff0000]', 1: '已支付[#005500]',3: '无需支付[#005500]',  4: '已退款[#ff0000]'}">
 								</sa-td>
 								<el-table-column prop="refundMoney" label="退款金额">
 								</el-table-column>

+ 15 - 10
sp-admin/sa-view/tb-business/tb-car-disincle-list.html

@@ -93,19 +93,19 @@
 					<sa-td name="客户名称" prop="customerName" width="190"></sa-td>
 					<sa-td name="合作伙伴" prop="pickCustomerName" width="190"></sa-td>
 					<sa-td name="货物名称" prop="businessGoodsName" width="160"></sa-td>
-					<sa-td name="业务项" prop="goodsName" width="160"></sa-td>
+					<sa-td name="业务项" prop="goodsName" width="180"></sa-td>
 					<el-table-column label="车牌号" width="160">
 						<template slot-scope="s">
 							<label>{{s.row.carNoStr}}</label>
 						</template>
 					</el-table-column>
-					<sa-td name="支付时间" prop="payTime" width="160"></sa-td>
 					<sa-td name="审核状态" prop="confirmJudge" type="enum" :jv="{0: '未审核', 1:'审核通过',2:'审核驳回'}">
 					</sa-td>
 					<sa-td name="审核时间" prop="confirmJudgeTime" width="160"></sa-td>
 					<!-- <sa-td name="确认" prop="adminConfirmInput" type="enum" :jv="{1: '已确认', 0: '未确认'}"></sa-td> -->
 					<sa-td name="业务费用(元)" prop="itemPrice" width="120"></sa-td>
 					<sa-td name="已支付(元)" prop="payMoney" width="140"></sa-td>
+					<sa-td name="支付时间" prop="payTime" width="160"></sa-td>
 					<sa-td name="业务状态" prop="hasError" type="enum" :jv="{1: '异常[#ff0000]', 0: '正常[#005500]'}"></sa-td>
 					<sa-td width="160" name="创建时间" prop="createTime"></sa-td>
 					</sa-td>
@@ -114,13 +114,17 @@
 							<!-- <el-button class="c-btn" type="primary" v-if="sa.isAuth('tb-flex-business-confirm')
 								&&currentCustomerId=='1'&&s.row.adminConfirmInput==0" @click="confirmFn(s.row)">账单确认
 							</el-button> -->
-							
+
 							<!-- <el-button class="c-btn" type="primary" v-if="sa.isAuth('tb-business-confirm')
 									&&currentCustomerId=='1'&&s.row.adminConfirmInput==1" @click="checkConfirmFn(s.row)">查看账单
 							</el-button> -->
 							<el-button class="c-btn" type="success" @click="get(s.row)">查看</el-button>
-							<el-button class="c-btn" type="success" v-if="sa.isAuth('tb-flex-business-judge')&&s.row.confirmJudge!=1" @click="pass(s.row)">审核</el-button>
-							<el-button class="c-btn" type="warning" v-if="sa.isAuth('tb-flex-business-judge')&&s.row.confirmJudge==1" @click="callback(s.row)">驳回</el-button>
+							<el-button class="c-btn" type="success"
+								v-if="sa.isAuth('tb-flex-business-judge')&&s.row.confirmJudge!=1"
+								@click="pass(s.row)">审核</el-button>
+							<el-button class="c-btn" type="warning"
+								v-if="sa.isAuth('tb-flex-business-judge')&&s.row.confirmJudge==1"
+								@click="callback(s.row)">驳回</el-button>
 							<el-button class="c-btn" type="primary"
 								v-if="currentCustomerId=='1'||(s.row.adminConfirmInput==0&&sa.isAuth('tb-flex-business-edit'))"
 								@click="update(s.row)">
@@ -340,14 +344,15 @@
 					},
 					add: function(data) {
 						this.stopTimmer();
-						sa.showIframe('新增数据', 'tb-car-disincle-add.html?id=-1', '1080px', '90%');
+						sa.showIframe('新增数据', 'tb-car-disincle-add.html?id=-1', '90%', '90%');
 					},
 					update(data) {
-						if(data.confirmJudge==1){
+						if (data.confirmJudge == 1) {
 							sa.error('业务已审核,请驳回后修改')
 							return;
 						}
-						sa.showIframe('修改数据', 'tb-car-disincle-edit.html?id=' + data.id, '1080px', '90%');
+						this.stopTimmer();
+						sa.showIframe('修改数据', 'tb-car-disincle-edit.html?id=' + data.id, '90%', '90%');
 					},
 					getPcodeByCurrRid() {
 						this.stopTimmer();
@@ -382,7 +387,7 @@
 					},
 					// 删除
 					del: function(data) {
-						if(data.confirmJudge==1){
+						if (data.confirmJudge == 1) {
 							sa.error('业务已审核,无法删除')
 							return;
 						}
@@ -429,4 +434,4 @@
 			})
 		</script>
 	</body>
-</html>
+</html>

+ 5 - 5
sp-admin/sa-view/tb-charge-record/tb-charge-record-info.html

@@ -7,11 +7,11 @@
 		<!-- 所有的 css js 资源 -->
 		<link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
 		<link rel="stylesheet" href="../../static/sa.css">
-		<script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script>
-		<script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
-		<script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
-		<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
-		<script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
+		<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;}

+ 5 - 5
sp-admin/sa-view/tb-charge-record/tb-charge-record-list.html

@@ -8,11 +8,11 @@
 		<!-- 所有的 css & js 资源 -->
 		<link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
 		<link rel="stylesheet" href="../../static/sa.css">
-		<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
-		<script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
-		<script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
-		<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
-		<script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
+		<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>
 		<script src="../../static/node_modules/crypto-js/crypto-js.js"></script>
 	</head>

+ 5 - 5
sp-admin/sa-view/tb-deduction-record/tb-deduction-record-error-list.html

@@ -8,11 +8,11 @@
 		<!-- 所有的 css & js 资源 -->
 		<link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
 		<link rel="stylesheet" href="../../static/sa.css">
-		<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
-		<script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
-		<script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
-		<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
-		<script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
+		<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>
 			.all-btn {

+ 5 - 5
sp-admin/sa-view/tb-deduction-record/tb-deduction-record-list.html

@@ -8,11 +8,11 @@
 		<!-- 所有的 css & js 资源 -->
 		<link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
 		<link rel="stylesheet" href="../../static/sa.css">
-		<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
-		<script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
-		<script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
-		<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
-		<script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
+		<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>
 			.sum-div {

+ 1 - 7
sp-admin/sa-view/tb-goods/tb-goods-add.html

@@ -34,13 +34,7 @@
             <div class="c-title" v-else>数据修改</div>
             <el-form v-if="m">
                 <sa-item type="text" name="业务名称" v-model="m.name" br></sa-item>
-                <div class="c-item">
-                    <label class="c-label">付款步骤:</label>
-                    <el-select v-model="m.payStep" placeholder="请选择">
-                        <el-option :label="item.name" :value="item.id" v-for="(item,index) in stepList">
-                        </el-option>
-                    </el-select>
-                </div>
+                 <sa-item type="text" name="编号" v-model="m.code" br></sa-item>
                 <!-- <sa-item type="enum" name="状态" v-model="m.status" :jv="{1: '禁用', 2: '启用'}" jtype="3" br></sa-item> -->
                 <sa-item name="" class="s-ok" br>
                     <el-button type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>

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

@@ -33,7 +33,7 @@
 					<el-table-column type="index" width="50">
 					</el-table-column>
 					<sa-td name="业务名称" prop="name" width="120"></sa-td>
-					<sa-td name="付款步骤" prop="payStep" type="enum" :jv="{1: '下单后', 2: '确认后'}" width="80"></sa-td>
+					<sa-td name="编号" prop="code" ></sa-td>
 					<sa-td name="载重" prop="needWeight" type="switch" :jv="{0: '选填[#005500]', 1: '必填[#ff0000]'}"
 						@change="s => updateNeedWeight(s.row)" width="90"></sa-td>
 					<sa-td name="规格" prop="needCarSize" type="switch" :jv="{0: '选填[#005500]', 1: '必填[#ff0000]'}"

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

@@ -155,7 +155,7 @@
                     if (list.length > 0) {
                         this.m.payType = list[0].id
                     }
-                    this.payTypeList = list.filter(obj => obj.id !== 4);
+                    this.payTypeList = list;
                 }.bind(this))
             },
             // 提交数据

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

@@ -146,7 +146,7 @@
             getPayTypeList() {
                 sa.ajax('/TbFeeStatistics/getFeeType', function (resp) {
                     let list = resp.data;
-                    this.payTypeList = list.filter(obj => obj.id !== 4);
+                    this.payTypeList = list;
                 }.bind(this))
             },
             // 提交数据

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

@@ -39,6 +39,8 @@
             <el-form v-if="m">
                 <sa-item type="text" name="项目名称" v-model="m.name" placeholder="请输入项目名称" br>
                 </sa-item>
+				<sa-item type="text" name="编号" v-model="m.aliasName" placeholder="请输入项目编号" br>
+				</sa-item>
                 <div class="c-item">
                     <label class="c-label">排序:</label>
                     <el-input-number class="item-num" v-model="m.sort" :step="1" :min="1" step-strictly>

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

@@ -32,6 +32,7 @@
 				<el-table class="data-table" ref="data-table" :data="dataList">
 					<el-table-column type="index" width="50"></el-table-column>
 					<sa-td name="业务类型" prop="name"></sa-td>
+					<sa-td name="编号" prop="aliasName"></sa-td>
 					<el-table-column label="有效期" width="260px">
 						<template slot-scope="s">
 							{{s.row.startTime}}~{{s.row.endTime}}

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

@@ -822,7 +822,7 @@ var sa = {
 		// 正则验证是否为手机号
 		me.isPhone = function(str) {
 			str = str + '';
-			if ((/^1[345678]\d{9}$/.test(str))) {
+			if ((/^1[3456789]\d{9}$/.test(str))) {
 				return true;
 			}
 			return false;

+ 2 - 2
sp-server/src/main/java/com/pj/api/jh/service/JhService.java

@@ -147,9 +147,9 @@ public class JhService {
         if (StrUtil.isEmpty(desc)) {
             return "";
         }
-        if (desc.getBytes(Charset.forName("utf-8")).length > 128) {
+        if (desc.getBytes(Charset.forName("utf-8")).length > 120) {
             desc = StrUtil.sub(desc, 0, desc.lastIndexOf("-"));
-            desc = handlerDesc(desc);
+            return handlerDesc(desc);
         }
         return desc;
     }

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

@@ -14,6 +14,7 @@ import com.pj.constants.business.CarEnum;
 import com.pj.constants.business.GoodsEnum;
 import com.pj.constants.business.PayEnum;
 import com.pj.current.config.PartConfig;
+import com.pj.current.config.SystemObject;
 import com.pj.current.task.TaskService;
 import com.pj.project.sync.SyncService;
 import com.pj.project.sync.request.item.IOrderItem;
@@ -201,13 +202,12 @@ public class OpenService {
             log.error("请求返回【业务未审核】:{}", carNo);
             return ResultJson.error("业务未审核");
         }
-        BigDecimal hasPayPartMoney = tbBusinessCar.getMoney();
         if (businessList.isEmpty()) {
             //无业务车辆===>计算停车费
             //如果已经支付过,则从支付时间算起,重新计算停车费
             Date inTime = tbBusinessCar.getRealInTime();
             if (CarEnum.PayTypeEnum.HAS_PAY_TYPE.getType().equals(tbBusinessCar.getPayType())) {
-                inTime=tbBusinessCar.getPayTime();
+                inTime = tbBusinessCar.getPayTime();
             }
             IOrderPriceRes res = tbBusinessService.getPartMoney(inTime, now, carNo, tbBusinessCar.getColor());
             double dif = res.getTotalOrderPrice().subtract(tbBusinessCar.getMoney()).doubleValue();
@@ -229,7 +229,7 @@ public class OpenService {
             //该车所有的业务都是到达卡口才进行扣费才会进入自动扣费
             Date inTime = tbBusinessCar.getRealInTime();
             if (CarEnum.PayTypeEnum.HAS_PAY_TYPE.getType().equals(tbBusinessCar.getPayType())) {
-                inTime=tbBusinessCar.getPayTime();
+                inTime = tbBusinessCar.getPayTime();
             }
             partMoneyRes = tbBusinessService.getPartMoney(inTime, now, carNo, tbBusinessCar.getColor());
             double dif = partMoneyRes.getTotalOrderPrice().doubleValue();
@@ -243,23 +243,30 @@ public class OpenService {
             }
         }
         //============业务费计算是否交完
-        //businessList = businessList.stream().filter(tbBusiness -> tbBusiness.getPayStatus() != PayEnum.PayStatusEnum.HAS_PAY_CONFIRM.getCode()).collect(Collectors.toList());
-        List<String> businessIds = businessList.stream().map(TbBusiness::getId).collect(Collectors.toList());
-        List<TbBusinessItem> businessItems = tbBusinessItemService.findByBusinessId(businessIds);
         for (TbBusiness tbBusiness : businessList) {
+            List<TbBusinessItem> businessItems = tbBusinessItemService.findByBusinessId(tbBusiness.getId());
+            //柜车、栏车 则取对应的入场和离场时间为开始结束时间
+            businessItems.stream().filter(item -> StrUtil.equals(item.getItemAlias(), SystemObject.config.getCabinetCar()))
+                    .forEach(item -> {
+                        item.setColdStartTime(tbBusinessCar.getRealInTime()).setColdEndTime(now);
+                        //堆存业务的车辆====>免停车费
+                        tbBusinessCar.setPayType(CarEnum.PayTypeEnum.FEE_TYPE.getType()).setPay(1).setMoney(BigDecimal.ZERO);
+                        partMoneyRes.setTotalOrderPrice(BigDecimal.ZERO);
+                        tbBusinessItemService.updateById(item);
+                    });
             TbGoods tbGoods = tbGoodsService.getById(tbBusiness.getGoodsId());
             //重车离场限制
             int weiCarLeave = tbGoods.getVietnamCarLeave();
             //空车离场限制
             int emptyCarLeave = tbGoods.getChinaCarLeave();
-            boolean pay = tbBusiness.getPayMoney().doubleValue() >= tbBusiness.getItemPrice().doubleValue();
+            boolean pay = tbBusiness.getPayMoney().doubleValue()>0;
             //需要交业务费
             if (CarEnum.CarTypeEnum.WEIGHT_TYPE.getType().equals(carType)) {//==重车
                 if (GoodsEnum.LeaveEnum.PART_MONEY.getCode() != weiCarLeave
                         && !pay) {
                     RedisUtil.setByMINUTES(channel, carNo, 5);
                     tbBusinessItemService.buildExpenses(businessItems, expenses);
-                    log.error("越南车==重车:缴纳业务费用:{}", carNo);
+                    log.error("==重车:缴纳业务费用:{}", carNo);
                 }
             } else {
                 if (GoodsEnum.LeaveEnum.PART_MONEY.getCode() != emptyCarLeave
@@ -276,9 +283,6 @@ public class OpenService {
 
         BigDecimal businessMoney = businessRes.getTotalOrderPrice();
         BigDecimal total = businessMoney.add(carMoney);
-        //入场管理费。。。。
-        //ManagerBO dto = tbBusinessService.needPayManagerMoney(carNo, businessCarId, businessItems);
-        // total = dto.getPrice().add(total);
         if (total.doubleValue() > 0) {
             String desc = "请缴";
             if (businessMoney.doubleValue() > 0) {

+ 7 - 17
sp-server/src/main/java/com/pj/api/wx/service/WxService.java

@@ -75,14 +75,12 @@ public class WxService {
     TbBusinessItemService tbBusinessItemService;
     @Resource
     TbFeeStatisticsService tbFeeStatisticsService;
-    @Resource
-    private TbAccountService tbAccountService;
+
     @Resource
     TbFeeDetailsService tbFeeDetailsService;
     @Resource
     private TbOrderService tbOrderService;
-    @Resource
-    private TbGoodsService tbGoodsService;
+
 
     @Resource
     private WxSendMsgService wxSendMsgService;
@@ -234,6 +232,7 @@ public class WxService {
         if (StrUtil.isNotEmpty(attachStr)) {
             Attach attach = JSONUtil.toBean(attachStr, Attach.class);
             List<PriceBO> cars = JSONUtil.toList(attach.getC(), PriceBO.class);
+            BigDecimal partMoney=BigDecimal.ZERO;
             for (PriceBO bo1 : cars) {
                 TbBusinessCar car = tbBusinessCarService.getById(bo1.getId());
                 BigDecimal price = bo1.getP();
@@ -241,7 +240,8 @@ public class WxService {
                     log.error("付款金额不正确:{}", JSONUtil.toJsonStr(notifyBO));
                     continue;
                 }
-                car.setPay(1).setMoney(price.add(car.getMoney())).setPayTime(payTime)
+                partMoney=partMoney.add(price);
+                car.setPay(1).setMoney(price).setPayTime(payTime)
                         .setPayType(CarEnum.PayTypeEnum.HAS_PAY_TYPE.getType())
                         .setOutTradeNo(outTradeNo)
                         .setPayOpenid(payopenid);
@@ -262,28 +262,18 @@ public class WxService {
                 List<TbBusinessItem> items = tbBusinessItemService.findByBusinessIdList(businessIds);
                 items = items.stream().filter(item -> item.getPayStatus() == 0).collect(Collectors.toList());
                 for (TbBusiness tbBusiness : businessList) {
-                    tbBusiness.setPayTime(payTime).setPayType(PayEnum.PayType.WX_PAY.getCode()).setConfirmInput(1).setConfirmInputTime(payTime)
+                    tbBusiness.setPayTime(payTime).setPayType(PayEnum.PayType.WX_PAY.getCode())
+                            .setConfirmInput(1).setConfirmInputTime(payTime)
                             .setPayMoney(tbBusiness.getItemPrice()).setPayOpenid(payopenid)
                             .setCalculateId(tbOrder.getCalculateId())
                             .setPayNo(transactionId).setOutTradeNo(outTradeNo);
                     tbBusiness.setPayStatus(PayEnum.PayStatusEnum.HAS_PAY_CONFIRM.getCode());
                     tbBusinessService.updateById(tbBusiness);
-                    List<TbBusinessCar> carList = tbBusinessCarService.findOtherBusinessCar(businessId);
-                    carList.forEach(tbBusinessCar -> {
-                        tbBusinessCar.setPay(1).setPayTime(finalPayTime).setPayOpenid(payopenid);
-                        tbBusinessCarService.updateById(tbBusinessCar);
-                    });
                 }
                 items.forEach(tbBusinessItem -> tbBusinessItem.setPayStatus(1).setPayTime(finalPayTime).setCalculateId(tbOrder.getCalculateId()));
                 tbFeeDetailsService.chargeBusinessFee(items, transactionId, outTradeNo, payTime, PayEnum.PayType.WX_PAY);//添加items的收费明细
                 tbBusinessItemService.updateBatchById(items);
             }
-            String i = attach.getI();
-            //入场管理费
-            if (StrUtil.isNotEmpty(i)) {
-                 ManagerBO managerBO = JSONUtil.toBean(i, ManagerBO.class);
-                   tbFeeDetailsService.chargeManagerFee(managerBO, businessId,transactionId, outTradeNo, payTime, PayEnum.PayType.WX_PAY);//添加cars的收费明细
-            }
             tbFeeStatisticsService.addOrUpdateStatistic(payTime, PayEnum.PayType.WX_PAY.getCode());//更新当前日期的日统计
         }
         tbOrder.setOrderStatus(orderStatus)

+ 28 - 0
sp-server/src/main/java/com/pj/current/config/MyConfig.java

@@ -66,5 +66,33 @@ public class MyConfig {
      * 停车费变量名
      */
     private String partItemAlias;
+    /**
+     * 充电打冷
+     */
+    private String coldItemAlias;
+    /**
+     * #空柜堆存
+     */
+    private String  emptyStoreItemAlias;
+    /**
+     * #重柜堆存
+     */
+    private String  heavyStoreItemAlias;
+    /**
+     *集装箱吊装 (重 柜 )
+     */
+    private String  heavyCondoleItemAlias;
+    /**
+     *集装箱吊装 (空 柜 )
+     */
+    private String  emptyCondoleItemAlias;
+    /**
+     * 大头车
+     */
+    private String  bigHeadCar;
+    /**
+     * 柜车、栏车
+     */
+    private String  cabinetCar;
 
 }

+ 4 - 0
sp-server/src/main/java/com/pj/project/sync/bo/ItemTypeBO.java

@@ -18,6 +18,10 @@ public class ItemTypeBO implements Serializable {
     private String label;
     private String level;
     private String partnersId;
+    /**
+     * 编号
+     */
+    private String aliasName;
     //0 启用 1禁用
     private int state=0;
     private Date startTime;

+ 2 - 0
sp-server/src/main/java/com/pj/project/sync/request/item/IFactorItem.java

@@ -1,8 +1,10 @@
 package com.pj.project.sync.request.item;
 
 import lombok.Data;
+import lombok.experimental.Accessors;
 
 @Data
+@Accessors(chain = true)
 public class IFactorItem {
 
     /**

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

@@ -354,11 +354,11 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             res.setOver24Hour(1);
             res.setHourDesc(PartFeeEnum.OUT_24_HOURS.getDesc());
         }
-//        TbItem partItem=tbItemService.findByAliasName(SystemObject.config.getPartItemAlias());
-//        if (partItem==null) {
-//            throw new AjaxError("未配置停车费规则");
-//        }
-        List<TbItemFac> list = tbItemFacService.list();
+        TbItem partItem = tbItemService.findByAliasName(SystemObject.config.getPartItemAlias());
+        if (partItem == null) {
+            throw new AjaxError("未配置停车费规则");
+        }
+        List<TbItemFac> list = tbItemFacService.getByItemId(partItem.getId());
         if (list.isEmpty()) {
             throw new AjaxError("未配置停车费规则");
         }
@@ -398,7 +398,6 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
     }
 
 
-
     /**
      * 微信端获取缴费信息
      *
@@ -457,7 +456,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                     partMoney = new BigDecimal("0");
                 }
                 if (CarEnum.PayTypeEnum.HAS_PAY_TYPE.getType().equals(tbBusinessCar.getPayType())) {
-                    inTime=tbBusinessCar.getPayTime();
+                    inTime = tbBusinessCar.getPayTime();
                 }
                 if (partMoney.doubleValue() == 1) {
                     IOrderPriceRes partPriceRes = getPartMoney(inTime, outTime, tbBusinessCar.getCarNo(), tbBusinessCar.getColor());
@@ -490,18 +489,35 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             //未支付的
             List<IOrderItem> expenses = new ArrayList<>();
             items = items.stream().filter(item -> item.getPayStatus() == 0).collect(Collectors.toList());
-            //如果不需要支付,则过滤掉入场管理费
-//            ManagerBO dto = needPayManagerMoney(carNo, businessCarId, items);
-//            if (dto.isNeed()) {
-//                result.put("manager", dto);
-//            }
-            items.forEach(item -> {
-                String num = item.getNum();
-                String itemCode = item.getItemCode();
+            for (TbBusinessItem businessItem : items) {
+                String num = businessItem.getNum();
+                String itemCode = businessItem.getItemCode();
                 IOrderItem iOrderItem = new IOrderItem();
+                String itemAlias = businessItem.getItemAlias();
+                Date startTime = businessItem.getColdStartTime();
+                Date endTime = businessItem.getColdEndTime();
                 iOrderItem.setExpenseNum(Integer.parseInt(num)).setUniqExpenseId(itemCode);
+                if (StrUtil.equals(itemAlias, SystemObject.config.getColdItemAlias())) {
+                    tbBusinessItemService.buildColdFceItem(businessItem, iOrderItem, startTime, endTime);
+                    //充电打冷--->按小时计费
+                } else if (StrUtil.equals(itemAlias, SystemObject.config.getHeavyStoreItemAlias())
+                        || StrUtil.equals(itemAlias, SystemObject.config.getEmptyStoreItemAlias())) {
+                    //空柜堆存、重箱堆存--->按天算
+                    //如果存柜的话则不收费
+                    if (businessItem.getCabinetType() == 0) {
+                        continue;
+                    }
+                    tbBusinessItemService.buildDaysFceItem(businessItem, iOrderItem, startTime, endTime);
+                } else if (StrUtil.equals(itemAlias, SystemObject.config.getBigHeadCar())
+                        || StrUtil.equals(itemAlias, SystemObject.config.getCabinetCar())) {
+                    //大车头、柜车、栏车
+                    tbBusinessItemService.buildDaysFceItem(businessItem, iOrderItem, startTime, endTime);
+                    //不收停车费
+                    carMap.put("price", 0);
+                }
                 expenses.add(iOrderItem);
-            });
+            }
+            result.put("carList", Collections.singleton(carMap));
             if (!expenses.isEmpty()) {
                 IOrderPriceRes orderPriceRes = syncService.orderPriceCal(expenses);
                 BigDecimal totalPrice = orderPriceRes.getTotalOrderPrice();
@@ -516,7 +532,16 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                     itemMap.put("pay", item.getPayStatus());
                     orderPriceRes.getFireResult().stream().filter(priceItem -> StrUtil.equals(item.getItemCode(), priceItem.getUniqExpenseId()))
                             .findAny().ifPresent(priceItem -> {
-                        itemMap.put("price", priceItem.getFirePrice().multiply(new BigDecimal(item.getNum())));
+                        BigDecimal price = priceItem.getFirePrice().multiply(new BigDecimal(item.getNum()));
+                        //柜车、栏车只有离场才知道多少钱
+                        if (StrUtil.equals(item.getItemAlias(),SystemObject.config.getCabinetCar())){
+                            TbBusiness tbBusiness = this.getById(item.getBusinessId());
+                            tbBusiness.setItemPrice(price);
+                            item.setTotal(price);
+                            tbBusinessItemService.updateById(item);
+                            this.updateById(tbBusiness);
+                        }
+                        itemMap.put("price", price);
                     });
                     itemList.add(itemMap);
                     TbBusinessSort tbBusinessSort = tbBusinessSortService.findByItemTypeId(item.getItemTypeId());
@@ -656,20 +681,38 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         }
         int index = 1;
         int size = cars.size();
+        String goodsName = tbGoods.getName();
         for (TbItem tbItem : tbItems) {
             TbItem db = tbItemService.getById(tbItem.getId());
             String itemName = db.getItemName();
+            goodsName = goodsName + "—" + itemName;
+            String alaisName = db.getItemAlias();
+            String startImage = tbItem.getStartImage();
+            if (StrUtil.equals(SystemObject.config.getColdItemAlias(), alaisName) && StrUtil.isEmpty(startImage)) {
+                throw new AjaxError("请上传开始时间图片");
+            }
             TbBusinessItem item = new TbBusinessItem();
+            int cabinetType = tbItem.getCabinetType();
+            if (!SystemObject.config.getEmptyStoreItemAlias().equals(alaisName)
+                    && !SystemObject.config.getHeavyStoreItemAlias().equals(alaisName)) {
+                cabinetType = -1;
+            }
             int num = tbItem.getNum();
             String typeId = tbItem.getTypeId();
             TbItemType tbItemType = tbItemTypeService.getById(typeId);
-            BigDecimal itemTotalPrice = tbItem.getPrice().multiply(new BigDecimal(num));
-            item.setNo(no + "0" + index).setPayTypeName(db.getPayTypeName()).setPayType(db.getPayType())
+            BigDecimal unitPrice = db.getPrice();
+            unitPrice = StrUtil.equals(db.getPattern(), "RULES") ? BigDecimal.ZERO : unitPrice;
+            BigDecimal itemTotalPrice = unitPrice.multiply(new BigDecimal(num));
+            item.setNo(no + "0" + index).setPayTypeName(db.getPayTypeName())
+                    .setPayType(db.getPayType())
                     .setBusinessType(db.getBusinessType()).setTaxRate(NumberUtil.div(db.getTaxRate().doubleValue(), 100D, 2));
-            item.setItemCode(db.getItemCode()).setNum(num + "").setItemId(db.getId()).setCabinetNo(tbItem.getCabinetNo())
+            item.setItemCode(db.getItemCode()).setNum(num + "")
+                    .setItemId(db.getId()).setCabinetType(cabinetType)
+                    .setCabinetNo(tbItem.getCabinetNo()).setColdStartTime(tbItem.getColdStartTime())
                     .setItemName(db.getItemName()).setItemPrice(db.getPrice()).setRemark(tbItem.getRemark())
-                    .setItemTypeId(typeId).setItemTypeName(tbItemType.getName())
-                    .setUnit(db.getUnit()).setTotal(itemTotalPrice).setCreateTime(now);
+                    .setItemTypeId(typeId).setItemTypeName(tbItemType.getName()).setItemAlias(tbItem.getItemAlias())
+                    .setUnit(db.getUnit()).setTotal(itemTotalPrice).setCreateTime(now)
+                    .setColdStartTime(tbItem.getColdStartTime()).setStartImage(startImage);
             if (partner != null) {
                 item.setPick(1).setPickCustomerId(pickCustomerId).setPickCustomerName(partner.getName())
                         .setPickBy(StpUserUtil.getCreateBy()).setPickTime(now);
@@ -677,6 +720,71 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             if (SystemObject.config.getEveryCarPay().contains(itemName)) {
                 itemTotalPrice = itemTotalPrice.multiply(BigDecimal.valueOf(size));
             }
+            //堆存业务
+            if (SystemObject.config.getEmptyStoreItemAlias().equals(alaisName)
+                    || SystemObject.config.getHeavyStoreItemAlias().equals(alaisName)) {
+                //取柜--->根据柜号查询上一个存柜时间
+                TbBusinessItem tbBusinessItem = tbBusinessItemService.findTheLastRecordByCabinetNo(tbItem.getCabinetNo());
+                //堆存---》取柜
+                if (cabinetType == 1) {
+                    goodsName = goodsName + "(取柜)";
+                    if (tbBusinessItem == null) {
+                        throw new AjaxError("根据柜号" + tbItem.getCabinetNo() + "找不到堆存记录");
+                    }
+                    //已经取走
+                    if (tbBusinessItem.getCabinetStatus() == 1) {
+                        throw new AjaxError("柜号" + tbItem.getCabinetNo() + "已取走");
+                    }
+                    Date endTime = tbItem.getColdStartTime();
+                    if (endTime == null) {
+                        throw new AjaxError("请输入取柜时间");
+                    }
+                    item.setColdStartTime(tbBusinessItem.getColdStartTime())
+                            .setParentCabinetId(tbBusinessItem.getId())
+                            .setColdEndTime(endTime)
+                            .setCabinetStatus(1);
+                    tbBusinessItem.setColdEndTime(endTime)
+                            .setCabinetStatus(1);
+                    //计算金额
+                    Date startTime = tbBusinessItem.getColdStartTime();
+                    if (startTime != null) {
+                        List<IOrderItem> expenses = new ArrayList<>();
+                        tbBusinessItemService.buildExpenses(Collections.singletonList(item), expenses);
+                        if (!expenses.isEmpty()) {
+                            IOrderPriceRes res = syncService.orderPriceCal(expenses);
+                            BigDecimal itemPrice = res.getTotalOrderPrice();
+                            item.setTotal(itemPrice);
+                            itemTotalPrice = itemPrice;
+                        }
+                    }
+                    tbBusinessItemService.updateById(tbBusinessItem);
+                } else {
+                    goodsName = goodsName + "(存柜)";
+                    //存柜
+                    if (tbBusinessItem != null && tbBusinessItem.getCabinetStatus() == 0) {
+                        throw new AjaxError("柜号" + tbItem.getCabinetNo() + "已存柜未取柜");
+                    }
+                    Date endTime = tbItem.getColdStartTime();
+                    if (endTime == null) {
+                        throw new AjaxError("请输入存柜时间");
+                    }
+                    //业务费xxx都为0;
+                    BigDecimal zero = BigDecimal.ZERO;
+                    item.setColdStartTime(endTime).setItemPrice(zero)
+                            .setTotal(zero).setPayStatus(1);
+                    //无需支付
+                    item.setPayStatus(3);
+                    itemTotalPrice = zero;
+                }
+            }
+            Date startTime = item.getColdStartTime();
+            Date endTime = item.getColdEndTime();
+            if (startTime != null && endTime != null) {
+                List<IOrderItem> expenses = new ArrayList<>();
+                tbBusinessItemService.buildExpenses(Collections.singletonList(item), expenses);
+                IOrderPriceRes res = syncService.orderPriceCal(expenses);
+                item.setTotal(res.getTotalOrderPrice());
+            }
             price = price.add(itemTotalPrice);
             itemList.add(item);
             index++;
@@ -684,7 +792,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         String declareNo = otherBusinessBO.getDeclareNo();
         tbBusiness.setCardSize(otherBusinessBO.getCarSize()).setNetWeight(otherBusinessBO.getNetWeight())
                 .setOperator(otherBusinessBO.getOperator()).setOperateTime(otherBusinessBO.getOperateTime())
-                .setNo(no).setGoodsName(tbGoods.getName()).setGoodsId(otherBusinessBO.getGoodsId())
+                .setNo(no).setGoodsName(goodsName).setGoodsId(otherBusinessBO.getGoodsId()).setGoodsCode(tbGoods.getCode())
                 .setBusinessGoodsName(otherBusinessBO.getBusinessGoodsName()).setBusinessGoodsNum(otherBusinessBO.getBusinessGoodsNum())
                 .setPayStep(tbGoods.getPayStep()).setDeclareNo(declareNo).setCardNo(otherBusinessBO.getCardNo());
         tbBusiness.setCreateTime(now).setCreateByCustomerId(StpUserUtil.getCustomerId())
@@ -696,9 +804,6 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         for (TbBusinessCar car : cars) {
             String carNo = car.getCarNo().trim().toUpperCase();
             String carType = car.getCarType();
-//            if (car.getCarSize() == null || car.getCarSize() <= 0) {
-//                throw new AjaxError(carNo + "规格不正确");
-//            }
             if (StrUtil.isEmpty(carType)) {
                 throw new BusinessException(carNo + "类型不能为空");
             }
@@ -735,6 +840,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             db.setCarNo(carNo).setIsLock(0).setBusinessType(CarEnum.BusinessTypeEnum.BUSINESS_CAR.getType());
             db.setCarSize(car.getCarSize()).setConfirmJudge(CarEnum.ConfirmJudgeEnum.NO_JUDGE.getCode())//业务车都是未审核状态
                     .setTimeUpdate(now).setCarType(car.getCarType())
+                    .setDriverName(car.getDriverName()).setDriverPhone(car.getDriverPhone())
                     .setNetWeight(car.getNetWeight()).setColor(car.getColor())
                     .setCustomerId(customerId)
                     .setNo(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + RandomUtil.randomNumbers(4));
@@ -789,8 +895,16 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         }
         TbGoods tbGoods = tbGoodsService.getById(otherBusinessBO.getGoodsId());
         String carBuseinssNo = DateUtil.format(now, "yyyyMMddHHmm");
+        String goodsName = tbGoods.getName();
         List<TbBusinessItem> itemList = new ArrayList<>();
         if (PayEnum.PayStatusEnum.HAS_PAY_CONFIRM.getCode() != dbBusiness.getPayStatus()) {
+            List<TbBusinessItem> businessItemList = tbBusinessItemService.findByBusinessId(id);
+            //变成未取柜状态
+            businessItemList.stream().filter(item -> item.getParentCabinetId() != null).forEach(item -> {
+                TbBusinessItem tbBusinessItem = tbBusinessItemService.getById(item.getParentCabinetId());
+                tbBusinessItem.setCabinetStatus(0).setColdEndTime(null);
+                tbBusinessItemService.updateById(tbBusinessItem);
+            });
             tbBusinessItemService.removeByBusinessId(id);
             BigDecimal price = new BigDecimal("0");
             String no = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + RandomUtil.randomNumbers(4);
@@ -802,28 +916,103 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                 dbBusiness.setPickCustomerId(pickCustomerId).setPickCustomerName(partner.getName());
             }
             int size = cars.size();
+
             for (TbItem tbItem : tbItems) {
                 TbItem db = tbItemService.getById(tbItem.getId());
+                String alaisName = db.getItemAlias();
                 String itemName = db.getItemName();
+                goodsName = goodsName + "—" + itemName;
+                String endImage = tbItem.getEndImage();
+                if (StrUtil.equals(SystemObject.config.getColdItemAlias(), alaisName) && StrUtil.isEmpty(endImage)) {
+                    throw new AjaxError("请上传结束时间图片");
+                }
+                int cabinetType = tbItem.getCabinetType();
+                //如果不是正面吊--->则取/存操作设置为-1
+                if (!SystemObject.config.getEmptyStoreItemAlias().equals(alaisName)
+                        && !SystemObject.config.getHeavyStoreItemAlias().equals(alaisName)) {
+                    cabinetType = -1;
+                }
                 TbBusinessItem item = new TbBusinessItem();
                 int num = tbItem.getNum();
                 TbItemType tbItemType = tbItemTypeService.getById(tbItem.getTypeId());
-                BigDecimal itemTotalPrice = tbItem.getPrice().multiply(new BigDecimal(num));
-
+                BigDecimal unitPrice = db.getPrice();
+                unitPrice = StrUtil.equals(db.getPattern(), "RULES") ? BigDecimal.ZERO : unitPrice;
+                BigDecimal itemTotalPrice = unitPrice.multiply(new BigDecimal(num));
                 item.setNo(no + "0" + index).setPayTypeName(db.getPayTypeName()).setPayType(db.getPayType())
                         .setBusinessType(db.getBusinessType()).setTaxRate(NumberUtil.div(db.getTaxRate().doubleValue(), 100D, 2));
                 item.setItemCode(db.getItemCode()).setNum(num + "").setItemId(db.getId()).setBusinessId(dbBusiness.getId())
                         .setItemName(db.getItemName()).setItemPrice(db.getPrice()).setRemark(tbItem.getRemark())
                         .setItemTypeId(tbItem.getTypeId()).setItemTypeName(tbItemType.getName())
-                        .setCabinetNo(tbItem.getCabinetNo())
-                        .setUnit(db.getUnit()).setTotal(itemTotalPrice).setCreateTime(now);
+                        .setCabinetNo(tbItem.getCabinetNo()).setItemAlias(tbItem.getItemAlias())
+                        .setUnit(db.getUnit()).setTotal(itemTotalPrice).setCreateTime(now)
+                        .setCabinetType(cabinetType).setEndImage(endImage).setStartImage(tbItem.getStartImage())
+                        .setColdStartTime(tbItem.getColdStartTime()).setColdEndTime(tbItem.getColdEndTime());
                 if (partner != null) {
                     item.setPick(1).setPickCustomerId(pickCustomerId).setPickCustomerName(partner.getName())
                             .setPickBy(StpUserUtil.getCreateBy()).setPickTime(now);
                 }
+                //装卸-->x车辆数量
                 if (SystemObject.config.getEveryCarPay().contains(itemName)) {
                     itemTotalPrice = itemTotalPrice.multiply(BigDecimal.valueOf(size));
+                    item.setTotal(itemTotalPrice);
+                }
+
+                Date startTime = item.getColdStartTime();
+                Date endTime = item.getColdEndTime();
+                if (startTime != null && endTime != null) {
+                    List<IOrderItem> expenses = new ArrayList<>();
+                    tbBusinessItemService.buildExpenses(Collections.singletonList(item), expenses);
+                    if (!expenses.isEmpty()) {
+                        IOrderPriceRes res = syncService.orderPriceCal(expenses);
+                        BigDecimal itemPrice = res.getTotalOrderPrice();
+                        item.setTotal(itemPrice);
+                        itemTotalPrice = itemPrice;
+                    }
                 }
+                //正面吊堆存业务
+                if (SystemObject.config.getEmptyStoreItemAlias().equals(alaisName)
+                        || SystemObject.config.getHeavyStoreItemAlias().equals(alaisName)) {
+                    //取柜--->根据柜号查询上一个存柜时间
+                    TbBusinessItem tbBusinessItem = tbBusinessItemService.findTheLastRecordByCabinetNo(tbItem.getCabinetNo());
+                    //堆存
+                    if (cabinetType == 1) {//取柜
+                        if (tbBusinessItem == null) {
+                            throw new AjaxError("根据柜号" + tbItem.getCabinetNo() + "找不到堆存记录");
+                        }
+
+                        if (endTime == null) {
+                            throw new AjaxError("请输入取柜时间");
+                        }
+                        goodsName = goodsName + "(取柜)";
+                        item.setColdStartTime(tbBusinessItem.getColdStartTime())
+                                .setParentCabinetId(tbBusinessItem.getId())
+                                .setColdEndTime(endTime);
+                        tbBusinessItem.setColdEndTime(endTime)
+                                .setCabinetStatus(1);
+                        tbBusinessItemService.updateById(tbBusinessItem);
+                    } else {
+                        if (startTime == null) {
+                            throw new AjaxError("请输入存柜时间");
+                        }
+                        String businessItemId = tbItem.getBusinessItemId();
+                        if (StrUtil.isNotEmpty(businessItemId)
+                                && tbBusinessItem != null
+                                && !StrUtil.equals(businessItemId, tbBusinessItem.getId() + "")
+                                && tbBusinessItem.getColdEndTime() == null) {
+                            throw new AjaxError("箱规未取走,不能存入");
+                        }
+                        goodsName = goodsName + "(存柜)";
+                        //业务费xxx都为0;
+                        BigDecimal zero = BigDecimal.ZERO;
+                        item.setColdStartTime(endTime).setItemPrice(zero)
+                                .setTotal(zero).setPayStatus(1).setPayTime(now);
+                        itemTotalPrice = zero;
+                        item.setColdStartTime(startTime);
+                        //无需支付
+                        item.setPayStatus(3);
+                    }
+                }
+
                 price = price.add(itemTotalPrice);
                 itemList.add(item);
                 index++;
@@ -834,9 +1023,6 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         for (TbBusinessCar tbBusinessCar : cars) {
             String businessCarId = tbBusinessCar.getId();
             String carNo = tbBusinessCar.getCarNo();
-            for (TbBusinessItem item : itemList) {
-                checkOtherBusiness(item.getItemTypeId(), otherBusinessBO.getOperateTime(), dbBusiness.getId(), carNo);
-            }
             if (StrUtil.isNotEmpty(businessCarId)) {
                 //原来已存在的
                 TbBusinessCar dbBusinessCar = tbBusinessCarService.getById(businessCarId);
@@ -846,15 +1032,8 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                     //把关联删除掉,然后添加新的关联
                     relationBusinessCarService.removeByBusinessIdAndCarId(dbBusiness.getId(), businessCarId);
                     TbBusinessCar otherCar = tbBusinessCarService.findTheLastRecord(carNo);
-                    if (otherCar == null ||//不存在或者已离场===>新建
-                            (otherCar.getRealInTime() != null && otherCar.getRealOutTime() != null)) {
-                        otherCar = new TbBusinessCar();
-                        otherCar.setCreateTime(now).setPay(0).setNo(carBuseinssNo + RandomUtil.randomNumbers(4))
-                                .setCarNo(carNo).setCarType(tbBusinessCar.getCarType()).setCarSize(tbBusinessCar.getCarSize())
-                                .setNetWeight(tbBusinessCar.getNetWeight()).setCustomerId(dbBusiness.getCustomerId())
-                                .setTimeUpdate(now).setIsLock(0).setCarType(tbBusinessCar.getCarType())
-                                .setConfirmJudge(CarEnum.ConfirmJudgeEnum.NO_JUDGE.getCode());
-                        tbBusinessCarService.save(otherCar);
+                    if (otherCar == null) {
+                        throw new AjaxError("车辆【" + carNo + "】未入场");
                     } else {
                         List<TbBusiness> tbBusinessList = this.findOtherBusinessByCarId(businessCarId);
                         if (tbBusinessList.size() == 1 && dbBusinessCar.getRealInTime() == null) {
@@ -873,12 +1052,8 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             } else {
                 TbBusinessCar checkCar = tbBusinessCarService.findTheLastRecord(carNo);
                 //不存在或者已经离场的
-                if (checkCar == null ||
-                        (checkCar.getRealInTime() != null && checkCar.getRealOutTime() != null)) {
-                    checkCar = new TbBusinessCar();
-                    checkCar.setCreateTime(now).setPay(0).setBusinessType(1)
-                            .setConfirmJudge(CarEnum.ConfirmJudgeEnum.NO_JUDGE.getCode())
-                            .setNo(carBuseinssNo + RandomUtil.randomNumbers(4));
+                if (checkCar == null) {
+                    throw new AjaxError("车辆【" + carNo + "】未入场");
                 }
                 checkCar.setCarNo(carNo).setCarType(tbBusinessCar.getCarType()).setCarSize(tbBusinessCar.getCarSize())
                         .setNetWeight(tbBusinessCar.getNetWeight()).setCustomerId(dbBusiness.getCustomerId())
@@ -892,7 +1067,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         }
         if (!StrUtil.equals(dbBusiness.getGoodsId(), otherBusinessBO.getGoodsId())) {
             dbBusiness.setGoodsId(otherBusinessBO.getGoodsId())
-                    .setGoodsName(tbGoods.getName()).setPayStep(tbGoods.getPayStep());
+                    .setGoodsName(goodsName).setPayStep(tbGoods.getPayStep());
         }
         String customerId = otherBusinessBO.getCustomerId();
         if (StrUtil.isNotEmpty(customerId)) {
@@ -907,7 +1082,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
 
         dbBusiness.setCardSize(otherBusinessBO.getCarSize()).setNetWeight(otherBusinessBO.getNetWeight())
                 .setOperator(otherBusinessBO.getOperator()).setOperateTime(otherBusinessBO.getOperateTime())
-                .setGoodsId(otherBusinessBO.getGoodsId())
+                .setGoodsId(otherBusinessBO.getGoodsId()).setGoodsCode(tbGoods.getCode()).setGoodsName(goodsName)
                 .setOwner(otherBusinessBO.getOwner()).setBusinessGoodsName(otherBusinessBO.getBusinessGoodsName())
                 .setBusinessGoodsNum(otherBusinessBO.getBusinessGoodsNum())
                 .setCardNo(otherBusinessBO.getCardNo());
@@ -1509,6 +1684,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
 
     /**
      * 审核通过
+     *
      * @param id
      */
     public void confirmJudgePass(String id) {
@@ -1543,20 +1719,32 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                         item.setPayTime(now).setPayStatus(1).setPayType(PayEnum.PayType.PER_PAY.getCode())
                                 .setPayTypeName(PayEnum.PayType.PER_PAY.getDesc());
                         tbBusinessItemService.updateById(item);
-                        tbBusiness.setPayMoney(price.add(tbBusiness.getPayMoney()));
+                        tbBusiness.setPayMoney(price.add(tbBusiness.getPayMoney())).setPayTime(now);
                         BigDecimal afterBalance = balance.subtract(price);
                         tbAccount.setTotalMoney(afterBalance);//增加累计扣款
                         tbAccountService.updateById(tbAccount);
                         TbFeeDetails details = tbFeeDetailsService.savePrePayDetails(res, item, tbBusinessCar, tbBusiness, FeeTypeEnum.STEVEDORE_FEE);
                         tbFeeStatisticsService.addOrUpdateStatistic(now, PayEnum.PayType.PER_PAY.getCode());//更新当前日期的日统计
-                        TbDeductionRecord record=  automaticPay.createTbDeductionRecord(details, balance, afterBalance, tbBusiness.getPickCustomerId(), tbBusiness.getPickCustomerName(), tbBusinessCar.getCarNo(), tbBusinessCar.getId(), FeeTypeEnum.STEVEDORE_FEE);
-                        addInvoiceOrder(tbBusiness, res.getTotalOrderPrice(),details,record);
+                        TbDeductionRecord record = automaticPay.createTbDeductionRecord(details, balance, afterBalance, tbBusiness.getPickCustomerId(), tbBusiness.getPickCustomerName(), tbBusinessCar.getCarNo(), tbBusinessCar.getId(), FeeTypeEnum.STEVEDORE_FEE);
+                        addInvoiceOrder(tbBusiness, res.getTotalOrderPrice(), details, record);
                     }
                 }
             }
         }
         //其他费项 装卸业务管理费” 进行预存款扣除
         for (TbBusinessItem item : tbBusinessItems) {
+            String aliasName = item.getItemAlias();
+            //充电打冷,正面吊(取柜)必须得有开始时间+结束时间
+            if (StrUtil.equals(aliasName, SystemObject.config.getColdItemAlias())
+                    || (StrUtil.equals(aliasName, SystemObject.config.getEmptyStoreItemAlias())
+                    && item.getCabinetType() == 1)
+                    || (StrUtil.equals(aliasName, SystemObject.config.getHeavyStoreItemAlias())
+                    && item.getCabinetType() == 1)
+            ) {
+                if (item.getColdStartTime() == null || item.getColdEndTime() == null) {
+                    throw new AjaxError("请先点击【修改】,然后录入业务开始/结束时间");
+                }
+            }
             //业务类型是装卸业务管理费且未支付的进行扣款
             if (item.getPayStatus() == 0 && SystemObject.config.getUnLoadItem().contains(item.getItemTypeName())) {
                 List<IOrderItem> expenses = new ArrayList<>();
@@ -1576,29 +1764,35 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                     item.setPayTime(now).setPayStatus(1).setPayType(PayEnum.PayType.PER_PAY.getCode())
                             .setPayTypeName(PayEnum.PayType.PER_PAY.getDesc());
                     tbBusinessItemService.updateById(item);
-                    tbBusiness.setPayMoney(price.add(tbBusiness.getPayMoney()));
-                    //查找越南车--->统计以
-                    TbBusinessCar tbBusinessCar = tbBusinessCars.stream().filter(car -> !CAR_LIST.contains(car.getCarNo().substring(0, 1)))
+                    tbBusiness.setPayMoney(price.add(tbBusiness.getPayMoney())).setPayTime(now);
+                    //查找越南车--->统计以--->重车对集装箱吊装 (重 柜 ) =====空车 vs 集装箱吊装 (空 柜 )
+                    String itemAlias = item.getItemAlias();
+                    TbBusinessCar tbBusinessCar = tbBusinessCars.stream().filter(car -> car.getCarType().equals(CarEnum.CarTypeEnum.EMPTY_TYPE.getType()))
                             .findAny().orElse(tbBusinessCars.get(0));
+                    if (StrUtil.equals(itemAlias, SystemObject.config.getHeavyCondoleItemAlias())) {
+                        tbBusinessCar = tbBusinessCars.stream().filter(car -> car.getCarType().equals(CarEnum.CarTypeEnum.WEIGHT_TYPE.getType()))
+                                .findAny().orElse(tbBusinessCars.get(0));
+                    }
                     TbFeeDetails details = tbFeeDetailsService.savePrePayDetails(res, item, tbBusinessCar, tbBusiness, FeeTypeEnum.STEVEDORE_FEE);
                     tbFeeStatisticsService.addOrUpdateStatistic(now, PayEnum.PayType.PER_PAY.getCode());//更新当前日期的日统计
-                    TbDeductionRecord record=  automaticPay.createTbDeductionRecord(details, balance, afterBalance, tbBusiness.getPickCustomerId(), tbBusiness.getPickCustomerName(), tbBusinessCar.getCarNo(), tbBusinessCar.getId(), FeeTypeEnum.STEVEDORE_FEE);
-                    addInvoiceOrder(tbBusiness, res.getTotalOrderPrice(),details,record);
+                    TbDeductionRecord record = automaticPay.createTbDeductionRecord(details, balance, afterBalance, tbBusiness.getPickCustomerId(), tbBusiness.getPickCustomerName(), tbBusinessCar.getCarNo(), tbBusinessCar.getId(), FeeTypeEnum.STEVEDORE_FEE);
+                    addInvoiceOrder(tbBusiness, res.getTotalOrderPrice(), details, record);
                 }
             }
         }
         tbBusiness.setConfirmJudgeTime(now).setConfirmJudgeContent("审核通过")
                 .setConfirmJudge(CarEnum.ConfirmJudgeEnum.JUDGE_PASS.getCode())
-                .setJudgeBy(StpUserUtil.getCreateBy()).setPayTime(now);
+                .setJudgeBy(StpUserUtil.getCreateBy());
         this.updateById(tbBusiness);
     }
 
     /**
      * 添加开票订单
+     *
      * @param tbBusiness
      * @param billMoney
      */
-    private void addInvoiceOrder(TbBusiness tbBusiness, BigDecimal billMoney,TbFeeDetails details,TbDeductionRecord record) {
+    private void addInvoiceOrder(TbBusiness tbBusiness, BigDecimal billMoney, TbFeeDetails details, TbDeductionRecord record) {
         TbInvoiceOrder t = new TbInvoiceOrder();
         t.setBusinessName(tbBusiness.getGoodsName())
                 .setBusinessNo(tbBusiness.getNo())
@@ -1614,6 +1808,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
 
     /**
      * 审核驳回
+     *
      * @param id
      * @param judgeContent
      */

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

@@ -158,6 +158,12 @@ public class TbBusinessCarController {
         return AjaxJson.getSuccess();
     }
 
+    /**
+     * 更改放行记录
+     * @param t
+     * @return
+     * @throws Exception
+     */
     @RequestMapping("updateCarRecord")
     @SaCheckPermission(TbBusinessCar.PERMISSION_EDIT)
     public AjaxJson updateCarRecord(TbBusinessCar t) throws Exception {

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

@@ -280,9 +280,12 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
             db.setInTimeSupplement(1).setInTimeSupplementTime(new Date());
             t.setInTimeSupplement(1).setInTimeSupplementTime(new Date());
         }
-        if (t.getRealInTime() != null && t.getRealOutTime() != null
-                && StrUtil.equals(db.getPayType(), CarEnum.PayTypeEnum.NO_PAY_TYPE.getType())) {
+        if (t.getRealInTime() != null && t.getRealOutTime() != null) {
             BigDecimal money = tbBusinessService.getPartMoney(t.getRealInTime(), t.getRealOutTime(), t.getCarNo(), t.getColor()).getTotalOrderPrice();
+            if (money.compareTo(BigDecimal.ZERO)==0){
+                t.setPayType(CarEnum.PayTypeEnum.FEE_TYPE.getType());
+                db.setPayType(CarEnum.PayTypeEnum.FEE_TYPE.getType());
+            }
             t.setMoney(money);
             db.setMoney(money);
         }
@@ -298,6 +301,31 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
                 .setRemark(t.getRemark())
                 .setOutRemark(t.getOutRemark())
                 .setTimeUpdate(now);
+        if (db.getRealInTime() != null && db.getRealOutTime() != null) {
+            //对应的业务
+            List<TbBusiness> businessList = tbBusinessService.findOtherBusinessByCarId(t.getId());
+            for (TbBusiness tbBusiness : businessList) {
+                List<TbBusinessItem> businessItemList = tbBusinessItemService.findByBusinessId(tbBusiness.getId());
+                for (TbBusinessItem tbBusinessItem : businessItemList) {
+                    String aliasName = tbBusinessItem.getItemAlias();
+                    //如果是大头车,则计算业务费用===>同时免收停车费
+                    if (StrUtil.equals(SystemObject.config.getBigHeadCar(), aliasName)
+                    ||StrUtil.equals(SystemObject.config.getCabinetCar(), aliasName)) {
+                        tbBusinessItem.setColdStartTime(db.getRealInTime()).setColdEndTime(db.getRealOutTime());
+                        db.setPayType(CarEnum.PayTypeEnum.FEE_TYPE.getType()).setPay(1).setMoney(BigDecimal.ZERO);
+                        List<IOrderItem> expenses = new ArrayList<>();
+                        tbBusinessItemService.buildExpenses(Collections.singletonList(tbBusinessItem), expenses);
+                        if (!expenses.isEmpty()){
+                            IOrderPriceRes res = syncService.orderPriceCal(expenses);
+                            tbBusinessItem.setTotal(res.getTotalOrderPrice());
+                            tbBusiness.setItemPrice(res.getTotalOrderPrice());
+                            tbBusinessItemService.updateById(tbBusinessItem);
+                        }
+                    }
+                }
+                tbBusinessService.updateById(tbBusiness);
+            }
+        }
         //车牌没改
         if (StrUtil.equals(oldCarNo, newCarNo)) {
             tbBusinessCarMapper.updateRecord(db);
@@ -314,22 +342,8 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
         }
         db.setCarNo(newCarNo);
         tbBusinessCarMapper.updateRecord(t);
-        List<TbBusiness> businessList = tbBusinessService.findOtherBusinessByCarId(t.getId());
-        String carStr = StrUtil.sub(newCarNo, 0, 1);
-        for (TbBusiness tbBusiness : businessList) {
-            if (!CAR_LIST.contains(carStr)) {
-                tbBusiness.setCardNo(newCarNo);
-            } else {
-                List<TbBusinessCar> cars = this.findOtherBusinessCar(t.getBusinessId());
-                String chinaCarNo = cars.stream().filter(obj -> CAR_LIST.contains(obj.getCarNo().substring(0, 1))).map(TbBusinessCar::getCarNo).collect(Collectors.joining("、"));
-                tbBusiness.setChinaCarNo(chinaCarNo);
-            }
-            tbBusinessService.updateById(tbBusiness);
 
-            List<TbFeeDetails> feeDetailsLIst = tbFeeDetailsService.getByBusinessIdAndCarNo(tbBusiness.getId(), oldCarNo);
-            feeDetailsLIst.forEach(fee -> fee.setCarNo(newCarNo));
-            tbFeeDetailsService.updateBatchById(feeDetailsLIst);
-        }
+
     }
 
     public List<TbBusinessCar> findTheNoBusinessCar(String carNo) {

+ 36 - 0
sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItem.java

@@ -141,6 +141,39 @@ public class TbBusinessItem extends Model<TbBusinessItem> implements Serializabl
 	private String refundBy;
 	private BigDecimal refundMoney=BigDecimal.ZERO;
 	private Date refundTime;
+	/**
+	 * 费项别名
+	 */
+	private String itemAlias;
+	/**
+	 * 开始时间图片
+	 */
+	private String startImage;
+	/**
+	 * 结束时间图片
+	 */
+	private String endImage;
+	/**
+	 * 打冷开始时间
+	 */
+	private Date coldStartTime;
+	/**
+	 * 打冷结束时间
+	 */
+	private Date coldEndTime;
+	/**
+	 * 0存柜 1 取柜
+	 */
+	private int cabinetType=0;
+	/**
+	 * 0未取柜,1已取
+	 */
+	private int cabinetStatus=0;
+	/**
+	 *
+	 */
+	private Long parentCabinetId;
+
 
 	@TableField(exist = false)
 	private String goodsName;
@@ -149,6 +182,9 @@ public class TbBusinessItem extends Model<TbBusinessItem> implements Serializabl
 	@TableField(exist = false)
 	private String chinaCarNo;
 
+	@TableField(exist = false)
+	private String customerName;
+
 
 
 

+ 8 - 0
sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemController.java

@@ -105,6 +105,14 @@ public class TbBusinessItemController {
         List<TbBusinessItem> list = tbBusinessItemService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);
     }
+    @RequestMapping("getCabinetRecord")
+    public AjaxJson getCabinetRecord(){
+        SoMap so = SoMap.getRequestSoMap();
+        List<TbBusinessItem> list = tbBusinessItemService.getCabinetRecord(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+
+
 
     @RequestMapping("pickList")
     public AjaxJson pickList() {

+ 1 - 0
sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemMapper.java

@@ -31,4 +31,5 @@ public interface TbBusinessItemMapper extends BaseMapper<TbBusinessItem> {
     List<TbBusinessItem> getList(SoMap so);
 
 
+    List<TbBusinessItem> getCabinetRecord(SoMap soMap);
 }

+ 18 - 0
sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemMapper.xml

@@ -79,6 +79,24 @@
             <otherwise>a.id desc</otherwise>
         </choose>
     </select>
+    <select id="getCabinetRecord" resultType="com.pj.project.tb_business_item.TbBusinessItem">
+        select a.* ,b.goods_name,b.card_no,b.customer_name
+        from tb_business_item a,tb_business b where a.business_id=b.id
+        and a.cabinet_type !=-1
+        <if test="cabinetNo !=null and cabinetNo !=''">
+            and a.cabinet_no like concat('%',#{cabinetNo},'%')
+        </if>
+        <if test="carNo !=null and carNo !=''">
+            and b.card_no like concat('%',#{carNo},'%')
+        </if>
+        <if test="customerName !=null and customerName !=''">
+            and b.customer_name like concat('%',#{customerName},'%')
+        </if>
+        <if test="pickCustomerName !=null and pickCustomerName !=''">
+            and b.pick_customer_name like concat('%',#{pickCustomerName},'%')
+        </if>
+        order  by a.id desc
+    </select>
 
 
 </mapper>

+ 135 - 5
sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemService.java

@@ -1,6 +1,7 @@
 package com.pj.project.tb_business_item;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
@@ -13,9 +14,11 @@ import com.pj.api.wx.service.WxService;
 import com.pj.constants.UserTypeEnum;
 import com.pj.constants.business.PayEnum;
 import com.pj.current.config.MyConfig;
+import com.pj.current.config.SystemObject;
 import com.pj.current.config.WxConfig;
 import com.pj.current.satoken.StpUserUtil;
 import com.pj.current.task.TaskService;
+import com.pj.project.sync.request.item.IFactorItem;
 import com.pj.project.sync.request.item.IOrderItem;
 import com.pj.project.tb_business.TbBusiness;
 import com.pj.project.tb_business.TbBusinessService;
@@ -25,10 +28,13 @@ import com.pj.project.tb_fee_details.TbFeeDetails;
 import com.pj.project.tb_fee_details.TbFeeDetailsService;
 import com.pj.project.tb_item.TbItem;
 import com.pj.project.tb_item.TbItemService;
+import com.pj.project.tb_item_fac.TbItemFac;
+import com.pj.project.tb_item_fac.TbItemFacService;
 import com.pj.project.tb_item_type.TbItemType;
 import com.pj.project.tb_item_type.TbItemTypeService;
 import com.pj.project4sp.admin.SpAdmin;
 import com.pj.project4sp.admin.SpAdminService;
+import com.pj.project4sp.global.BusinessException;
 import com.pj.project4sp.uploadfile.UploadUtil;
 import com.pj.utils.sg.AjaxError;
 import com.pj.utils.sg.AjaxJson;
@@ -43,10 +49,14 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.io.File;
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -88,6 +98,9 @@ public class TbBusinessItemService extends ServiceImpl<TbBusinessItemMapper, TbB
     @Resource
     private TbItemTypeService tbItemTypeService;
 
+    @Resource
+    private TbItemFacService tbItemFacService;
+
 
     /**
      * 查集合 - 根据条件(参数为空时代表忽略指定条件)
@@ -98,11 +111,33 @@ public class TbBusinessItemService extends ServiceImpl<TbBusinessItemMapper, TbB
 
 
     public void removeByBusinessId(String businessId) {
+        List<TbBusinessItem>list=this.findByBusinessId(businessId);
+        for (TbBusinessItem tbBusinessItem : list) {
+            TbBusinessItem childItem= this.findByParentCabinetId(tbBusinessItem.getId());
+            if (childItem!=null){
+                throw new AjaxError("柜号["+tbBusinessItem.getCabinetNo()+"]存在取柜关联,不能删除");
+            }
+            if (tbBusinessItem.getParentCabinetId()!=null){
+              TbBusinessItem pItem=  this.getById(tbBusinessItem.getParentCabinetId());
+              if (pItem!=null){
+                  //设置成未取柜
+                  pItem.setCabinetStatus(0);
+                  this.updateById(pItem);
+              }
+            }
+
+        }
         QueryWrapper<TbBusinessItem> ew = new QueryWrapper<>();
         ew.eq("business_id", businessId);
         this.remove(ew);
     }
 
+    private TbBusinessItem findByParentCabinetId(Long id) {
+        QueryWrapper<TbBusinessItem> ew = new QueryWrapper<>();
+        ew.lambda().eq(TbBusinessItem::getParentCabinetId,id);
+        return getOne(ew);
+    }
+
     public List<TbBusinessItem> findByBusinessId(String businessId) {
         QueryWrapper<TbBusinessItem> ew = new QueryWrapper<>();
         ew.eq("business_id", businessId);
@@ -297,12 +332,107 @@ public class TbBusinessItemService extends ServiceImpl<TbBusinessItemMapper, TbB
      * @return
      */
     public void buildExpenses(List<TbBusinessItem> businessItems, List<IOrderItem> orderItems) {
-        businessItems
-                .stream().filter(item -> item.getPayStatus()==0)
-                .forEach(item -> {
+        businessItems = businessItems
+                .stream().filter(item -> item.getPayStatus() == 0).collect(Collectors.toList());
+        for (TbBusinessItem item : businessItems) {
             IOrderItem orderItem = new IOrderItem();
-            orderItem.setUniqExpenseId(item.getItemCode()).setExpenseNum(Integer.parseInt(item.getNum()));
+            String itemAlias = item.getItemAlias();
+            Date startTime = item.getColdStartTime();
+            Date endTime = item.getColdEndTime();
+            if (StrUtil.equals(itemAlias, SystemObject.config.getColdItemAlias())) {
+                buildColdFceItem(item, orderItem, startTime, endTime);
+                //充电打冷--->按小时计费
+            } else if (StrUtil.equals(itemAlias, SystemObject.config.getHeavyStoreItemAlias())
+                    || StrUtil.equals(itemAlias, SystemObject.config.getEmptyStoreItemAlias())) {
+                //如果存柜的话则不收费
+                if (item.getCabinetType()==0){
+                    continue;
+                }
+                //空柜堆存、重箱堆存
+                buildDaysFceItem(item, orderItem, startTime, endTime);
+            }else if (StrUtil.equals(itemAlias,SystemObject.config.getBigHeadCar())
+                    ||StrUtil.equals(itemAlias,SystemObject.config.getCabinetCar())){
+                //大车头、柜车、栏车
+                buildDaysFceItem(item, orderItem, startTime, endTime);
+            }
+            orderItem.setUniqExpenseId(item.getItemCode())
+                    .setExpenseNum(Integer.parseInt(item.getNum()));
             orderItems.add(orderItem);
-        });
+        }
+    }
+
+    public void buildDaysFceItem(TbBusinessItem item, IOrderItem orderItem, Date startTime, Date endTime) {
+        String uniqExpenseId = item.getItemCode();
+        TbItemFac tbItemFac = tbItemFacService.findByItemIdAndUniqExpenseId(item.getItemId(), uniqExpenseId);
+        if (tbItemFac == null) {
+            throw new BusinessException("收费规则未配置");
+        }
+        if (startTime == null || endTime == null) {
+            throw new BusinessException("时间未设置");
+        }
+        long minutes = DateUtil.between(startTime, endTime, DateUnit.MINUTE);
+        int base=24*60;
+        //整数天数
+        long days=minutes/base;
+        //余数
+        if (minutes%base>0){
+            days=days+1;
+        }
+        IFactorItem factorItem = new IFactorItem();
+        factorItem.setFacId(tbItemFac.getFacId() + "").setFacParams(days + "");
+        orderItem.setFactors(Collections.singletonList(factorItem));
+    }
+
+    public static void main(String[] args) {
+        Date startTime=DateUtil.parseDateTime("2023-05-05 00:00:00");
+        Date endTime=DateUtil.parseDateTime("2023-05-06 00:11:00");
+       LocalDateTime start= startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+       LocalDateTime end= endTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+       long m= ChronoUnit.MINUTES.between(start,end);
+        long minutes = DateUtil.between(startTime, endTime,DateUnit.MINUTE);
+        int base=60;
+        //整数天数
+        long hour=minutes/base;
+        //余数
+        if (minutes%base>0){
+            hour=hour+1;
+        }
+        System.out.println(hour);
+    }
+
+    public void buildColdFceItem(TbBusinessItem item, IOrderItem orderItem, Date startTime, Date endTime) {
+        String uniqExpenseId = item.getItemCode();
+        TbItemFac tbItemFac = tbItemFacService.findByItemIdAndUniqExpenseId(item.getItemId(), uniqExpenseId);
+        if (tbItemFac == null) {
+            throw new AjaxError("充电打冷收费规则未配置");
+        }
+        if (startTime == null || endTime == null) {
+            throw new AjaxError("充电打冷时间未设置");
+        }
+        long minutes = DateUtil.between(startTime, endTime, DateUnit.MINUTE);
+        int base=60;
+        //整数天数
+        long hour=minutes/base;
+        //余数
+        if (minutes%base>0){
+            hour=hour+1;
+        }
+        IFactorItem factorItem = new IFactorItem();
+        factorItem.setFacId(tbItemFac.getFacId() + "").setFacParams(hour + "");
+        orderItem.setFactors(Collections.singletonList(factorItem));
+
+    }
+
+    public TbBusinessItem findTheLastRecordByCabinetNo(String cabinetNo) {
+        QueryWrapper<TbBusinessItem> ew = new QueryWrapper<>();
+        ew.lambda().eq(TbBusinessItem::getCabinetNo, cabinetNo)
+                .orderByDesc(TbBusinessItem::getId);
+        List<TbBusinessItem> list = list(ew);
+        return list.isEmpty() ? null : list.get(0);
+    }
+
+
+    public List<TbBusinessItem> getCabinetRecord(SoMap soMap) {
+        return tbBusinessItemMapper.getCabinetRecord(soMap);
     }
 }

+ 13 - 11
sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java

@@ -278,6 +278,7 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
             if (StrUtil.isEmpty(carNo)) {
                 carNo = business.getChinaCarNo();
             }
+            int num = item.getTotal().divide(item.getItemPrice(),1,BigDecimal.ROUND_UP).intValue();
             TbGoods businessCfg = tbGoodsService.getById(business.getGoodsId());
             if ((GoodsEnum.LeaveEnum.APART_BUSINESS.getCode().equals(businessCfg.getChinaCarLeave()))
                     && GoodsEnum.LeaveEnum.PART_MONEY.getCode().equals(businessCfg.getVietnamCarLeave())) {
@@ -299,7 +300,7 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
                     .setBusinessItemNo(item.getNo()).setBusinessCarId(businessCarIds).setBusinessCarNo(businessCarNos)
                     .setCarNo(carNo).setCalculateId(item.getCalculateId())
                     .setItemPrice(item.getTotal()).setUnitPrice(item.getItemPrice()).setNoTaxPrice(noTaxPrice).setTaxPrice(taxPrice)
-                    .setFeeType(feeType)
+                    .setFeeType(feeType).setNum(num)
                     .setItemTypeId(item.getItemTypeId()).setItemTypeName(item.getItemTypeName())
                     .setItemId(item.getItemId()).setItemName(item.getItemName())
                     .setPayDay(toDay).setPayType(payType.getCode()).setCreateTime(now).setUpdateTime(now)
@@ -308,7 +309,6 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
                     .setCustomerName(business.getCustomerName())
                     .setIsSettle(1).setPayMode(1).setPayTime(nowStr)
                     .setTransactionId(transactionId).setOutTradeNo(outTradeNo)
-                    .setNum(Integer.valueOf(item.getNum()))
                     .setModule(module);
             String type = StrUtil.isEmpty(businessFeeDetail.getId()) ? SyncTypeEnum.INSERT.getCode() : SyncTypeEnum.UPDATE.getCode();
             saveOrUpdate(businessFeeDetail);
@@ -320,28 +320,30 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
 
     /**
      * 预充值支付明细保存
+     *
      * @param item
      * @param tbBusinessCar
      * @param business
      * @return
      */
-    public TbFeeDetails savePrePayDetails(IOrderPriceRes res, TbBusinessItem item, TbBusinessCar tbBusinessCar, TbBusiness business, FeeTypeEnum feeTypeEnum){
-        Integer feeType =feeTypeEnum.getCode();
+    public TbFeeDetails savePrePayDetails(IOrderPriceRes res, TbBusinessItem item, TbBusinessCar tbBusinessCar, TbBusiness business, FeeTypeEnum feeTypeEnum) {
+        Integer feeType = feeTypeEnum.getCode();
         Double taxRate = item.getTaxRate();
-        Date now=new Date();
+        BigDecimal totalPrice = res.getTotalOrderPrice();
+        Date now = new Date();
         //添加此item的收费明细
         TbFeeDetails businessFeeDetail = new TbFeeDetails();
         businessFeeDetail.setTaxRate(BigDecimal.valueOf(taxRate));
-        BigDecimal taxPrice = item.getTotal()
+        BigDecimal taxPrice = totalPrice
                 .divide(BigDecimal.valueOf(1).add(businessFeeDetail.getTaxRate()), 2, BigDecimal.ROUND_HALF_UP)
                 .multiply(businessFeeDetail.getTaxRate());
         taxPrice = taxPrice.setScale(2, BigDecimal.ROUND_HALF_UP);
-        BigDecimal noTaxPrice = item.getTotal().subtract(taxPrice);
+        BigDecimal noTaxPrice = totalPrice.subtract(taxPrice);
         noTaxPrice = noTaxPrice.setScale(2, BigDecimal.ROUND_HALF_UP);
         businessFeeDetail.setBusinessId(item.getBusinessId()).setBusinessNo(business.getNo())
                 .setBusinessItemNo(item.getNo()).setBusinessCarId(tbBusinessCar.getId()).setBusinessCarNo(tbBusinessCar.getCarNo())
                 .setCarNo(tbBusinessCar.getCarNo()).setCalculateId(res.getCalculateId())
-                .setItemPrice(item.getTotal()).setUnitPrice(item.getItemPrice()).setNoTaxPrice(noTaxPrice).setTaxPrice(taxPrice)
+                .setItemPrice(totalPrice).setUnitPrice(item.getItemPrice()).setNoTaxPrice(noTaxPrice).setTaxPrice(taxPrice)
                 .setFeeType(feeType)
                 .setItemTypeId(item.getItemTypeId()).setItemTypeName(item.getItemTypeName())
                 .setItemId(item.getItemId()).setItemName(item.getItemName())
@@ -358,15 +360,15 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
     }
 
     public List<TbFeeDetails> savePrePayDetails(IOrderPriceRes res, List<TbBusinessItem> itemList, TbBusinessCar tbBusinessCar, TbBusiness business, FeeTypeEnum feeTypeEnum) {
-        List<TbFeeDetails> feeDetailsList=new ArrayList<>();
+        List<TbFeeDetails> feeDetailsList = new ArrayList<>();
         for (TbBusinessItem item : itemList) {
-            TbFeeDetails  feeDetails=  savePrePayDetails(res, item, tbBusinessCar, business, feeTypeEnum);
+            TbFeeDetails feeDetails = savePrePayDetails(res, item, tbBusinessCar, business, feeTypeEnum);
             feeDetailsList.add(feeDetails);
         }
         return feeDetailsList;
     }
 
-        public String export(SoMap so) {
+    public String export(SoMap so) {
         Date now = new Date();
         String nowStr = DateUtil.format(now, "yyyy-MM-dd HH:mm");
         String beginTime = so.getString("beginTime");

+ 25 - 7
sp-server/src/main/java/com/pj/project/tb_item/TbItem.java

@@ -12,10 +12,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Model: tb_item -- 作业配置项
@@ -63,7 +60,7 @@ public class TbItem extends Model<TbItem> implements Serializable {
     /**
      * 项目金额(元)
      */
-    private BigDecimal price;
+    private BigDecimal price=BigDecimal.ZERO;
     private String unit;
     private double carLength;
     private double maxWeight;
@@ -85,7 +82,7 @@ public class TbItem extends Model<TbItem> implements Serializable {
     private Double taxRate;
     private String typeName;
     private String itemAlias;
-
+    private String pattern;
     @TableField(exist = false)
     private List<TbItemFac> facList = new ArrayList<>();
 
@@ -96,6 +93,18 @@ public class TbItem extends Model<TbItem> implements Serializable {
     @TableField(exist = false)
     private String cabinetNo;
 
+    @TableField(exist = false)
+    private String businessItemId;
+
+    @TableField(exist = false)
+    private int cabinetType=-1;
+
+    @TableField(exist = false)
+    private Date coldStartTime;
+
+    @TableField(exist = false)
+    private Date coldEndTime;
+
 
 
     @TableField(exist = false)
@@ -112,6 +121,15 @@ public class TbItem extends Model<TbItem> implements Serializable {
 
     @TableField(exist = false)
     private int inc;
-
+    /**
+     * 开始时间图片
+     */
+    @TableField(exist = false)
+    private String startImage;
+    /**
+     * 结束时间图片
+     */
+    @TableField(exist = false)
+    private String endImage;
 
 }

+ 3 - 1
sp-server/src/main/java/com/pj/project/tb_item/TbItemService.java

@@ -139,6 +139,7 @@ public class TbItemService extends ServiceImpl<TbItemMapper, TbItem> implements
         if (tbItem == null) {
             tbItem = new TbItem();
         }
+        tbItem.setPattern(item.getPattern());
         String payType = tbItemType.getPayType();
         tbItem.setPayType(Integer.parseInt(payType))
                 .setPayTypeName(tbItemType.getPayTypeName());
@@ -182,7 +183,7 @@ public class TbItemService extends ServiceImpl<TbItemMapper, TbItem> implements
     private void doHanlder(List<IrulesItem> rules, TbItem tbItem, String uniqueExpenseId) {
         rules.forEach(irulesItem -> {
             Long facId = irulesItem.getFacId();
-            TbItemFac tbItemFac = tbItemFacService.getByFaceIdAnd(facId,uniqueExpenseId);
+            TbItemFac tbItemFac = tbItemFacService.getByFaceIdAnd(facId, uniqueExpenseId);
             if (tbItemFac == null) {
                 tbItemFac = new TbItemFac();
             }
@@ -262,6 +263,7 @@ public class TbItemService extends ServiceImpl<TbItemMapper, TbItem> implements
 
     /**
      * 根据变量名查询
+     *
      * @param itemAlias
      * @return
      */

+ 6 - 10
sp-server/src/main/java/com/pj/project/tb_item_fac/TbItemFacService.java

@@ -57,16 +57,12 @@ public class TbItemFacService extends ServiceImpl<TbItemFacMapper, TbItemFac> im
         this.remove(ew);
     }
 
-    /**
-     * 根据车长查询规则
-     * @param carSize
-     * @return
-     */
-    public TbItemFac getPartFac(double carSize) {
+
+
+    public TbItemFac findByItemIdAndUniqExpenseId(String itemId, String uniqExpenseId) {
         QueryWrapper<TbItemFac> ew = new QueryWrapper<>();
-        ew.lambda().le(TbItemFac::getMinRange, carSize)
-                .ge(TbItemFac::getMaxRange, carSize);
-        List<TbItemFac> list = this.list(ew);
-        return list.isEmpty() ? null : list.get(0);
+        ew.lambda().eq(TbItemFac::getItemId, itemId)
+                .eq(TbItemFac::getUniqueExpenseId, uniqExpenseId);
+        return getOne(ew);
     }
 }

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

@@ -84,7 +84,10 @@ public class TbItemType extends Model<TbItemType> implements Serializable {
      */
     private String payType = "0";
     private String payTypeName;
-
+    /**
+     * 统一计费中心编号
+     */
+    private String aliasName;
 
     @TableField(exist = false)
     private List<TbItem> items = new ArrayList<>();

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

@@ -185,6 +185,8 @@ public class TbItemTypeService extends ServiceImpl<TbItemTypeMapper, TbItemType>
         log.info("解密业务类型:{}", JSONUtil.toJsonStr(itemTypeBO));
         String type = itemTypeBO.getSyncType();
         String code = itemTypeBO.getKeyId();
+        String aliasName = itemTypeBO.getAliasName();
+        String label = itemTypeBO.getLabel();
         TbItemType db = findByCode(code);
         int state = itemTypeBO.getState() == 0 ? 1 : 0;
         Date now = new Date();
@@ -196,14 +198,14 @@ public class TbItemTypeService extends ServiceImpl<TbItemTypeMapper, TbItemType>
             }
         } else if (StrUtil.equals(type, SyncTypeEnum.UPDATE.getCode())) {
             if (db != null) {
-                db.setStatus(state);
+                db.setStatus(state).setPayTypeName(label)
+                        .setName(itemTypeBO.getKeyName()).setAliasName(aliasName);
                 updateById(db);
             }
         } else {
             if (db == null) {
                 db = new TbItemType();
             }
-            String label = itemTypeBO.getLabel();
             TbFeeItem tbFeeItem = tbFeeItemService.findByName(label.trim());
             if (tbFeeItem == null) {
                 tbFeeItem = new TbFeeItem();
@@ -211,7 +213,7 @@ public class TbItemTypeService extends ServiceImpl<TbItemTypeMapper, TbItemType>
                 tbFeeItemService.save(tbFeeItem);
             }
             db.setSyncTime(now).setName(itemTypeBO.getKeyName()).setStatus(state).setCode(code)
-                    .setPayType(tbFeeItem.getId() + "").setPayTypeName(label)
+                    .setPayType(tbFeeItem.getId() + "").setPayTypeName(label).setAliasName(aliasName)
                     .setStartTime(itemTypeBO.getStartTime()).setEndTime(itemTypeBO.getEndTime());
             String partnerIds = itemTypeBO.getPartnersId();
             if (StrUtil.isNotEmpty(partnerIds)) {
@@ -229,6 +231,12 @@ public class TbItemTypeService extends ServiceImpl<TbItemTypeMapper, TbItemType>
 
     }
 
+    public TbItemType findByAliasName(String aliasName) {
+        QueryWrapper<TbItemType>ew=new QueryWrapper<>();
+        ew.lambda().eq(TbItemType::getAliasName,aliasName);
+        return getOne(ew);
+    }
+
     private void removeByCode(String code) {
         QueryWrapper<TbItemType> ew = new QueryWrapper<>();
         ew.lambda().eq(TbItemType::getCode, code);

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

@@ -6,9 +6,9 @@ spring:
     # 数据源配置
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        url: jdbc:mysql://47.101.143.145:3306/pco?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
         username: root
-        password: 1qaz@WSX
+        password: 123456
         # 是否打开sql监控台  (生产环境请务必关闭此选项)
         druid:
             stat-view-servlet:
@@ -55,6 +55,13 @@ spring:
         un-load-item: "装卸业务管理费"  #装卸管理费
         every-car-pay: "人工、机械装卸车辆"  #每辆车都收费
         part-item-alias: partItem #停车费变量名
+        cold-item-alias: coldTruck #冷链车--->充电打冷
+        empty-store-item-alias: emptyStore #空柜堆存
+        heavy-store-item-alias: heavyStore #重柜堆存
+        empty-condole-item-alias: emptyCondole #集装箱吊装 (重 柜 )
+        heavy-condole-item-alias: heavyCondole    #集装箱吊装 (空 柜 )
+        big-head-car: bigHeadCar #大头车 --->按天收费
+        cabinet-car: cabinetCar #柜车、栏车
 part-config:
     base-price: 30 #基础费用
     extra-price: 10 #过夜额外收费