From d6b30c6097618391359565de48519614363e8a26 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期五, 05 四月 2024 22:23:13 +0800
Subject: [PATCH] 优化时间不对bug
---
service-fee/src/main/java/com/java110/fee/cmd/fee/PayOweFeeCmd.java | 401 ++++++++++++++++++++++-----------------------------------
1 files changed, 155 insertions(+), 246 deletions(-)
diff --git a/service-fee/src/main/java/com/java110/fee/cmd/fee/PayOweFeeCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/fee/PayOweFeeCmd.java
index 441311b..03c83eb 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/fee/PayOweFeeCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/fee/PayOweFeeCmd.java
@@ -4,7 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.annotation.Java110Transactional;
-import com.java110.core.context.DataFlowContext;
+import com.java110.core.context.CmdContextUtils;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
@@ -12,29 +12,35 @@
import com.java110.core.factory.Java110TransactionalFactory;
import com.java110.core.log.LoggerFactory;
import com.java110.core.smo.IComputeFeeSMO;
+import com.java110.dto.account.AccountDto;
import com.java110.dto.app.AppDto;
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.feeReceipt.FeeReceiptDetailDto;
+import com.java110.dto.fee.FeeReceiptDetailDto;
import com.java110.dto.owner.OwnerCarDto;
import com.java110.dto.owner.OwnerDto;
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.fee.bmo.fee.IFinishFeeNotify;
+import com.java110.fee.smo.impl.FeeReceiptInnerServiceSMOImpl;
+import com.java110.intf.acct.IAccountInnerServiceSMO;
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.account.AccountDetailPo;
import com.java110.po.car.OwnerCarPo;
import com.java110.po.fee.PayFeeDetailPo;
import com.java110.po.fee.PayFeePo;
-import com.java110.po.feeReceipt.FeeReceiptPo;
-import com.java110.po.feeReceiptDetail.FeeReceiptDetailPo;
+import com.java110.po.fee.FeeReceiptPo;
+import com.java110.po.fee.FeeReceiptDetailPo;
import com.java110.po.owner.RepairPoolPo;
import com.java110.po.owner.RepairUserPo;
-import com.java110.utils.constant.BusinessTypeConstant;
-import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.cache.CommonCache;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.exception.CmdException;
import com.java110.utils.exception.ListenerExecuteException;
@@ -73,11 +79,6 @@
@Autowired
private IFeeReceiptDetailInnerServiceSMO feeReceiptDetailInnerServiceSMOImpl;
- @Autowired
- private IRepairUserInnerServiceSMO repairUserInnerServiceSMO;
-
- @Autowired
- private IRepairInnerServiceSMO repairInnerServiceSMO;
@Autowired
private IPayFeeV1InnerServiceSMO payFeeV1InnerServiceSMOImpl;
@@ -87,19 +88,16 @@
@Autowired
- private IRepairPoolV1InnerServiceSMO repairPoolV1InnerServiceSMOImpl;
-
- @Autowired
- private IRepairUserV1InnerServiceSMO repairUserV1InnerServiceSMOImpl;
-
- @Autowired
- private IOwnerCarNewV1InnerServiceSMO ownerCarNewV1InnerServiceSMOImpl;
-
- @Autowired
- private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
-
- @Autowired
private IComputeFeeSMO computeFeeSMOImpl;
+
+ @Autowired
+ private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IFinishFeeNotify finishFeeNotifyImpl;
+
+ @Autowired
+ private IAccountInnerServiceSMO accountInnerServiceSMOImpl;
@Override
@@ -117,20 +115,54 @@
Assert.hasKeyAndValue(feeObject, "startTime", "鏈寘鍚紑濮嬫椂闂�");
Assert.hasKeyAndValue(feeObject, "endTime", "鏈寘鍚粨鏉熸椂闂�");
Assert.hasKeyAndValue(feeObject, "receivedAmount", "鏈寘鍚疄鏀堕噾棰�");
+
+ //璁$畻 搴旀敹閲戦
+ FeeDto feeDto = new FeeDto();
+ feeDto.setFeeId(feeObject.getString("feeId"));
+ feeDto.setCommunityId(feeObject.getString("communityId"));
+ Date pageEndTime = null;
+ List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+ if (feeDtos == null || feeDtos.size() != 1) {
+ throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "鏌ヨ璐圭敤淇℃伅澶辫触锛屾湭鏌ュ埌鏁版嵁鎴栨煡鍒板鏉℃暟鎹�");
+ }
+ feeDto = feeDtos.get(0);
+ feeObject.put("feeDto", feeDto);
+ if (!FeeDto.FEE_FLAG_CYCLE.equals(feeDto.getFeeFlag())) {
+ continue;
+ }
+
+ pageEndTime = DateUtil.getDateFromStringB(feeObject.getString("endTime"));
+ if (pageEndTime.getTime() <= feeDto.getEndTime().getTime()) {
+ throw new IllegalArgumentException("鍙兘瀛樺湪閲嶅缂磋垂锛岃鍒锋柊椤甸潰閲嶆柊缂磋垂");
+ }
}
+
+ //todo 浠庤处鎴蜂腑鎵f
+ ifHasAccount(reqJson, fees);
}
+
@Override
@Java110Transactional
public void doCmd(CmdEvent event, ICmdDataFlowContext dataFlowContext, JSONObject paramObj) throws CmdException, ParseException {
logger.info("======娆犺垂缂磋垂杩斿洖======锛�" + JSONArray.toJSONString(paramObj));
+ String userId = CmdContextUtils.getUserId(dataFlowContext);
+ UserDto userDto = new UserDto();
+ userDto.setUserId(userId);
+ List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+ Assert.listOnlyOne(userDtos, "鐢ㄦ埛鏈櫥褰�");
- //娣诲姞鍗曞厓淇℃伅
- List<FeeReceiptPo> feeReceiptPos = new ArrayList<>();
- List<FeeReceiptDetailPo> feeReceiptDetailPos = new ArrayList<>();
+ String payOrderId = paramObj.getString("payOrderId");
+
JSONArray fees = paramObj.getJSONArray("fees");
JSONObject feeObj = null;
String appId = dataFlowContext.getReqHeaders().get("app-id");
+
+
+ //todo 鐢熸垚鏀舵嵁缂栧彿
+ String receiptCode = feeReceiptInnerServiceSMOImpl.generatorReceiptCode(paramObj.getString("communityId"));
+ //todo 鏍规嵁鏄庣粏ID 鏌ヨ鏀舵嵁淇℃伅
+ JSONArray details = new JSONArray();
for (int feeIndex = 0; feeIndex < fees.size(); feeIndex++) {
feeObj = fees.getJSONObject(feeIndex);
@@ -144,135 +176,40 @@
feeObj.put("primeRate", "5");
feeObj.put("remark", "绾夸笂鍏紬鍙锋敮浠�");
}
+ if (!feeObj.containsKey("primeRate")) {
+ feeObj.put("primeRate", "6");
+ }
+ logger.info("======鏀粯鏂瑰紡======锛�" + appId + "+======+" + feeObj.containsKey("primeRate") + "======:" + JSONArray.toJSONString(dataFlowContext));
+ if (AppDto.OWNER_WECHAT_PAY.equals(appId)
+ && FeeDetailDto.PRIME_REATE_WECHAT.equals(feeObj.getString("primeRate"))) { //寰俊鏀粯锛堟瑺璐圭即璐规棤娉曞尯鍒嗗皬绋嬪簭杩樻槸寰俊鍏紬鍙凤級
+ feeObj.put("remark", "绾夸笂鍏紬鍙锋敮浠�");
+ } else if (AppDto.OWNER_WECHAT_PAY.equals(appId)
+ && FeeDetailDto.PRIME_REATE_WECHAT_APP.equals(feeObj.getString("primeRate"))) {
+ feeObj.put("remark", "绾夸笂灏忕▼搴忔敮浠�");
+ }
+ feeObj.put("state", "1400");
+ // todo 娣诲姞浜よ垂鏄庣粏
+ addOweFeeDetail(feeObj, details, userDto, receiptCode, payOrderId);
+ modifyOweFee(feeObj, dataFlowContext);
- //todo 鍘荤即璐�
- getFeeReceiptDetailPo(dataFlowContext, feeObj, feeReceiptDetailPos, feeReceiptPos);
+ //todo 璐︽埛鎵f
+ finishFeeNotifyImpl.withholdAccount(feeObj, feeObj.getString("feeId"), feeObj.getString("communityId"));
+
+ //todo 淇敼杞﹁締
+ finishFeeNotifyImpl.updateCarEndTime(feeObj.getString("feeId"), feeObj.getString("communityId"));
+
+
+ //todo 淇敼鎶ヤ慨鍗�
+ finishFeeNotifyImpl.updateRepair(feeObj.getString("feeId"), feeObj.getString("communityId"), feeObj.getString("receivedAmount"));
}
- //杩欓噷鍙槸鍐欏叆 鏀舵嵁琛紝鏆備笉鑰冭檻 浜嬪姟涓�鑷存�ч棶棰橈紝灏辩畻鍐欏叆澶辫触 涔熷彧鏄奖鍝� 鏀舵嵁鎵撳嵃锛屽鏋� 璐靛叕鍙稿 鏀舵嵁瑕佹眰 姣旇緝楂橈紝涓嶈兘鏈夊け璐ョ殑鎯呭喌 璇峰姞鍏ヤ簨鍔$鐞�
-// feeReceiptDetailInnerServiceSMOImpl.saveFeeReceiptDetails(feeReceiptDetailPos);
-//
-// feeReceiptInnerServiceSMOImpl.saveFeeReceipts(feeReceiptPos);
- //鏍规嵁鏄庣粏ID 鏌ヨ鏀舵嵁淇℃伅
- List<String> detailIds = new ArrayList<>();
+ JSONObject data = new JSONObject();
+ data.put("details", details);
- for (FeeReceiptDetailPo feeReceiptDetailPo : feeReceiptDetailPos) {
- detailIds.add(feeReceiptDetailPo.getDetailId());
- }
-
- FeeReceiptDetailDto feeReceiptDetailDto = new FeeReceiptDetailDto();
- feeReceiptDetailDto.setDetailIds(detailIds.toArray(new String[detailIds.size()]));
- feeReceiptDetailDto.setCommunityId(paramObj.getString("communityId"));
- try {
- Thread.currentThread().sleep(2000);
- } catch (InterruptedException ie) {
- ie.printStackTrace();
- }
- List<FeeReceiptDetailDto> feeReceiptDetailDtos = feeReceiptDetailInnerServiceSMOImpl.queryFeeReceiptDetails(feeReceiptDetailDto);
-
-
- dataFlowContext.setResponseEntity(ResultVo.createResponseEntity(feeReceiptDetailDtos));
+ dataFlowContext.setResponseEntity(ResultVo.createResponseEntity(data));
}
- private void getFeeReceiptDetailPo(ICmdDataFlowContext dataFlowContext, JSONObject paramObj,
- List<FeeReceiptDetailPo> feeReceiptDetailPos,
- List<FeeReceiptPo> feeReceiptPos) {
- int flag = 0;
- if (!paramObj.containsKey("primeRate")) {
- paramObj.put("primeRate", "6");
- }
- String appId = dataFlowContext.getReqHeaders().get("app-id");
- logger.info("======鏀粯鏂瑰紡======锛�" + appId + "+======+" + paramObj.containsKey("primeRate") + "======:" + JSONArray.toJSONString(dataFlowContext));
- if (AppDto.OWNER_WECHAT_PAY.equals(appId)
- && FeeDetailDto.PRIME_REATE_WECHAT.equals(paramObj.getString("primeRate"))) { //寰俊鏀粯锛堟瑺璐圭即璐规棤娉曞尯鍒嗗皬绋嬪簭杩樻槸寰俊鍏紬鍙凤級
- paramObj.put("remark", "绾夸笂鍏紬鍙锋敮浠�");
- } else if (AppDto.OWNER_WECHAT_PAY.equals(appId)
- && FeeDetailDto.PRIME_REATE_WECHAT_APP.equals(paramObj.getString("primeRate"))) {
- paramObj.put("remark", "绾夸笂灏忕▼搴忔敮浠�");
- }
- paramObj.put("state", "1400");
- addOweFeeDetail(paramObj, dataFlowContext, feeReceiptDetailPos, feeReceiptPos);
- modifyOweFee(paramObj, dataFlowContext);
-
- //淇敼杞﹁締
- updateCarEndTime(paramObj);
-
- //鍒ゆ柇鏄惁鏈夋淳鍗曞睘鎬D
- FeeAttrDto feeAttrDto = new FeeAttrDto();
- feeAttrDto.setCommunityId(paramObj.getString("communityId"));
- feeAttrDto.setFeeId(paramObj.getString("feeId"));
- feeAttrDto.setSpecCd(FeeAttrDto.SPEC_CD_REPAIR);
- List<FeeAttrDto> feeAttrDtos = feeAttrInnerServiceSMOImpl.queryFeeAttrs(feeAttrDto);
-
- //淇敼 娲惧崟鐘舵��
- if (feeAttrDtos != null && feeAttrDtos.size() > 0) {
-
- RepairPoolPo repairPoolPo = new RepairPoolPo();
- repairPoolPo.setRepairId(feeAttrDtos.get(0).getValue());
- repairPoolPo.setCommunityId(paramObj.getString("communityId"));
- repairPoolPo.setState(RepairDto.STATE_APPRAISE);
- flag = repairPoolV1InnerServiceSMOImpl.updateRepairPoolNew(repairPoolPo);
- if (flag < 1) {
- throw new CmdException("淇敼澶辫触");
- }
- }
- //淇敼 娲惧崟娴佺▼鐘舵��
- if (feeAttrDtos != null && feeAttrDtos.size() > 0) {
-
- RepairDto repairDto = new RepairDto();
- repairDto.setRepairId(feeAttrDtos.get(0).getValue());
- //鏌ヨ鎶ヤ慨璁板綍
- List<RepairDto> repairDtos = repairInnerServiceSMO.queryRepairs(repairDto);
- Assert.listOnlyOne(repairDtos, "鎶ヤ慨淇℃伅閿欒锛�");
- //鑾峰彇鎶ヤ慨娓犻亾
- String repairChannel = repairDtos.get(0).getRepairChannel();
- RepairUserDto repairUserDto = new RepairUserDto();
- repairUserDto.setRepairId(feeAttrDtos.get(0).getValue());
- repairUserDto.setState(RepairUserDto.STATE_PAY_FEE);
- //鏌ヨ寰呮敮浠樼姸鎬佺殑璁板綍
- List<RepairUserDto> repairUserDtoList = repairUserInnerServiceSMO.queryRepairUsers(repairUserDto);
- Assert.listOnlyOne(repairUserDtoList, "淇℃伅閿欒锛�");
- RepairUserPo repairUserPo = new RepairUserPo();
- repairUserPo.setRuId(repairUserDtoList.get(0).getRuId());
- if (repairChannel.equals("Z")) { //濡傛灉涓氫富鏄嚜涓绘姤淇紝鐘舵�佸氨鍙樻垚宸叉敮浠橈紝骞舵柊澧炰竴鏉″緟璇勪环鐘舵��
- repairUserPo.setState(RepairUserDto.STATE_FINISH_PAY_FEE);
- //濡傛灉鏄緟璇勪环鐘舵�侊紝灏辨洿鏂扮粨鏉熸椂闂�
- repairUserPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
- repairUserPo.setContext("宸叉敮浠�" + paramObj.getString("receivedAmount") + "鍏�");
- //鏂板寰呰瘎浠风姸鎬�
- RepairUserPo repairUser = new RepairUserPo();
- repairUser.setRuId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ruId));
- repairUser.setStartTime(repairUserPo.getEndTime());
- repairUser.setState(RepairUserDto.STATE_EVALUATE);
- repairUser.setContext("寰呰瘎浠�");
- repairUser.setCommunityId(paramObj.getString("communityId"));
- repairUser.setCreateTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
- repairUser.setRepairId(repairUserDtoList.get(0).getRepairId());
- repairUser.setStaffId(repairUserDtoList.get(0).getStaffId());
- repairUser.setStaffName(repairUserDtoList.get(0).getStaffName());
- repairUser.setPreStaffId(repairUserDtoList.get(0).getStaffId());
- repairUser.setPreStaffName(repairUserDtoList.get(0).getStaffName());
- repairUser.setPreRuId(repairUserDtoList.get(0).getRuId());
- repairUser.setRepairEvent("auditUser");
- flag = repairUserV1InnerServiceSMOImpl.saveRepairUserNew(repairUserPo);
- if (flag < 1) {
- throw new CmdException("淇敼澶辫触");
- }
- } else { //濡傛灉鏄憳宸ヤ唬瀹㈡姤淇垨鐢佃瘽鎶ヤ慨锛岀姸鎬佸氨鍙樻垚宸叉敮浠�
- repairUserPo.setState(RepairUserDto.STATE_FINISH_PAY_FEE);
- //濡傛灉鏄凡鏀粯鐘舵�侊紝灏辨洿鏂扮粨鏉熸椂闂�
- repairUserPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
- repairUserPo.setContext("宸叉敮浠�" + paramObj.getString("receivedAmount") + "鍏�");
- flag = repairUserV1InnerServiceSMOImpl.updateRepairUserNew(repairUserPo);
- if (flag < 1) {
- throw new CmdException("淇敼澶辫触");
- }
- }
- }
-
-
- }
/**
* 淇敼璐圭敤淇℃伅
@@ -287,15 +224,15 @@
FeeDto feeInfo = (FeeDto) paramInJson.get("feeInfo");
Map feeMap = BeanConvertUtil.beanCovertMap(feeInfo);
feeMap.put("startTime", DateUtil.getFormatTimeString(feeInfo.getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
- feeMap.put("endTime", paramInJson.getString("endTime"));
+ feeMap.put("endTime", DateUtil.getNextSecTime(paramInJson.getString("endTime")));
feeMap.put("cycles", paramInJson.getString("cycles"));
feeMap.put("configEndTime", feeInfo.getConfigEndTime());
if (FeeDto.FEE_FLAG_ONCE.equals(feeInfo.getFeeFlag())) { //缂磋垂缁撴潫
feeMap.put("state", FeeDto.STATE_FINISH);
}
- Date maxEndTime = feeInfo.getConfigEndTime();
- if (!FeeDto.FEE_FLAG_CYCLE.equals(feeInfo.getFeeFlag())) {
- maxEndTime = feeInfo.getDeadlineTime();
+ Date maxEndTime = feeInfo.getMaxEndTime();
+ if (maxEndTime == null) {
+ maxEndTime = feeInfo.getConfigEndTime();
}
if (maxEndTime != null) { //杩欓噷鏁版嵁闂鐨勬儏鍐典笅
Date endTime = DateUtil.getDateFromStringA(paramInJson.getString("endTime"));
@@ -312,26 +249,18 @@
}
}
- public void addOweFeeDetail(JSONObject paramInJson, ICmdDataFlowContext dataFlowContext,
- List<FeeReceiptDetailPo> feeReceiptDetailPos,
- List<FeeReceiptPo> feeReceiptPos) {
-
+ public void addOweFeeDetail(JSONObject paramInJson,
+ JSONArray detailIds,
+ UserDto userDto,
+ String receiptCode,
+ String payOrderId) {
JSONObject businessFeeDetail = new JSONObject();
businessFeeDetail.putAll(paramInJson);
businessFeeDetail.put("detailId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
businessFeeDetail.put("primeRate", paramInJson.getString("primeRate"));
- //璁$畻 搴旀敹閲戦
- FeeDto feeDto = new FeeDto();
- feeDto.setFeeId(paramInJson.getString("feeId"));
- feeDto.setCommunityId(paramInJson.getString("communityId"));
- List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
- if (feeDtos == null || feeDtos.size() != 1) {
- throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "鏌ヨ璐圭敤淇℃伅澶辫触锛屾湭鏌ュ埌鏁版嵁鎴栨煡鍒板鏉℃暟鎹�");
- }
- if (!businessFeeDetail.containsKey("state") || StringUtil.isEmpty(businessFeeDetail.getString("state"))) {
- businessFeeDetail.put("state", "1400");
- }
- feeDto = feeDtos.get(0);
+ FeeDto feeDto = (FeeDto) paramInJson.get("feeDto");
+
+
businessFeeDetail.put("startTime", paramInJson.getString("startTime"));
BigDecimal cycles = null;
Map feePriceAll = computeFeeSMOImpl.getFeePrice(feeDto);
@@ -358,13 +287,26 @@
payFeeDetailPo.setPayOrderId(paramInJson.getString("oId"));
} else {
String oId = Java110TransactionalFactory.getOId();
- if(StringUtil.isEmpty(oId)){
+ if (StringUtil.isEmpty(oId)) {
oId = payFeeDetailPo.getDetailId();
}
payFeeDetailPo.setPayOrderId(oId);
}
+ // todo 濡傛灉 鎵爜鏋敮浠� 杈撳叆鏀粯璁㈠崟ID
+ if (!StringUtil.isEmpty(payOrderId)) {
+ payFeeDetailPo.setPayOrderId(payOrderId);
+ }
+ if (paramInJson.containsKey("accountAmount")) {
+ payFeeDetailPo.setAcctAmount(paramInJson.getString("accountAmount"));
+ }
+
+ payFeeDetailPo.setCashierId(userDto.getUserId());
+ payFeeDetailPo.setCashierName(userDto.getName());
+ payFeeDetailPo.setOpenInvoice("N");
+ //todo 缂撳瓨鏀舵嵁缂栧彿
+ CommonCache.setValue(payFeeDetailPo.getDetailId() + CommonCache.RECEIPT_CODE, receiptCode, CommonCache.DEFAULT_EXPIRETIME_TWO_MIN);
int flag = payFeeDetailV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetailPo);
if (flag < 1) {
@@ -372,96 +314,63 @@
}
paramInJson.put("detailId", businessFeeDetail.getString("detailId"));
- FeeReceiptPo feeReceiptPo = new FeeReceiptPo();
- FeeReceiptDetailPo feeReceiptDetailPo = new FeeReceiptDetailPo();
- feeReceiptDetailPo.setAmount(businessFeeDetail.getString("receivedAmount"));
- feeReceiptDetailPo.setCommunityId(feeDto.getCommunityId());
- feeReceiptDetailPo.setCycle(businessFeeDetail.getString("cycles"));
- feeReceiptDetailPo.setDetailId(businessFeeDetail.getString("detailId"));
- feeReceiptDetailPo.setEndTime(businessFeeDetail.getString("endTime"));
- feeReceiptDetailPo.setFeeId(feeDto.getFeeId());
- feeReceiptDetailPo.setFeeName(StringUtil.isEmpty(feeDto.getImportFeeName()) ? feeDto.getFeeName() : feeDto.getImportFeeName());
- feeReceiptDetailPo.setStartTime(businessFeeDetail.getString("startTime"));
- feeReceiptDetailPo.setReceiptId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_receiptId));
-
- computeFeeSMOImpl.freshFeeReceiptDetail(feeDto, feeReceiptDetailPo);
- //鏌ヨ涓氫富淇℃伅
- OwnerDto ownerDto = computeFeeSMOImpl.getFeeOwnerDto(feeDto);
-
- feeReceiptDetailPos.add(feeReceiptDetailPo);
- feeReceiptPo.setAmount(feeReceiptDetailPo.getAmount());
- feeReceiptPo.setCommunityId(feeReceiptDetailPo.getCommunityId());
- feeReceiptPo.setReceiptId(feeReceiptDetailPo.getReceiptId());
- feeReceiptPo.setObjType(feeDto.getPayerObjType());
- feeReceiptPo.setObjId(feeDto.getPayerObjId());
- feeReceiptPo.setObjName(computeFeeSMOImpl.getFeeObjName(feeDto));
- feeReceiptPo.setPayObjId(ownerDto.getOwnerId());
- feeReceiptPo.setPayObjName(ownerDto.getName());
- feeReceiptPos.add(feeReceiptPo);
+ detailIds.add(businessFeeDetail.getString("detailId"));
}
- private void updateCarEndTime(JSONObject paramObj) {
- int flag;
- FeeDto feeDto = new FeeDto();
- feeDto.setFeeId(paramObj.getString("feeId"));
- feeDto.setCommunityId(paramObj.getString("communityId"));
- List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
- if (feeDtos == null || feeDtos.size() < 1) {
+ private void ifHasAccount(JSONObject reqJson, JSONArray fees) {
+ if (!reqJson.containsKey("accountAmount")) {
return;
}
- if (!FeeDto.PAYER_OBJ_TYPE_CAR.equals(feeDtos.get(0).getPayerObjType())) {
+ double accountAmount = reqJson.getDouble("accountAmount");
+ if (accountAmount <= 0) {
return;
}
- Date feeEndTime = feeDtos.get(0).getEndTime();
- OwnerCarDto ownerCarDto = new OwnerCarDto();
- ownerCarDto.setCommunityId(paramObj.getString("communityId"));
- ownerCarDto.setCarId(feeDtos.get(0).getPayerObjId());
- ownerCarDto.setCarTypeCd("1001"); //涓氫富杞﹁締
- List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
- if (ownerCarDtos == null || ownerCarDtos.size() < 1) {
- return;
- }
- //鑾峰彇杞︿綅id
- String psId = ownerCarDtos.get(0).getPsId();
- //鑾峰彇杞﹁締鐘舵��(1001 姝e父鐘舵�侊紝2002 娆犺垂鐘舵�� 3003 杞︿綅閲婃斁)
- String carState = ownerCarDtos.get(0).getState();
- if (!StringUtil.isEmpty(psId) && "3003".equals(carState)) {
- ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
- parkingSpaceDto.setPsId(psId);
- List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
- Assert.listOnlyOne(parkingSpaceDtos, "鏌ヨ杞︿綅淇℃伅閿欒锛�");
- //鑾峰彇杞︿綅鐘舵��(鍑哄敭 S锛屽嚭绉� H 锛岀┖闂� F)
- String state = parkingSpaceDtos.get(0).getState();
- if (!StringUtil.isEmpty(state) && !state.equals("F")) {
- throw new IllegalArgumentException("杞︿綅宸茶浣跨敤锛屼笉鑳藉啀缂磋垂锛�");
- }
+ Assert.hasKeyAndValue(reqJson, "acctId", "鏈寘鍚处鎴稩D");
+ String acctId = reqJson.getString("acctId");
+ //todo 鏍¢獙璐︽埛閲戦鏄惁鍏呰冻
+ AccountDto accountDto = new AccountDto();
+ accountDto.setAcctId(acctId);
+ List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto);
+
+ Assert.listOnlyOne(accountDtos, "璐︽埛涓嶅瓨鍦�");
+
+ if (Double.parseDouble(accountDtos.get(0).getAmount()) < accountAmount) {
+ throw new CmdException("璐︽埛浣欓涓嶈冻");
}
+ BigDecimal accountAmountDec = null;
- Calendar endTimeCalendar = null;
- //杞︿綅璐圭敤缁
- for (OwnerCarDto tmpOwnerCarDto : ownerCarDtos) {
- //鍚庝粯璐� 鎴栬�呬俊鐢ㄦ湡杞﹁締 鍔犱竴涓湀
- if(FeeConfigDto.PAYMENT_CD_AFTER.equals(feeDtos.get(0).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()) {
+ // todo 浠庤垂鐢ㄥ疄闄呯即璐逛腑鎵f
+ JSONObject feeObject = null;
+ double receivedAmount = 0.0;
+ BigDecimal receivedAmountDec = null;
+ for (int feeIndex = 0; feeIndex < fees.size(); feeIndex++) {
+ if (accountAmount == 0) {
continue;
}
- OwnerCarPo ownerCarPo = new OwnerCarPo();
- ownerCarPo.setMemberId(tmpOwnerCarDto.getMemberId());
- ownerCarPo.setEndTime(DateUtil.getFormatTimeString(feeEndTime, DateUtil.DATE_FORMATE_STRING_A));
- flag = ownerCarNewV1InnerServiceSMOImpl.updateOwnerCarNew(ownerCarPo);
- if (flag < 1) {
- throw new CmdException("缂磋垂澶辫触");
+ accountAmountDec = new BigDecimal(accountAmount);
+ feeObject = fees.getJSONObject(feeIndex);
+ receivedAmount = feeObject.getDouble("receivedAmount");
+ receivedAmountDec = new BigDecimal(receivedAmount);
+ if (receivedAmount >= accountAmount) {
+ receivedAmountDec = receivedAmountDec.subtract(accountAmountDec).setScale(2, BigDecimal.ROUND_HALF_UP);
+ feeObject.put("receivedAmount", receivedAmountDec.doubleValue());
+ feeObject.put("accountAmount", accountAmount);
+ feeObject.put("acctId", acctId);
+ accountAmount = 0.00;
+ continue;
}
- }
- }
+ feeObject.put("receivedAmount", "0");
+ feeObject.put("accountAmount", receivedAmount);
+ feeObject.put("acctId", acctId);
+
+ accountAmountDec = accountAmountDec.subtract(receivedAmountDec).setScale(2, BigDecimal.ROUND_HALF_UP);
+ accountAmount = accountAmountDec.doubleValue();
+ }
+
+
+ }
}
--
Gitblit v1.8.0