From b6949a31464f2ca4e790affd467dcfc511223ba2 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期三, 05 四月 2023 23:56:00 +0800
Subject: [PATCH] 优化交费 -- 加入收银员功能
---
service-fee/src/main/java/com/java110/fee/cmd/fee/PayBatchFeeCmd.java | 45 ++++++++++++++++++++++++++++++++++++++-------
1 files changed, 38 insertions(+), 7 deletions(-)
diff --git a/service-fee/src/main/java/com/java110/fee/cmd/fee/PayBatchFeeCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/fee/PayBatchFeeCmd.java
index d24aa66..1d653e2 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/fee/PayBatchFeeCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/fee/PayBatchFeeCmd.java
@@ -8,6 +8,7 @@
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.core.factory.Java110TransactionalFactory;
import com.java110.core.log.LoggerFactory;
import com.java110.core.smo.IComputeFeeSMO;
import com.java110.dto.fee.FeeAttrDto;
@@ -18,16 +19,18 @@
import com.java110.dto.parking.ParkingSpaceDto;
import com.java110.dto.repair.RepairDto;
import com.java110.dto.repair.RepairUserDto;
+import com.java110.dto.user.UserDto;
import com.java110.intf.community.*;
import com.java110.intf.fee.*;
import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.intf.user.IUserV1InnerServiceSMO;
import com.java110.po.car.OwnerCarPo;
import com.java110.po.fee.PayFeeDetailPo;
import com.java110.po.fee.PayFeePo;
import com.java110.po.owner.RepairPoolPo;
import com.java110.po.owner.RepairUserPo;
import com.java110.utils.constant.FeeFlagTypeConstant;
-import com.java110.utils.constant.FeeStateConstant;
+import com.java110.utils.constant.FeeConfigConstant;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.exception.CmdException;
import com.java110.utils.exception.ListenerExecuteException;
@@ -97,6 +100,9 @@
@Autowired
private IComputeFeeSMO computeFeeSMOImpl;
+ @Autowired
+ private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
@Override
public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
@@ -151,13 +157,20 @@
@Override
@Java110Transactional
public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+ String userId = cmdDataFlowContext.getReqHeaders().get("user-id");
+ UserDto userDto = new UserDto();
+ userDto.setUserId(userId);
+ List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+ Assert.listOnlyOne(userDtos, "鐢ㄦ埛鏈櫥褰�");
+
JSONArray fees = reqJson.getJSONArray("fees");
JSONObject paramInObj = null;
JSONArray datas = new JSONArray();
for (int feeIndex = 0; feeIndex < fees.size(); feeIndex++) {
try {
paramInObj = fees.getJSONObject(feeIndex);
- doDeal(paramInObj, reqJson.getString("communityId"), cmdDataFlowContext);
+ doDeal(paramInObj, reqJson.getString("communityId"), cmdDataFlowContext, userDtos.get(0));
} catch (Exception e) {
logger.error("澶勭悊寮傚父", e);
throw new CmdException(e.getMessage());
@@ -168,9 +181,11 @@
cmdDataFlowContext.setResponseEntity(ResultVo.createResponseEntity(datas));
}
- private void doDeal(JSONObject paramObj, String communityId, ICmdDataFlowContext cmdDataFlowContext) throws Exception {
+ private void doDeal(JSONObject paramObj, String communityId, ICmdDataFlowContext cmdDataFlowContext, UserDto userDto) throws Exception {
paramObj.put("communityId", communityId);
- //娣诲姞鍗曞厓淇℃伅
+ //鑾峰彇璁㈠崟ID
+ String oId = Java110TransactionalFactory.getOId();
+
//寮�濮嬮攣浠g爜
PayFeePo payFeePo = null;
String requestId = DistributedLock.getLockUUID();
@@ -179,6 +194,12 @@
DistributedLock.waitGetDistributedLock(key, requestId);
JSONObject feeDetail = addFeeDetail(paramObj);
PayFeeDetailPo payFeeDetailPo = BeanConvertUtil.covertBean(feeDetail, PayFeeDetailPo.class);
+ if (StringUtil.isEmpty(oId)) {
+ oId = payFeeDetailPo.getDetailId();
+ }
+ payFeeDetailPo.setPayOrderId(oId);
+ payFeeDetailPo.setCashierId(userDto.getUserId());
+ payFeeDetailPo.setCashierName(userDto.getName());
int flag = payFeeDetailNewV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetailPo);
if (flag < 1) {
throw new CmdException("缂磋垂澶辫触");
@@ -323,8 +344,18 @@
throw new IllegalArgumentException("杞︿綅宸茶浣跨敤锛屼笉鑳藉啀缂磋垂锛�");
}
}
+
+ Calendar endTimeCalendar = null;
//杞︿綅璐圭敤缁
for (OwnerCarDto tmpOwnerCarDto : ownerCarDtos) {
+ //鍚庝粯璐� 鎴栬�呬俊鐢ㄦ湡杞﹁締 鍔犱竴涓湀
+ if (FeeConfigDto.PAYMENT_CD_AFTER.equals(feeInfo.getPaymentCd())
+ || OwnerCarDto.CAR_TYPE_CREDIT.equals(tmpOwnerCarDto.getCarType())) {
+ endTimeCalendar = Calendar.getInstance();
+ endTimeCalendar.setTime(feeEndTime);
+ endTimeCalendar.add(Calendar.MONTH, 1);
+ feeEndTime = endTimeCalendar.getTime();
+ }
if (tmpOwnerCarDto.getEndTime().getTime() >= feeEndTime.getTime()) {
continue;
}
@@ -402,11 +433,11 @@
}
feeInfo.setEndTime(endCalender.getTime());
Date maxEndTime = feeInfo.getDeadlineTime();
- if(FeeDto.FEE_FLAG_CYCLE.equals(feeInfo.getFeeFlag())){
+ if (FeeDto.FEE_FLAG_CYCLE.equals(feeInfo.getFeeFlag())) {
maxEndTime = feeInfo.getConfigEndTime();
}
//鍒ゆ柇 缁撴潫鏃堕棿 鏄惁澶т簬 璐圭敤椤� 缁撴潫鏃堕棿锛岃繖閲� 瀹归敊涓�涓嬶紝濡傛灉 璐圭敤缁撴潫鏃堕棿澶т簬 璐圭敤椤圭粨鏉熸椂闂� 30澶� 璧版姤閿� 灞炰簬澶氱即璐�
- if(maxEndTime != null) {
+ if (maxEndTime != null) {
if (feeInfo.getEndTime().getTime() - maxEndTime.getTime() > 30 * 24 * 60 * 60 * 1000L) {
throw new IllegalArgumentException("缂磋垂瓒呰繃浜� 璐圭敤椤圭粨鏉熸椂闂�");
}
@@ -432,7 +463,7 @@
calendar.add(Calendar.DAY_OF_MONTH, -5);
maxEndTime = calendar.getTime();
if (feeInfo.getEndTime().after(maxEndTime)) {
- businessFee.put("state", FeeStateConstant.END);
+ businessFee.put("state", FeeConfigConstant.END);
businessFee.put("endTime", maxEndTime);
}
}
--
Gitblit v1.8.0