From e20c58a63d3827d9c55cd5f387568fb0916b9590 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期五, 17 三月 2023 23:37:12 +0800
Subject: [PATCH] Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity
---
service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarPaymentCmd.java | 195 ++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 184 insertions(+), 11 deletions(-)
diff --git a/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarPaymentCmd.java b/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarPaymentCmd.java
index 72ab936..e8f2e25 100644
--- a/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarPaymentCmd.java
+++ b/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarPaymentCmd.java
@@ -7,10 +7,17 @@
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.CommunityMemberDto;
+import com.java110.dto.carInoutPayment.CarInoutPaymentDto;
import com.java110.dto.fee.FeeAttrDto;
+import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.fee.FeeDetailDto;
import com.java110.dto.fee.FeeDto;
import com.java110.dto.machine.CarInoutDto;
import com.java110.dto.machine.MachineDto;
+import com.java110.dto.owner.OwnerCarDto;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigDto;
import com.java110.intf.common.ICarInoutPaymentV1InnerServiceSMO;
import com.java110.intf.common.ICarInoutV1InnerServiceSMO;
import com.java110.intf.common.IMachineInnerServiceSMO;
@@ -19,17 +26,22 @@
import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
import com.java110.intf.fee.IFeeInnerServiceSMO;
import com.java110.intf.fee.ITempCarFeeConfigInnerServiceSMO;
+import com.java110.intf.user.IBuildingOwnerV1InnerServiceSMO;
import com.java110.intf.user.IOwnerCarInnerServiceSMO;
import com.java110.intf.user.IOwnerCarV1InnerServiceSMO;
import com.java110.po.car.CarInoutPo;
import com.java110.po.carInoutPayment.CarInoutPaymentPo;
+import com.java110.po.fee.FeeAttrPo;
import com.java110.po.fee.PayFeeDetailPo;
import com.java110.po.fee.PayFeePo;
import com.java110.utils.exception.CmdException;
+import com.java110.utils.lock.DistributedLock;
import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -45,6 +57,7 @@
@Java110Cmd(serviceCode = "machineTranslate.machineUploadCarPaymentCmd")
public class MachineUploadCarPaymentCmd extends Cmd {
+ public static final String TEMP_CAR_OWNER = "涓存椂杞﹁溅涓�";
@Autowired
private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
@@ -75,6 +88,9 @@
@Autowired
private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
+
+ @Autowired
+ private IBuildingOwnerV1InnerServiceSMO buildingOwnerV1InnerServiceSMOImpl;
/**
* data.put("carNum", carInoutDto.getCarNum());
@@ -117,6 +133,7 @@
carInoutDto.setPaId(machineDto.getLocationObjId());
carInoutDto.setStates(new String[]{
CarInoutDto.STATE_IN,
+ CarInoutDto.STATE_PAY,
CarInoutDto.STATE_REPAY
});
List<CarInoutDto> carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(carInoutDto);
@@ -140,19 +157,85 @@
throw new CmdException("鏇存柊璐圭敤澶辫触");
}
- CarInoutPo carInoutPo = new CarInoutPo();
- carInoutPo.setPaId(carInoutDtos.get(0).getPaId());
- carInoutPo.setInoutId(carInoutDtos.get(0).getInoutId());
- carInoutPo.setCommunityId(carInoutDtos.get(0).getCommunityId());
- carInoutPo.setState(CarInoutDto.STATE_PAY);
- flag = carInoutV1InnerServiceSMOImpl.updateCarInout(carInoutPo);
+ CarInoutPo carInoutPo = updateCarInoutState(reqJson,machineDto,carInoutDtos.get(0));
- if (flag < 1) {
- throw new CmdException("鏇存柊鍑哄満鏃堕棿澶辫触");
+ //濡傛灉鏈夎垂鐢� 鍒欑即璐�
+ boolean hasFee = hasFeeAndPayFee(carInoutPo, carInoutPaymentPo);
+
+ double realCharge = Double.parseDouble(carInoutPaymentPo.getRealCharge());
+
+ //鏈夎垂鐢� 鎴栬�� 缂磋垂涓�0 鏃剁粨鏉�
+ if (hasFee || realCharge == 0) {
+ return;
}
- //缂磋垂
+ OwnerCarDto ownerCarDto = new OwnerCarDto();
+ ownerCarDto.setCarNum(reqJson.getString("carNum"));
+ ownerCarDto.setCommunityId(reqJson.getString("communityId"));
+ ownerCarDto.setCarType(OwnerCarDto.CAR_TYPE_TEMP);
+ List<OwnerCarDto> ownerCarDtos = ownerCarV1InnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
+
+ if (ownerCarDtos == null || ownerCarDtos.size() < 1) {
+ return;
+ }
+
+ // 鍒ゆ柇鏄惁瀛樺湪 涓存椂杞� 铏氭嫙涓氫富
+ OwnerDto ownerDto = new OwnerDto();
+ ownerDto.setCommunityId(reqJson.getString("communityId"));
+ ownerDto.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_OWNER);
+ ownerDto.setOwnerFlag(OwnerDto.OWNER_FLAG_FALSE);
+ ownerDto.setName(TEMP_CAR_OWNER);
+ List<OwnerDto> ownerDtos = buildingOwnerV1InnerServiceSMOImpl.queryBuildingOwners(ownerDto);
+ if (ownerDtos == null || ownerDtos.size() < 1) {
+ return;
+ }
+ JSONObject paramIn = new JSONObject();
+ paramIn.put("inTime", carInoutDtos.get(0).getInTime());
+ paramIn.put("carNum", reqJson.getString("carNum"));
+ paramIn.put("carId", ownerCarDtos.get(0).getCarId());
+ paramIn.put("communityId", carInoutDtos.get(0).getCommunityId());
+ paramIn.put("inoutId", carInoutDtos.get(0).getInoutId());
+ paramIn.put("ownerId", ownerDtos.get(0).getMemberId());
+ saveTempCarFee(paramIn, machineDto, carInoutDtos.get(0));
+
+ //鍐嶅幓缂磋垂
hasFeeAndPayFee(carInoutPo, carInoutPaymentPo);
+ }
+
+ private CarInoutPo updateCarInoutState(JSONObject reqJson,MachineDto machineDto,CarInoutDto carInoutDto) {
+ int flag;
+
+ String requestId = DistributedLock.getLockUUID();
+ String key = "updateInoutState_" + carInoutDto.getInoutId();
+ try {
+ DistributedLock.waitGetDistributedLock(key, requestId);
+
+ CarInoutDto newCarInoutDto = new CarInoutDto();
+ newCarInoutDto.setCommunityId(reqJson.getString("communityId"));
+ newCarInoutDto.setCarNum(reqJson.getString("carNum"));
+ newCarInoutDto.setPaId(machineDto.getLocationObjId());
+ newCarInoutDto.setStates(new String[]{
+ CarInoutDto.STATE_IN,
+ CarInoutDto.STATE_REPAY
+ });
+ List<CarInoutDto> carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(newCarInoutDto);
+ if(carInoutDtos == null || carInoutDtos.size()<1){
+ return BeanConvertUtil.covertBean(carInoutDto,CarInoutPo.class);
+ }
+ CarInoutPo carInoutPo = new CarInoutPo();
+ carInoutPo.setInoutId(carInoutDto.getInoutId());
+ carInoutPo.setPaId(carInoutDto.getPaId());
+ carInoutPo.setCommunityId(carInoutDto.getCommunityId());
+ carInoutPo.setState(CarInoutDto.STATE_PAY);
+ flag = carInoutV1InnerServiceSMOImpl.updateCarInout(carInoutPo);
+ if (flag < 1) {
+ throw new CmdException("鏇存柊鍑哄満鏃堕棿澶辫触");
+ }
+ return carInoutPo;
+ } finally {
+ DistributedLock.releaseDistributedLock(requestId, key);
+ }
+
}
private boolean hasFeeAndPayFee(CarInoutPo carInoutPo, CarInoutPaymentPo carInoutPaymentPo) {
@@ -179,11 +262,17 @@
PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo();
payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
- payFeeDetailPo.setPrimeRate("1.00");
+ if (CarInoutPaymentDto.PAY_TYPE_CRASH.equals(carInoutPaymentPo.getPayType())) {
+ payFeeDetailPo.setPrimeRate(FeeDetailDto.PRIME_REATE_CRASH);
+ } else if (CarInoutPaymentDto.PAY_TYPE_WECHAT.equals(carInoutPaymentPo.getPayType())) {
+ payFeeDetailPo.setPrimeRate(FeeDetailDto.PRIME_REATE_WECHAT_QRCODE);
+ } else {
+ payFeeDetailPo.setPrimeRate(FeeDetailDto.PRIME_REATE_ALI_QRCODE);
+ }
FeeDto feeDto = feeDtos.get(0);
payFeeDetailPo.setStartTime(DateUtil.getFormatTimeString(feeDto.getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
payFeeDetailPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
- payFeeDetailPo.setCommunityId(carInoutPaymentPo.getCommunityId());
+ payFeeDetailPo.setCommunityId(carInoutPo.getCommunityId());
payFeeDetailPo.setCycles("1");
payFeeDetailPo.setReceivableAmount(carInoutPaymentPo.getPayCharge());
payFeeDetailPo.setReceivedAmount(carInoutPaymentPo.getRealCharge());
@@ -195,4 +284,88 @@
}
return true;
}
+
+ private void saveTempCarFee(JSONObject reqJson, MachineDto machineDto, CarInoutDto carInoutDto) {
+
+
+ //鍒涘缓璐圭敤
+ TempCarFeeConfigDto tempCarFeeConfigDto = new TempCarFeeConfigDto();
+ tempCarFeeConfigDto.setCommunityId(reqJson.getString("communityId"));
+ tempCarFeeConfigDto.setPaId(carInoutDto.getPaId());
+ List<TempCarFeeConfigDto> tempCarFeeConfigDtos = tempCarFeeConfigInnerServiceSMOImpl.queryTempCarFeeConfigs(tempCarFeeConfigDto);
+
+ if (tempCarFeeConfigDtos == null || tempCarFeeConfigDtos.size() < 1) { // 鍋滆溅鍦烘湭閰嶇疆鏀惰垂瑙勫垯 鍒欎笉鍒涘缓璐圭敤
+ return;
+ }
+
+ CommunityMemberDto communityMemberDto = new CommunityMemberDto();
+ communityMemberDto.setCommunityId(reqJson.getString("communityId"));
+ communityMemberDto.setMemberTypeCd(CommunityMemberDto.MEMBER_TYPE_PROPERTY);
+ communityMemberDto.setAuditStatusCd(CommunityMemberDto.AUDIT_STATUS_NORMAL);
+ List<CommunityMemberDto> communityMemberDtos = communityInnerServiceSMOImpl.getCommunityMembers(communityMemberDto);
+
+ Assert.listOnlyOne(communityMemberDtos, "灏忓尯鎴愬憳涓嶅瓨鍦�");
+ List<PayFeePo> payFeePos = new ArrayList<>();
+ List<FeeAttrPo> feeAttrPos = new ArrayList<>();
+ PayFeePo payFeePo = new PayFeePo();
+ payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
+ payFeePo.setEndTime(reqJson.getString("inTime"));
+ payFeePo.setState(FeeDto.STATE_DOING);
+ payFeePo.setCommunityId(reqJson.getString("communityId"));
+ payFeePo.setConfigId(tempCarFeeConfigDto.getFeeConfigId());
+ payFeePo.setPayerObjId(reqJson.getString("carId"));
+ payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
+ payFeePo.setUserId("-1");
+ payFeePo.setIncomeObjId(communityMemberDtos.get(0).getMemberId());
+ payFeePo.setFeeTypeCd(FeeConfigDto.FEE_TYPE_CD_PARKING);
+ payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE);
+ payFeePo.setAmount("-1");
+ payFeePo.setBatchId("-1");
+ //payFeePo.setStartTime(importRoomFee.getStartTime());
+ payFeePo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+ payFeePos.add(payFeePo);
+ FeeAttrPo feeAttrPo = new FeeAttrPo();
+ feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+ feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+ feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME);
+ feeAttrPo.setValue(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+ feeAttrPo.setFeeId(payFeePo.getFeeId());
+ feeAttrPos.add(feeAttrPo);
+ feeAttrPo = new FeeAttrPo();
+ feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+ feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+ feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID);
+ feeAttrPo.setValue(reqJson.getString("ownerId"));
+ feeAttrPo.setFeeId(payFeePo.getFeeId());
+ feeAttrPos.add(feeAttrPo);
+ feeAttrPo = new FeeAttrPo();
+ feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+ feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+ feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME);
+ feeAttrPo.setValue(TEMP_CAR_OWNER);
+ feeAttrPo.setFeeId(payFeePo.getFeeId());
+ feeAttrPos.add(feeAttrPo);
+ feeAttrPo = new FeeAttrPo();
+ feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+ feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+ feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK);
+ feeAttrPo.setValue("11111111111");
+ feeAttrPo.setFeeId(payFeePo.getFeeId());
+ feeAttrPos.add(feeAttrPo);
+ feeAttrPo = new FeeAttrPo();
+ feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+ feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+ feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_CAR_INOUT_ID);
+ feeAttrPo.setValue(reqJson.getString("inoutId"));
+ feeAttrPo.setFeeId(payFeePo.getFeeId());
+ feeAttrPos.add(feeAttrPo);
+ int flag = feeInnerServiceSMOImpl.saveFee(payFeePos);
+ if (flag < 1) {
+ throw new CmdException("淇濆瓨涓存椂杞﹁垂鐢ㄥけ璐�");
+ }
+ flag = feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrPos);
+ if (flag < 1) {
+ throw new CmdException("淇濆瓨涓存椂杞﹁垂鐢ㄥ睘鎬уけ璐�");
+ }
+ }
}
--
Gitblit v1.8.0