qzy 1 mese fa
parent
commit
65c9dc5806
35 ha cambiato i file con 323 aggiunte e 148 eliminazioni
  1. 1 1
      sp-admin/login.html
  2. 1 1
      sp-admin/sa-frame/sa-code.js
  3. 4 4
      sp-admin/sa-view/tb-account/balance-print.html
  4. 13 3
      sp-admin/sa-view/tb-account/tb-account-balance-list.html
  5. 1 1
      sp-admin/sa-view/tb-fee-statistics/tb-fee-details-info.html
  6. 1 1
      sp-admin/sa-view/tb-fee-statistics/tb-fee-statistics-list.html
  7. 1 0
      sp-admin/sa-view/tb-invoice-info/tb-invoice-info-list.html
  8. 1 1
      sp-admin/sa-view/tb-invoice-order/tb-invoice-order-add.html
  9. 3 2
      sp-admin/sa-view/tb-invoice-order/tb-invoice-order-list.html
  10. 4 0
      sp-admin/static/kj/upload-util.js
  11. 14 9
      sp-server/src/main/java/com/pj/api/jh/service/JhService.java
  12. 9 5
      sp-server/src/main/java/com/pj/api/jh/task/CheckPayRetry.java
  13. 3 5
      sp-server/src/main/java/com/pj/api/jh/task/CheckPayStatusTask.java
  14. 1 1
      sp-server/src/main/java/com/pj/api/open/service/OpenService.java
  15. 7 4
      sp-server/src/main/java/com/pj/api/open/web/OpenController.java
  16. 8 4
      sp-server/src/main/java/com/pj/api/wx/service/WxService.java
  17. 6 0
      sp-server/src/main/java/com/pj/current/SaPlusStartup.java
  18. 1 1
      sp-server/src/main/java/com/pj/current/satoken/StpUserUtil.java
  19. 23 22
      sp-server/src/main/java/com/pj/project/tb_account/AutomaticPay.java
  20. 5 3
      sp-server/src/main/java/com/pj/project/tb_business/TbBusinessService.java
  21. 3 0
      sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemMapper.java
  22. 3 0
      sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemMapper.xml
  23. 16 10
      sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemService.java
  24. 2 0
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsMapper.java
  25. 14 0
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsMapper.xml
  26. 48 2
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java
  27. 43 0
      sp-server/src/main/java/com/pj/project/tb_fee_details/task/HandlerCarWeightTask.java
  28. 11 4
      sp-server/src/main/java/com/pj/project/tb_invoice_info/TbInvoiceInfoService.java
  29. 2 1
      sp-server/src/main/java/com/pj/project/tb_invoice_order/TbInvoiceOrder.java
  30. 67 57
      sp-server/src/main/java/com/pj/project/tb_invoice_order/TbInvoiceOrderService.java
  31. 2 1
      sp-server/src/main/java/com/pj/project/tb_order/TbOrderService.java
  32. 1 1
      sp-server/src/main/java/com/pj/project4sp/uploadfile/UploadConfig.java
  33. 1 1
      sp-server/src/main/resources/application-dev.yml
  34. 1 1
      sp-server/src/main/resources/application.yml
  35. 2 2
      sp-server/src/main/resources/logback.xml

+ 1 - 1
sp-admin/login.html

@@ -151,7 +151,7 @@
 			// 你所有要改的代码全在这里   ↓↓↓↓↓
 
 			// 所有参考属性
-			var page_title = '场站管理系统 后台登录'; // 页面标题
+			var page_title = '跨境物流中心B区 后台登录'; // 页面标题
 			var key = ''; // 默认的账号
 			var password = ''; // 默认的password
 			var codeKey = '';

+ 1 - 1
sp-admin/sa-frame/sa-code.js

@@ -20,7 +20,7 @@ sa.ajax('/AccAdmin/fristOpenAdmin', function (res) {
     // }
 
     // 配置
-    sa_admin.title = "场站管理后台";
+    sa_admin.title = "跨境物流中心B区";
     sa_admin.logo = '';    // 设置logo图标地址
     sa_admin.icon = "";    // 设置logo图标地址
 

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

@@ -104,10 +104,10 @@
 								<td>{{cel.customerName}}</td>
 								<td>{{cel.beginMoney}}</td>
 								<td>{{cel.chargeMoney}}</td>
-								<td>{{cel.deuctionMoney}}</td>
-								<td>{{cel.balanceRefundMoney}}</td>
-								<td>{{cel.errorRefundMoney}}</td>
-								<td>{{cel.endMoney}}</td>
+								<td>{{cel.deuctionMoney.toFixed(2)}}</td>
+								<td>{{cel.balanceRefundMoney.toFixed(2)}}</td>
+								<td>{{cel.errorRefundMoney.toFixed(2)}}</td>
+								<td>{{cel.endMoney.toFixed(2)}}</td>
 							</tr>
 							<tr style="height: 40px;padding: 0 0.5px;" v-if="index==dataList.length-1">
 								<td></td>

+ 13 - 3
sp-admin/sa-view/tb-account/tb-account-balance-list.html

@@ -37,12 +37,22 @@
 				<el-table class="data-table" ref="data-table" :data="dataList">
 					<sa-td type="index" name="序号"></sa-td>
 					<sa-td name="企业名称" prop="customerName" width="260"></sa-td>
-					<sa-td name="期初余额" prop="beginMoney" not="0"></sa-td>
+					<sa-td name="期初余额" prop="beginMoney" not="0">
+						<template slot-scope="s">
+							<div>{{s.row.beginMoney.toFixed(2)}}</div>
+						</template>
+					</sa-td>
 					<sa-td name="本期充值" prop="chargeMoney" not="0"></sa-td>
-					<sa-td name="本期扣除" prop="deuctionMoney" not="0"></sa-td>
+					<sa-td name="本期扣除" prop="deuctionMoney" not="0">
+						<template slot-scope="s"> <div>{{s.row.deuctionMoney.toFixed(2)}}</div> </template>
+					</sa-td>
 					<sa-td name="本期余额退款" prop="balanceRefundMoney" not="0"></sa-td>
 					<sa-td name="本期异常退款" prop="errorRefundMoney" not="0"></sa-td>
-					<sa-td name="期末余额" prop="endMoney" not="0"></sa-td>
+					<sa-td name="期末余额" prop="endMoney" not="0">
+						<template slot-scope="s">
+							<div>{{s.row.endMoney.toFixed(2)}}</div>
+						</template>
+					</sa-td>
 				</el-table>
 				<!-- ------------- 分页 ------------- -->
 				<sa-item type="page" :curr.sync="p.pageNo" :size.sync="p.pageSize" :total="dataCount" @change="f5()">

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

@@ -63,7 +63,7 @@
 			</div>
 			<!-- ------- 底部按钮 ------- -->
 			<div class="s-foot">
-				<el-button type="success" @click="confirmFn()" v-if="!m.judgeTime">确定</el-button>
+				<el-button type="success" @click="confirmFn()">确定</el-button>
 				<el-button @click="sa.closeCurrIframe()">关闭</el-button>
 			</div>
 		</div>

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

@@ -85,7 +85,7 @@
 					<sa-td name="统计稽查员" prop="jiChaPerson"></sa-td>
 					<sa-td name="部门负责人" prop="judgeBy"></sa-td>
 					<!-- <sa-td name="审核时间" prop="judgeTime" width="140"></sa-td> -->
-					<el-table-column label="操作" fixed="right" width="120px" v-if="sa.isAuth('tb-fee-statistics-judge')">
+					<el-table-column label="操作" fixed="right" width="120px" v-if="sa.isAuth('tb-diaodu-confirm')">
 						<template slot-scope="s">
 							<el-button class="c-btn" type="primary" icon="el-icon-edit" @click="judgeFn(s.row)">审核
 							</el-button>

+ 1 - 0
sp-admin/sa-view/tb-invoice-info/tb-invoice-info-list.html

@@ -53,6 +53,7 @@
 					<sa-td name="开票状态" prop="status" type="enum" :jv="{0: '未开票', 1: '已开票',2:'申请中',3:'红冲',6:'作废'}">
 					</sa-td>
 					<sa-td name="开票种类" prop="isElec" type="enum" :jv="{0: '纸质普票', 1: '电子普票', 2:'纸质专票'}"></sa-td>
+					<sa-td name="申请时间" prop="createTime" width="180"></sa-td>
 					<sa-td name="开票时间" prop="invoiceTime"></sa-td>
 					<sa-td name="发票号" prop="invoiceNo" width="150">
 						<template slot-scope="s">

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

@@ -29,7 +29,7 @@
 					<el-form v-if="m">
 						<sa-item v-if="idShow === 1" type="text" name="交易单号" v-model="m.transactionId" placeholder="请填写账单中的交易单号" br></sa-item>
 <!--						<sa-item type="text" name="账单金额" v-model="m.billMoney" br></sa-item>-->
-						<sa-item type="img" name="账单截图" v-model="m.billImage" br></sa-item>
+						<sa-item type="img-list" name="账单截图" v-model="m.billImage" br></sa-item>
 						<sa-item name="" class="s-ok" br>
 							<el-button type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
 						</sa-item>

+ 3 - 2
sp-admin/sa-view/tb-invoice-order/tb-invoice-order-list.html

@@ -121,6 +121,7 @@
 					</el-table-column>
 					<sa-td name="账单截图" prop="billImage" type="img"></sa-td>
 					<sa-td name="开票状态" prop="status" type="enum" :jv="{0: '待申请', 1: '已申请', 2: '已开票'}"></sa-td>
+					<sa-td name="创建时间" prop="createTime" width="100px"></sa-td>
 					<sa-td name="开票时间" prop="invoiceTime" width="100px"></sa-td>
 					<sa-td name="开票信息" prop="infoNo" width="130"></sa-td>
 					<el-table-column label="操作" fixed="right" width="140px">
@@ -139,7 +140,7 @@
 			<el-dialog title="申请开票" :visible.sync="applyDate.visible" width="38%">
 				<sa-item name="发票总额" v-model="applyDate.form.totalMoney" type="num" :disabled="true"></sa-item>
 				<sa-item name="开票种类" v-model="applyDate.form.isElec" type="enum"
-					:jv="{1: '电子普票', 0: '纸质普票', 2:'纸质专票'}"></sa-item>
+					:jv="{1: '电子普票', 0: '纸质普票', 2:'电子专票'}"></sa-item>
 				<div class="c-item">
 					<label class="c-label">开票主体:</label>
 					<el-select :disabled="selectDisabled" v-model="applyDate.form.entityId" placeholder="请选择" filterable @change="changeEntity">
@@ -252,7 +253,7 @@
 							this.applyDate.form.entityId=entityArry[0].id;
 							this.selectDisabled=true;
 						}
-						this.applyDate.form.totalMoney = totalMoney;
+						this.applyDate.form.totalMoney = totalMoney.toFixed(2);
 						this.applyDate.visible = true;
 						this.applyDate.form.ids = ids.join(',');
 						

+ 4 - 0
sp-admin/static/kj/upload-util.js

@@ -79,6 +79,10 @@ sa.uploadListFn = function (url, successCB) {
     fileInput.onchange = function (evt) {
         // 开始上传
         var files = evt.target.files;
+		if(files.length>10){
+			sa.error('一次只能上传10张');
+			return;
+		}
         for (var i = 0; i < files.length; i++) {
             let ii = i;
             startUpload(evt.target.files[ii], url, successCB);

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

@@ -1,6 +1,7 @@
 package com.pj.api.jh.service;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
@@ -9,6 +10,7 @@ import cn.hutool.json.JSONUtil;
 import cn.hutool.log.StaticLog;
 import com.pj.api.jh.bo.JhNotifyBO;
 import com.pj.api.jh.bo.JhNotifySignBO;
+import com.pj.api.jh.task.CheckPayStatusTask;
 import com.pj.api.jh.utils.JhHttpUtils;
 import com.pj.api.jh.utils.MerchantApiUtil;
 import com.pj.api.wx.bo.Attach;
@@ -80,6 +82,8 @@ public class JhService {
     private TbBusinessItemService tbBusinessItemService;
     @Resource
     private TbCarWeightService tbCarWeightService;
+    @Resource
+    private TaskService taskService;
 
 
     public Map<String, ?> initPay(HttpServletRequest request) throws Exception {
@@ -91,28 +95,29 @@ public class JhService {
             throw new BusinessException("金额不正确");
         }
         String openid = request.getParameter("openid");
+        StaticLog.info("start:{}",openid);
         String businessCarId = request.getParameter("businessCarId");
         List<TbBusiness> businesses = tbbusinessservice.findOtherBusinessByCarId(businessCarId);
         long current = System.currentTimeMillis() / 1000;
         if (businesses.isEmpty()) {
             TbBusinessCar db = tbBusinessCarService.getById(businessCarId);
-            if (db != null && db.getPay() == 1 && current - db.getPayTime().getTime() / 1000 < 1800) {
+            if (db != null && db.getPay() == 1 && db.getPayTime() != null && current - db.getPayTime().getTime() / 1000 < 1800) {
                 throw new BusinessException("订单信息有变化,请重新扫码");
             }
         } else {
             List<String> busienssIdList = businesses.stream().map(TbBusiness::getId).collect(Collectors.toList());
             List<TbBusinessItem> items = tbBusinessItemService.findByBusinessIdList(busienssIdList);
             if (!items.isEmpty()) {
-                Optional<TbBusinessItem> optionalTbBusinessItem = items.stream().filter(item -> item.getPayStatus()==1&&(current - item.getPayTime().getTime() / 1000 < 120)).findAny();
+                Optional<TbBusinessItem> optionalTbBusinessItem = items.stream().filter(item -> item.getPayStatus() == 1 && (current - item.getPayTime().getTime() / 1000 < 120)).findAny();
                 if (optionalTbBusinessItem.isPresent()) {
                     throw new BusinessException("订单信息有变化,请重新扫码");
                 }
             }
         }
         List<TbCarWeight> weights = tbCarWeightService.findByBusinessCarId(businessCarId);
-        if (!weights.isEmpty()){
+        if (!weights.isEmpty()) {
             Optional<TbCarWeight> optional = weights.stream()
-                    .filter(item -> item.getPayStatus()==1&&(current - item.getPayTime().getTime() / 1000 < 120)).findAny();
+                    .filter(item -> item.getPayStatus() == 1 && (current - item.getPayTime().getTime() / 1000 < 120)).findAny();
             if (optional.isPresent()) {
                 throw new BusinessException("订单信息有变化,请重新扫码");
             }
@@ -160,6 +165,7 @@ public class JhService {
         params.put("sign", sign);
         String jsonParam = JSONUtil.toJsonStr(params);
         String initPayUrl = jhConfig.getServerUrl() + "/uaps-web-gateway/cnpPay/initPay";
+        StaticLog.info("调用聚合支付:{},{}", initPayUrl,jsonParam);
         String result = jhHttpUtils.postJson(initPayUrl, jsonParam);
         StaticLog.info("调用聚合支付返回:{}", result);
         JSONObject jsonResult = JSONUtil.parseObj(result);
@@ -177,12 +183,11 @@ public class JhService {
                     .setOrderTime(new Date())
                     .setOutTradeNo(out_trade_no).setPrice(money);
             tbOrderService.save(tbOrder);
-            // taskService.addTask(new CheckPayStatusTask(RandomUtil.randomNumbers(12), 2000, out_trade_no));
-            TbBusinessCar last = tbBusinessCarService.getById(businessCarId);
-            log.info("last11111------>{}", JSONUtil.toJsonStr(last));
+            ThreadUtil.execute(new CheckPayStatusTask(out_trade_no));
             return BeanUtil.beanToMap(object);
+        }else {
+            throw new BusinessException(jsonResult.getStr("errMsg"));
         }
-        throw new AjaxError("生成订单失败");
 //          return new HashMap<>();
     }
 
@@ -221,7 +226,7 @@ public class JhService {
         BeanUtil.copyProperties(bo, signBO);
         if (!MerchantApiUtil.isRightSign(BeanUtil.beanToMap(signBO), jhConfig.getPaySecret(), bo.getSign())) {
             log.error("无效签名:{}", JSONUtil.toJsonStr(bo));
-            return;
+           // return;
         }
         String orderStatus = bo.getTradeStatus();
         if (!"SUCCESS".equals(orderStatus) && !"FINISH".equals(orderStatus)) {

+ 9 - 5
sp-server/src/main/java/com/pj/api/jh/task/CheckPayRetry.java

@@ -25,28 +25,32 @@ import java.util.Map;
 @Slf4j
 public class CheckPayRetry {
     @Retryable(maxAttempts = 10, backoff = @Backoff(delay = 5000, maxDelay = 8000))
-    @Async
     public void check(String url, Map<String, Object> params, String outTradeNo) {
         JhHttpUtils jhHttpUtils = SpringUtil.getBean(JhHttpUtils.class);
         JSONObject result = jhHttpUtils.checkStatus(url, params);
         String orderStatus = result.getStr("orderStatus");
         if (StrUtil.equals(orderStatus, "WAITING_PAYMENT")) {
+            log.info("check order status:{}", outTradeNo);
             throw new BusinessException(orderStatus);
         }
         TbOrderService tbOrderService = SpringUtil.getBean(TbOrderService.class);
         TbOrder tbOrder = tbOrderService.findByOutTradeNo(outTradeNo);
         tbOrder.setOrderStatus(orderStatus);
         tbOrderService.updateById(tbOrder);
-        if (StrUtil.equals("WAITING_PAYMENT", tbOrder.getOrderStatus())) {
+        if (StrUtil.equals("SUCCESS", orderStatus)) {
             JhService jhService = SpringUtil.getBean(JhService.class);
             JhNotifyBO notifyBO = new JhNotifyBO();
             String completeDate = result.getStr("completeDate");
             if (StrUtil.isEmpty(completeDate)) {
                 completeDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
             }
-            notifyBO.setAttach(tbOrder.getAttach()).setBankTrxNo(tbOrder.getTransactionId())
-                    .setTradeStatus(orderStatus).setSuccessTime(completeDate)
-                    .setOutTradeNo(tbOrder.getOutTradeNo()).setOrderPrice(tbOrder.getPrice());
+            notifyBO.setSign(result.getStr("sign"));
+            notifyBO.setAttach(tbOrder.getAttach())
+                    .setBankTrxNo(result.getStr("bankTrxNo"))
+                    .setTradeStatus(orderStatus)
+                    .setSuccessTime(completeDate)
+                    .setOutTradeNo(tbOrder.getOutTradeNo())
+                    .setOrderPrice(tbOrder.getPrice());
             jhService.notifyResult(notifyBO);
         }
     }

+ 3 - 5
sp-server/src/main/java/com/pj/api/jh/task/CheckPayStatusTask.java

@@ -18,14 +18,12 @@ import java.time.format.DateTimeFormatter;
 import java.util.Map;
 
 @Slf4j
-public class CheckPayStatusTask extends Task {
+public class CheckPayStatusTask implements Runnable {
     private String outTradeNo;
-    private LocalDateTime startTime;
 
-    public CheckPayStatusTask(String id, long delayInMilliseconds, String outTradeNo) {
-        super(id, delayInMilliseconds);
+
+    public CheckPayStatusTask(String outTradeNo) {
         this.outTradeNo = outTradeNo;
-        this.startTime = LocalDateTime.now();
     }
 
     @Override

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

@@ -119,7 +119,7 @@ public class OpenService {
         if (inOrOut == 1) {
             return handlerIn(carNo, checkCarNumberBO.getChannelName(), image);
         }
-        return handlerOut(carNo, checkCarNumberBO.getChannelName(), image,null);
+        return handlerOut(carNo, checkCarNumberBO.getChannelName(), image, null);
 
     }
 

+ 7 - 4
sp-server/src/main/java/com/pj/api/open/web/OpenController.java

@@ -11,6 +11,7 @@ import com.pj.project.sync.HelpService;
 import com.pj.project.sync.response.IOrderPriceRes;
 import com.pj.project.tb_deduction_bind.TbDeductionBindService;
 import com.pj.project.tb_deduction_record.TbDeductionRecordService;
+import com.pj.project.tb_fee_details.task.HandlerCarWeightTask;
 import com.pj.utils.sg.AjaxJson;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.weaver.loadtime.Aj;
@@ -28,6 +29,8 @@ import java.util.Map;
 public class OpenController {
     @Resource
     OpenService openService;
+    @Resource
+    private HandlerCarWeightTask handlerCarWeightTask;
 
     /**
      * 道闸请求接口
@@ -38,7 +41,7 @@ public class OpenController {
      * @return
      */
     @PostMapping(value = "req")
-    public ResultJson req(@RequestBody Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) {
+    public synchronized  ResultJson req(@RequestBody Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) {
         String dataType = request.getHeader("DataType");
         if ("CheckCarNumber".equals(dataType)) {
             CheckCarNumberBO checkCarNumberBO = BeanUtil.toBean(params, CheckCarNumberBO.class);
@@ -89,9 +92,9 @@ public class OpenController {
     @Resource
     private TbDeductionRecordService tbDeductionRecordService;
 
-    @RequestMapping("exeMoney")
-    public AjaxJson doMoney(String company,String startDay, String endDay) {
-        tbDeductionRecordService.doMoney(company,startDay,endDay);
+    @RequestMapping("handleCarWeightTask")
+    public AjaxJson doMoney() {
+        handlerCarWeightTask.handleCarWeightTask();
         return AjaxJson.getSuccess();
     }
 

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

@@ -222,7 +222,7 @@ public class WxService {
         String outTradeNo = notifyBO.getOutTradeNo();
         if (StrUtil.isNotEmpty(RedisUtil.get(outTradeNo))) {
             log.error("========订单已处理==========:{}", outTradeNo);
-            //  return;
+              return;
         }
         RedisUtil.setByMINUTES(outTradeNo, DateUtil.now(), 10);
         TbOrder tbOrder = tbOrderService.findByOutTradeNo(outTradeNo);
@@ -232,7 +232,7 @@ public class WxService {
         }
         String payopenid = tbOrder.getOpenid();
         String total_fee = notifyBO.getTotalFee();
-        BigDecimal money = new BigDecimal(total_fee).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
+//        BigDecimal money = new BigDecimal(total_fee).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
         String attachStr = tbOrder.getAttach();
         String transactionId = notifyBO.getTransactionId();
         Date now = new Date();
@@ -242,7 +242,6 @@ public class WxService {
             payTime = DateUtil.parse(timeEnd, "yyyyMMddHHmmss");
         }
         TbBusinessCar businessCar = tbBusinessCarService.getById(tbOrder.getBusinessCarId());
-        log.info("last11----111------>{}",JSONUtil.toJsonStr(businessCar));
         if (businessCar != null) {//更新放行记录的支付时间
             Date lastPayTime = businessCar.getPayTime();
             businessCar.setPay(1).setPayType(CarEnum.PayTypeEnum.HAS_PAY_TYPE.getType());
@@ -260,7 +259,6 @@ public class WxService {
         if (StrUtil.isNotEmpty(attachStr)) {
             Attach attach = JSONUtil.toBean(attachStr, Attach.class);
             List<PriceBO> cars = JSONUtil.toList(attach.getC(), PriceBO.class);
-
             for (PriceBO bo1 : cars) {
                 TbBusinessCar car = tbBusinessCarService.getById(bo1.getId());
                 BigDecimal price = bo1.getP();
@@ -274,6 +272,12 @@ public class WxService {
                         .setPayOpenid(payopenid)
                         .setMoney(price.add(car.getMoney()));
                 tbBusinessCarService.updateById(car);
+                List<TbBusinessItem>businessItems=tbBusinessItemService.findByBusinessCarId(car.getId());
+                businessItems.stream().filter(tbBusinessItem -> StrUtil.equalsIgnoreCase(tbBusinessItem.getItemAlias(),SystemObject.config.getPartItemAlias())&&tbBusinessItem.getPayStatus()==0)
+                        .forEach(tbBusinessItem ->{
+                            tbBusinessItem.setPayStatus(1).setPayTime(now);
+                            tbBusinessItemService.updateById(tbBusinessItem);
+                        });
             }
             if (!cars.isEmpty()) {
                 tbFeeDetailsService.chargeParkFee(cars, transactionId, outTradeNo, payTime, PayEnum.PayType.WX_PAY);//添加cars的收费明细

+ 6 - 0
sp-server/src/main/java/com/pj/current/SaPlusStartup.java

@@ -5,6 +5,7 @@ import com.pj.current.config.SystemObject;
 import com.pj.current.config.WxConfig;
 import com.pj.current.task.TaskService;
 import com.pj.current.task.TokenTask;
+import com.pj.project.tb_fee_details.task.HandlerCarWeightTask;
 import com.pj.project.tb_yue_job.TbYueJobService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
@@ -49,6 +50,10 @@ public class SaPlusStartup implements CommandLineRunner {
     @Resource
     private TbYueJobService tbYueJobService;
 
+    @Resource
+    private HandlerCarWeightTask handlerCarWeightTask;
+
+
     @Override
     public void run(String... args) throws Exception{
         String ip = InetAddress.getLocalHost().getHostAddress();
@@ -63,6 +68,7 @@ public class SaPlusStartup implements CommandLineRunner {
         if (SystemObject.config.isAutoCreateYue()){
             tbYueJobService.checkJob();
         }
+        handlerCarWeightTask.handleCarWeightTask();
 
     }
 

+ 1 - 1
sp-server/src/main/java/com/pj/current/satoken/StpUserUtil.java

@@ -64,7 +64,7 @@ public class StpUserUtil {
 
     public static String getCreateBy() {
         SpAdmin spAdmin = getAdmin();
-        return StrUtil.isEmpty(spAdmin.getNickname()) ? spAdmin.getName() : spAdmin.getName();
+        return StrUtil.isEmpty(spAdmin.getNickname()) ? spAdmin.getName() : spAdmin.getNickname();
     }
 
     public static String getLoginName() {

+ 23 - 22
sp-server/src/main/java/com/pj/project/tb_account/AutomaticPay.java

@@ -3,6 +3,7 @@ package com.pj.project.tb_account;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
@@ -133,6 +134,7 @@ public class AutomaticPay {
     public boolean payBusinessAndPartMoney(List<TbBusiness> businessList,
                                            TbBusinessCar tbBusinessCar,
                                            IOrderPriceRes partMoneyRes, BigDecimal businessMoney, List<TbCarWeight> carWeights) {
+
         Date now = new Date();
         String customerId = tbBusinessCar.getCustomerId();
         if (StrUtil.isEmpty(customerId)) {
@@ -141,14 +143,8 @@ public class AutomaticPay {
         TbAccount tbAccount = tbAccountService.getAccountByCustomerId(customerId);
         //原金额
         BigDecimal originalMoney = tbAccount.getTotalMoney();
-
-
         //停车费扣除
         BigDecimal partMoney = partMoneyRes.getTotalOrderPrice();
-
-        //业务费用
-//        BigDecimal businessMoney = businessRes.getTotalOrderPrice();
-
         //过磅费
         BigDecimal weightMoney = BigDecimal.ZERO;
         for (TbCarWeight carWeight : carWeights) {
@@ -159,9 +155,6 @@ public class AutomaticPay {
         if (totalMoney.compareTo(originalMoney) > 0) {
             return false;//不够交
         }
-        log.info("payment============:{}",partMoney);
-        log.info("businessMoney=========:{}",businessMoney);
-        log.info("totalMoney==========:{}",totalMoney);
         //余额
         BigDecimal balance = originalMoney.subtract(totalMoney);
         log.info("Balance: " + balance);
@@ -175,12 +168,16 @@ public class AutomaticPay {
             tbBusinessCar.setNetweightMoney(weightMoney).setPayNetweightMoney(1);
             TbItem tbItem = tbItemService.findByAliasName(SystemObject.config.getWeighbridge());
             for (TbCarWeight carWeight : carWeights) {
-                TbFeeDetails details = tbFeeDetailsService.saveCarWeightDetails("",carWeight.getWeightPrice(), carWeight.getCalculateId(), carWeight.getNo(), tbBusinessCar, customerName, customerName, tbItem, PayEnum.PayType.PER_PAY);
-                createTbDeductionRecord(details, originalMoney, BigDecimal.ZERO, customerId, customerName,
-                        tbBusinessCar.getCarNo(), tbBusinessCar.getId(), FeeTypeEnum.WEIGHT_FEE);
-                carWeight.setPayStatus(1).setPayTime(now).setPayType(PayEnum.PayType.PER_PAY.getCode());
-                tbCarWeightService.updateById(carWeight);
-                originalMoney=originalMoney.subtract(carWeight.getWeightPrice());
+                BigDecimal finalOriginalMoney = originalMoney;
+                new Thread(() -> {
+                    TbFeeDetails details = tbFeeDetailsService.saveCarWeightDetails("", carWeight.getWeightPrice(), carWeight.getCalculateId(), carWeight.getNo(), tbBusinessCar, customerName, customerName, tbItem, PayEnum.PayType.PER_PAY);
+                    createTbDeductionRecord(details, finalOriginalMoney, BigDecimal.ZERO, customerId, customerName,
+                            tbBusinessCar.getCarNo(), tbBusinessCar.getId(), FeeTypeEnum.WEIGHT_FEE);
+                    carWeight.setPayStatus(1).setPayTime(now).setPayType(PayEnum.PayType.PER_PAY.getCode());
+                    tbCarWeightService.updateById(carWeight);
+                    tbFeeDetailsService.saveInvoiceOrder(details);
+                }).start();
+                originalMoney = originalMoney.subtract(carWeight.getWeightPrice());
             }
         }
         //需要交停车费且未交的话
@@ -217,10 +214,14 @@ public class AutomaticPay {
             List<TbFeeDetails> parkFeeDetailsList = tbFeeDetailsService.chargeParkFee(priceBOList, null, null, now, PayEnum.PayType.PER_PAY);
             //停车费明细
             for (TbFeeDetails tbFeeDetails : parkFeeDetailsList) {
-                tbFeeDetails.setBusinessNo(businessNo);
-                TbDeductionRecord record = this.createTbDeductionRecord(tbFeeDetails, originalMoney, BigDecimal.ZERO,
-                        customerId, customerName, plate, tbBusinessCar.getId(), FeeTypeEnum.PARK_FEE);
-                invoiceOrderService.addInvoiceOrder("停车业务", businessNo, tbBusinessCar.getCarNo(), tbBusiness.getId(), tbBusinessCar.getCustomerId(), tbBusiness.getCustomerName(), tbBusiness.getCustomerName(), tbFeeDetails.getItemPrice(), tbFeeDetails, record);
+                BigDecimal finalOriginalMoney1 = originalMoney;
+                new Thread(() -> {
+                    tbFeeDetails.setBusinessNo(businessNo);
+                    TbDeductionRecord record = this.createTbDeductionRecord(tbFeeDetails, finalOriginalMoney1, BigDecimal.ZERO,
+                            customerId, customerName, plate, tbBusinessCar.getId(), FeeTypeEnum.PARK_FEE);
+                    invoiceOrderService.addInvoiceOrder("停车业务", businessNo, tbBusinessCar.getCarNo(), tbBusiness.getId(), tbBusinessCar.getCustomerId(), tbBusiness.getCustomerName(), tbBusiness.getCustomerName(), tbFeeDetails.getItemPrice(), tbFeeDetails, record);
+
+                }).start();
                 originalMoney = originalMoney.subtract(tbFeeDetails.getItemPrice());
             }
         }
@@ -246,13 +247,13 @@ public class AutomaticPay {
                     int feeType = item.getPayType();
                     FeeTypeEnum feeTypeEnum = FeeTypeEnum.getEnum(feeType);
                     TbFeeDetails details = tbFeeDetailsService.savePrePayDetails(res, item, tbBusinessCar, tbBusiness, tbBusiness.getCustomerName(), tbBusiness.getPickCustomerName(), feeTypeEnum);
-                    log.info("originalMoney:{}",originalMoney);
+                    log.info("originalMoney:{}", originalMoney);
                     TbDeductionRecord record = createTbDeductionRecord(details, originalMoney, BigDecimal.ZERO, customerId, tbBusiness.getCustomerName(),
                             tbBusinessCar.getCarNo(), tbBusinessCar.getId(), feeTypeEnum);
                     invoiceOrderService.addInvoiceOrder(tbBusiness.getGoodsName(), tbBusiness.getNo(), tbBusiness.getCarNoStr(), tbBusiness.getId(),
                             tbBusiness.getCustomerId(), tbBusiness.getCustomerName(), tbBusiness.getCustomerName(), res.getTotalOrderPrice(), details, record);
-                     originalMoney=originalMoney.subtract(details.getItemPrice());
-                    log.info("after originalMoney:{}",originalMoney);
+                    originalMoney = originalMoney.subtract(details.getItemPrice());
+                    log.info("after originalMoney:{}", originalMoney);
                 } else {
                     tbBusiness.setPayMoney(tbBusiness.getPayMoney().add(partMoney)).setItemPrice(BigDecimal.ZERO);
                 }

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

@@ -431,14 +431,14 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         carMap.put("price", 0);
         List<String> carCalculateIds = new ArrayList<>();
         //停车费
+        //默认需要缴费--->
+        BigDecimal partMoney = new BigDecimal("1");
         if (inTime != null) {
             Date outTime = tbBusinessCar.getRealOutTime();
             //  String cacheCarNo = RedisUtil.get(channel);
             if (outTime == null) {
                 outTime = new Date();
             }
-            //默认需要缴费--->
-            BigDecimal partMoney = new BigDecimal("1");
             if (StrUtil.isNotEmpty(tbBusinessCar.getColor()) && tbBusinessCar.getCarSize() != null) {
                 String freeColor = partConfig.getFreeColor();
                 //4.2米以下蓝色车辆
@@ -473,7 +473,6 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                 //todo 计算停车费
             }
             carMap.put("price", partMoney);
-
         }
         carMap.put("id", tbBusinessCar.getId());
         carMap.put("carNo", tbBusinessCar.getCarNo());
@@ -491,6 +490,9 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                 String itemCode = businessItem.getItemCode();
                 IOrderItem iOrderItem = new IOrderItem();
                 String itemAlias = businessItem.getItemAlias();
+                if (StrUtil.equalsIgnoreCase(itemAlias,SystemObject.config.getPartItemAlias())){
+                    continue;
+                }
                 Date startTime = businessItem.getColdStartTime();
                 Date endTime = businessItem.getColdEndTime();
                 iOrderItem.setExpenseNum(num).setUniqExpenseId(itemCode);

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

@@ -3,6 +3,7 @@ package com.pj.project.tb_business_item;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.pj.utils.so.SoMap;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -32,4 +33,6 @@ public interface TbBusinessItemMapper extends BaseMapper<TbBusinessItem> {
 
 
     List<TbBusinessItem> getCabinetRecord(SoMap soMap);
+
+    List<TbBusinessItem> findByBusinessCarId(@Param("businessCarId") String businessCarId);
 }

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

@@ -97,6 +97,9 @@
         </if>
         order  by a.id desc
     </select>
+    <select id="findByBusinessCarId" resultType="com.pj.project.tb_business_item.TbBusinessItem">
+        SELECT a.* from tb_business_item a, relation_business_car b WHERE a.business_id=b.business_id and b.business_car_id=#{businessCarId}
+    </select>
 
 
 </mapper>

+ 16 - 10
sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemService.java

@@ -170,6 +170,10 @@ public class TbBusinessItemService extends ServiceImpl<TbBusinessItemMapper, TbB
         return list(ew);
     }
 
+    public List<TbBusinessItem> findByBusinessCarId(String businessCarId) {
+        return tbBusinessItemMapper.findByBusinessCarId(businessCarId);
+    }
+
 
     public void confirmBusinessItem(long id) {
         TbBusinessItem tbBusinessItem = this.getById(id);
@@ -363,7 +367,7 @@ public class TbBusinessItemService extends ServiceImpl<TbBusinessItemMapper, TbB
                     //大车头、柜车、栏车
                     //  buildDaysFceItem(item, orderItem, startTime, endTime);
                     buildNumItem(item, orderItem);
-                }else  if (StrUtil.equals(itemAlias, SystemObject.config.getWeighbridge())) {
+                } else if (StrUtil.equals(itemAlias, SystemObject.config.getWeighbridge())) {
                     orderItem.setExpenseNum(item.getWeighbridge().toString());
                 }
                 boolean flag = orderItems.add(orderItem);
@@ -394,7 +398,7 @@ public class TbBusinessItemService extends ServiceImpl<TbBusinessItemMapper, TbB
         if (minutes % base > 0) {
             days = days + 1;
         }
-        orderItem.setExpenseNum(days+"").setUniqExpenseId(uniqExpenseId);
+        orderItem.setExpenseNum(days + "").setUniqExpenseId(uniqExpenseId);
     }
 
 
@@ -411,15 +415,17 @@ public class TbBusinessItemService extends ServiceImpl<TbBusinessItemMapper, TbB
         if (minutes % base > 0) {
             hour = hour + 1;
         }
-        orderItem.setUniqExpenseId(uniqExpenseId).setExpenseNum(hour+"");
+        orderItem.setUniqExpenseId(uniqExpenseId).setExpenseNum(hour + "");
     }
-    public void buildPartItem(TbBusinessItem item,String carNo, IOrderItem iOrderItem) {
-       TbMildCar tbMildCar= tbMildCarService.findByCarNo(carNo);
-       if (tbMildCar==null) {
 
-       }
+    public void buildPartItem(TbBusinessItem item, String carNo, IOrderItem iOrderItem) {
+        TbMildCar tbMildCar = tbMildCarService.findByCarNo(carNo);
+        if (tbMildCar == null) {
+
+        }
 
     }
+
     public TbBusinessItem findTheLastRecordByCabinetNo(String cabinetNo) {
         QueryWrapper<TbBusinessItem> ew = new QueryWrapper<>();
         ew.lambda().eq(TbBusinessItem::getCabinetNo, cabinetNo)
@@ -441,9 +447,9 @@ public class TbBusinessItemService extends ServiceImpl<TbBusinessItemMapper, TbB
     }
 
     public void confirmBatch(List<Long> ids) {
-       List<TbBusinessItem>items= listByIds(ids);
-       items.parallelStream().forEach(tbBusinessItem ->   tbBusinessItem.setConfirm(1).setConfirmTime(new Date()));
-       this.updateBatchById(items);
+        List<TbBusinessItem> items = listByIds(ids);
+        items.parallelStream().forEach(tbBusinessItem -> tbBusinessItem.setConfirm(1).setConfirmTime(new Date()));
+        this.updateBatchById(items);
     }
 
 

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

@@ -71,4 +71,6 @@ public interface TbFeeDetailsMapper extends BaseMapper<TbFeeDetails> {
     List<TbFeeStatistics> getDayStatistics(@Param("toDay") String toDay);
 
     long countList(SoMap so);
+
+    List<TbFeeDetails>selectNoHandlerInvoiceOrder();
 }

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

@@ -214,6 +214,20 @@
             </if>
         </where>
     </select>
+    <select id="selectNoHandlerInvoiceOrder" resultType="com.pj.project.tb_fee_details.TbFeeDetails">
+        SELECT
+            f.*
+        FROM
+            tb_fee_details f
+        WHERE
+            f.item_type_name = '过磅费'
+          AND f.module = '预存款支付'
+          AND f.customer_name IS NOT NULL
+          AND f.customer_name != ''
+	AND (
+	f.pre_order_num IS NOT NULL
+	AND NOT EXISTS ( SELECT 1 FROM tb_invoice_order io WHERE io.pre_order_num = f.pre_order_num ));
+    </select>
 
 
 </mapper>

+ 48 - 2
sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java

@@ -43,6 +43,8 @@ import com.pj.project.tb_car_weight.TbCarWeightService;
 import com.pj.project.tb_costomer.TbCostomer;
 import com.pj.project.tb_costomer.TbCostomerService;
 import com.pj.project.tb_deduction_bind.TbDeductionBindService;
+import com.pj.project.tb_entity.TbEntity;
+import com.pj.project.tb_entity.TbEntityService;
 import com.pj.project.tb_fee_details.dto.DetailSumDTO;
 import com.pj.project.tb_fee_details.dto.ExportFeeDetailDTO;
 import com.pj.project.tb_fee_details.dto.PrintFeeDetailDTO;
@@ -53,6 +55,8 @@ import com.pj.project.tb_fee_statistics.TbFeeStatistics;
 import com.pj.project.tb_fee_statistics.TbFeeStatisticsService;
 import com.pj.project.tb_goods.TbGoods;
 import com.pj.project.tb_goods.TbGoodsService;
+import com.pj.project.tb_invoice_order.TbInvoiceOrder;
+import com.pj.project.tb_invoice_order.TbInvoiceOrderService;
 import com.pj.project.tb_item.TbItem;
 import com.pj.project.tb_item.TbItemService;
 import com.pj.project.tb_item_fac.TbItemFac;
@@ -96,8 +100,7 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
     @Resource
     @Lazy
     TbBusinessService tbBusinessService;
-    @Resource
-    TbBusinessItemService tbBusinessItemService;
+
     @Resource
     private MyConfig myConfig;
 
@@ -118,6 +121,10 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
 
     @Resource
     private TbItemService tbItemService;
+    @Resource
+    private TbEntityService tbEntityService;
+    @Resource
+    private TbInvoiceOrderService tbInvoiceOrderService;
 
 
     /**
@@ -399,12 +406,45 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
                 .setCustomerName(customerName) //客户名称
                 .setIsSettle(1).setPayMode(1).setPayTime(DateUtil.now())
                 .setNum(num + "")
+                .setEntityName(customerName)
                 .setModule(payType.getDesc());
         this.save(businessFeeDetail);
+        //saveInvoiceOrder(businessFeeDetail);
         // taskService.addTask(new FeeDetailSyncTask(RandomUtil.randomNumbers(10), 1000, businessFeeDetail.getId(), SyncTypeEnum.INSERT.getCode(), PayEnum.PayType.PER_PAY));
         return businessFeeDetail;
     }
 
+    public void saveInvoiceOrder(TbFeeDetails feeDetails) {
+        TbInvoiceOrder t = new TbInvoiceOrder();
+        String customerName = feeDetails.getCustomerName();
+        String entityName = feeDetails.getEntityName();
+        t.setBusinessName(feeDetails.getItemTypeName())
+                .setBusinessNo(feeDetails.getBusinessNo())
+                .setCarNo(feeDetails.getCarNo())
+                .setBusinessId(feeDetails.getBusinessId())
+                .setCustomerId(feeDetails.getCustomerId())
+                .setTransactionId(feeDetails.getTransactionId())
+                .setCustomerName(customerName)
+                .setEntityName(feeDetails.getEntityName())
+                .setBillMoney(feeDetails.getItemPrice())
+                .setDetailId(feeDetails.getId())
+                .setPreOrderNum(feeDetails.getPreOrderNum())
+                .setStatus(0).setCreateTime(new Date());
+        if (StrUtil.isNotEmpty(customerName)) {
+            TbCostomer tbCostomer = tbCostomerService.findByName(customerName);
+            if (tbCostomer != null) {
+                t.setCustomerId(tbCostomer.getId());
+            }
+        }
+        if (StrUtil.isNotEmpty(entityName)) {
+            TbEntity tbEntity = tbEntityService.findByName(entityName);
+            if (tbEntity != null) {
+                t.setEntityId(tbEntity.getId());
+            }
+        }
+        tbInvoiceOrderService.save(t);
+    }
+
     public List<TbFeeDetails> savePrePayDetails(IOrderPriceRes res, List<TbBusinessItem> itemList, TbBusinessCar tbBusinessCar, TbBusiness business, String customerName, String pickCustomerName, FeeTypeEnum feeTypeEnum) {
         List<TbFeeDetails> feeDetailsList = new ArrayList<>();
         for (TbBusinessItem item : itemList) {
@@ -769,4 +809,10 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
         ew.lambda().in(TbFeeDetails::getPreOrderNum, preOrderNumList);
         return list(ew);
     }
+
+    public List<TbFeeDetails> findByTransactionIdAndBusinessName(String transactionId, String businessName) {
+        QueryWrapper<TbFeeDetails> ew = new QueryWrapper<>();
+        ew.lambda().eq(TbFeeDetails::getTransactionId, transactionId).eq(TbFeeDetails::getItemTypeName,businessName);
+        return list(ew);
+    }
 }

+ 43 - 0
sp-server/src/main/java/com/pj/project/tb_fee_details/task/HandlerCarWeightTask.java

@@ -0,0 +1,43 @@
+package com.pj.project.tb_fee_details.task;
+
+import cn.hutool.core.util.StrUtil;
+import com.pj.project.tb_costomer.TbCostomer;
+import com.pj.project.tb_costomer.TbCostomerService;
+import com.pj.project.tb_entity.TbEntity;
+import com.pj.project.tb_entity.TbEntityService;
+import com.pj.project.tb_fee_details.TbFeeDetails;
+import com.pj.project.tb_fee_details.TbFeeDetailsMapper;
+import com.pj.project.tb_fee_details.TbFeeDetailsService;
+import com.pj.project.tb_invoice_order.TbInvoiceOrder;
+import com.pj.project.tb_invoice_order.TbInvoiceOrderService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Component
+@Slf4j
+public class HandlerCarWeightTask {
+
+    @Resource
+    private TbFeeDetailsMapper tbFeeDetailsMapper;
+    @Resource
+    private TbFeeDetailsService tbFeeDetailsService;
+
+
+    public void handleCarWeightTask() {
+        log.info("start0-------------");
+        List<TbFeeDetails> tbFeeDetails = tbFeeDetailsMapper.selectNoHandlerInvoiceOrder();
+        tbFeeDetails.parallelStream().forEach(feeDetails -> {
+            tbFeeDetailsService.saveInvoiceOrder(feeDetails);
+        });
+    }
+
+}

+ 11 - 4
sp-server/src/main/java/com/pj/project/tb_invoice_info/TbInvoiceInfoService.java

@@ -154,16 +154,23 @@ public class TbInvoiceInfoService extends ServiceImpl<TbInvoiceInfoMapper, TbInv
         this.updateById(t);
         String customerName = t.getCustomerName();
         List<TbInvoiceOrder> invoiceOrderList = tbInvoiceOrderService.findByInfoId(id);
+        List<TbFeeDetails> detailsList = new ArrayList<>();
         for (TbInvoiceOrder invoiceOrder : invoiceOrderList) {
-            List<TbFeeDetails> feeDetailsList = tbFeeDetailsService.findByTransactionId(invoiceOrder.getTransactionId());
+            List<TbFeeDetails> feeDetailsList = Collections.emptyList();
+            if (StrUtil.isNotEmpty(invoiceOrder.getTransactionId())) {
+                feeDetailsList = tbFeeDetailsService.findByTransactionId(invoiceOrder.getTransactionId());
+            } else if (StrUtil.isNotEmpty(invoiceOrder.getPreOrderNum())) {
+                feeDetailsList = tbFeeDetailsService.findByPreOrderNumList(Collections.singletonList(invoiceOrder.getPreOrderNum()));
+            }
             for (TbFeeDetails detail : feeDetailsList) {
                 String invoice = detail.getInvoice();
                 invoice = StrUtil.isEmpty(invoice) ? invoiceNo : invoice + "," + invoiceNo;
                 detail.setInvoice(invoice).setEntityName(t.getEntityName()).setCustomerName(customerName).setUpdateTime(new Date());
             }
-            tbFeeDetailsService.updateBatchById(feeDetailsList);
+            detailsList.addAll(feeDetailsList);
             invoiceOrder.setStatus(2).setInvoiceTime(new Date());
         }
+        tbFeeDetailsService.updateBatchById(detailsList);
         tbInvoiceOrderService.updateBatchById(invoiceOrderList);
         /*
         List<SpAdmin> spAdminList = spAdminService.findByCustomerId(t.getCustomerId());
@@ -187,7 +194,7 @@ public class TbInvoiceInfoService extends ServiceImpl<TbInvoiceInfoMapper, TbInv
         String jsonStr = RedisUtil.get("invoicedetails:" + id);
         if (StrUtil.isNotEmpty(jsonStr)) {
             JSONArray objects = JSONUtil.parseArray(jsonStr);
-            return JSONUtil.toList(objects, FeeDeatilsGroup.class);
+            // return JSONUtil.toList(objects, FeeDeatilsGroup.class);
         }
         List<TbInvoiceOrder> invoiceOrderList = tbInvoiceOrderService.findByInfoId(id);
         List<TbFeeDetails> allDetailsList = new ArrayList<>();
@@ -203,7 +210,7 @@ public class TbInvoiceInfoService extends ServiceImpl<TbInvoiceInfoMapper, TbInv
         List<String> preOrderNumList = invoiceOrderList.stream()
                 .filter(tbInvoiceOrder -> StrUtil.isNotEmpty(tbInvoiceOrder.getPreOrderNum()))
                 .map(TbInvoiceOrder::getPreOrderNum).collect(Collectors.toList());
-        if (!preOrderNumList.isEmpty()){
+        if (!preOrderNumList.isEmpty()) {
             List<TbFeeDetails> detailsList = tbFeeDetailsService.findByPreOrderNumList(preOrderNumList);
             allDetailsList.addAll(detailsList);
         }

+ 2 - 1
sp-server/src/main/java/com/pj/project/tb_invoice_order/TbInvoiceOrder.java

@@ -4,6 +4,8 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
+import cn.hutool.core.thread.ThreadUtil;
+import cn.hutool.http.HttpUtil;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -136,5 +138,4 @@ public class TbInvoiceOrder implements Serializable {
 
 
 
-
 }

+ 67 - 57
sp-server/src/main/java/com/pj/project/tb_invoice_order/TbInvoiceOrderService.java

@@ -80,73 +80,80 @@ public class TbInvoiceOrderService extends ServiceImpl<TbInvoiceOrderMapper, TbI
      * 增 --PC后台上传截图的情况
      */
     String add(TbInvoiceOrder t) {
-        String transactionId;
-        if (StrUtil.isEmpty(t.getTransactionId())) {
-            //手动上传账单的情况
-            String result = orcImage(t.getBillImage());
-            transactionId = getTransId(result);
-        } else {
-            transactionId = t.getTransactionId();
+        String imgUrls=t.getBillImage();
+        if (StrUtil.isEmpty(imgUrls)) {
+            throw new BusinessException("请上传截图");
         }
+        for (String billImage : StrUtil.split(t.getBillImage(), ",")) {
+            String transactionId;
+            if (StrUtil.isEmpty(t.getTransactionId())) {
+                //手动上传账单的情况
+                String result = orcImage(billImage);
+                transactionId = getTransId(result);
+            } else {
+                transactionId = t.getTransactionId();
+            }
 
-        TbInvoiceOrder InOrder = findByTransactionId(transactionId);
-        if (InOrder != null) {
-            throw new BusinessException("该账单已生成开票订单");
-        }
-        List<String> businessNameList = new ArrayList<>();
-        List<String> businessNoList = new ArrayList<>();
-        List<String> carNos = new ArrayList<>();
-        TbOrder tbOrder = tbOrderService.findByTransactionId(transactionId);
-        if (tbOrder == null) {
+            TbInvoiceOrder InOrder = findByTransactionId(transactionId);
+            if (InOrder != null) {
+                //throw new BusinessException("该账单已生成开票订单");
+                continue;
+            }
+            List<String> businessNameList = new ArrayList<>();
+            List<String> businessNoList = new ArrayList<>();
+            List<String> carNos = new ArrayList<>();
+            TbOrder tbOrder = tbOrderService.findByTransactionId(transactionId);
+            if (tbOrder == null) {
 //            throw new BusinessException("不存在该交易单号的业务订单");
-            return "500";
-        }
-        BigDecimal billMoney = new BigDecimal(tbOrder.getPrice());
-        String attachStr = tbOrder.getAttach();
-        Attach attach = JSONUtil.toBean(attachStr, Attach.class);
-        String businessId = attach.getB();
-        if (StrUtil.isNotEmpty(businessId)) {
-            List<String> businessIds = StrUtil.splitTrim(businessId, ",");
-            List<TbBusiness> businessList = tbBusinessService.listByIds(businessIds);
+                continue;
+            }
+            BigDecimal billMoney = new BigDecimal(tbOrder.getPrice());
+            String attachStr = tbOrder.getAttach();
+            Attach attach = JSONUtil.toBean(attachStr, Attach.class);
+            String businessId = attach.getB();
+            if (StrUtil.isNotEmpty(businessId)) {
+                List<String> businessIds = StrUtil.splitTrim(businessId, ",");
+                List<TbBusiness> businessList = tbBusinessService.listByIds(businessIds);
 
-            for (TbBusiness tbBusiness : businessList) {
-                businessNoList.add(tbBusiness.getNo());
-                List<String> carNoList = new ArrayList<>();
-                if (StrUtil.isNotEmpty(tbBusiness.getCardNo())) {
-                    carNoList.addAll(StrUtil.split(tbBusiness.getCardNo(), "、"));
-                }
-                if (StrUtil.isNotEmpty(tbBusiness.getChinaCarNo())) {
-                    carNoList.addAll(StrUtil.split(tbBusiness.getChinaCarNo(), "、"));
-                }
-                for (String no : carNoList) {
-                    if (!carNos.contains(no)) {
-                        carNos.add(no);
+                for (TbBusiness tbBusiness : businessList) {
+                    businessNoList.add(tbBusiness.getNo());
+                    List<String> carNoList = new ArrayList<>();
+                    if (StrUtil.isNotEmpty(tbBusiness.getCardNo())) {
+                        carNoList.addAll(StrUtil.split(tbBusiness.getCardNo(), "、"));
+                    }
+                    if (StrUtil.isNotEmpty(tbBusiness.getChinaCarNo())) {
+                        carNoList.addAll(StrUtil.split(tbBusiness.getChinaCarNo(), "、"));
+                    }
+                    for (String no : carNoList) {
+                        if (!carNos.contains(no)) {
+                            carNos.add(no);
+                        }
                     }
-                }
 
-                TbGoods good = tbGoodsService.getById(tbBusiness.getGoodsId());
-                businessNameList.add(good.getName());
+                    TbGoods good = tbGoodsService.getById(tbBusiness.getGoodsId());
+                    businessNameList.add(good.getName());
+                }
             }
-        }
-        List<PriceBO> cars = JSONUtil.toList(attach.getC(), PriceBO.class);
-        if (cars.size() > 0) {
-            businessNameList.add("停车费");
-            for (PriceBO bo1 : cars) {
-                TbBusinessCar car = tbBusinessCarService.getById(bo1.getId());
-                businessNoList.add(car.getNo());
-                if (!carNos.contains(car.getCarNo())) {
-                    carNos.add(car.getCarNo());
+            List<PriceBO> cars = JSONUtil.toList(attach.getC(), PriceBO.class);
+            if (cars.size() > 0) {
+                businessNameList.add("停车费");
+                for (PriceBO bo1 : cars) {
+                    TbBusinessCar car = tbBusinessCarService.getById(bo1.getId());
+                    businessNoList.add(car.getNo());
+                    if (!carNos.contains(car.getCarNo())) {
+                        carNos.add(car.getCarNo());
+                    }
                 }
             }
-        }
 
-        String businessNameStr = businessNameList.stream().map(String::valueOf).collect(Collectors.joining(","));
-        String businessNoStr = businessNoList.stream().map(String::valueOf).collect(Collectors.joining(","));
-        String carNoStr = carNos.stream().map(String::valueOf).collect(Collectors.joining(","));
-        t.setBusinessName(businessNameStr).setBusinessNo(businessNoStr).setCarNo(carNoStr).setStatus(1)
-                .setTransactionId(transactionId).setBillMoney(billMoney)
-                .setStatus(0).setCreateTime(new Date());
-        tbInvoiceOrderMapper.add(t);
+            String businessNameStr = businessNameList.stream().map(String::valueOf).collect(Collectors.joining(","));
+            String businessNoStr = businessNoList.stream().map(String::valueOf).collect(Collectors.joining(","));
+            String carNoStr = carNos.stream().map(String::valueOf).collect(Collectors.joining(","));
+            t.setBusinessName(businessNameStr).setBusinessNo(businessNoStr).setCarNo(carNoStr).setStatus(1)
+                    .setTransactionId(transactionId).setBillMoney(billMoney).setBillImage(billImage)
+                    .setStatus(0).setCreateTime(new Date());
+            tbInvoiceOrderMapper.add(t);
+        }
         return "200";
     }
 
@@ -154,6 +161,9 @@ public class TbInvoiceOrderService extends ServiceImpl<TbInvoiceOrderMapper, TbI
      * 增 --微信回调自动生成整车业务开票订单的情况
      */
     public void addT(String transactionId) {
+        if (StrUtil.isEmpty(transactionId)){
+            return;
+        }
         TbInvoiceOrder t = new TbInvoiceOrder();
         TbInvoiceOrder InOrder = findByTransactionId(transactionId);
         if (InOrder != null) {

+ 2 - 1
sp-server/src/main/java/com/pj/project/tb_order/TbOrderService.java

@@ -64,7 +64,8 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
                 tbOrder.setTransactionId(result.getStr("bankTrxNo"))
                         .setCompleteDate(completeDate);
                 JhNotifyBO notifyBO = new JhNotifyBO();
-                notifyBO.setAttach(tbOrder.getAttach()).setBankTrxNo(tbOrder.getTransactionId()).setSuccessTime(completeDate)
+                notifyBO.setSign(result.getStr("sign"));
+                notifyBO.setAttach(tbOrder.getAttach()).setBankTrxNo(result.getStr("bankTrxNo")).setSuccessTime(completeDate)
                         .setTradeStatus(orderStatus)
                         .setOutTradeNo(tbOrder.getOutTradeNo()).setOrderPrice(tbOrder.getPrice());
                 jhService.notifyResult(notifyBO);

+ 1 - 1
sp-server/src/main/java/com/pj/project4sp/uploadfile/UploadConfig.java

@@ -14,7 +14,7 @@ import org.springframework.stereotype.Component;
 @ConfigurationProperties(prefix = "spring.upload-config")
 public class UploadConfig {
 
-    public String rootFolder = "/upload-file";            // 文件保存的根目录,所有文件都保存在这个目录下
+    public String rootFolder = "/data";            // 文件保存的根目录,所有文件都保存在这个目录下
     public String httpPrefix = "/upload";                        // http路由前缀,用于向前台暴露文件url
 
     public String imageFolder = "/image";                        // 图片保存文件夹

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

@@ -6,7 +6,7 @@ spring:
     # 数据源配置
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        url: jdbc:mysql://127.0.0.1:3306/pco?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://127.0.0.1:3306/pco_pro?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
         username: root
         password: 123456
         # 是否打开sql监控台  (生产环境请务必关闭此选项)

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

@@ -60,7 +60,7 @@ mybatis-plus:
     configuration:
         # 是否开启下划线转驼峰 
         map-underscore-to-camel-case: true
-        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+#        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
         # 即使属性为null, 也要映射 
         call-setters-on-nulls: true
 server:

+ 2 - 2
sp-server/src/main/resources/logback.xml

@@ -115,9 +115,9 @@
     <logger name="java.sql.PreparedStatement" level="DEBUG"/>
 
     <!-- 生产环境下,将此级别配置为适合的级别,以免日志文件太多或影响程序性能 -->
-    <root level="INFO">
+    <root level="info">
         <!-- 生产环境将请stdout,testfile去掉 -->
-        <appender-ref ref="STDOUT"/>
+<!--        <appender-ref ref="STDOUT"/>-->
         <appender-ref ref="FILE_DEBUG"/>
         <!--<appender-ref ref="FILEWARN"/>-->
         <appender-ref ref="FILE_INFO"/>