Browse Source

计费系统费项对接

qzyReal 2 years ago
parent
commit
f4b011fcec
31 changed files with 474 additions and 359 deletions
  1. 1 1
      app-ui/manifest.json
  2. 0 28
      app-ui/pages/index/index.vue
  3. 44 16
      app-ui/pages/wx/pay.vue
  4. 2 2
      app-ui/utils/request.js
  5. 1 54
      sp-admin/sa-frame/menu-list-sp.js
  6. 1 1
      sp-admin/sa-view/tb-business/tb-car-disincle-list.html
  7. 12 7
      sp-admin/sa-view/tb-item-type/tb-item-list.html
  8. 2 11
      sp-admin/sa-view/tb-item-type/tb-item-select.html
  9. 7 9
      sp-admin/sa-view/tb-item-type/tb-item-type-list.html
  10. 1 1
      sp-admin/static/sa.js
  11. 2 1
      sp-server/src/main/java/com/pj/api/jh/service/JhService.java
  12. 9 8
      sp-server/src/main/java/com/pj/api/open/service/OpenService.java
  13. 62 104
      sp-server/src/main/java/com/pj/api/pushfee/bo/SyncBillParam.java
  14. 25 10
      sp-server/src/main/java/com/pj/api/pushfee/task/FeeDetailSyncTask.java
  15. 4 0
      sp-server/src/main/java/com/pj/api/wx/bo/Attach.java
  16. 18 0
      sp-server/src/main/java/com/pj/api/wx/bo/ManagerBO.java
  17. 12 1
      sp-server/src/main/java/com/pj/api/wx/service/WxService.java
  18. 2 2
      sp-server/src/main/java/com/pj/constants/business/FeeTypeEnum.java
  19. 21 0
      sp-server/src/main/java/com/pj/constants/business/ManagerEnum.java
  20. 14 0
      sp-server/src/main/java/com/pj/current/config/MyConfig.java
  21. 4 3
      sp-server/src/main/java/com/pj/project/sync/HelpService.java
  22. 16 2
      sp-server/src/main/java/com/pj/project/sync/SyncService.java
  23. 90 40
      sp-server/src/main/java/com/pj/project/tb_business/TbBusinessService.java
  24. 7 0
      sp-server/src/main/java/com/pj/project/tb_costomer/TbCostomerController.java
  25. 32 1
      sp-server/src/main/java/com/pj/project/tb_costomer/TbCostomerService.java
  26. 8 3
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsMapper.xml
  27. 47 43
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java
  28. 4 4
      sp-server/src/main/java/com/pj/project/tb_fee_statistics/TbFeeStatisticsMapper.xml
  29. 1 0
      sp-server/src/main/java/com/pj/project/tb_goods/TbGoods.java
  30. 21 6
      sp-server/src/main/java/com/pj/project/tb_item/TbItemService.java
  31. 4 1
      sp-server/src/main/resources/application-dev.yml

+ 1 - 1
app-ui/manifest.json

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

+ 0 - 28
app-ui/pages/index/index.vue

@@ -93,20 +93,6 @@ export default {
         text: '充值',
         url: '/pages/account/account-redirect',
       },
-        {
-          id: 'tb-declare',
-          auth: false,
-          icon: '../../static/home-icon-07.jpg',
-          text: '申报录入',
-          url: '/pages/declare/add',
-        },
-        {
-          id: 'tb-disinfect',
-          auth: false,
-          icon: '../../static/home-icon-06.jpg',
-          text: '消杀申报',
-          url: '/pages/disinfect/addDisinfect',
-        },
         // {
         // 	id: 'tb-business',
         // 	auth: true,
@@ -153,20 +139,6 @@ export default {
 
         // },
         {
-          id: 'tb-declare',
-          auth: false,
-          icon: '../../static/home-icon-07.jpg',
-          text: '申报录入',
-          url: '/pages/declare/add',
-        },
-        {
-          id: 'tb-disinfect',
-          auth: false,
-          icon: '../../static/home-icon-06.jpg',
-          text: '消杀申报',
-          url: '/pages/disinfect/addDisinfect',
-        },
-        {
           auth: false,
           icon: '../../static/home-icon-03.png',
           text: '业务管理',

+ 44 - 16
app-ui/pages/wx/pay.vue

@@ -34,7 +34,22 @@
 					</view>
 				</u-checkbox-group>
 			</view>
-
+			<view class="card" v-if="manager">
+				<view class="title">
+					入场管理费:
+				</view>
+					<view >
+						<label class="c-item">
+							<view class="l">
+								<u-checkbox :checked="manager.id!=''" :customStyle="{marginBottom: '8px'}" :name="manager.id"
+									disabled>
+								</u-checkbox>
+							</view>
+							<view class="c">{{ manager.label }}</view>
+							<view class="r">{{ manager.price }}元</view>
+						</label>
+					</view>
+			</view>
 			<view class="card" v-if="item.itemsPrice">
 				<view class="title">
 					<u-checkbox-group placement="column" v-model="businessSelect" @change="businessChange">
@@ -127,10 +142,13 @@
 				businessAble: true,
 				showPay: false,
 				judge: false,
+				manager:{
+				  id:''	
+				},
 				item: {
 					itemsPrice: 0,
 					businessId: '',
-					calculateId:'',
+					calculateId: '',
 					list: []
 				},
 				payTypeList: [{
@@ -157,7 +175,7 @@
 		mounted() {
 			this.getChannelCar();
 			this.getWxConfig();
-			
+
 		},
 		beforeDestroy() {
 			this.$common.hidingLoading()
@@ -174,6 +192,10 @@
 					.map(obj => obj.price).reduce(function(pre, cur) {
 						return pre + cur;
 					}, 0) : 0;
+					let manager=this.manager;
+					if(manager){
+						itemMoney=manager.price+itemMoney;
+					}
 				return (carMoney + itemMoney).toFixed(2);
 			}
 		},
@@ -226,26 +248,30 @@
 				let carNos = this.cars.map(obj => obj.carNo).join('、');
 				let carBusinessNo = this.cars.map(obj => obj.no).join('、');
 				let businessSelect = this.businessSelect;
-				let openid=this.openid?this.openid:uni.getStorageSync('openid')
+				let openid = this.openid ? this.openid : uni.getStorageSync('openid')
 				let p = {
 					b: businessSelect.length > 0 ? this.item.businessId : '',
 					c: JSON.stringify(cars.map(obj => {
 						return {
 							id: obj.id,
 							p: obj.price,
-							uniqExpenseId:obj.uniqExpenseId,
-							carDesc:obj.carDesc,
-							hourDesc:obj.hourDesc,
-							standard:obj.standard,
-							over24Hour:obj.over24Hour,
-							extraPrice:obj.extraPrice,
-							calculateId:obj.calculateId
+							uniqExpenseId: obj.uniqExpenseId,
+							carDesc: obj.carDesc,
+							hourDesc: obj.hourDesc,
+							standard: obj.standard,
+							over24Hour: obj.over24Hour,
+							extraPrice: obj.extraPrice,
+							calculateId: obj.calculateId
 						}
 					})),
 					money: this.total,
 					tradeType: "JSAPI",
 					openid: openid
 				}
+				let manager=this.manager;
+				if(manager&&manager.id){
+					p.i=JSON.stringify(manager);
+				}
 				let con = 'A1-停车费-' + carBusinessNo;
 				let tradeType = 'PORT_PARKING_FEE';
 				if (carIds.length == 0 || businessSelect.length > 0) { //交业务费
@@ -254,7 +280,7 @@
 				}
 				p.desc = con + '-' + carNos;
 				p.businessType = tradeType;
-				p.calculateId=this.item.calculateId;
+				p.calculateId = this.item.calculateId;
 				this.$common.showLoading('正在请求...');
 				let that = this;
 				that.$api.getPrePay(that.$common.removeNull(p)).then(resp => {
@@ -320,13 +346,15 @@
 					carId: carId,
 					state: this.state
 				}).then(resp => {
-					let code=resp.code;
-					if(code!==200){
+					let code = resp.code;
+					if (code !== 200) {
 						this.$common.toast('系统异常');
 						return;
 					}
 					let data = resp.data;
-					let cars=data.carList;
+					let cars = data.carList;
+					this.manager=data.manager;
+					
 					this.cars = cars;
 					this.goodsName = data.goodsName;
 					this.showPay = data.showPay;
@@ -338,7 +366,7 @@
 					Object.assign(this.item, {
 						itemsPrice: data.itemsPrice,
 						businessId: data.businessId,
-						calculateId:data.calculateId,
+						calculateId: data.calculateId,
 						list: list
 					})
 					this.businessAble = list.filter(obj => obj.pay == 1).length == list.length;

+ 2 - 2
app-ui/utils/request.js

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

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

@@ -677,60 +677,7 @@ window.menuList.unshift({
 			name: '支付记录',
 			url: 'sa-view/tb-pay-record/tb-pay-record-list.html'
 		}, ]
-	}, {
-		id: 'tb-declare',
-		name: '申报信息',
-		icon: 'el-icon-folder-opened',
-		parent: true,
-		childList: [{
-			id: 'tb-declare-list',
-			name: '申报列表',
-			url: 'sa-view/tb-declare/tb-declare-list.html',
-
-			childList: [{
-					id: 'tb-declare-print',
-					name: '打印申报信息',
-					isShow: false
-				},
-				{
-					id: 'tb-declare-edit',
-					name: '修改申报信息',
-					isShow: false
-				},
-				{
-					id: 'tb-declare-del',
-					name: '删除申报信息',
-					isShow: false
-				},
-			]
-		}, ]
-	}, {
-		id: 'tb-disinfect',
-		name: '消毒信息',
-		icon: 'el-icon-folder-opened',
-		parent: true,
-		childList: [{
-			id: 'tb-disinfect-list',
-			name: '申请列表',
-			url: 'sa-view/tb-disinfect/tb-disinfect-list.html',
-			childList: [{
-					id: 'tb-disinfect-print',
-					name: '打印信息',
-					isShow: false
-				},
-				{
-					id: 'tb-disinfect-edit',
-					name: '修改信息',
-					isShow: false
-				},
-				{
-					id: 'tb-disinfect-del',
-					name: '删除信息',
-					isShow: false
-				},
-			]
-		}, ]
-	}, {
+	},  {
 		id: 'tb-discount',
 		name: '折扣管理',
 		icon: 'el-icon-folder-opened',

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

@@ -79,7 +79,7 @@
 							<label>{{s.row.carNoStr}}</label>
 						</template>
 					</el-table-column>
-					<sa-td name="作业时间" prop="operateTime" width="160"></sa-td>
+					<sa-td name="支付时间" prop="payTime" width="160"></sa-td>
 					
 					<sa-td name="确认" prop="adminConfirmInput" type="enum" :jv="{1: '已确认', 0: '未确认'}"></sa-td>
 					<sa-td name="已支付(元)" prop="payMoney" width="140"></sa-td>

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

@@ -24,9 +24,9 @@
 					<sa-item type="text" name="车型" v-model="p.itemName"></sa-item>
 					<el-button type="primary" icon="el-icon-search" @click="p.pageNo = 1; f5()">查询</el-button>
 					<sa-item type="fast-btn" show="reset" style="display: inline;"></sa-item>
-					<el-button v-if="sa.isAuth('tb-item-manager-add')" type="primary" icon="el-icon-plus"
+					<!-- <el-button v-if="sa.isAuth('tb-item-manager-add')" type="primary" icon="el-icon-plus"
 						@click="add()">新增
-					</el-button>
+					</el-button> -->
 					<br />
 				</el-form>
 				<!-- ------------- 数据列表 ------------- -->
@@ -34,11 +34,16 @@
 					<el-table-column type="index" width="50">
 					</el-table-column>
 					<sa-td name="车型" prop="itemName" width="200px"></sa-td>
-					<sa-td name="业务类型" prop="typeName" width="300px"></sa-td>
+					<sa-td name="业务类型" prop="typeName"></sa-td>
 					<sa-td name="通知类型" prop="businessTypeName"></sa-td>
-					<sa-td name="空车/载重" prop="itemType"></sa-td>
+					<!-- <sa-td name="空车/载重" prop="itemType"></sa-td> -->
 					<sa-td name="统计类型" prop="payTypeName"></sa-td>
-					<sa-td name="价格" prop="price"></sa-td>
+					<el-table-column label="价格">
+						<template slot-scope="s">
+							<span v-if="s.row.itemName.indexOf('停车')==-1">{{s.row.price}}</span>
+							<span v-else>-</span>
+						</template>
+					</el-table-column>
 					<sa-td name="计价单位" prop="unit"></sa-td>
 					<sa-td name="税率(%)" prop="taxRate"></sa-td>
 
@@ -49,9 +54,9 @@
 							<el-button v-if="sa.isAuth('tb-item-manager-edit')" class="c-btn" type="primary"
 								icon="el-icon-edit" @click="update(s.row)">修改
 							</el-button>
-							<el-button v-if="sa.isAuth('tb-item-manager-del')" class="c-btn" type="danger"
+						<!-- 	<el-button v-if="sa.isAuth('tb-item-manager-del')" class="c-btn" type="danger"
 								icon="el-icon-delete" @click="del(s.row)">删除
-							</el-button>
+							</el-button> -->
 						</template>
 					</el-table-column>
 				</el-table>

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

@@ -31,19 +31,10 @@
         <!-- ------------- 数据列表 ------------- -->
         <el-table class="data-table" ref="data-table" :data="dataList">
             <sa-td type="selection"></sa-td>
-            <sa-td name="业务类型" prop="itemName" width="300px"></sa-td>
+            <sa-td name="业务类型" prop="itemName"></sa-td>
             <sa-td name="价格" prop="price"></sa-td>
             <sa-td name="单位" prop="unit"></sa-td>
-            <sa-td name="适合规格(米)">
-                <template slot-scope="s">
-                    <label>{{s.row.minLength}}—{{s.row.carLength}}</label>
-                </template>
-            </sa-td>
-            <sa-td name="适合载重(吨)">
-                <template slot-scope="s">
-                    <label>{{s.row.minWeight}}—{{s.row.maxWeight}}</label>
-                </template>
-            </sa-td>
+          
             <el-table-column label="操作" fixed="right">
                 <template slot-scope="s">
                     <el-button class="c-btn" type="primary" @click="selectFn(s.row)">选择

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

@@ -21,17 +21,17 @@
 				<!-- ------------- 检索参数 ------------- -->
 				<div class="c-title">检索参数</div>
 				<el-form ref="form" :model='p' @submit.native.prevent>
-					<sa-item type="text" name="项目名称" v-model="p.name"></sa-item>
+					<sa-item type="text" name="业务类型" v-model="p.name"></sa-item>
 					<el-button type="primary" icon="el-icon-search" @click="p.pageNo = 1; f5()">查询</el-button>
 					<sa-item type="fast-btn" show="reset" style="display: inline;"></sa-item>
-					<el-button v-if="sa.isAuth('tb-item-type-add')" type="primary" icon="el-icon-plus" @click="add()">新增
-					</el-button>
+					<!-- <el-button v-if="sa.isAuth('tb-item-type-add')" type="primary" icon="el-icon-plus" @click="add()">新增
+					</el-button> -->
 					<br />
 				</el-form>
 				<!-- ------------- 数据列表 ------------- -->
 				<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="name"></sa-td>
 					<el-table-column label="有效期" width="260px">
 						<template slot-scope="s">
 							{{s.row.startTime}}~{{s.row.endTime}}
@@ -40,17 +40,15 @@
 					<sa-td name="状态" prop="status" type="enum" :jv="{0: '禁用[#ff0000]', 1: '启用[#005500]'}"></sa-td>
 					<el-table-column label="操作" fixed="right" width="260px">
 						<template slot-scope="s">
-							<!-- <el-button class="c-btn" type="success"  @click="get(s.row)">二维码
-                    </el-button> -->
 							<el-button v-if="sa.isAuth('tb-item-type-relation')" class="c-btn" type="success"
-								@click="itemFn(s.row)">收费明细
+								@click="itemFn(s.row)">对应车型
 							</el-button>
 							<el-button v-if="sa.isAuth('tb-item-type-edit')" class="c-btn" type="primary"
 								icon="el-icon-edit" @click="update(s.row)">修改
 							</el-button>
-							<el-button v-if="sa.isAuth('tb-item-type-del')" class="c-btn" type="danger"
+						<!-- 	<el-button v-if="sa.isAuth('tb-item-type-del')" class="c-btn" type="danger"
 								icon="el-icon-delete" @click="del(s.row)">删除
-							</el-button>
+							</el-button> -->
 						</template>
 					</el-table-column>
 				</el-table>

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

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

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

@@ -82,9 +82,10 @@ public class JhService {
         String businessId = request.getParameter("b");
         String c = request.getParameter("c");
         String a = request.getParameter("a");
+        String i = request.getParameter("i");
         String businessType = request.getParameter("businessType");
         Attach atchMap = new Attach();
-        atchMap.setC(c).setB(businessId).setA(a);
+        atchMap.setC(c).setB(businessId).setA(a).setI(i);
         String attchStr = JSONUtil.toJsonStr(atchMap);
         TbOrder dbOrder = tbOrderService.find30Seconds(attchStr, LocalDateTime.now().minusSeconds(wxConfig.getLimitPaySeconds()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         if (dbOrder != null && !StrUtil.equals(dbOrder.getOpenid(), openid)) {

+ 9 - 8
sp-server/src/main/java/com/pj/api/open/service/OpenService.java

@@ -201,9 +201,9 @@ public class OpenService {
         String carType = tbBusinessCar.getCarType();
         BigDecimal yueCarMoney = new BigDecimal(0);
         BigDecimal chinaCarMoney = new BigDecimal(0);
-        IOrderPriceRes yueRes=new IOrderPriceRes();
-        IOrderPriceRes chinaRes=new IOrderPriceRes();
-        IOrderPriceRes businessRes=new IOrderPriceRes();
+        IOrderPriceRes yueRes = new IOrderPriceRes();
+        IOrderPriceRes chinaRes = new IOrderPriceRes();
+        IOrderPriceRes businessRes = new IOrderPriceRes();
         List<IOrderItem> expenses = new ArrayList<>();
         List<TbBusiness> businessList = tbBusinessService.findOtherBusinessByCarId(businessCarId);
         int payPart = tbBusinessCar.getPay();
@@ -243,13 +243,13 @@ public class OpenService {
                     return tbGoods.getChinaCarPay() == 1;
                 });
                 if (chinaCarPay && payPart == 0) {
-                    IOrderPriceRes res = tbBusinessService.getPartMoney(tbBusinessCar.getRealInTime(), now,carNo, tbBusinessCar.getColor());
+                    IOrderPriceRes res = tbBusinessService.getPartMoney(tbBusinessCar.getRealInTime(), now, carNo, tbBusinessCar.getColor());
                     double dif = res.getTotalOrderPrice().doubleValue();
                     if (dif > 0) {
                         RedisUtil.setByMINUTES(channel, carNo, 5);
                         log.error("中国车停车费:{},{}元", carNo, dif);
                         chinaCarMoney = new BigDecimal(dif);
-                        chinaRes=res;
+                        chinaRes = res;
                         //  return ResultJson.error("请缴停车费" + dif + "元");
                     } else {
                         if (tbBusinessCar.getPayTime() == null) {
@@ -269,7 +269,7 @@ public class OpenService {
                         RedisUtil.setByMINUTES(channel, carNo, 5);
                         log.error("越南车停车费:{},{}元", carNo, dif);
                         yueCarMoney = new BigDecimal(dif);
-                        yueRes=res;
+                        yueRes = res;
                     } else {
                         if (tbBusinessCar.getPayTime() == null) {
                             tbBusinessCar.setPayType(CarEnum.PayTypeEnum.FEE_TYPE.getType()).setPay(1);
@@ -282,7 +282,8 @@ public class OpenService {
         int autoPayCount = 0;
         List<String> businessIds = businessList.stream().map(TbBusiness::getId).collect(Collectors.toList());
         List<TbBusinessItem> businessItems = tbBusinessItemService.findByBusinessId(businessIds);
-
+        //入场管理费。。。。
+       // boolean needPayManagerMoney = tbBusinessService.needPayManagerMoney(carNo, businessItems);
         for (TbBusiness tbBusiness : businessList) {
             TbGoods tbGoods = tbGoodsService.getById(tbBusiness.getGoodsId());
             if (GoodsEnum.DeductionTypeEnum.OUT_KK.getCode().equals(tbGoods.getAutoDeductionType())) {
@@ -327,7 +328,7 @@ public class OpenService {
             }
         }
         BigDecimal carMoney = chinaCarMoney.add(yueCarMoney);
-        BigDecimal businessMoney=businessRes.getTotalOrderPrice();
+        BigDecimal businessMoney = businessRes.getTotalOrderPrice();
         BigDecimal total = businessMoney.add(carMoney);
         if (total.doubleValue() > 0) {
             String desc = "请缴";

+ 62 - 104
sp-server/src/main/java/com/pj/api/pushfee/bo/SyncBillParam.java

@@ -3,137 +3,95 @@ package com.pj.api.pushfee.bo;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
-import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
 @Accessors(chain = true)
-public class SyncBillParam implements Serializable {
-    /**
-     * 产品编号
-     */
+public class SyncBillParam {
+
+    private Integer id;
+
+    private String sysId;
+
+    private String sysName;
+
     private String prdNo;
-    /**
-     *产品名称
-     */
+
     private String prdName;
-    /**
-     *商品编号
-     */
+
     private String goodNo;
-    /**
-     *商品名称
-     */
+
     private String goodName;
-    /**
-     * 缴费主体编号
-     */
+
     private String subjectNo;
-    /**
-     * 缴费主体名称
-     */
+
     private String subjectName;
-    /**
-     *父订单号
-     */
+
     private String mainBillNo;
-    /**
-     *订单号
-     */
+
     private String subBillNo;
-    /**
-     *业务类型编号(二级分类)
-     */
+
     private String bizTypeNo;
-    /**
-     *业务类型名称
-     */
+
     private String bizTypeName;
-    /**
-     *收费项目编号(一级分类)
-     */
+
     private String chargeItemNo;
-    /**
-     *收费项目名称(一级分类)
-     */
+
     private String chargeItemName;
-    /**
-     *渠道支付流水号
-     */
+
+    private String paymentWayNo;
+
+    private String paymentWayName;
+
     private String paidSerialNo;
-    /**
-     *支付金额
-     */
-    private String paidAmount;
-    /**
-     *退款金额
-     */
-    private String refundAmount;
-    /**
-     *退款流水号
-     */
+
+    private BigDecimal paidAmount;
+
+    private String refundStatus;
+
+    private String refundStatusDesc;
+
+    private BigDecimal refundAmount;
+
     private String refundSerialNo;
-    /**
-     *支付状态
-     */
+
     private String payStatus;
-    /**
-     *订单日期
-     */
-    private Date billTime;
-    /**
-     *支付日期
-     */
-    private String payTime;
-    /**
-     *订单描述
-     */
+
+    private String payStatusDesc;
+
     private String billDesc;
-    /**
-     *订单状态
-     */
+
     private String billStatus;
-    /**
-     * insert update delete
-     */
-    private String syncType="insert";
-    /**
-     *数量
-     */
-    private String quantity;
-    /**
-     * 金额元(两位小数)
-     */
-    private String price;
-    /**
-     *分类路径
-     */
+
+    private String billStatusDesc;
+
+    private Integer quantity;
+
+    private BigDecimal price;
+
+    private BigDecimal saleAmount;
+
+    private Date billTime;
+
+    private Date payTime;
+
+    private BigDecimal actPrice;
+
     private String classifyPath;
-    /**
-     * 合作伙伴ID
-     */
+
     private String partnersId;
-    /**
-     *合作伙伴名称
-     */
+
     private String partnersName;
-    /**
-     * 减免金额
-     */
-    private BigDecimal saleAmount;
 
-    /**
-     * 实际金额
-     */
-    private BigDecimal actPrice;
+    private String calculateId;
+
+    private BigDecimal settlementAmount;
+
 
     /**
-     * 支付渠道编号
-     */
-    private String paymentWayNo;
-    /**
-     * 支付渠道名称
+     * 同步类型(从Bill copy字段的时候这个不能删啊。。。)
      */
-    private String paymentWayName;
+    private String syncType;
+
 }

+ 25 - 10
sp-server/src/main/java/com/pj/api/pushfee/task/FeeDetailSyncTask.java

@@ -6,6 +6,7 @@ import cn.com.btxc.micro.uni.openapi.keys.ApiKey;
 import cn.com.btxc.micro.uni.openapi.role.ClientRole;
 import cn.com.btxc.micro.uni.openapi.role.builder.ClientRoleBuilder;
 import cn.com.btxc.micro.uni.openapi.rsa.operation.ComposeOperationImpl;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import cn.hutool.http.HttpUtil;
@@ -29,6 +30,9 @@ import com.pj.project.tb_fee_item.TbFeeItem;
 import com.pj.project.tb_fee_item.TbFeeItemService;
 import lombok.extern.slf4j.Slf4j;
 
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -74,16 +78,27 @@ public class FeeDetailSyncTask extends Task {
         TbFeeItem tbFeeItem = tbFeeItemService.getById(tbFeeDetails.getFeeType());
         String subBillNo = StrUtil.isEmpty(tbFeeDetails.getBusinessNo()) ? tbFeeDetails.getBusinessCarNo() : tbFeeDetails.getBusinessCarNo();
         String classifyPath = tbFeeDetails.getFeeType() + "-" + itemTypeId + "-" + itemId;
-        opd.setSyncType(syncType).setQuantity(tbFeeDetails.getNum().toString())
-                .setSubjectName(tbFeeDetails.getCarNo()).setSubBillNo(subBillNo)
-                .setBizTypeNo(itemTypeId).setBizTypeName(tbFeeDetails.getItemTypeName())
-                .setChargeItemName(tbFeeItem.getName()).setChargeItemNo(tbFeeDetails.getFeeType() + "")
-                .setClassifyPath(classifyPath).setPartnersName(partnersName)
+        opd.setSyncType(syncType)
+                .setSubjectNo(tbFeeDetails.getCarNo())
+                .setSubjectName(tbFeeDetails.getCarNo())
+                .setSubBillNo(subBillNo)
+                .setBizTypeNo(itemTypeId)
+                .setBizTypeName(tbFeeDetails.getItemTypeName())
+                .setChargeItemName(tbFeeItem.getName())
+                .setChargeItemNo(tbFeeDetails.getFeeType() + "")
+                .setClassifyPath(classifyPath)
+                .setPartnersName(partnersName)
                 .setPaidSerialNo(tbFeeDetails.getTransactionId())
-                .setPaidAmount(tbFeeDetails.getItemPrice().toString()).setRefundAmount("0").setPayStatus("支付成功")
-                .setPayTime(tbFeeDetails.getPayTime()).setBillTime(tbFeeDetails.getCreateTime())
-                .setPrice(tbFeeDetails.getItemPrice().toString()).setActPrice(tbFeeDetails.getItemPrice())
-                .setBillStatus("已完成").setPaymentWayNo(payType.getCode() + "").setPaymentWayName(payType.getDesc());
+                .setPaidAmount(tbFeeDetails.getItemPrice())
+                .setRefundAmount(BigDecimal.valueOf(0))
+                .setPayStatus("支付成功")
+                .setPayTime(DateUtil.parse(tbFeeDetails.getPayTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
+                .setBillTime(tbFeeDetails.getCreateTime())
+                .setPrice(tbFeeDetails.getItemPrice())
+                .setActPrice(tbFeeDetails.getItemPrice())
+                .setBillStatus("已完成")
+                .setPaymentWayNo(payType.getCode() + "")
+                .setPaymentWayName(payType.getDesc());
         log.info("基础数据:{}", JSONUtil.parseObj(opd));
         opdList.add(opd);
         return opdList;
@@ -98,7 +113,7 @@ public class FeeDetailSyncTask extends Task {
             return;
         }
         HelpService helpService = SpringUtil.getBean(HelpService.class);
-        log.info("开始同步发票信息:{}", detailId);
+        log.info("开始同步订单信息:{}", detailId);
         TbFeeDetailsService tbFeeDetailsService = SpringUtil.getBean(TbFeeDetailsService.class);
         TbFeeDetails tbFeeDetails = tbFeeDetailsService.getById(detailId);
         if (tbFeeDetails == null || tbFeeDetails.getSyncStatus() == 1) {

+ 4 - 0
sp-server/src/main/java/com/pj/api/wx/bo/Attach.java

@@ -21,5 +21,9 @@ public class Attach implements Serializable {
      * 账户充值json
      */
     private String a;
+    /**
+     * 入场管理费
+     */
+    private String i;
 
 }

+ 18 - 0
sp-server/src/main/java/com/pj/api/wx/bo/ManagerBO.java

@@ -0,0 +1,18 @@
+package com.pj.api.wx.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class ManagerBO implements Serializable {
+    private String calculateId;
+    private String name;
+    private String label;
+    private String id;
+    private String carNo;
+    private String carId;
+    private BigDecimal price;
+
+}

+ 12 - 1
sp-server/src/main/java/com/pj/api/wx/service/WxService.java

@@ -249,7 +249,9 @@ public class WxService {
                 //支付完之后要解绑
                 automaticPay.unbindRun(car.getCarNo());
             }
-            tbFeeDetailsService.chargeParkFee(cars, transactionId, outTradeNo, payTime, PayEnum.PayType.WX_PAY);//添加cars的收费明细
+            if (!cars.isEmpty()) {
+                tbFeeDetailsService.chargeParkFee(cars, transactionId, outTradeNo, payTime, PayEnum.PayType.WX_PAY);//添加cars的收费明细
+            }
             String businessId = attach.getB();
             Date finalPayTime = payTime;
             if (StrUtil.isNotEmpty(businessId)) {
@@ -282,7 +284,16 @@ public class WxService {
                 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, transactionId, outTradeNo, payTime, PayEnum.PayType.WX_PAY);//添加cars的收费明细
+            }
+
             tbFeeStatisticsService.addOrUpdateStatistic(payTime);//更新当前日期的日统计
+
+
             String a = attach.getA();
             if (StrUtil.isNotEmpty(a)) {//充值的======>
                 AccountChargeBO chargeBO = JSONUtil.toBean(a, AccountChargeBO.class);

+ 2 - 2
sp-server/src/main/java/com/pj/constants/business/FeeTypeEnum.java

@@ -12,9 +12,9 @@ public enum FeeTypeEnum {
 //    NUCLEIC_FEE(1, "核酸检测"),
 //    DISINFECT_FEE(2, "消杀作业"),
 //    STEVEDORE_FEE(3, "装卸作业"),
-    PARK_FEE(4, "停车业务");
+    PARK_FEE(4, "停车业务"),
 //    WEIGHT_FEE(5, "过磅费"),
-//    MANAGE_FEE(6, "入场管理费"),
+    MANAGE_FEE(6, "入场管理费");
 //    CHARGE_FEE(7, "充电打冷作业");
     private int code;
     private String desc;

+ 21 - 0
sp-server/src/main/java/com/pj/constants/business/ManagerEnum.java

@@ -0,0 +1,21 @@
+package com.pj.constants.business;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Getter
+@AllArgsConstructor
+public enum  ManagerEnum {
+
+    VER_PAY(1, "越南车收管理费"),
+    CHINA_PAY(2, "中国车收管理费");
+
+    private int type;
+    private String desc;
+
+}

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

@@ -4,6 +4,8 @@ import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+
 /**
  * 项目自定义配置
  *
@@ -40,6 +42,18 @@ public class MyConfig {
      * 系统日志路径
      */
     private String sysLogPath;
+    /**
+     * 场地管理费配置
+     */
+    private List<Integer> managerMoney;
+    /**
+     * 入场管理费匹配词
+     */
+    private String managerWord;
+    /**
+     * 收入场管理费需要先做的业务类型
+     */
+    private List<String> managerItemType;
 
 
 }

+ 4 - 3
sp-server/src/main/java/com/pj/project/sync/HelpService.java

@@ -29,7 +29,8 @@ public class HelpService {
     public static final String clientPrivateKeyBase6 = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKKZK7knxqm3ZhH+j2Og4I10XM7es4dx1yqdIKbVa3X1XCyRNWOQodz8JcdSiyRfm8yIyK/rE+d/+UOkw7oqcKvCVVAW1s++aeTDJSz+FpbyCBHzrkyoNwGl0wae5XRgnThRfFKs5f56752X3VZ5vj9mJEps5s5rxaEWb8ufZAqzAgMBAAECgYAmP/QaLXI9kIgxaXnfzQOmIx6GB7uh/DTKsIXy2TfbWunhDhPKJUb+jk5w0kkrOFaVSgQz5hAboG5J7GOi0sMINLb7H2WsOm3uGM/8HPZYsrNFnB8VUiD26LIZ6+HhPXfp/LN+k5eUnUlD6z/dZU1k6hJPOSFC3PyzfBWqaQMqGQJBAMVdQ9Uw+eC94qD1MSSEQZhqpfGE4vO7WrSACLFqyZrHvaIwZTjdUZRF1aMlJyT0afOkfSN/53QQEcejXMUrSBcCQQDS576SXkpdfrN2jmr9BAimi+6AP71GUgXL3O+2yRL2szLoU7GwtMREPBFw+ocnC4UN87NCYveJCzenQEt48JfFAkAqEIa0mYuoatAyng+rSMTyR0i3ASud5wCeF+vCZJAzfP7d4pKwW/tXLsspynFdXvp2A0jomAosooAnnJnZLDBhAkBzXoXm92Fip45wShPIeE5rHJzI1xUoxHGbRS50JKYVAY3VfQL0kM3ULa+0x7bq6uhL64WhyRVziAlXmlouvB2pAkEAuDvsjVhdo3uMGL7Tr+igPhajoWUTjPuAf+Od3SsqMTPFLBpbJM8ziXk39Me9S8wqgGwR3pnlC1Z6Rybgm+uy4g==";
     //服务端公私钥
     public static final String serverPublicKeyBase6 = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCb5yK85EKqwiQU+z1jyjOng6ecssQpEjC6STbCuSWN6KHLkijBxdqrCumXhbIyOVx4lHK9Rg5EjzlQxoaXQTgJdItaGjLC+UTE+NNAnnaFLg0x4jajNpLo473zdZxTYQaT3q/aKnTeXuKHw11PPUe4hmmfxPcdt9yJ0Iqo/XxV3QIDAQAB";
-    public static final String serverPrivateKeyBase64 = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJvnIrzkQqrCJBT7PWPKM6eDp5yyxCkSMLpJNsK5JY3oocuSKMHF2qsK6ZeFsjI5XHiUcr1GDkSPOVDGhpdBOAl0i1oaMsL5RMT400CedoUuDTHiNqM2kujjvfN1nFNhBpPer9oqdN5e4ofDXU89R7iGaZ/E9x233InQiqj9fFXdAgMBAAECgYASoeKgcaVYFCDM0yQIn5thy1XGYAUapX5mXSaqygbneWSQ2FR/qB5Ur9awEb30y682CAPYhB1jazyd30QpopVINvyhaWhgq1b/8KD92FqOg1eXxa7bTuTe8aMuKTB/ZJjEry0d5Mu3i6zYKtTSbnpnag5I3UE5awLDy7utYOoOHwJBAPtvz2ZBhtJvL3lsMgs7kGqrPqqI2LAX8J3oOCtE/6eQjQ0I5fBCybrwHp3baDrYul5KTL3kJvl4iWN/gHDi/nMCQQCeu3gzy0DVtM8M8bzFc/ZA753WRn4Z5axQa6lE7Tski8TUw4Bhbfan9E/C6l6Guo/+2hXPAE/RMcncClqeXXZvAkEAgf6FsO1x4fxABDvvB6Ws/ak5hfuoZCqMaWd1GtHah2yRsEqIbxZoq7CXc6/LDJmeiT9Ku+ZoTBSIm5uA8Vw6hwJALEbs872pmzMxYlH4Lzf2pAxzAbduK3kmhNRTRjfKfJpEUHksUYEkAZujuCI6NejKi/N3i+NxYFA8F5YHyw8VHwJAWoiYSYLSziHgDytoPKFvUp6EKLGDClhACJKc4LuaPNWICMxb5Dp88sY0NDYb4HzCyWIE5G4vbiF/K3kEEwCIVA==";
+
+
     private static final Gson gson = new GsonBuilder().disableHtmlEscaping().create();
 
     /**
@@ -40,7 +41,7 @@ public class HelpService {
      */
     public SyncResultBO req(String path, Object body) {
         String sysId = pushfeeConfig.getSysId();
-        ApiKey clientApiKey = new ApiKey(sysId, pushfeeConfig.getSysName(), serverPublicKeyBase6, clientPublicKeyBase6, clientPrivateKeyBase6);
+        ApiKey clientApiKey = new ApiKey(sysId, pushfeeConfig.getSysName(), pushfeeConfig.getServerPublicKeyBase6(), pushfeeConfig.getClientPublicKeyBase6(), pushfeeConfig.getClientPrivateKeyBase6());
         ComposeOperation operation = new ComposeOperationImpl();
         ClientRole clientHelper = ClientRoleBuilder.builder().operation(operation).build();
         Message message = clientHelper.requestPayloadObject(sysId, body, clientApiKey);
@@ -61,7 +62,7 @@ public class HelpService {
      */
     public <T> T deCrypte(String content, Class<T> clazz) {
         String sysId = pushfeeConfig.getSysId();
-        ApiKey clientApiKey = new ApiKey(sysId, pushfeeConfig.getSysName(), serverPublicKeyBase6, clientPublicKeyBase6, clientPrivateKeyBase6);
+        ApiKey clientApiKey = new ApiKey(sysId, pushfeeConfig.getSysName(), pushfeeConfig.getServerPublicKeyBase6(), pushfeeConfig.getClientPublicKeyBase6(), pushfeeConfig.getClientPrivateKeyBase6());
         ComposeOperation operation = new ComposeOperationImpl();
         ParsedMessage parsedMessage = ServerRoleBuilder.builder().operation(operation).build().processRequestBody(content, clientApiKey);
         return parsedMessage.getBean(clazz);

+ 16 - 2
sp-server/src/main/java/com/pj/project/sync/SyncService.java

@@ -17,6 +17,7 @@ import com.pj.project.sync.response.IOrderPriceRes;
 import com.pj.project.sync.response.item.IExpenseItem;
 import com.pj.utils.sg.AjaxError;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -40,7 +41,9 @@ public class SyncService {
      * @param name
      * @param syncType
      */
+    @Async
     public void syncPartnes(String id, String name, String syncType) {
+        log.info("sync partner:{},{},{}",id,name,syncType);
         PartnerParam dto = new PartnerParam(id, name, syncType);
         List<PartnerParam> list = Collections.singletonList(dto);
         PartnerDTO partnerDTO = new PartnerDTO();
@@ -48,6 +51,12 @@ public class SyncService {
         helpService.req("/data/sync/partners", partnerDTO);
     }
 
+    @Async
+    public void syncPartnes(  PartnerDTO partnerDTO ) {
+        log.info("sync partner:{}",JSONUtil.toJsonStr(partnerDTO));
+        helpService.req("/data/sync/partners", partnerDTO);
+    }
+
     public List<IExpenseItem> syncItemTypeList(String itemTypeName, String itemCode) {
         ItemTypeDTO dto = new ItemTypeDTO();
         dto.setSysId(pushfeeConfig.getSysId()).setBizTypeNo(itemCode).setExpenseName(itemTypeName);
@@ -79,6 +88,12 @@ public class SyncService {
     }
 
     /**
+     * 计费规则
+     * let standard = 30;
+     * let extraPrice=40;
+     * let overStandard = floor(hour/24) * extraPrice;
+     * let total = standard + overStandard;
+     * return total;
      * 订单计算接口
      * @param expenses
      */
@@ -88,8 +103,7 @@ public class SyncService {
         iOrderPriceReq.setSysId(pushfeeConfig.getSysId()).setExpenses(expenses).setOrderNum(1);
         SyncResultBO resultBO = helpService.req("/price/external/order/calc", iOrderPriceReq);
         if (resultBO.getCode() == 200) {
-            IOrderPriceRes res = helpService.deCrypte(resultBO.getData(), IOrderPriceRes.class);
-            return res;
+            return  helpService.deCrypte(resultBO.getData(), IOrderPriceRes.class);
         }
         throw new AjaxError(resultBO.getMsg());
     }

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

@@ -352,7 +352,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         }
         TbItemFac itemFac = list.get(0);
         IOrderItem orderItem = new IOrderItem();
-         String uniqueExpenseId=itemFac.getUniqueExpenseId();
+        String uniqueExpenseId = itemFac.getUniqueExpenseId();
         orderItem.setUniqExpenseId(uniqueExpenseId).setExpenseNum(1);
         List<IFactorItem> factors = new ArrayList<>();
         for (TbItemFac fac : list) {
@@ -381,7 +381,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                 .setUniqueExpenseId(uniqueExpenseId)
                 .setFireResult(orderPriceRes.getFireResult())
                 .setTotalOrderPrice(orderPriceRes.getTotalOrderPrice());
-        log.info("part money resp:{}",JSONUtil.toJsonStr(res));
+        log.info("part money resp:{}", JSONUtil.toJsonStr(res));
         return res;
     }
 
@@ -472,12 +472,13 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         //对应的业务
         List<TbBusiness> businessList = this.findOtherBusinessByCarId(businessCarId);
         TbBusinessCar tbBusinessCar = tbBusinessCarService.getById(businessCarId);
-        //越南车是否需要支付
+        String carNo = tbBusinessCar.getCarNo();
+        //越南车是否需要支付---停车费
         int vietnamCarPay = businessList.stream().anyMatch(tbBusiness -> {
             TbGoods tbGoods = tbGoodsService.getById(tbBusiness.getGoodsId());
             return tbGoods.getVietnamCarPay() == 1;
         }) ? 1 : 0;
-        //中国车是否需要支付
+        //中国车是否需要支付--停车费
         int chinaCarPay = businessList.stream().anyMatch(tbBusiness -> {
             TbGoods tbGoods = tbGoodsService.getById(tbBusiness.getGoodsId());
             return tbGoods.getChinaCarPay() == 1;
@@ -556,8 +557,9 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                         carMap.put("calculateId;", partPriceRes.getCalculateId());
                         carMap.put("hourDesc", partPriceRes.getHourDesc());
                         carMap.put("over24Hour", partPriceRes.getOver24Hour());
-                        partPriceRes.getFireResult().get(0)
-                                .getPriceDetail().forEach(obj->carMap.put(obj.getKey(), obj.getValue()));
+                        List<PriceDetailItem> detailItemList = partPriceRes.getFireResult().get(0)
+                                .getPriceDetail();
+                        detailItemList.forEach(obj -> carMap.put(obj.getKey(), obj.getValue()));
                     }
                     //todo 计算停车费
                 }
@@ -575,46 +577,70 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         if (!items.isEmpty()) {
             //未支付的
             List<IOrderItem> expenses = new ArrayList<>();
-            items.stream().filter(item -> item.getPayStatus() == 0)
-                    .forEach(item -> {
-                        String num = item.getNum();
-                        String itemCode = item.getItemCode();
-                        IOrderItem iOrderItem = new IOrderItem();
-                        iOrderItem.setExpenseNum(Integer.parseInt(num)).setUniqExpenseId(itemCode);
-                        expenses.add(iOrderItem);
+            items = items.stream().filter(item -> item.getPayStatus() == 0).collect(Collectors.toList());
+            //如果不需要支付,则过滤掉入场管理费
+//            boolean needPayManagerMoney = needPayManagerMoney(carNo, items);
+//            if (needPayManagerMoney) {
+//                //查询出对应的费项
+//                TbItem tbItem = tbItemService.findByName(SystemObject.config.getManagerWord());
+//                if (tbItem != null) {
+//                    List<IOrderItem> managerList = new ArrayList<>();
+//                    IOrderItem iOrderItem = new IOrderItem();
+//                    iOrderItem.setExpenseNum(1).setUniqExpenseId(tbItem.getItemCode());
+//                    managerList.add(iOrderItem);
+//                    IOrderPriceRes managerPriceRes = syncService.orderPriceCal(managerList);
+//                    Map<String, Object> managerMap = new HashMap<>();
+//                    managerMap.put("id", tbItem.getId());
+//                    managerMap.put("name", tbItem.getItemName());
+//                    managerMap.put("carNo", carNo);
+//                    managerMap.put("carId", businessCarId);
+//                    managerMap.put("label", tbItem.getItemName() + "(入场管理费)");
+//                    managerMap.put("price", managerPriceRes.getTotalOrderPrice());
+//                    managerMap.put("calculateId", managerPriceRes.getCalculateId());
+//                    result.put("manager", managerMap);
+//                }
+//            }
+            items.forEach(item -> {
+                String num = item.getNum();
+                String itemCode = item.getItemCode();
+                IOrderItem iOrderItem = new IOrderItem();
+                iOrderItem.setExpenseNum(Integer.parseInt(num)).setUniqExpenseId(itemCode);
+                expenses.add(iOrderItem);
+            });
+            if (!expenses.isEmpty()){
+                IOrderPriceRes orderPriceRes = syncService.orderPriceCal(expenses);
+                BigDecimal totalPrice = orderPriceRes.getTotalOrderPrice();
+                carCalculateIds.add(orderPriceRes.getCalculateId());
+                for (TbBusinessItem item : items) {
+                    BigDecimal itemPrice = item.getItemPrice().multiply(new BigDecimal(item.getNum()));
+                    itemsPrice = itemsPrice.add(itemPrice);
+                    Map<String, Object> itemMap = new HashMap<>();
+                    itemMap.put("id", item.getId());
+                    itemMap.put("name", item.getItemName() + "(" + item.getItemTypeName() + ")");
+                    itemMap.put("price", itemPrice);
+                    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())));
                     });
-            IOrderPriceRes orderPriceRes = syncService.orderPriceCal(expenses);
-            BigDecimal totalPrice = orderPriceRes.getTotalOrderPrice();
-            carCalculateIds.add(orderPriceRes.getCalculateId());
-            for (TbBusinessItem item : items) {
-                BigDecimal itemPrice = item.getItemPrice().multiply(new BigDecimal(item.getNum()));
-                itemsPrice = itemsPrice.add(itemPrice);
-                Map<String, Object> itemMap = new HashMap<>();
-                itemMap.put("id", item.getId());
-                itemMap.put("name", item.getItemName() + "(" + item.getItemTypeName() + ")");
-                itemMap.put("price", itemPrice);
-                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())));
-                });
-                itemList.add(itemMap);
-                TbBusinessSort tbBusinessSort = tbBusinessSortService.findByItemTypeId(item.getItemTypeId());
-                if (tbBusinessSort != null) {
-                    TbSortGroup sortGroup = tbSortGroupService.getById(tbBusinessSort.getGroupId());
-                    if (sortGroup.getCompletePay().equals(1) && sortGroup.getStatus().equals(1)) {
-                        List<TbBusinessSort> sorts = tbBusinessSortService.findByGroupId(sortGroup.getId());
-                        for (TbBusinessSort sort : sorts) {
-                            long count = items.stream().filter(tbBusinessItem -> StrUtil.equals(sort.getTypeId(), tbBusinessItem.getItemTypeId()))
-                                    .count();
-                            if (count == 0) {
-                                result.put("showPay", false);
+                    itemList.add(itemMap);
+                    TbBusinessSort tbBusinessSort = tbBusinessSortService.findByItemTypeId(item.getItemTypeId());
+                    if (tbBusinessSort != null) {
+                        TbSortGroup sortGroup = tbSortGroupService.getById(tbBusinessSort.getGroupId());
+                        if (sortGroup.getCompletePay().equals(1) && sortGroup.getStatus().equals(1)) {
+                            List<TbBusinessSort> sorts = tbBusinessSortService.findByGroupId(sortGroup.getId());
+                            for (TbBusinessSort sort : sorts) {
+                                long count = items.stream().filter(tbBusinessItem -> StrUtil.equals(sort.getTypeId(), tbBusinessItem.getItemTypeId()))
+                                        .count();
+                                if (count == 0) {
+                                    result.put("showPay", false);
+                                }
                             }
                         }
                     }
                 }
+                result.put("itemsPrice", totalPrice);
             }
-            result.put("itemsPrice", totalPrice);
         }
         result.put("itemList", itemList);
         result.put("calculateId", String.join(",", carCalculateIds));
@@ -623,6 +649,30 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         return result;
     }
 
+    /**
+     * 是否需要交入场管理费
+     *
+     * @param carNo
+     * @return
+     */
+    public boolean needPayManagerMoney(String carNo, List<TbBusinessItem> items) {
+        List<String> needItemTypeList = SystemObject.config.getManagerItemType();
+        //是否有相关业务,,,没有的话直接不用交入场管理费
+        boolean before = items.stream().anyMatch(item -> needItemTypeList.contains(item.getItemTypeName()));
+        if (!before) {
+            return false;
+        }
+        String carPrefix = StrUtil.sub(carNo, 0, 1);
+        boolean isvietnamCar = !CAR_LIST.contains(carPrefix);
+        List<Integer> managerList = SystemObject.config.getManagerMoney();
+        //越南车是否需要支付
+        boolean verNeePay = managerList.contains(ManagerEnum.VER_PAY.getType());
+        //中国车是否需要支付
+        boolean chinaNeePay = managerList.contains(ManagerEnum.CHINA_PAY.getType());
+        //是否需要支付入场管理费
+        return isvietnamCar && verNeePay || !isvietnamCar && chinaNeePay;
+
+    }
 
     public List<TbBusiness> findOtherBusinessByCarId(String businessCarId) {
         return tbBusinessMapper.findOtherBusinessByCarId(businessCarId);

+ 7 - 0
sp-server/src/main/java/com/pj/project/tb_costomer/TbCostomerController.java

@@ -5,6 +5,7 @@ import cn.dev33.satoken.annotation.SaMode;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.pj.constants.UserTypeEnum;
+import com.pj.current.config.SystemObject;
 import com.pj.current.satoken.StpUserUtil;
 import com.pj.utils.sg.AjaxJson;
 import com.pj.utils.so.SoMap;
@@ -202,4 +203,10 @@ public class TbCostomerController {
         tbCostomerService.addAdminMenu(perStr);
         return AjaxJson.getSuccess();
     }
+
+    @RequestMapping("init-push")
+    public AjaxJson pushData(){
+        tbCostomerService.initPush();
+        return AjaxJson.getSuccess();
+    }
 }

+ 32 - 1
sp-server/src/main/java/com/pj/project/tb_costomer/TbCostomerService.java

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pj.constants.business.SyncTypeEnum;
 import com.pj.project.sync.SyncService;
+import com.pj.project.sync.dto.PartnerDTO;
+import com.pj.project.sync.dto.PartnerParam;
 import com.pj.project.tb_init_permission.TbInitPermission;
 import com.pj.project.tb_init_permission.TbInitPermissionService;
 import com.pj.project4sp.SP;
@@ -15,6 +17,7 @@ import com.pj.project4sp.admin.SpAdminService;
 import com.pj.project4sp.role.SpRole;
 import com.pj.project4sp.role.SpRoleMapper;
 import com.pj.project4sp.role4permission.SpRolePermissionMapper;
+import com.pj.utils.sg.AjaxError;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -22,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -68,13 +72,17 @@ public class TbCostomerService extends ServiceImpl<TbCostomerMapper, TbCostomer>
         spRoleMapper.add(spRole);
         long roleId = SP.publicMapper.getPrimarykey();
         List<String> codeList = new ArrayList<>();
-        for (String type : StrUtil.splitTrim(t.getType(), ",")) {
+        List<String> typeList = StrUtil.splitTrim(t.getType(), ",");
+        for (String type : typeList) {
             SoMap perSoMap = SoMap.getRequestSoMap();
             perSoMap.put("type", type);
             List<TbInitPermission> permissions = tbInitPermissionService.getList(perSoMap);
             codeList.addAll(permissions.stream().map(TbInitPermission::getCode).distinct().collect(Collectors.toList()));
         }
         spRolePermissionMapper.saveRolePer(roleId, codeList);
+        if (!typeList.contains("0")) {
+            syncService.syncPartnes(t.getId(), t.getName(), SyncTypeEnum.INSERT.getCode());
+        }
         return 1;
     }
 
@@ -97,6 +105,10 @@ public class TbCostomerService extends ServiceImpl<TbCostomerMapper, TbCostomer>
      * 删
      */
     int delete(String id) {
+        TbCostomer tbCostomer = this.getById(id);
+        if (tbCostomer == null) {
+            throw new AjaxError("信息不存在");
+        }
         this.removeById(id);
         SoMap soMap = SoMap.getRequestSoMap();
         soMap.put("customerId", id);
@@ -107,6 +119,9 @@ public class TbCostomerService extends ServiceImpl<TbCostomerMapper, TbCostomer>
         spRoleMapper.removeByCustomerId(id);
         spRolePermissionMapper.removeByRoleIds(roles.stream().map(SpRole::getId).collect(Collectors.toList()));
         spAdminMapper.removeByCustomerId(id);
+        if (!StrUtil.contains(tbCostomer.getType(), "0")) {
+            syncService.syncPartnes(id, tbCostomer.getName(), SyncTypeEnum.DELETE.getCode());
+        }
         return 1;
     }
 
@@ -262,4 +277,20 @@ public class TbCostomerService extends ServiceImpl<TbCostomerMapper, TbCostomer>
             tbCostomerMapper.addAdminPermission(perCode);
         });
     }
+
+    public void initPush() {
+        QueryWrapper<TbCostomer> ew = new QueryWrapper<>();
+        ew.lambda().ne(TbCostomer::getType, "0");
+        List<TbCostomer> list = this.list(ew);
+        PartnerDTO partnerDTO = new PartnerDTO();
+        List<PartnerParam> partnerParams = list.stream().map(tbCostomer -> {
+            PartnerParam partnerParam = new PartnerParam();
+            partnerParam.setPartnersId(tbCostomer.getId())
+                    .setPartnersName(tbCostomer.getName())
+                    .setSyncType(SyncTypeEnum.INSERT.getCode());
+            return partnerParam;
+        }).collect(Collectors.toList());
+        partnerDTO.setPartnersList(partnerParams);
+        syncService.syncPartnes(partnerDTO);
+    }
 }

+ 8 - 3
sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsMapper.xml

@@ -75,12 +75,14 @@
         <where>
             <if test=' this.has("id") '>and id = #{id}</if>
             <if test=' this.has("businessId") '>and business_id = #{businessId}</if>
-            <if test=' this.has("transactionId") '>and transaction_id = #{transactionId}</if>
+
             <if test=' this.has("businessNo") '>and (business_no like concat('%',#{businessNo},'%')
-                                                    or business_car_no like concat('%',#{businessNo},'%'))</if>
+                or business_car_no like concat('%',#{businessNo},'%'))
+            </if>
             <if test=' this.has("carNo") '>and car_no like concat('%',#{carNo},'%')</if>
             <if test=' this.has("transactionId") '>and transaction_id like concat('%',#{transactionId},'%')</if>
-            <if test=' this.has("pickCustomerName") '>and pick_customer_name like concat('%',#{pickCustomerName},'%')</if>
+            <if test=' this.has("pickCustomerName") '>and pick_customer_name like concat('%',#{pickCustomerName},'%')
+            </if>
             <if test=' this.has("feeType") '>and fee_type = #{feeType}</if>
             <if test=' this.has("itemTypeId") '>and item_type_id = #{itemTypeId}</if>
             <if test=' this.has("itemTypeName") '>and item_type_name = #{itemTypeName}</if>
@@ -142,10 +144,13 @@
             <if test=' this.has("itemTypeId") '>and item_type_id = #{itemTypeId}</if>
             <if test=' this.has("itemTypeName") '>and item_type_name = #{itemTypeName}</if>
             <if test=' this.has("itemId") '>and item_id = #{itemId}</if>
+            <if test=' this.has("transactionId") '>and transaction_id = #{transactionId}</if>
             <if test=' this.has("itemName") '>and item_name = #{itemName}</if>
             <if test=' this.has("payDay") '>and pay_day = #{payDay}</if>
             <if test=' this.has("payType") '>and pay_type = #{payType}</if>
             <if test=' this.has("createTime") '>and create_time = #{createTime}</if>
+            <if test=' this.has("pickCustomerName") '>and pick_customer_name like concat('%',#{pickCustomerName},'%')
+            </if>
             <if test=' this.has("beginTime") and this.has("endTime") '>
                 and pay_day >= #{beginTime}
                 and pay_day &lt;= #{endTime}

+ 47 - 43
sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pj.api.pushfee.task.FeeDetailSyncTask;
+import com.pj.api.wx.bo.ManagerBO;
 import com.pj.api.wx.bo.PriceBO;
 import com.pj.constants.business.*;
 import com.pj.current.config.MyConfig;
@@ -176,49 +177,49 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
      */
     public List<TbFeeDetails> chargeParkFee(List<PriceBO> cars, String transactionId, String outTradeNo, Date now, PayEnum.PayType payType) {
         List<TbFeeDetails> details = new ArrayList<>();
-        String uniqExpenseId = cars.get(0).getUniqExpenseId();
-        TbItem tbItem = tbItemService.findByCode(uniqExpenseId);
-        BigDecimal taxRate=BigDecimal.valueOf(tbItem.getTaxRate()).divide(BigDecimal.valueOf(100),2,BigDecimal.ROUND_UP);
-        for (PriceBO bo1 : cars) {
-            //本次支付的停车费金额
-            BigDecimal payPrice = bo1.getP();
-            if (payPrice.compareTo(BigDecimal.valueOf(0)) == 0) {
-                continue;
-            }
-            TbBusinessCar car = tbBusinessCarService.getById(bo1.getId());
-            String bindIdStr = "";
-            if (payType.getCode() == PayEnum.PayType.PER_PAY.getCode()) {
-                bindIdStr = tbDeductionBindService.getBindId(car.getCarNo());
-            }
-            //24小时内的停车费
-            BigDecimal in24Price = bo1.getStandard();
-            TbFeeDetails in24Detail = new TbFeeDetails();
-            in24Detail.setItemName(bo1.getCarDesc());
-
-            //24小时内的停车费
-            in24Detail.setNum(1).setItemTypeName(bo1.getHourDesc()).setCalculateId(bo1.getCalculateId())
-                    .setUnitPrice(in24Price).setItemPrice(in24Price).setModule(payType.getDesc()).setBusinessId(bindIdStr);
-            setFee(taxRate, in24Detail, car, transactionId, outTradeNo, now);
-            String type = StrUtil.isEmpty(in24Detail.getId()) ? SyncTypeEnum.INSERT.getCode() : SyncTypeEnum.UPDATE.getCode();
-            saveOrUpdate(in24Detail);
-            details.add(in24Detail);
-            taskService.addTask(new FeeDetailSyncTask(RandomUtil.randomNumbers(10), 1000, in24Detail.getId(), type, payType));
-            //24小时外的停车费
-            BigDecimal out24Price = payPrice.subtract(in24Price);
-            if (out24Price.compareTo(BigDecimal.valueOf(0)) > 0) {
-                TbFeeDetails out24Details = new TbFeeDetails();
-                out24Details.setItemName(bo1.getCarDesc());
-                BigDecimal unitPrice = bo1.getExtraPrice();
-                int num = out24Price.divide(unitPrice, BigDecimal.ROUND_UP, 0).intValue();
-                out24Details.setNum(num).setItemTypeName(PartFeeEnum.OUT_24_HOURS.getDesc())
-                        .setUnitPrice(unitPrice).setItemPrice(out24Price).setModule(payType.getDesc()).setBusinessId(bindIdStr);
-                setFee(taxRate, out24Details, car, transactionId, outTradeNo, now);
-                type = StrUtil.isEmpty(out24Details.getId()) ? SyncTypeEnum.INSERT.getCode() : SyncTypeEnum.UPDATE.getCode();
-                saveOrUpdate(out24Details);
-                taskService.addTask(new FeeDetailSyncTask(RandomUtil.randomNumbers(10), 1000, out24Details.getId(), type, payType));
-                details.add(out24Details);
-            }
-        }
+       if (!cars.isEmpty()){
+           String uniqExpenseId = cars.get(0).getUniqExpenseId();
+           TbItem tbItem = tbItemService.findByCode(uniqExpenseId);
+           BigDecimal taxRate=BigDecimal.valueOf(tbItem.getTaxRate()).divide(BigDecimal.valueOf(100),2,BigDecimal.ROUND_UP);
+           for (PriceBO bo1 : cars) {
+               //本次支付的停车费金额
+               BigDecimal payPrice = bo1.getP();
+               if (payPrice.compareTo(BigDecimal.valueOf(0)) == 0) {
+                   continue;
+               }
+               TbBusinessCar car = tbBusinessCarService.getById(bo1.getId());
+               String bindIdStr = "";
+               if (payType.getCode() == PayEnum.PayType.PER_PAY.getCode()) {
+                   bindIdStr = tbDeductionBindService.getBindId(car.getCarNo());
+               }
+               //24小时内的停车费
+               BigDecimal in24Price = bo1.getStandard();
+               TbFeeDetails in24Detail = new TbFeeDetails();
+               in24Detail.setItemName(bo1.getCarDesc());
+               //24小时内的停车费
+               in24Detail.setNum(1).setItemTypeName(PartFeeEnum.IN_24_HOURS.getDesc()).setCalculateId(bo1.getCalculateId())
+                       .setUnitPrice(in24Price).setItemPrice(in24Price).setModule(payType.getDesc()).setBusinessId(bindIdStr);
+               setFee(taxRate, in24Detail, car, transactionId, outTradeNo, now);
+               String type = StrUtil.isEmpty(in24Detail.getId()) ? SyncTypeEnum.INSERT.getCode() : SyncTypeEnum.UPDATE.getCode();
+               saveOrUpdate(in24Detail);
+               details.add(in24Detail);
+               taskService.addTask(new FeeDetailSyncTask(RandomUtil.randomNumbers(10), 1000, in24Detail.getId(), type, payType));
+               //24小时外的停车费
+               BigDecimal out24Price = payPrice.subtract(in24Price);
+               if (out24Price.compareTo(BigDecimal.valueOf(0)) > 0) {
+                   TbFeeDetails out24Details = new TbFeeDetails();
+                   BigDecimal unitPrice = bo1.getExtraPrice();
+                   int num = out24Price.divide(unitPrice, BigDecimal.ROUND_UP, 0).intValue();
+                   out24Details.setNum(num).setItemTypeName(PartFeeEnum.OUT_24_HOURS.getDesc())
+                           .setUnitPrice(unitPrice).setItemPrice(out24Price).setModule(payType.getDesc()).setBusinessId(bindIdStr);
+                   setFee(taxRate, out24Details, car, transactionId, outTradeNo, now);
+                   type = StrUtil.isEmpty(out24Details.getId()) ? SyncTypeEnum.INSERT.getCode() : SyncTypeEnum.UPDATE.getCode();
+                   saveOrUpdate(out24Details);
+                   taskService.addTask(new FeeDetailSyncTask(RandomUtil.randomNumbers(10), 1000, out24Details.getId(), type, payType));
+                   details.add(out24Details);
+               }
+           }
+       }
         return details;
     }
 
@@ -733,4 +734,7 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
     }
 
 
+    public void chargeManagerFee(ManagerBO managerBO, String transactionId, String outTradeNo, Date payTime, PayEnum.PayType wxPay) {
+
+    }
 }

+ 4 - 4
sp-server/src/main/java/com/pj/project/tb_fee_statistics/TbFeeStatisticsMapper.xml

@@ -110,7 +110,7 @@
     </select>
 
     <select id="getMonth" resultType="com.pj.project.tb_fee_statistics.TbFeeStatistics">
-        select month, fee_type,fee_type_name, sum(num) as num, sum(tax_money) as tax_money, sum(taxes) as taxes, sum(no_tax_money) as
+        select `month`, fee_type, sum(num) as num, sum(tax_money) as tax_money, sum(taxes) as taxes, sum(no_tax_money) as
         no_tax_money, any_value(tax_rate) as tax_rate
         from tb_fee_statistics
         <where>
@@ -121,19 +121,19 @@
                 and month &lt;= #{endMonth}
             </if>
         </where>
-        group by month, fee_type
+        group by `month`, fee_type
         order by month desc
     </select>
 
     <select id="getYear" resultType="com.pj.project.tb_fee_statistics.TbFeeStatistics">
-        select year, fee_type,fee_type_name, sum(num) as num, sum(tax_money) as tax_money, sum(taxes) as taxes, sum(no_tax_money) as
+        select `year`, fee_type, sum(num) as num, sum(tax_money) as tax_money, sum(taxes) as taxes, sum(no_tax_money) as
         no_tax_money, any_value(tax_rate) as tax_rate
         from tb_fee_statistics
         <where>
             <if test=' this.has("feeType") '>and fee_type = #{feeType}</if>
             <if test=' this.has("year") '>and year = #{year}</if>
         </where>
-        group by year, fee_type
+        group by `year`, fee_type
         order by year desc
     </select>
 

+ 1 - 0
sp-server/src/main/java/com/pj/project/tb_goods/TbGoods.java

@@ -94,6 +94,7 @@ public class TbGoods extends Model<TbGoods> implements Serializable {
     private Integer payStep = 2;
     private Integer chinaCarPay = 1;
     private Integer vietnamCarPay = 1;
+
     private Integer chinaCarLeave = 1;
     private Integer vietnamCarLeave = 1;
     private Integer needOwner = 1;

+ 21 - 6
sp-server/src/main/java/com/pj/project/tb_item/TbItemService.java

@@ -88,8 +88,9 @@ public class TbItemService extends ServiceImpl<TbItemMapper, TbItem> implements
 
     public TbItem findByCode(String code) {
         QueryWrapper<TbItem> ew = new QueryWrapper<>();
-        ew.lambda().eq(TbItem::getItemCode, code);
-        return getOne(ew);
+        ew.eq("item_code", code);
+        List<TbItem> list = list(ew);
+        return list.isEmpty() ? null : list.get(0);
     }
 
     /**
@@ -134,7 +135,7 @@ public class TbItemService extends ServiceImpl<TbItemMapper, TbItem> implements
     private TbItem handlerItem(TbItemType tbItemType, IExpenseItem item, Date now) {
         String name = item.getExpenseName();
         String code = item.getUniqueExpenseId();
-        TbItem tbItem = this.findByCode(code);
+        TbItem tbItem = this.findByCode(code.trim());
         if (tbItem == null) {
             tbItem = new TbItem();
         }
@@ -159,10 +160,11 @@ public class TbItemService extends ServiceImpl<TbItemMapper, TbItem> implements
         RelationTypeItem relationTypeItem = relationTypeItemService.findByTypeIdAndItemId(typeId, tbItem.getId());
         if (relationTypeItem == null) {
             relationTypeItem = new RelationTypeItem();
-            relationTypeItem.setTypeId(typeId).setItemId(tbItem.getId())
-                    .setInc(1).setNeedRemark(0).setMustRemark(0);
-            relationTypeItemService.save(relationTypeItem);
+            relationTypeItem.setInc(1).setNeedRemark(0).setMustRemark(0);
         }
+        relationTypeItem.setTypeId(typeId).setItemId(tbItem.getId())
+                .setTypeName(tbItemType.getName());
+        relationTypeItemService.saveOrUpdate(relationTypeItem);
         return tbItem;
     }
 
@@ -244,4 +246,17 @@ public class TbItemService extends ServiceImpl<TbItemMapper, TbItem> implements
         List<TbItem> list = list(ew);
         return list.isEmpty() ? null : list.get(0);
     }
+
+    /**
+     * 仅仅入场管理费可用
+     *
+     * @param itemName
+     * @return
+     */
+    public TbItem findByName(String itemName) {
+        QueryWrapper<TbItem> ew = new QueryWrapper<>();
+        ew.lambda().eq(TbItem::getItemName, itemName);
+        List<TbItem> list = list(ew);
+        return list.isEmpty() ? null : list.get(0);
+    }
 }

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

@@ -6,7 +6,7 @@ spring:
     # 数据源配置
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        url: jdbc:mysql://47.101.143.145:3306/pco0815?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://47.101.143.145:3306/pco?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
         username: root
         password: 1qaz@WSX
         # 是否打开sql监控台  (生产环境请务必关闭此选项)
@@ -49,6 +49,9 @@ spring:
         web-domain: http://127.0.0.1:8080
         login-out-minute: 10
         sys-log-path: D:\project\pco\sp-server\logs\pco\debug
+        manager-money: "1" #场地管理费 1--->越南车交 2 标识中国车交
+        manager-word: "越南车"   #费项
+        manager-item-type: "干杂货人工装卸,汽车吊"
 part-config:
     base-price: 30 #基础费用
     extra-price: 10 #过夜额外收费