|
|
@@ -18,6 +18,7 @@ import com.chuanghai.smartschool.tuitionpayment.entity.*;
|
|
|
import com.chuanghai.smartschool.tuitionpayment.enume.PayMethod;
|
|
|
import com.chuanghai.smartschool.tuitionpayment.enume.PayStatus;
|
|
|
import com.chuanghai.smartschool.tuitionpayment.service.*;
|
|
|
+import com.chuanghai.smartschool.tuitionpayment.to.BankItemDetailTO.BankDetailListVO;
|
|
|
import com.chuanghai.smartschool.tuitionpayment.to.OrderReceiveTO;
|
|
|
import com.chuanghai.smartschool.tuitionpayment.to.PayOrderQueryTO;
|
|
|
import com.chuanghai.smartschool.tuitionpayment.utils.MyUtil;
|
|
|
@@ -56,6 +57,8 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
@Autowired
|
|
|
private PayService payService;
|
|
|
@Autowired
|
|
|
+ private BankService bankService;
|
|
|
+ @Autowired
|
|
|
private PayOrderService payOrderService;
|
|
|
@Autowired
|
|
|
private PayItemController payItemController;
|
|
|
@@ -67,6 +70,10 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
private PayableInfoController payableInfoController;
|
|
|
@Autowired
|
|
|
private PayDetailBankController payDetailBankController;
|
|
|
+ @Autowired
|
|
|
+ private BankDetailController bankDetailController;
|
|
|
+ @Autowired
|
|
|
+ private BankItemDetailController bankItemDetailController;
|
|
|
|
|
|
@Override
|
|
|
public PageUtils queryPage(PayOrderQueryTO queryTO, PageParam pageParam) {
|
|
|
@@ -172,6 +179,23 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public boolean isAlreadyPayWater(String dorm, String itemName, String payYears) {
|
|
|
+ QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("pay_item", itemName);
|
|
|
+ wrapper.eq(StringUtils.hasText(payYears), "pay_year", payYears);
|
|
|
+ wrapper.eq("dorm", dorm);
|
|
|
+ wrapper.eq("status", PayStatus.ALREADY_PAY.getCode());
|
|
|
+
|
|
|
+ List<PayOrderEntity> payList = this.list(wrapper);
|
|
|
+
|
|
|
+ if (payList != null && payList.size() > 0) {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 收集用户的支付参数信息
|
|
|
*
|
|
|
@@ -181,7 +205,6 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
*/
|
|
|
@Override
|
|
|
public List<OrderReceiveTO> receiveOrder(String cardNumber, PayOrderReceiveVO payOrderReceiveVO) {
|
|
|
- System.out.println(payOrderReceiveVO);
|
|
|
List<OrderReceiveTO> orderReceiveTOList = new ArrayList<>();
|
|
|
PayOrderReceiveVO payOrderReceiveVO1 = new PayOrderReceiveVO();
|
|
|
//备份支付参数
|
|
|
@@ -191,109 +214,157 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
String payOrderLoan = payOrderReceiveVO.getPayOrderLoan();
|
|
|
payOrderLoan = payOrderLoan.equals("") == true ? "0" : payOrderLoan;
|
|
|
//payOrderReceiveVO.setPayOrderLoan(payOrderLoan);
|
|
|
- PayDetailBank payDetailBank = payDetailBankController.queryBank(itemName);
|
|
|
- if (payDetailBank != null) {
|
|
|
- //建设银行的支付明细
|
|
|
- String ccbStr = payDetailBank.getCcbStr();
|
|
|
- String[] ccbStrArr = ccbStr.split("/");
|
|
|
- List<String> ccbStrList = new ArrayList<>(Arrays.asList(ccbStrArr));
|
|
|
- //建行实际支付的明细
|
|
|
- String ccbRealPayStr = "";
|
|
|
- //农商银行的支付明细
|
|
|
- String rcbStr = payDetailBank.getRcbStr();
|
|
|
- String[] rcbStrArr = rcbStr.split("/");
|
|
|
- List<String> rcbStrList = new ArrayList<>(Arrays.asList(rcbStrArr));
|
|
|
- //农商实际支付的明细
|
|
|
- String rcbRealPayStr = "";
|
|
|
- //实际收集的订单支付明细
|
|
|
- String[] payDetailArr = payDetail.split("/");
|
|
|
- List<String> payDetailList = new ArrayList<>(Arrays.asList(payDetailArr));
|
|
|
-
|
|
|
- //提取本次缴费中需要交付于建设银行的明细
|
|
|
-
|
|
|
- List<String> accountIdList = payDetailList.stream().filter(ccbStrList::contains).collect(Collectors.toList());
|
|
|
-
|
|
|
- for (int i = 0; i < accountIdList.size(); i++) {
|
|
|
- ccbRealPayStr += accountIdList.get(i) + "/";
|
|
|
+ List<BankDetailListVO> bankDetailListVOS = bankItemDetailController.queryByItem(itemName);
|
|
|
+ String ccbStr = "";
|
|
|
+ String rcbStr = "";
|
|
|
+ for (int a = 0; a < bankDetailListVOS.size(); a++) {
|
|
|
+ if (bankDetailListVOS.get(a).getBankName().equals("建设银行")) {
|
|
|
+ ccbStr = bankDetailListVOS.get(a).getDetail();
|
|
|
}
|
|
|
- if (ccbRealPayStr.endsWith("/")) {
|
|
|
- ccbRealPayStr = ccbRealPayStr.substring(0, ccbRealPayStr.length() - 1);
|
|
|
- }
|
|
|
- OrderReceiveTO orderReceiveTOCCB = new OrderReceiveTO();
|
|
|
- orderReceiveTOCCB.setCardNumber(cardNumber);
|
|
|
- payOrderReceiveVO.setPayDetail(ccbRealPayStr);
|
|
|
- String[] ccbRealPaySplit = ccbRealPayStr.split("/");
|
|
|
- BigDecimal payAmountCCB = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- if (!ccbRealPaySplit[0].isEmpty()) {
|
|
|
- for (int i = 0; i < ccbRealPaySplit.length; i++) {
|
|
|
- String[] split = ccbRealPaySplit[i].split(":");
|
|
|
- String payAmountStr = ccbRealPaySplit[i].split(":")[1];
|
|
|
- payAmountCCB = payAmountCCB.add(new BigDecimal(payAmountStr).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- }
|
|
|
+ if (bankDetailListVOS.get(a).getBankName().equals("农商银行")) {
|
|
|
+ rcbStr = bankDetailListVOS.get(a).getDetail();
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- if (!payOrderReceiveVO.getPayDetail().isEmpty()) {
|
|
|
- if (!payOrderLoan.isEmpty()) {
|
|
|
- payAmountCCB = payAmountCCB.subtract(new BigDecimal(payOrderLoan)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- }
|
|
|
|
|
|
- payOrderReceiveVO.setNowRealPayAmount(payAmountCCB);
|
|
|
- payOrderReceiveVO.setPayMethod("1");
|
|
|
- orderReceiveTOCCB.setPayOrderReceiveVO(payOrderReceiveVO);
|
|
|
- orderReceiveTOList.add(orderReceiveTOCCB);
|
|
|
- }
|
|
|
-//--------------------------------------------------------------- 生成农商银行的支付参数 ---------------------------------------------------
|
|
|
- String payDetail1 = payOrderReceiveVO1.getPayDetail();
|
|
|
- String[] payDetailArr1 = payDetail1.split("/");
|
|
|
- List<String> payDetailList1 = new ArrayList<>(Arrays.asList(payDetailArr1));
|
|
|
- List<String> accountIdList1 = payDetailList1.stream().filter(rcbStrList::contains).collect(Collectors.toList());
|
|
|
-
|
|
|
- //提取本次缴费中需要交付于建设银行的明细
|
|
|
- for (int i = 0; i < accountIdList1.size(); i++) {
|
|
|
- rcbRealPayStr += accountIdList1.get(i) + "/";
|
|
|
+ //建设银行的支付明细
|
|
|
+ String[] ccbStrArr = new String[20];
|
|
|
+ if (itemName.equals("水费缴纳")) {
|
|
|
+ String detailWater = "";
|
|
|
+ String[] split = payDetail.split("/");
|
|
|
+ for (int m = 0; m < split.length; m++) {
|
|
|
+ detailWater += split[m].split(":")[0] + "/";
|
|
|
}
|
|
|
- if (rcbRealPayStr.endsWith("/")) {
|
|
|
- rcbRealPayStr = rcbRealPayStr.substring(0, rcbRealPayStr.length() - 1);
|
|
|
+ if (detailWater.endsWith("/")) {
|
|
|
+ detailWater = detailWater.substring(0, detailWater.length() - 1);
|
|
|
}
|
|
|
- OrderReceiveTO orderReceiveTORCB = new OrderReceiveTO();
|
|
|
- orderReceiveTORCB.setCardNumber(cardNumber);
|
|
|
- payOrderReceiveVO1.setPayDetail(rcbRealPayStr);
|
|
|
- String[] rcbRealPaySplit = rcbRealPayStr.split("/");
|
|
|
- BigDecimal payAmountRCB = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- if (!rcbRealPaySplit[0].isEmpty()) {
|
|
|
- for (int i = 0; i < rcbRealPaySplit.length; i++) {
|
|
|
- String payAmountStr = rcbRealPaySplit[i].split(":")[1];
|
|
|
- payAmountRCB = payAmountRCB.add(new BigDecimal(payAmountStr).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ ccbStr = detailWater;
|
|
|
+ }
|
|
|
+ if (ccbStr != null) {
|
|
|
+ ccbStrArr = ccbStr.split("/");
|
|
|
+ }
|
|
|
+ List<String> ccbStrList = new ArrayList<>(Arrays.asList(ccbStrArr));
|
|
|
+ //建行实际支付的明细
|
|
|
+ String ccbRealPayStr = "";
|
|
|
+ //农商银行的支付明细
|
|
|
+ String[] rcbStrArr = new String[20];
|
|
|
+ if (rcbStr != null) {
|
|
|
+ rcbStrArr = rcbStr.split("/");
|
|
|
+ }
|
|
|
+ List<String> rcbStrList = new ArrayList<>(Arrays.asList(rcbStrArr));
|
|
|
+ //农商实际支付的明细
|
|
|
+ String rcbRealPayStr = "";
|
|
|
+ //实际收集的订单支付明细
|
|
|
+ String[] payDetailArr = payDetail.split("/");
|
|
|
+ String realDetailStr = "";
|
|
|
+ for (int i = 0; i < payDetailArr.length; i++) {
|
|
|
+ realDetailStr += payDetailArr[i].split(":")[0] + "/";
|
|
|
+ }
|
|
|
+ if (realDetailStr.equals("/")) {
|
|
|
+ realDetailStr = realDetailStr.substring(0, realDetailStr.length() - 1);
|
|
|
+ }
|
|
|
+ //无支付金额的缴费明细
|
|
|
+ String[] payDetailArrNotAmount = realDetailStr.split("/");
|
|
|
+ List<String> payDetailList = new ArrayList<>(Arrays.asList(payDetailArrNotAmount));
|
|
|
+
|
|
|
+ //提取本次缴费中需要交付于建设银行的明细
|
|
|
+
|
|
|
+ List<String> accountIdList = payDetailList.stream().filter(ccbStrList::contains).collect(Collectors.toList());
|
|
|
+
|
|
|
+ for (int i = 0; i < accountIdList.size(); i++) {
|
|
|
+ for (int j = 0; j < payDetailArr.length; j++) {
|
|
|
+ if (payDetailArr[j].contains(accountIdList.get(i))) {
|
|
|
+ ccbRealPayStr += payDetailArr[j] + "/";
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
+ if (ccbRealPayStr.endsWith("/")) {
|
|
|
+ ccbRealPayStr = ccbRealPayStr.substring(0, ccbRealPayStr.length() - 1);
|
|
|
+ }
|
|
|
|
|
|
- if (!payOrderReceiveVO1.getPayDetail().isEmpty()) {
|
|
|
- payOrderReceiveVO1.setPayOrderLoan("0");
|
|
|
- payOrderReceiveVO1.setNowRealPayAmount(payAmountRCB);
|
|
|
- payOrderReceiveVO1.setPayMethod("2");
|
|
|
- orderReceiveTORCB.setPayOrderReceiveVO(payOrderReceiveVO1);
|
|
|
- orderReceiveTOList.add(orderReceiveTORCB);
|
|
|
+ OrderReceiveTO orderReceiveTOCCB = new OrderReceiveTO();
|
|
|
+ orderReceiveTOCCB.setCardNumber(cardNumber);
|
|
|
+ payOrderReceiveVO.setPayDetail(ccbRealPayStr);
|
|
|
+ String[] ccbRealPaySplit = ccbRealPayStr.split("/");
|
|
|
+ BigDecimal payAmountCCB = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ if (!ccbRealPaySplit[0].isEmpty()) {
|
|
|
+ for (int i = 0; i < ccbRealPaySplit.length; i++) {
|
|
|
+ String payAmountStr = ccbRealPaySplit[i].split(":")[1];
|
|
|
+ payAmountCCB = payAmountCCB.add(new BigDecimal(payAmountStr).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
}
|
|
|
- } else {
|
|
|
- OrderReceiveTO orderReceiveTO = new OrderReceiveTO();
|
|
|
- //支付方式根据项目的设置交付于规定的项目银行账户
|
|
|
- String s = payItemController.queryPayItemByName(itemName);
|
|
|
- if (s.contains("建设银行")) {
|
|
|
- payOrderReceiveVO.setPayMethod("1");
|
|
|
- } else if (s.contains("农商银行")) {
|
|
|
- payOrderReceiveVO.setPayMethod("2");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!payOrderReceiveVO.getPayDetail().isEmpty()) {
|
|
|
+ if (!payOrderLoan.isEmpty()) {
|
|
|
+ payAmountCCB = payAmountCCB.subtract(new BigDecimal(payOrderLoan)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+ payOrderReceiveVO.setNowRealPayAmount(payAmountCCB);
|
|
|
|
|
|
+ //TODO
|
|
|
+// String bankCard = bankDetailController.queryBankByDeatilItem(itemName, ccbRealPayStr);
|
|
|
+// if (bankCard.contains("建设银行")) {
|
|
|
+// payOrderReceiveVO.setPayMethod("1");
|
|
|
+// }
|
|
|
+ payOrderReceiveVO.setPayMethod("1");
|
|
|
+
|
|
|
+
|
|
|
+ orderReceiveTOCCB.setPayOrderReceiveVO(payOrderReceiveVO);
|
|
|
+ orderReceiveTOList.add(orderReceiveTOCCB);
|
|
|
+ }
|
|
|
+//--------------------------------------------------------------- 生成农商银行的支付参数 ---------------------------------------------------
|
|
|
+ String payDetail1 = payOrderReceiveVO1.getPayDetail();
|
|
|
+ String[] payDetailArr1 = payDetail1.split("/");
|
|
|
+ String realDetailStr1 = "";
|
|
|
+ for (int i = 0; i < payDetailArr1.length; i++) {
|
|
|
+ realDetailStr1 += payDetailArr1[i].split(":")[0] + "/";
|
|
|
+ }
|
|
|
+ if (realDetailStr1.endsWith("/")) {
|
|
|
+ realDetailStr1 = realDetailStr1.substring(0, realDetailStr1.length() - 1);
|
|
|
+ }
|
|
|
+ //无支付金额的缴费明细
|
|
|
+ String[] payDetailArrNotAmount1 = realDetailStr1.split("/");
|
|
|
+ List<String> payDetailList1 = new ArrayList<>(Arrays.asList(payDetailArrNotAmount1));
|
|
|
+ //提取本次缴费中需要交付于农商银行的明细
|
|
|
+ List<String> accountIdList1 = payDetailList1.stream().filter(rcbStrList::contains).collect(Collectors.toList());
|
|
|
+
|
|
|
+ for (int i = 0; i < accountIdList1.size(); i++) {
|
|
|
+ for (int j = 0; j < payDetailArr1.length; j++) {
|
|
|
+ if (payDetailArr1[j].contains(accountIdList1.get(i))) {
|
|
|
+ rcbRealPayStr += payDetailArr1[j] + "/";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (rcbRealPayStr.endsWith("/")) {
|
|
|
+ rcbRealPayStr = rcbRealPayStr.substring(0, rcbRealPayStr.length() - 1);
|
|
|
+ }
|
|
|
+ OrderReceiveTO orderReceiveTORCB = new OrderReceiveTO();
|
|
|
+ orderReceiveTORCB.setCardNumber(cardNumber);
|
|
|
+ payOrderReceiveVO1.setPayDetail(rcbRealPayStr);
|
|
|
+ String[] rcbRealPaySplit = rcbRealPayStr.split("/");
|
|
|
+ BigDecimal payAmountRCB = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ if (!rcbRealPaySplit[0].isEmpty()) {
|
|
|
+ for (int i = 0; i < rcbRealPaySplit.length; i++) {
|
|
|
+ String payAmountStr = rcbRealPaySplit[i].split(":")[1];
|
|
|
+ payAmountRCB = payAmountRCB.add(new BigDecimal(payAmountStr).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
}
|
|
|
- orderReceiveTO.setPayOrderReceiveVO(payOrderReceiveVO);
|
|
|
- orderReceiveTO.setCardNumber(cardNumber);
|
|
|
- orderReceiveTOList.add(orderReceiveTO);
|
|
|
- }
|
|
|
- System.out.println(orderReceiveTOList);
|
|
|
-// orderReceiveTOList.forEach(orderList->{
|
|
|
-// String cardNumber1 = orderList.getCardNumber();
|
|
|
-// PayOrderReceiveVO payOrderReceiveVO2 = orderList.getPayOrderReceiveVO();
|
|
|
-// createOrder(cardNumber1, payOrderReceiveVO2);
|
|
|
-// });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!payOrderReceiveVO1.getPayDetail().isEmpty()) {
|
|
|
+ payOrderReceiveVO1.setPayOrderLoan("0");
|
|
|
+ payOrderReceiveVO1.setNowRealPayAmount(payAmountRCB);
|
|
|
+
|
|
|
+ //TODO
|
|
|
+// String bankCard = bankDetailController.queryBankByDeatilItem(itemName, ccbRealPayStr);
|
|
|
+// if (bankCard.contains("农商银行")) {
|
|
|
+// payOrderReceiveVO1.setPayMethod("2");
|
|
|
+// }
|
|
|
+ payOrderReceiveVO1.setPayMethod("2");
|
|
|
+
|
|
|
+ orderReceiveTORCB.setPayOrderReceiveVO(payOrderReceiveVO1);
|
|
|
+ orderReceiveTOList.add(orderReceiveTORCB);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
return orderReceiveTOList;
|
|
|
}
|
|
|
|
|
|
@@ -314,7 +385,10 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
String cardNumber1 = orderReceiveTO.getCardNumber();
|
|
|
PayOrderReceiveVO payOrderReceiveVO1 = orderReceiveTO.getPayOrderReceiveVO();
|
|
|
String studentNo = payOrderReceiveVO1.getStudentNo();
|
|
|
- String drom = payOrderReceiveVO1.getDrom();
|
|
|
+ String dorm = payOrderReceiveVO1.getDorm();
|
|
|
+ if (dorm == null || dorm.equals("")) {
|
|
|
+ dorm = "";
|
|
|
+ }
|
|
|
String itemName = payOrderReceiveVO1.getItemName();
|
|
|
String payDetial = payOrderReceiveVO1.getPayDetail();
|
|
|
String payYear = payOrderReceiveVO1.getPayYear();
|
|
|
@@ -324,11 +398,24 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
String payOrderLoan = payOrderReceiveVO1.getPayOrderLoan();
|
|
|
payOrderLoan = payOrderLoan.equals("") == true ? "0" : payOrderLoan;
|
|
|
BigDecimal orderLoan = new BigDecimal(payOrderLoan).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+
|
|
|
+
|
|
|
// 查询用户是否已经缴费
|
|
|
- boolean alreadyPay = isAlreadyPay(studentNo, itemName, payYear, payOrderReceiveVO1.getNotPaySize(), payOrderReceiveVO1.getPayMethod(), payDetial);
|
|
|
- if (alreadyPay) {
|
|
|
- throw new RRException(BizCodeEnume.DATA_IS_EXIST, "学号【" + studentNo + "】已缴费,请勿重复缴费");
|
|
|
+ if (itemName.equals("水费缴纳")) {
|
|
|
+ // 判断水费是否缴纳
|
|
|
+ boolean alreadyPay = isAlreadyPayWater(dorm, itemName, payYear);
|
|
|
+ if (alreadyPay) {
|
|
|
+ throw new RRException(BizCodeEnume.DATA_IS_EXIST, "宿舍【" + dorm + "】已缴费,请勿重复缴费");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 判断除水费外其他费用是否缴纳
|
|
|
+ boolean alreadyPay = isAlreadyPay(studentNo, itemName, payYear, payOrderReceiveVO1.getNotPaySize(), payOrderReceiveVO1.getPayMethod(), payDetial);
|
|
|
+ if (alreadyPay) {
|
|
|
+ throw new RRException(BizCodeEnume.DATA_IS_EXIST, "学号【" + studentNo + "】已缴费,请勿重复缴费");
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
PayableInfoEntity payableInfo = null;
|
|
|
PayableInfoWaterEntity payableInfoWater = null;
|
|
|
String grade = "";
|
|
|
@@ -361,17 +448,31 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
// 获取当前支付方式
|
|
|
String currentPayMethod = payMethodSettingService.getCurrentPayMethod();
|
|
|
|
|
|
- QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
|
|
|
- wrapper.eq("payer_identify", cardNumber1);
|
|
|
- wrapper.eq("pay_for_identify", studentNo);
|
|
|
- wrapper.eq("pay_item", itemName);
|
|
|
- wrapper.eq("pay_detail", payDetial);
|
|
|
- wrapper.in("pay_method", "1", "2");
|
|
|
- wrapper.eq(StringUtils.hasText(payYear), "pay_year", payYear);
|
|
|
- wrapper.eq("not_pay_size", payOrderReceiveVO1.getNotPaySize());
|
|
|
- wrapper.orderByDesc("create_time");
|
|
|
- wrapper.last("limit 1");
|
|
|
- PayOrderEntity payOrderEntity = this.getOne(wrapper);
|
|
|
+
|
|
|
+ PayOrderEntity payOrderEntity = new PayOrderEntity();
|
|
|
+ if (itemName.equals("水费缴纳")) {
|
|
|
+ QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("dorm", dorm);
|
|
|
+ wrapper.eq("pay_item", itemName);
|
|
|
+ wrapper.eq(StringUtils.hasText(payYear), "pay_year", payYear);
|
|
|
+ wrapper.in("pay_method", "1", "2");
|
|
|
+ wrapper.orderByDesc("create_time");
|
|
|
+ wrapper.last("limit 1");
|
|
|
+ payOrderEntity = this.getOne(wrapper);
|
|
|
+ } else {
|
|
|
+ QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("payer_identify", cardNumber1);
|
|
|
+ wrapper.eq("pay_for_identify", studentNo);
|
|
|
+ wrapper.eq("pay_item", itemName);
|
|
|
+ wrapper.eq("pay_detail", payDetial);
|
|
|
+ wrapper.in("pay_method", "1", "2");
|
|
|
+ wrapper.eq(StringUtils.hasText(payYear), "pay_year", payYear);
|
|
|
+ wrapper.eq("not_pay_size", payOrderReceiveVO1.getNotPaySize());
|
|
|
+ wrapper.orderByDesc("create_time");
|
|
|
+ wrapper.last("limit 1");
|
|
|
+ payOrderEntity = this.getOne(wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
// 订单已经存在超过30分钟没有支付,直接删除该订单
|
|
|
if (payOrderEntity != null && PayStatus.NON_PAY.getCode().equals(payOrderEntity.getStatus())) {
|
|
|
@@ -410,25 +511,25 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
payOrderEntity.setPayYear(payYear);
|
|
|
payOrderEntity.setPayDetail(payDetial);
|
|
|
|
|
|
- payOrderEntity.setOrderNotice(orderNotice);
|
|
|
payOrderEntity.setExceptType("1");
|
|
|
- payOrderEntity.setPayBank(payItemController.queryPayItemByName(itemName));
|
|
|
- //计算助学贷款相关的费用 第一次缴费使用助学贷款
|
|
|
-// String payOrderLoan = "0";
|
|
|
-// if (m == 0) {
|
|
|
-// payOrderLoan = payOrderReceiveVO1.getPayOrderLoan();
|
|
|
-// }
|
|
|
-// payOrderLoan = payOrderLoan.equals("") ? "0" : payOrderLoan;
|
|
|
-// --- BigDecimal orderLoan = BigDecimal.ZERO;
|
|
|
|
|
|
+ // String bankCard = bankDetailController.queryBankByDeatilItem(itemName, payOrderEntity.getPayDetail());
|
|
|
+
|
|
|
+ List<BankDetailListVO> bankDetailListVOS = bankItemDetailController.queryByItem(itemName);
|
|
|
+
|
|
|
+ for (int a = 0; a < bankDetailListVOS.size(); a++) {
|
|
|
+ Integer bankId = bankDetailListVOS.get(a).getBankId();
|
|
|
+ Bank bank = bankService.getById(bankId);
|
|
|
+ if (payOrderEntity.getPayMethod().equals("1")) {
|
|
|
+ payOrderEntity.setPayBank(bank.getBankStoreName() + " (" + bank.getBankCardNumber() + ")");
|
|
|
+ }
|
|
|
+ if (payOrderEntity.getPayMethod().equals("2")) {
|
|
|
+ payOrderEntity.setPayBank(bank.getBankStoreName() + " (" + bank.getBankCardNumber() + ")");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // payOrderEntity.setPayBank(bankCard);
|
|
|
|
|
|
-// if (StringUtils.hasText(payOrderLoan)) {
|
|
|
-// orderLoan = orderLoan.add(new BigDecimal(payOrderLoan)).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
-// }
|
|
|
|
|
|
-// if (StringUtils.hasText(payOrderLoan)) {
|
|
|
-// orderLoan = orderLoan.add(new BigDecimal(payOrderLoan)).setScale(2, BigDecimal.ROUND_UP);
|
|
|
-// }
|
|
|
payOrderEntity.setPayOrderLoan(orderLoan);
|
|
|
payOrderEntity.setPayMethod(payOrderReceiveVO1.getPayMethod());
|
|
|
|
|
|
@@ -436,7 +537,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
// 支付金额、被支付用户信息
|
|
|
if (itemName.equals("水费缴纳")) {
|
|
|
//更新对应项目的缴费参数
|
|
|
- payOrderEntity.setDrom(drom.isEmpty() ? "" : drom);
|
|
|
+ payOrderEntity.setDorm(dorm);
|
|
|
payOrderEntity.setRealPayAmount(payableInfoWater.getRealPayAmount());
|
|
|
//payOrderEntity.setNowPayAmount(payableInfoWater.getRealPayAmount());
|
|
|
payOrderEntity.setStudentName(payableInfoWater.getStudentName());
|
|
|
@@ -446,15 +547,6 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
// payOrderEntity.setNowPayAmount(payInfoDetailVO.getPayDetailAmount());
|
|
|
payOrderEntity.setStudentName(payableInfo.getStudentName());
|
|
|
payOrderEntity.setClassName(payableInfo.getClassName());
|
|
|
- //更新缴费名单的缴费明细
|
|
|
- if (StringUtils.hasText(payableInfo.getPayDetail())) {
|
|
|
- payableInfo.setPayDetail(payableInfo.getPayDetail() + "/" + payDetial);
|
|
|
- } else {
|
|
|
- payableInfo.setPayDetail(payDetial);
|
|
|
- }
|
|
|
- payableInfo.setNotPayDetail(payOrderEntity.getNotPayDetail());
|
|
|
- payableInfo.setNotPaySize(payOrderReceiveVO1.getNotPaySize());
|
|
|
- // payableInfoService.updateById(payableInfo);
|
|
|
|
|
|
}
|
|
|
BigDecimal parentNowPayDetailAmount = BigDecimal.ZERO;
|
|
|
@@ -467,27 +559,14 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
wrapper1.eq("is_parent", "1");
|
|
|
wrapper1.eq(StringUtils.hasText(payYear), "pay_year", payYear);
|
|
|
wrapper1.in("status", "2", "3");
|
|
|
-// wrapper1.orderByAsc("create_time");
|
|
|
-// wrapper1.last("limit 1");
|
|
|
List<PayOrderEntity> payOrderList = this.list(wrapper1);
|
|
|
|
|
|
- // List<PayOrderEntity> payOrderList = queryAllOrderByParent(one.getOrderNo(), new PageParam()).getList();
|
|
|
- System.out.println(payInfoDetailVO);
|
|
|
for (int i = 0; i < payOrderList.size(); i++) {
|
|
|
-// System.out.println(payOrderList.get(i));
|
|
|
parentOrderLone = parentOrderLone.add(payOrderList.get(i).getPayOrderLoan()).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
parentNowPayDetailAmount = parentNowPayDetailAmount.add(payOrderList.get(i).getNowPayAmount()).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
|
|
|
-// System.out.println(parentOrderLone);
|
|
|
-// // parentNowPayDetailAmount = parentNowPayDetailAmount.add(parentOrderLone);
|
|
|
-// System.out.println(parentNowPayDetailAmount);
|
|
|
-// System.out.println(payInfoDetailVO+"------------1111111111111111111111");
|
|
|
BigDecimal notPayDetailAmount = payInfoDetailVO.getNotPayDetailAmount();
|
|
|
- // parentOrderLone = one.getPayOrderLoan().setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- // payOrderEntity.setParentOrder(one.getOrderNo());
|
|
|
- // parentNowPayDetailAmount = (parentNowPayDetailAmount.add(one.getNowPayAmount())).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- // System.out.println(payOrderEntity.getRealPayAmount()+ " --- "+parentNowPayDetailAmount +" "+notPayDetailAmount);
|
|
|
payOrderEntity.setNowPayAmount(
|
|
|
payOrderEntity.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)
|
|
|
.subtract(parentNowPayDetailAmount).setScale(2, BigDecimal.ROUND_HALF_UP)
|
|
|
@@ -509,37 +588,24 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
if (itemName.equals("水费缴纳")) {
|
|
|
flag = payOrderEntity.getNowPayAmount().compareTo(payableInfoWater.getRealPayAmount()) == 0 ? Boolean.TRUE : Boolean.FALSE;
|
|
|
} else {
|
|
|
- // System.out.println(payOrderReceiveVO);
|
|
|
- System.out.println(payInfoDetailVO);
|
|
|
- // System.out.println(payOrderEntity);
|
|
|
- // System.out.println(payOrderEntity.getPayOrderLoan()+" getPayOrderLoan");
|
|
|
- // BigDecimal aBoolean = payOrderEntity.getNowPayAmount().add(payOrderEntity.getPayOrderLoan()).add(payInfoDetailVO.getNotPayDetailAmount());
|
|
|
- System.out.println(payOrderEntity.getNowPayAmount());
|
|
|
- System.out.println(payInfoDetailVO.getNotPayDetailAmount());
|
|
|
orderLoan = orderLoan.add(parentOrderLone);
|
|
|
BigDecimal nowPayAllMount = payOrderEntity.getNowPayAmount().add(payInfoDetailVO.getNotPayDetailAmount()).add(parentNowPayDetailAmount).add(orderLoan);
|
|
|
|
|
|
- // BigDecimal bBoolean = (payableInfo.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)).subtract(parentOrderLone).subtract(parentNowPayDetailAmount);
|
|
|
- // BigDecimal bBoolean = (payableInfo.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)).subtract(parentOrderLone).subtract(parentNowPayDetailAmount);
|
|
|
BigDecimal realAmount = (payableInfo.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
flag = nowPayAllMount.compareTo(realAmount) == 0 ? Boolean.TRUE : Boolean.FALSE;
|
|
|
- //i = payOrderEntity.getNowPayAmount().add(payOrderEntity.getPayOrderLoan()).compareTo(payableInfo.getRealPayAmount());
|
|
|
-// System.out.println(payOrderEntity.getNowPayAmount()+" payOrderEntity");
|
|
|
- System.out.println(nowPayAllMount + "---------- " + realAmount);
|
|
|
-// System.out.println(2+" "+flag);
|
|
|
- System.out.println(2 + " " + flag);
|
|
|
+
|
|
|
}
|
|
|
- System.out.println(realPayAmount);
|
|
|
- System.out.println(payOrderEntity.getNowPayAmount());
|
|
|
|
|
|
+ if (Double.parseDouble(String.valueOf(payOrderEntity.getNowPayAmount())) < 0.00 ) {
|
|
|
+ flag = Boolean.FALSE;
|
|
|
+ }
|
|
|
if (!(realPayAmount.compareTo(payOrderEntity.getNowPayAmount()) == 0)) {
|
|
|
flag = Boolean.FALSE;
|
|
|
- System.out.println(3 + " " + flag);
|
|
|
}
|
|
|
if (!flag) {
|
|
|
throw new RRException(BizCodeEnume.PAY_AMOUNT_ERROR, "支付金额异常。");
|
|
|
}
|
|
|
-
|
|
|
+ payOrderEntity.setOrderNotice(orderNotice);
|
|
|
/* 首次订单支付成功之后如果还有未支付的 状态为 3 无未支付的状态为 2
|
|
|
当所有未支付的明细完成缴费之后 首单状态变为 2 状态:支付成功且完成所有缴费
|
|
|
|
|
|
@@ -550,10 +616,6 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
|
|
|
|
|
|
} else {
|
|
|
-// if (!payOrderEntity.getPayMethod().equals(currentPayMethod)) {
|
|
|
-// payOrderEntity.setPayMethod(currentPayMethod);
|
|
|
-// this.updateById(payOrderEntity);
|
|
|
-// }
|
|
|
createOrderResultVO.setMsg("订单早已创建");
|
|
|
}
|
|
|
createOrderResultVO.setAmount(payOrderEntity.getNowPayAmount());
|
|
|
@@ -594,8 +656,6 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
@Override
|
|
|
public OrderStatusVO queryOrderStatus(String cardNumber, String orderNo) {
|
|
|
OrderStatusVO orderStatusVO = queryOrderStatus(orderNo);
|
|
|
- System.out.println(cardNumber+" -----------cardNumber------------- ");
|
|
|
- System.out.println(orderStatusVO.getPayerId()+" -----------orderStatusVO.getPayerId()------------- ");
|
|
|
if (!orderStatusVO.getPayerId().equals(cardNumber)) {
|
|
|
throw new RRException(BizCodeEnume.NO_PERMISSION);
|
|
|
}
|
|
|
@@ -695,14 +755,32 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
@Override
|
|
|
public void exportOrderTxt(HttpServletResponse response, PayOrderQueryTO queryTO) throws IOException {
|
|
|
|
|
|
+// QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
|
|
|
+//
|
|
|
+// commonWrapper(wrapper, queryTO);
|
|
|
+// if (queryTO.getDownIds() != null && queryTO.getDownIds().size() > 0) {
|
|
|
+// wrapper.in("order_no", queryTO.getDownIds());
|
|
|
+// }
|
|
|
+// wrapper.orderByDesc("finish_time").orderByDesc("create_time").orderByAsc("pay_for_identify");
|
|
|
+// List<PayOrderEntity> parOrder = this.list(wrapper);
|
|
|
+
|
|
|
QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
|
|
|
|
|
|
commonWrapper(wrapper, queryTO);
|
|
|
if (queryTO.getDownIds() != null && queryTO.getDownIds().size() > 0) {
|
|
|
wrapper.in("order_no", queryTO.getDownIds());
|
|
|
}
|
|
|
+ if (StringUtils.hasText(queryTO.getPayStatus())) {
|
|
|
+ if (!(queryTO.getPayStatus().isEmpty()) && !(queryTO.getPayStatus().equals("1"))) {
|
|
|
+ wrapper.in("status", "2", "3");
|
|
|
+ } else {
|
|
|
+ wrapper.eq("status", "1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
wrapper.orderByDesc("finish_time").orderByDesc("create_time").orderByAsc("pay_for_identify");
|
|
|
- List<PayOrderEntity> parOrder = this.list(wrapper);
|
|
|
+ List<PayOrderEntity> parOrder = this.list(wrapper);
|
|
|
+
|
|
|
String outPutStr = "";
|
|
|
if (parOrder.size() > 0) {
|
|
|
JSONArray jsonArray = new JSONArray();
|
|
|
@@ -739,6 +817,14 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
if (queryTO.getDownIds() != null && queryTO.getDownIds().size() > 0) {
|
|
|
wrapper.in("order_no", queryTO.getDownIds());
|
|
|
}
|
|
|
+ if (StringUtils.hasText(queryTO.getPayStatus())) {
|
|
|
+ if (!(queryTO.getPayStatus().isEmpty()) && !(queryTO.getPayStatus().equals("1"))) {
|
|
|
+ wrapper.in("status", "2", "3");
|
|
|
+ } else {
|
|
|
+ wrapper.eq("status", "1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
wrapper.orderByDesc("finish_time").orderByDesc("create_time").orderByAsc("pay_for_identify");
|
|
|
List<PayOrderEntity> parOrder = this.list(wrapper);
|
|
|
String fileName = "";
|
|
|
@@ -794,6 +880,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
private void commonWrapper(QueryWrapper<PayOrderEntity> wrapper, PayOrderQueryTO queryTO) {
|
|
|
//wrapper.eq(StringUtils.hasText(queryTO.getPayStatus()), "status", queryTO.getPayStatus());
|
|
|
wrapper.eq(StringUtils.hasText(queryTO.getPayMethod()), "pay_method", queryTO.getPayMethod());
|
|
|
+ wrapper.eq(StringUtils.hasText(queryTO.getPayStatus()), "status", queryTO.getPayStatus());
|
|
|
String keyword = queryTO.getKeyword();
|
|
|
if (StringUtils.hasText(keyword)) {
|
|
|
wrapper.and(w -> w.like("student_name", keyword)
|
|
|
@@ -826,28 +913,34 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
|
|
|
QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
|
|
|
commonWrapper(wrapper, queryTO);
|
|
|
|
|
|
-
|
|
|
- wrapper.eq(StringUtils.hasText(queryTO.getPayYear()), "pay_year", queryTO.getPayYear())
|
|
|
- .eq(StringUtils.hasText(queryTO.getItemName()), "pay_item", queryTO.getItemName())
|
|
|
- .eq(StringUtils.hasText(queryTO.getPayStatus()),"status", queryTO.getPayStatus())
|
|
|
- .select("ifnull(sum(real_pay_amount), 0) as total,count(id) as count");
|
|
|
- List<PayOrderEntity> list = this.payOrderService.list(wrapper);
|
|
|
-
|
|
|
- if (list.size() > 0) {
|
|
|
- Map<String, Object> resultMap = this.getMap(wrapper);
|
|
|
- String count = String.valueOf(resultMap.get("count"));
|
|
|
- return new BigDecimal(String.valueOf(resultMap.get("total"))).setScale(2, BigDecimal.ROUND_HALF_UP) + "-" + count;
|
|
|
- } else {
|
|
|
- return "0-0";
|
|
|
+ if (StringUtils.hasText(queryTO.getPayStatus())) {
|
|
|
+ if (queryTO.getPayStatus().endsWith("2")) {
|
|
|
+ wrapper.eq(StringUtils.hasText(queryTO.getPayYear()), "pay_year", queryTO.getPayYear())
|
|
|
+ .eq(StringUtils.hasText(queryTO.getItemName()), "pay_item", queryTO.getItemName())
|
|
|
+ .eq(StringUtils.hasText(queryTO.getPayStatus()), "status", queryTO.getPayStatus())
|
|
|
+ .select("ifnull(sum(real_pay_amount), 0) as total, ifnull(sum(pay_order_loan),0) as loan,count(id) as count");
|
|
|
+ List<PayOrderEntity> list = this.payOrderService.list(wrapper);
|
|
|
+
|
|
|
+ if (list.size() > 0) {
|
|
|
+ Map<String, Object> resultMap = this.getMap(wrapper);
|
|
|
+ String count = String.valueOf(resultMap.get("count"));
|
|
|
+ BigDecimal realPayAmount = new BigDecimal(String.valueOf(resultMap.get("total"))).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal orderLoan = new BigDecimal(String.valueOf(resultMap.get("loan"))).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal nowAmount = realPayAmount.subtract(orderLoan).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ return nowAmount + "-" + count;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ return "0-0";
|
|
|
}
|
|
|
|
|
|
- public PageUtils queryAllOrder(String cardNumber, PageParam pageParam, String status, String itemName, String payYear) {
|
|
|
+ public PageUtils queryAllOrder(String cardNumber, PageParam pageParam, String status, String itemName, String
|
|
|
+ payYear) {
|
|
|
QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
|
|
|
wrapper.eq("pay_for_identify", cardNumber)
|
|
|
.eq("status", status)
|
|
|
- .eq(StringUtils.hasText(itemName),"pay_item", itemName)
|
|
|
- .eq(StringUtils.hasText(payYear),"pay_year", payYear);
|
|
|
+ .eq(StringUtils.hasText(itemName), "pay_item", itemName)
|
|
|
+ .eq(StringUtils.hasText(payYear), "pay_year", payYear);
|
|
|
|
|
|
|
|
|
IPage<PayOrderEntity> page = this.page(
|