Просмотр исходного кода

Merge branch 'dev' into feature/business

# Conflicts:
#	app/utils/request.js
qzyReal 3 лет назад
Родитель
Сommit
1ed01237dc
23 измененных файлов с 182 добавлено и 77 удалено
  1. 1 1
      app/pages/declare/add.vue
  2. 1 1
      app/pages/disinfect/addDisinfect.vue
  3. 2 2
      sp-admin/sa-view/tb-business/tb-business-add.html
  4. 1 1
      sp-admin/sa-view/tb-business/tb-business-edit.html
  5. 1 1
      sp-admin/sa-view/tb-business/tb-business-info.html
  6. 1 1
      sp-admin/sa-view/tb-business/tb-business-list.html
  7. 1 1
      sp-admin/sa-view/tb-declare/tb-declare-add.html
  8. 1 1
      sp-admin/sa-view/tb-declare/tb-declare-info.html
  9. 1 1
      sp-admin/sa-view/tb-declare/tb-declare-list.html
  10. 2 2
      sp-admin/sa-view/tb-disinfect/tb-disinfect-add.html
  11. 1 1
      sp-admin/sa-view/tb-disinfect/tb-disinfect-info.html
  12. 1 1
      sp-admin/sa-view/tb-disinfect/tb-disinfect-list.html
  13. 26 2
      sp-admin/sa-view/tb-fee-statistics/tb-fee-details-list.html
  14. 2 2
      sp-server/src/main/java/com/pj/api/wx/service/WxService.java
  15. 23 12
      sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarService.java
  16. 1 1
      sp-server/src/main/java/com/pj/project/tb_disinfect/ExportDisnfectDTO.java
  17. 1 0
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetails.java
  18. 71 30
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java
  19. 43 15
      sp-server/src/main/java/com/pj/project/tb_fee_statistics/TbFeeStatisticsService.java
  20. 1 1
      sp-server/src/main/resources/application-dev.yml
  21. BIN
      sp-server/src/main/resources/static/day-fee-new.xlsx
  22. BIN
      sp-server/src/main/resources/static/disinfect.xlsx
  23. BIN
      sp-server/src/main/resources/static/month-fee.xlsx

+ 1 - 1
app/pages/declare/add.vue

@@ -41,7 +41,7 @@
 				<view class="l"><text style="color: red;">*</text>毛重:</view>
 				<view class="r">
 					<u-input type="number" placeholder="输入毛重" @input="handler()" v-model="form.grossWeight">
-						<text slot="suffix"></text>
+						<text slot="suffix">kg</text>
 					</u-input>
 				</view>
 			</view>

+ 1 - 1
app/pages/disinfect/addDisinfect.vue

@@ -49,7 +49,7 @@
 				<view class="l"><text style="color: red;">*</text>重量:</view>
 				<view class="r">
 					<u-input type="number" placeholder="输入毛重" @input="handler()" v-model="form.grossWeight">
-						<text slot="suffix"></text>
+						<text slot="suffix">kg</text>
 					</u-input>
 				</view>
 			</view>

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

@@ -81,7 +81,7 @@
 												</el-option>
 											</el-select>
 										</div>
-										<sa-item type="num" name="载重()" placeholder="请输入车辆载重" v-model="m.netWeight" br>
+										<sa-item type="num" name="载重(kg)" placeholder="请输入车辆载重" v-model="m.netWeight" br>
 										</sa-item>
 										</sa-item>
 										<div class="c-item">
@@ -287,7 +287,7 @@
 						</el-table-column>
 						<el-table-column prop="carNo" label="越南车牌">
 						</el-table-column>
-						<el-table-column prop="grossWeight" label="毛重()">
+						<el-table-column prop="grossWeight" label="毛重(kg)">
 						</el-table-column>
 						<el-table-column prop="createTime" width="140" label="申报时间">
 						</el-table-column>

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

@@ -77,7 +77,7 @@
 												</el-option>
 											</el-select>
 										</div>
-										<sa-item type="num" name="载重()" placeholder="请输入车辆载重" v-model="m.netWeight" br>
+										<sa-item type="num" name="载重(kg)" placeholder="请输入车辆载重" v-model="m.netWeight" br>
 										</sa-item>
 
 										<div class="c-item">

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

@@ -42,7 +42,7 @@
 												<sa-info name="境外车牌号" br>{{m.cardNo}}</sa-info>
 												<sa-info name="境外车规格" br>{{m.cardSize}}(米)</sa-info>
 												<sa-info name="货物" br>{{m.goodsName}}</sa-info>
-												<sa-info name="载重" br>{{m.netWeight}}()</sa-info>
+												<sa-info name="载重" br>{{m.netWeight}}(kg)</sa-info>
 												<sa-info type="enum" name="支付状态" :value="m.payStatus"
 													:jv="{1: '未支付', 2: '已支付未确认', 3: '已支付已确认'}" br></sa-info>
 												<sa-info type="img" name="核酸报告" :value="m.nucleicReport" br></sa-info>

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

@@ -58,7 +58,7 @@
 					<sa-td name="客户名称" width="150" prop="customerName"></sa-td>
 					<sa-td name="业务单号" prop="no" width="160"></sa-td>
 					<sa-td name="境外车牌号" width="130" prop="cardNo"></sa-td>
-					<sa-td name="载重()" prop="netWeight"></sa-td>
+					<sa-td name="载重(kg)" prop="netWeight"></sa-td>
 					<sa-td name="确认" prop="adminConfirmInput" type="enum" :jv="{1: '已确认', 0: '未确认'}"></sa-td>
 					<sa-td name="总用费(元)" prop="totalMoney"></sa-td>
 					<sa-td name="已支付(元)" prop="payMoney" width="140"></sa-td>

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

@@ -27,7 +27,7 @@
 					<div class="c-title" v-else>数据修改</div>
 					<el-form v-if="m">
 						<sa-item type="text" name="产品学名" v-model="m.goodsName" br></sa-item>
-						<sa-item type="num" name="毛重()" v-model="m.grossWeight" br></sa-item>
+						<sa-item type="num" name="毛重(kg)" v-model="m.grossWeight" br></sa-item>
 						<sa-item type="num" name="数量(件)" v-model="m.num" br></sa-item>
 <!--						<sa-item type="text" name="生产日期" v-model="m.productionDate" br></sa-item>-->
 						<div class="c-item br">

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

@@ -26,7 +26,7 @@
 						<el-row>
 							<el-col span="12">
 								<sa-info name="产品学名" br>{{m.goodsName}}</sa-info>
-								<sa-info name="毛重()" br>{{m.grossWeight}}</sa-info>
+								<sa-info name="毛重(kg)" br>{{m.grossWeight}}</sa-info>
 								<sa-info name="数量(件)" br>{{m.num}}</sa-info>
 								<sa-info name="生产日期" br>{{m.productionDate}}</sa-info>
 								<sa-info name="保质期(天)" br>{{m.expirationDate}}</sa-info>

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

@@ -35,7 +35,7 @@
 				<el-table class="data-table" ref="data-table" :data="dataList" >
 					<sa-td type="selection"></sa-td>
 					<sa-td name="产品学名" prop="goodsName" ></sa-td>
-					<sa-td name="毛重()" prop="grossWeight" type="num"  ></sa-td>
+					<sa-td name="毛重(kg)" prop="grossWeight" type="num"  ></sa-td>
 					<sa-td name="数量(件)" prop="num" type="num" ></sa-td>
 <!--					<sa-td name="生产日期" prop="productionDate" ></sa-td>-->
 <!--					<sa-td name="保质期(天)" prop="expirationDate" type="num" ></sa-td>-->

+ 2 - 2
sp-admin/sa-view/tb-disinfect/tb-disinfect-add.html

@@ -31,8 +31,8 @@
 						<sa-item type="text" name="品名" v-model="m.goodsName" br></sa-item>
 						<sa-item type="text" name="产地" v-model="m.origin" br></sa-item>
 						<sa-item type="num" name="数量" v-model="m.num" br></sa-item>
-						<sa-item type="num" name="重量()" v-model="m.grossWeight" br></sa-item>
-						<sa-item type="num" name="规格(米)" v-model="m.unit" br></sa-item>
+						<sa-item type="num" name="重量(kg)" v-model="m.grossWeight" br></sa-item>
+						<sa-item type="text" name="规格" v-model="m.unit" br></sa-item>
 						<sa-item type="text" name="包装" v-model="m.pack" br></sa-item>
 						<sa-item type="text" name="标记" v-model="m.flag" br></sa-item>
 						<sa-item type="text" name="号码" v-model="m.phone" br></sa-item>

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

@@ -30,7 +30,7 @@
 								<sa-info name="品名" br>{{m.goodsName}}</sa-info>
 								<sa-info name="产地" br>{{m.origin}}</sa-info>
 								<sa-info type="num" name="数量" :value="m.num" br></sa-info>
-								<sa-info name="重量()" br>{{m.grossWeight}}</sa-info>
+								<sa-info name="重量(kg)" br>{{m.grossWeight}}</sa-info>
 								<sa-info name="规格(米)" br>{{m.unit}}</sa-info>
 								<sa-info name="包装" br>{{m.pack}}</sa-info>
 								<sa-info name="标记" br>{{m.flag}}</sa-info>

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

@@ -38,7 +38,7 @@
 					<sa-td name="品名" prop="goodsName" ></sa-td>
 <!--					<sa-td name="产地" prop="origin" ></sa-td>-->
 					<sa-td name="数量" prop="num" type="num"></sa-td>
-					<sa-td name="重量()" prop="grossWeight" ></sa-td>
+					<sa-td name="重量(kg)" prop="grossWeight" ></sa-td>
 <!--					<sa-td name="规格" prop="unit" ></sa-td>-->
 <!--					<sa-td name="包装" prop="pack" ></sa-td>-->
 <!--					<sa-td name="标记" prop="flag" ></sa-td>-->

+ 26 - 2
sp-admin/sa-view/tb-fee-statistics/tb-fee-details-list.html

@@ -14,6 +14,23 @@
 		<script src="../../static/kj/layer/layer.js"></script>
 		<script src="../../static/sa.js"></script>
 	</head>
+	<style>
+		.keyButton.el-button{
+			width: 100%;
+			overflow:hidden;
+			text-align: left;
+			text-overflow:ellipsis;
+			white-space:nowrap;
+			border: 0 !important;
+			background: transparent;
+			padding: 0 !important;
+		}
+		.keyButton.el-button:hover {
+			border: 0 !important;
+			background: transparent;
+			padding: 0 !important;
+		}
+	</style>
 	<body>
 		<div class="vue-box" style="display: none;" :style="'display: block;'">
 			<div class="c-panel">
@@ -73,7 +90,7 @@
 					<sa-td name="货品种类" prop="" ></sa-td>
 					<sa-td name="车牌号" prop="carNo" width="90px" ></sa-td>
 					<sa-td name="车型" prop="itemName" ></sa-td><!--业务项-->
-					<sa-td name="重量()" prop="weight" ></sa-td>
+					<sa-td name="重量(kg)" prop="weight" ></sa-td>
 					<sa-td name="数量" prop="num" ></sa-td>
 					<sa-td name="单价" prop="unitPrice" ></sa-td>
 					<sa-td name="总价" prop="itemPrice" ></sa-td>
@@ -96,7 +113,14 @@
 							<span v-else>{{s.row.businessCarNo}}</span>
 						</template>
 					</el-table-column>
-					<sa-td name="订单编号" prop="transactionId" width="220px" ></sa-td>
+<!--					<sa-td name="订单编号" prop="transactionId" width="220px" ></sa-td>-->
+					<el-table-column label="订单编号" width="220px">
+						<template slot-scope="s">
+							<el-tooltip :content="s.row.transactionId"placement="bottom"effect="light">
+								<el-button class="keyButton">{{ s.row.transactionId }}</el-button>
+							</el-tooltip>
+						</template>
+					</el-table-column>
 					<sa-td name="作业编号" prop="businessItemNo" width="145px" ></sa-td>
 					<sa-td name="企业名称" prop="pickCustomerName" ></sa-td>
 					<sa-td name="发票号" prop="" ></sa-td>

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

@@ -209,11 +209,11 @@ public class WxService {
                     tbBusinessService.updateById(business);
                 }
             }
-            tbFeeDetailsService.chargeParkFee(cars, transactionId);//添加cars的收费明细
+            tbFeeDetailsService.chargeParkFee(cars, transactionId, outTradeNo);//添加cars的收费明细
             String businessId = attach.getB();
             if (StrUtil.isNotEmpty(businessId)) {
                 List<TbBusinessItem> items = tbBusinessItemService.findByBusinessId(businessId);
-                tbFeeStatisticsService.countBusinessFee(items, transactionId);//业务费日统计
+                tbFeeStatisticsService.countBusinessFee(items, transactionId, outTradeNo);//业务费日统计
                 items.forEach(tbBusinessItem -> tbBusinessItem.setPayStatus(1).setPayTime(now));
                 tbBusinessItemService.updateBatchById(items);
                 TbBusiness tbBusiness = tbBusinessService.getById(businessId);

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

@@ -29,6 +29,7 @@ import com.pj.project.tb_business_item.TbBusinessItem;
 import com.pj.project.tb_business_item.TbBusinessItemService;
 import com.pj.project.tb_car.TbCar;
 import com.pj.project.tb_car.TbCarService;
+import com.pj.project.tb_car_no_color.TbCarNoColor;
 import com.pj.project.tb_car_no_color.TbCarNoColorService;
 import com.pj.project.tb_fee_details.TbFeeDetails;
 import com.pj.project.tb_fee_details.TbFeeDetailsService;
@@ -70,19 +71,28 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
     @Resource
     private UploadConfig uploadConfig;
 
+    @Resource
+    private TbCarNoColorService tbCarNoColorService;
 
 
     /**
      * 查集合 - 根据条件(参数为空时代表忽略指定条件)
      */
     List<TbBusinessCar> getList(SoMap so) {
-        List<TbBusinessCar> list=tbBusinessCarMapper.getList(so);
+        List<TbBusinessCar> list = tbBusinessCarMapper.getList(so);
+        List<TbCarNoColor> carNoColors = tbCarNoColorService.getFreeColor();
+       String colorStr= carNoColors.stream().map(TbCarNoColor::getCarNoColor).collect(Collectors.joining(""));
         for (TbBusinessCar tbBusinessCar : list) {
+            String color=tbBusinessCar.getColor();
             TbCar tbCar = tbCarService.findByCardNo(tbBusinessCar.getCarNo());
             if (tbCar != null && !TbCar.CarTypeEnum.BUSINESS_CAR.getType().equals(tbCar.getCarType())) {
                 tbBusinessCar.setPayType("免费");
                 continue;
             }
+            if (StrUtil.isNotEmpty(color)&&colorStr.contains(color.substring(0,1))){
+                tbBusinessCar.setPayType("免费");
+                continue;
+            }
             final List<String> CAR_LIST = StrUtil.splitTrim("浙,粤,京,津,冀,晋,蒙,辽,黑,沪,吉,苏,皖,赣,鲁,豫,鄂,湘,桂,琼,渝,川,贵,云,藏, 陕, 甘, 青, 宁", ",");
             Date inTime = tbBusinessCar.getRealInTime();
             Date outTime = tbBusinessCar.getRealOutTime();
@@ -288,10 +298,10 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
             List<TbFeeDetails> feeDetailsLIst = tbFeeDetailsService.getByBusinessIdAndCarNo(businessId, oldCarNo);
             feeDetailsLIst.forEach(fee -> fee.setCarNo(carNo));
             tbFeeDetailsService.updateBatchById(feeDetailsLIst);
-        } else{
+        } else {
             List<TbFeeDetails> feeDetailsList = tbFeeDetailsService.getByBusinessCarIdAndCarNoAndFeeType(t.getId(), oldCarNo, TbFeeDetails.fee.PARK_FEE.getCode());
             for (TbFeeDetails feeDetail : feeDetailsList) {
-                if(feeDetail != null){
+                if (feeDetail != null) {
                     feeDetail.setCarNo(carNo);
                     tbFeeDetailsService.updateById(feeDetail);
                 }
@@ -332,27 +342,28 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
     }
 
     public List<TbBusinessCar> findByCarNo(String carNo) {
-        QueryWrapper<TbBusinessCar>ew=new QueryWrapper<>();
-        ew.eq("car_no",carNo);
+        QueryWrapper<TbBusinessCar> ew = new QueryWrapper<>();
+        ew.eq("car_no", carNo);
         return list(ew);
     }
 
     public AjaxJson deleteRecord(String id) {
-      TbFeeDetails tbFeeDetails=  tbFeeDetailsService.findByBusinessCarId(id,TbFeeDetails.fee.PARK_FEE.getCode());
-      if (tbFeeDetails!=null){
-          return AjaxJson.getError("该车有付款记录,不能删除");
-      }
-      this.removeById(id);
+        TbFeeDetails tbFeeDetails = tbFeeDetailsService.findByBusinessCarId(id, TbFeeDetails.fee.PARK_FEE.getCode());
+        if (tbFeeDetails != null) {
+            return AjaxJson.getError("该车有付款记录,不能删除");
+        }
+        this.removeById(id);
         return AjaxJson.getSuccess();
     }
 
-    public List<TbBusinessCar> findInCarByDay(String day){
+    public List<TbBusinessCar> findInCarByDay(String day) {
         QueryWrapper<TbBusinessCar> qw = new QueryWrapper();
         qw.like("real_in_time", day);
         List<TbBusinessCar> list = this.list(qw);
         return list;
     }
-    public List<TbBusinessCar> findOutCarByDay(String day){
+
+    public List<TbBusinessCar> findOutCarByDay(String day) {
         QueryWrapper<TbBusinessCar> qw = new QueryWrapper();
         qw.like("real_out_time", day);
         List<TbBusinessCar> list = this.list(qw);

+ 1 - 1
sp-server/src/main/java/com/pj/project/tb_disinfect/ExportDisnfectDTO.java

@@ -48,7 +48,7 @@ public class ExportDisnfectDTO {
     /**
      * 规格
      */
-    private Double unit;
+    private String unit;
 
     /**
      * 包装

+ 1 - 0
sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetails.java

@@ -173,6 +173,7 @@ public class TbFeeDetails implements Serializable {
     private String businessCarId;
 
     private String businessCarNo;
+    private String outTradeNo;
 
 
 

+ 71 - 30
sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java

@@ -131,46 +131,84 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
         return list(qw);
     }
 
+    public TbFeeDetails findBuCarIdAndCarNoAndFeeTypeAndItemTypeName(String businessCarId, String carNo, Integer feeType, String itemTypeName){
+        QueryWrapper<TbFeeDetails> qw = new QueryWrapper<>();
+        qw.eq("business_car_id", businessCarId);
+        qw.eq("car_no", carNo);
+        qw.eq("fee_type", feeType);
+        qw.eq("item_type_name", itemTypeName);
+        return getOne(qw);
+    }
 
-    public void chargeParkFee(List<PriceBO> cars, String transactionId) {
-        Date now = new Date();
-        String nowStr = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
-        String toDay = DateUtil.format(now, "yyyy-MM-dd");
+
+    public void chargeParkFee(List<PriceBO> cars, String transactionId, String outTradeNo) {
         for (PriceBO bo1 : cars) {
             if(bo1.getP().compareTo(BigDecimal.valueOf(0)) == 0){
                 continue;
             }
             TbBusinessCar car = tbBusinessCarService.getById(bo1.getId());
             TbBusiness business = tbBusinessService.getById(car.getBusinessId());
-            String carNo = car.getCarNo();
-            TbFeeDetails parkFee = null;
-//            if(business != null){
-//                parkFee = getByBusinessIdAndCarNoAndFeeType(car.getBusinessId(), carNo, TbFeeDetails.fee.PARK_FEE.getCode());
-//            } else {
-//                parkFee = getByBusinessCarIdAndCarNoAndFeeType(car.getId(), carNo, TbFeeDetails.fee.PARK_FEE.getCode());
-//            }
-            if(parkFee == null){
-                parkFee = new TbFeeDetails();
-                parkFee.setTaxRate(partConfig.getTaxRate());
+            BigDecimal paidMoney  = car.getMoney();
+
+            List<TbFeeDetails> oldFeeList = getByBusinessCarIdAndCarNoAndFeeType(car.getId(), car.getCarNo(), TbFeeDetails.fee.PARK_FEE.getCode());
+            TbFeeDetails nightParkFee = new TbFeeDetails();
+            TbFeeDetails dayParkFee = new TbFeeDetails();
+            String transactionIdStr = "";
+            String outTradeNoStr = "";
+            for (TbFeeDetails oldFee : oldFeeList) {
+                if(!StrUtil.isEmpty(oldFee.getTransactionId())){
+                    transactionIdStr = oldFee.getTransactionId();
+                    outTradeNoStr = oldFee.getOutTradeNo();
+                }
+                if(StrUtil.equals(oldFee.getItemTypeName(), "白天停车")){
+                    dayParkFee = oldFee;
+                }
+                if(StrUtil.equals(oldFee.getItemTypeName(), "夜间停车")){
+                    nightParkFee = oldFee;
+                }
+            }
+            transactionIdStr = transactionIdStr.equals("") ? transactionId : transactionIdStr + "," + transactionId;
+            outTradeNoStr = outTradeNoStr.equals("") ? outTradeNo : outTradeNoStr + "," + outTradeNo;
+            BigDecimal baseNightPrice = partConfig.getBasePrice().add(partConfig.getExtraPrice());
+            BigDecimal[] qr = paidMoney.divideAndRemainder(baseNightPrice);//商和余数的数组,商为夜间停车次数,余数为白天停车费用。
+            BigDecimal nightFeeNum = qr[0];
+            if(nightFeeNum.compareTo(BigDecimal.valueOf(0)) > 0){
+                nightParkFee.setNum(nightFeeNum.intValue()).setItemTypeName("夜间停车")
+                .setUnitPrice(baseNightPrice).setItemPrice(baseNightPrice.multiply(nightFeeNum));
+                setFee(nightParkFee, car, business, transactionIdStr, outTradeNoStr);
+                saveOrUpdate(nightParkFee);
+                if(qr[1].compareTo(BigDecimal.valueOf(0)) == 0 && dayParkFee.getId() != null){
+                    delete(Long.valueOf(dayParkFee.getId()));
+                }
             }
-            BigDecimal taxPrice = bo1.getP().divide(BigDecimal.valueOf(1).add(parkFee.getTaxRate()),2, BigDecimal.ROUND_HALF_UP).multiply(parkFee.getTaxRate());
-            BigDecimal noTaxPrice = bo1.getP().subtract(taxPrice);
-            parkFee.setBusinessId(car.getBusinessId()).setBusinessCarId(car.getId())
-                    .setCarNo(car.getCarNo())
-                    .setItemPrice(bo1.getP()).setUnitPrice(bo1.getP()).setNoTaxPrice(noTaxPrice).setTaxPrice(taxPrice)
-                    .setFeeType(TbFeeDetails.fee.PARK_FEE.getCode()).setItemTypeName("停车业务")
-                    .setPayDay(toDay).setPayType(3).setCreateTime(now)
-                    .setNum(1).setIsSettle(1).setPayMode(1).setPayTime(nowStr)
-                    .setTransactionId(transactionId)
-                    .setBusinessCarNo(car.getNo());
-            if (business!=null){
-                parkFee.setWeight(business.getNetWeight()).setBusinessNo(business.getNo());
+            if(qr[1].compareTo(BigDecimal.valueOf(0)) > 0){
+                dayParkFee.setNum(1).setItemTypeName("白天停车").setUnitPrice(qr[1]).setItemPrice(qr[1]);
+                setFee(dayParkFee, car, business, transactionIdStr, outTradeNoStr);
+                saveOrUpdate(dayParkFee);
             }
-            saveOrUpdate(parkFee);
+
         }
     }
 
-
+    private void setFee(TbFeeDetails parkFee, TbBusinessCar car, TbBusiness business, String transactionId, String outTradeNo){
+        Date now = new Date();
+        String nowStr = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
+        String toDay = DateUtil.format(now, "yyyy-MM-dd");
+        parkFee.setTaxRate(partConfig.getTaxRate());
+        BigDecimal taxPrice = parkFee.getItemPrice().divide(BigDecimal.valueOf(1).add(parkFee.getTaxRate()),2, BigDecimal.ROUND_HALF_UP).multiply(parkFee.getTaxRate());
+        BigDecimal noTaxPrice = parkFee.getItemPrice().subtract(taxPrice);
+        parkFee.setBusinessId(car.getBusinessId()).setBusinessCarId(car.getId())
+                .setCarNo(car.getCarNo())
+                .setNoTaxPrice(noTaxPrice).setTaxPrice(taxPrice)
+                .setFeeType(TbFeeDetails.fee.PARK_FEE.getCode())
+                .setPayDay(toDay).setPayType(3).setCreateTime(now)
+                .setIsSettle(1).setPayMode(1).setPayTime(nowStr)
+                .setTransactionId(transactionId).setOutTradeNo(outTradeNo)
+                .setBusinessCarNo(car.getNo());
+        if (business!=null){
+            parkFee.setWeight(business.getNetWeight()).setBusinessNo(business.getNo());
+        }
+    }
 
     public String export(SoMap so) throws Exception{
         Date now = new Date();
@@ -196,6 +234,7 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
 
         BigDecimal toDayFee = new BigDecimal(0);
         BigDecimal allDayFee = new BigDecimal(0);
+        BigDecimal allParkFee = new BigDecimal(0);
 	    List<ExportFeeDetailDTO> exportList = new ArrayList<>();
         List<TbFeeDetails> list = this.getList(so);
         Integer index = 1;
@@ -217,15 +256,17 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
                 detailDTO.setBusinessNo(feeDetails.getBusinessCarNo());
             }
             exportList.add(detailDTO);
-            if(checkTimeRange(beginTime, endTime, feeDetails.getCreateTime()) && feeDetails.getFeeType()==TbFeeDetails.fee.PARK_FEE.getCode()){
+            if(checkTimeRange(nowStr, nowStr, feeDetails.getCreateTime()) && feeDetails.getFeeType()==TbFeeDetails.fee.PARK_FEE.getCode()){
                 toDayFee = toDayFee.add(feeDetails.getItemPrice());
             }
             if(feeDetails.getFeeType()==TbFeeDetails.fee.PARK_FEE.getCode()){
-                allDayFee = allDayFee.add(feeDetails.getItemPrice());
+                allParkFee = allParkFee.add(feeDetails.getItemPrice());
             }
+            allDayFee = allDayFee.add(feeDetails.getItemPrice());
         }
 
         head.put("toDayFee", toDayFee.toString());
+        head.put("allParkFee", allParkFee.toString());
         head.put("allDayFee", allDayFee.toString());
 
         String separator = File.separator;

+ 43 - 15
sp-server/src/main/java/com/pj/project/tb_fee_statistics/TbFeeStatisticsService.java

@@ -150,15 +150,14 @@ public class TbFeeStatisticsService extends ServiceImpl<TbFeeStatisticsMapper, T
         }
         BigDecimal totalPrice = BigDecimal.valueOf(0);
         Integer totalNum = parkFee.getNum();
+
         for (PriceBO bo1 : cars) {
             BigDecimal price = bo1.getP();
             if(price.compareTo(BigDecimal.valueOf(0)) != 0){
                 totalPrice = totalPrice.add(price);
-//                TbBusinessCar car = tbBusinessCarService.getById(bo1.getId());
-//                if(car.getMoney().compareTo(BigDecimal.valueOf(0)) == 0){
-//                    totalNum++;
-//                }
-                totalNum++;
+                TbBusinessCar car = tbBusinessCarService.getById(bo1.getId());
+                Integer addNum = calcuAddNum(car.getMoney(), price);
+                totalNum += addNum;
             }
         }
         if(totalPrice.compareTo(BigDecimal.valueOf(0)) == 0){
@@ -177,8 +176,24 @@ public class TbFeeStatisticsService extends ServiceImpl<TbFeeStatisticsMapper, T
         this.saveOrUpdate(parkFee);
     }
 
+    public Integer calcuAddNum(BigDecimal money, BigDecimal p){
+        BigDecimal baseNightPrice = partConfig.getBasePrice().add(partConfig.getExtraPrice());
+        BigDecimal[] qrOld = money.divideAndRemainder(baseNightPrice);
+        Integer oldNightNum = qrOld[0].intValue();
+        if(qrOld[1].compareTo(BigDecimal.valueOf(0)) > 0){
+            oldNightNum++;
+        }
+        BigDecimal newMoney = money.add(p);
+        BigDecimal[] qrNew = newMoney.divideAndRemainder(baseNightPrice);
+        Integer newNightNum = qrNew[0].intValue();
+        if(qrNew[1].compareTo(BigDecimal.valueOf(0)) > 0){
+            newNightNum++;
+        }
+        return newNightNum-oldNightNum;
+    }
+
     //@Async
-    public void countBusinessFee(List<TbBusinessItem> items, String transactionId) {
+    public void countBusinessFee(List<TbBusinessItem> items, String transactionId, String outTradeNo) {
         Date now = new Date();
         String nowStr = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
         String toDay = DateUtil.format(now, "yyyy-MM-dd");
@@ -250,7 +265,7 @@ public class TbFeeStatisticsService extends ServiceImpl<TbFeeStatisticsMapper, T
                     .setBusinessItemId(item.getId() + "")
                     .setPickCustomerName(item.getPickCustomerName())
                     .setIsSettle(1).setPayMode(1).setPayTime(nowStr).setWeight(business.getNetWeight())
-                    .setTransactionId(transactionId)
+                    .setTransactionId(transactionId).setOutTradeNo(outTradeNo)
                     .setNum(Integer.valueOf(item.getNum()));
             tbFeeDetailsService.saveOrUpdate(businessFeeDetail);
         }
@@ -296,20 +311,33 @@ public class TbFeeStatisticsService extends ServiceImpl<TbFeeStatisticsMapper, T
             String day = statistics.getDay();
             String key = StrUtil.sub(day, 8, 10);
             ExportMonthDataDTO data = dataMap.get(key);
+            if(data.getDayMoney() == null){
+                data.setDayMoney(BigDecimal.valueOf(0));
+            }
+            data.setDayMoney(data.getDayMoney().add(statistics.getTaxMoney()));
+            totalMoney = totalMoney.add(statistics.getTaxMoney());
+        }
+        List<ExportMonthDataDTO> exportList = new ArrayList<>(dataMap.values()) ;
+        for (ExportMonthDataDTO dto : exportList) {
+            String day = dto.getDay();
             List<TbBusinessCar> inCarList = tbBusinessCarService.findInCarByDay(day);
             List<TbBusinessCar> outCarList = tbBusinessCarService.findOutCarByDay(day);
             Integer inNum = inCarList != null ? inCarList.size() : 0;
             Integer outNum = outCarList != null ? outCarList.size() : 0;
             Integer addNum = inNum - outNum;
-            data.setDay(day).setInNum(inNum).setOutNum(outNum).setAddNum(addNum).setDayMoney(statistics.getTaxMoney());
-            //dataMap.put(key, data);
-            totalIn += inNum;
-            totalOut += outNum;
-            totalAdd += addNum;
-            totalMoney = totalMoney.add(statistics.getTaxMoney());
+            if(inNum != 0){
+                dto.setInNum(inNum);
+                totalIn += inNum;
+            }
+            if(outNum != 0){
+                dto.setOutNum(outNum);
+                totalOut += outNum;
+            }
+            if(addNum != 0){
+                dto.setAddNum(addNum);
+                totalAdd += addNum;
+            }
         }
-        List<ExportMonthDataDTO> exportList = new ArrayList<>(dataMap.values()) ;
-
         Map<String, String> head = new HashMap<>();
         Integer exportMonth = Integer.valueOf(StrUtil.sub(monthStr, 5,7));
         String today = DateUtil.today();

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

@@ -57,7 +57,7 @@ part-config:
     test-env: true
 car:
     max-length: 20
-    max-weight: 50
+    max-weight: 990000
 wx-config:
     title: 场站管理系统
     flush-second: 12000 #token刷新时间 秒

BIN
sp-server/src/main/resources/static/day-fee-new.xlsx


BIN
sp-server/src/main/resources/static/disinfect.xlsx


BIN
sp-server/src/main/resources/static/month-fee.xlsx