From 7958f1dddb8a7f4e70d232b07a7703955ecedae0 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期六, 26 八月 2023 12:45:33 +0800
Subject: [PATCH] 优化diamante
---
service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java | 449 +++++++++++++++++++++++++++++++++++--------------------
1 files changed, 287 insertions(+), 162 deletions(-)
diff --git a/service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java
index 602a6df..2e16e24 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java
@@ -23,34 +23,40 @@
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.dto.RoomDto;
+import com.java110.dto.room.RoomDto;
import com.java110.dto.account.AccountDto;
-import com.java110.dto.communitySpacePerson.CommunitySpacePersonDto;
import com.java110.dto.fee.FeeDetailDto;
import com.java110.dto.fee.FeeDto;
-import com.java110.dto.feeDiscount.FeeDiscountDto;
-import com.java110.dto.feeDiscount.FeeDiscountRuleDto;
-import com.java110.dto.feeDiscount.FeeDiscountSpecDto;
-import com.java110.dto.onlinePay.OnlinePayDto;
+import com.java110.dto.fee.FeeDiscountDto;
+import com.java110.dto.fee.FeeDiscountRuleDto;
+import com.java110.dto.fee.FeeDiscountSpecDto;
+import com.java110.dto.fee.FeeReceiptDetailDto;
+import com.java110.dto.wechat.OnlinePayDto;
import com.java110.dto.owner.OwnerCarDto;
+import com.java110.dto.owner.OwnerDto;
import com.java110.dto.owner.OwnerRoomRelDto;
-import com.java110.dto.payFeeConfigDiscount.PayFeeConfigDiscountDto;
-import com.java110.dto.payFeeDetailDiscount.PayFeeDetailDiscountDto;
-import com.java110.dto.returnPayFee.ReturnPayFeeDto;
+import com.java110.dto.payFee.PayFeeConfigDiscountDto;
+import com.java110.dto.payFee.PayFeeDetailDiscountDto;
+import com.java110.dto.payFee.ReturnPayFeeDto;
+import com.java110.dto.user.UserDto;
import com.java110.intf.acct.IAccountDetailInnerServiceSMO;
import com.java110.intf.acct.IAccountInnerServiceSMO;
import com.java110.intf.acct.IOnlinePayV1InnerServiceSMO;
import com.java110.intf.community.IRoomInnerServiceSMO;
import com.java110.intf.fee.*;
import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
+import com.java110.intf.user.IUserV1InnerServiceSMO;
import com.java110.po.account.AccountPo;
-import com.java110.po.accountDetail.AccountDetailPo;
+import com.java110.po.account.AccountDetailPo;
import com.java110.po.fee.PayFeeDetailPo;
import com.java110.po.fee.PayFeePo;
-import com.java110.po.onlinePay.OnlinePayPo;
-import com.java110.po.payFeeDetailDiscount.PayFeeDetailDiscountPo;
-import com.java110.po.returnPayFee.ReturnPayFeePo;
+import com.java110.po.fee.FeeReceiptPo;
+import com.java110.po.fee.FeeReceiptDetailPo;
+import com.java110.po.wechat.OnlinePayPo;
+import com.java110.po.payFee.PayFeeDetailDiscountPo;
+import com.java110.po.payFee.ReturnPayFeePo;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
@@ -121,6 +127,9 @@
private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
@Autowired
+ private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
+ @Autowired
private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
@Autowired
@@ -131,6 +140,19 @@
@Autowired
private IOnlinePayV1InnerServiceSMO onlinePayV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IFeeReceiptInnerServiceSMO feeReceiptInnerServiceSMOImpl;
+
+ @Autowired
+ private IFeeReceiptDetailInnerServiceSMO feeReceiptDetailInnerServiceSMOImpl;
+
+ @Autowired
+ private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
+
+ @Autowired
+ private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
private static final String SPEC_RATE = "89002020980015"; //璧犻�佹湀浠�
@@ -143,20 +165,17 @@
Assert.hasKeyAndValue(reqJson, "returnFeeId", "returnFeeId涓嶈兘涓虹┖");
Assert.hasKeyAndValue(reqJson, "state", "state涓嶈兘涓虹┖");
Assert.hasKeyAndValue(reqJson, "feeId", "feeId涓嶈兘涓虹┖");
-
if (reqJson.containsKey("cycles")) {
String cycles = reqJson.getString("cycles");
if (!cycles.startsWith("-")) {
throw new IllegalArgumentException("閫�璐瑰懆鏈熷繀椤昏礋鏁�");// 杩欓噷蹇呴』浼犲叆璐熸暟锛屽惁鍒欒垂鐢ㄨ嚜鍔ㄧ浉鍔犱笉浼氶��璐�
}
}
-
FeeDetailDto feeDetailDto = new FeeDetailDto();
feeDetailDto.setDetailId(reqJson.getString("detailId"));
feeDetailDto.setFeeId(reqJson.getString("feeId"));
feeDetailDto.setCommunityId(reqJson.getString("communityId"));
List<FeeDetailDto> feeDetailDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
-
Assert.listOnlyOne(feeDetailDtos, "涓嶅瓨鍦ㄧ即璐硅褰�");
reqJson.put("feeDetailDto", feeDetailDtos.get(0));
}
@@ -164,9 +183,22 @@
@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, "鐢ㄦ埛涓嶅瓨鍦�");
FeeDetailDto feeDetailDto = (FeeDetailDto) reqJson.get("feeDetailDto");
- updateReturnPayFee(reqJson);
+
+ ReturnPayFeeDto returnPayFeeDto = new ReturnPayFeeDto();
+ returnPayFeeDto.setReturnFeeId(reqJson.getString("returnFeeId"));
+ List<ReturnPayFeeDto> returnPayFeeDtos = returnPayFeeInnerServiceSMOImpl.queryReturnPayFees(returnPayFeeDto);
+ Assert.listOnlyOne(returnPayFeeDtos, "鏈壘鍒伴渶瑕佷慨鏀圭殑娲诲姩 鎴栧鏉℃暟鎹�");
+
+ // todo 淇敼閫�娆剧姸鎬�
+ updateReturnPayFee(reqJson, userDtos.get(0), returnPayFeeDtos.get(0));
//閫�璐瑰鏍搁�氳繃
if ("1100".equals(reqJson.getString("state"))) {
@@ -175,9 +207,9 @@
reqJson.put("state", "1300");
reqJson.put("startTime", DateUtil.getFormatTimeString(feeDetailDto.getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
reqJson.put("endTime", DateUtil.getFormatTimeString(feeDetailDto.getEndTime(), DateUtil.DATE_FORMATE_STRING_A));
- reqJson.put("payOrderId",feeDetailDto.getPayOrderId());
- addFeeDetail(reqJson);
-
+ reqJson.put("payOrderId", feeDetailDto.getPayOrderId());
+ // todo 娣诲姞閫�璐规槑缁�
+ addFeeDetail(reqJson, returnPayFeeDtos.get(0));
reqJson.put("state", "1100");
String receivableAmount = (String) reqJson.get("receivableAmount");
String receivedAmount = (String) reqJson.get("receivedAmount");
@@ -185,12 +217,12 @@
reqJson.put("receivableAmount", unum(receivableAmount));
reqJson.put("receivedAmount", unum(receivedAmount));
reqJson.put("createTime", reqJson.get("payTime"));
+ // todo 淇敼 缂磋垂璁板綍
updateFeeDetail(reqJson);
//淇敼pay_fee 璐圭敤鍒版湡鏃堕棿 浠ュ強濡傛灉鏄娂閲戝垯淇敼鐘舵�佷负缁撴潫鏀惰垂
FeeDto feeDto = new FeeDto();
feeDto.setFeeId((String) reqJson.get("feeId"));
List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
-
Assert.listOnlyOne(feeDtos, "璐圭敤涓嶅瓨鍦�");
FeeDto feeDto1 = feeDtos.get(0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -208,12 +240,16 @@
reqJson.put("configId", feeDto1.getConfigId());
reqJson.put("payerObjType", feeDto1.getPayerObjType());
reqJson.put("feeId", feeDto1.getFeeId());
- if ("888800010006".equals(feeDto1.getFeeTypeCds())) {
- reqJson.put("state", "2009001");
+ //1003006 鍛ㄦ湡鎬ц垂鐢� 2006012 涓�娆℃�ц垂鐢� 4012024 闂存帴鎬ц垂鐢�
+ if ("2006012".equals(feeDto1.getFeeFlag()) || "888800010006".equals(feeDto1.getFeeTypeCd())) { //888800010006 鎶奸噾
+ reqJson.put("state", "2009001"); //2007001 鏀惰垂鏈紑濮� 2008001 鏈夋晥 2009001 鏀惰垂缁撴潫
} else {
reqJson.put("state", "2008001");
}
+ //todo 璐圭敤閫�鍥炲幓
updateFee(reqJson);
+ reqJson.put("feeName", feeDto1.getFeeName());
+// dealFeeReceipt(reqJson);
//妫�鏌ユ槸鍚︽湁浼樻儬
PayFeeDetailDiscountDto payFeeDetailDiscountDto = new PayFeeDetailDiscountDto();
payFeeDetailDiscountDto.setCommunityId(feeDto1.getCommunityId());
@@ -225,127 +261,12 @@
discountJson.put("discountPrice", unum(payFeeDetailDiscountDtos.get(0).getDiscountPrice()));
addPayFeeDetailDiscountTwo(reqJson, discountJson);
}
- //鍒よ鏄惁鏈夎禒閫佽鍒欎紭鎯�
- PayFeeConfigDiscountDto payFeeConfigDiscountDto = new PayFeeConfigDiscountDto();
- payFeeConfigDiscountDto.setConfigId(reqJson.getString("configId"));
- List<PayFeeConfigDiscountDto> payFeeConfigDiscountDtos = payFeeConfigDiscountInnerServiceSMOImpl.queryPayFeeConfigDiscounts(payFeeConfigDiscountDto);
- if (payFeeConfigDiscountDtos != null && payFeeConfigDiscountDtos.size() > 0) {
- for (PayFeeConfigDiscountDto payFeeConfigDiscount : payFeeConfigDiscountDtos) {
- FeeDiscountDto feeDiscountDto = new FeeDiscountDto();
- feeDiscountDto.setDiscountId(payFeeConfigDiscount.getDiscountId());
- List<FeeDiscountDto> feeDiscountDtos = feeDiscountInnerServiceSMOImpl.queryFeeDiscounts(feeDiscountDto);
- Assert.listOnlyOne(feeDiscountDtos, "鏌ヨ鎵撴姌浼樻儬琛ㄩ敊璇�");
- FeeDiscountRuleDto feeDiscountRuleDto = new FeeDiscountRuleDto();
- feeDiscountRuleDto.setRuleId(feeDiscountDtos.get(0).getRuleId());
- List<FeeDiscountRuleDto> feeDiscountRuleDtos = feeDiscountRuleInnerServiceSMOImpl.queryFeeDiscountRules(feeDiscountRuleDto);
- Assert.listOnlyOne(feeDiscountRuleDtos, "鏌ヨ瑙勫垯琛ㄩ敊璇�");
- //鑾峰彇瀹炵幇鏂瑰紡
- String beanImpl = feeDiscountRuleDtos.get(0).getBeanImpl();
- if (!StringUtil.isEmpty(beanImpl) && beanImpl.equals("reductionMonthFeeRule")) { //璧犻�佽鍒�
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Calendar cal = Calendar.getInstance();
- //鑾峰彇缂磋垂寮�濮嬫椂闂�
- Date startTime = DateUtil.getDateFromStringA(reqJson.getString("startTime"));
- FeeDiscountSpecDto feeDiscountSpecDto = new FeeDiscountSpecDto();
- feeDiscountSpecDto.setDiscountId(payFeeConfigDiscount.getDiscountId());
- feeDiscountSpecDto.setSpecId(SPEC_RATE);
- //鏌ヨ鎵撴姌瑙勬牸
- List<FeeDiscountSpecDto> feeDiscountSpecDtos = feeDiscountSpecInnerServiceSMOImpl.queryFeeDiscountSpecs(feeDiscountSpecDto);
- Assert.listOnlyOne(feeDiscountSpecDtos, "鏌ヨ鎵撴姌瑙勬牸琛ㄩ敊璇紒");
- //鑾峰彇璧犻�佹湀浠�
- String specValue = feeDiscountSpecDtos.get(0).getSpecValue();
- BigDecimal value = new BigDecimal(specValue);
- FeeDiscountSpecDto feeDiscountSpec = new FeeDiscountSpecDto();
- feeDiscountSpec.setDiscountId(payFeeConfigDiscount.getDiscountId());
- feeDiscountSpec.setSpecId(SPEC_MONTH);
- List<FeeDiscountSpecDto> feeDiscountSpecs = feeDiscountSpecInnerServiceSMOImpl.queryFeeDiscountSpecs(feeDiscountSpec);
- Assert.listOnlyOne(feeDiscountSpecs, "鏌ヨ鎵撴姌瑙勬牸琛ㄩ敊璇紒");
- //鑾峰彇鏈堜唤
- BigDecimal discountMonth = new BigDecimal(feeDiscountSpecs.get(0).getSpecValue());
- //鑾峰彇鍛ㄦ湡
- BigDecimal cycle = new BigDecimal(reqJson.getString("cycles"));
- int flag = discountMonth.compareTo(cycle);
- if (flag == 1) { //鏈堜唤discountMonth澶т簬鍛ㄦ湡cycle锛屾棤娉曚韩鍙楄禒閫佽鍒�
- continue;
- }
-// FeeDto feeDto2 = new FeeDto();
-// feeDto2.setFeeId(feeDtos.get(0).getFeeId());
-// List<FeeDto> fees = feeInnerServiceSMOImpl.queryFees(feeDto2);
-// Assert.listOnlyOne(fees, "鏌ヨ璐圭敤琛ㄩ敊璇�");
- int monthNum = cycle.add(value).intValue();
- //鑾峰彇璐圭敤寮�濮嬫椂闂�
- Date endTime = feeDtos.get(0).getEndTime();
-// if (endTime.equals(startTime)) {
-// continue;
-// }
- cal.setTime(endTime);
- cal.add(Calendar.MONTH, -monthNum);
- PayFeePo payFeePo = new PayFeePo();
- payFeePo.setFeeId(feeDtos.get(0).getFeeId());
- payFeePo.setEndTime(simpleDateFormat.format(cal.getTime()));
- feeInnerServiceSMOImpl.updateFee(payFeePo);
- }
- }
- }
- //妫�鏌ユ槸鍚︾幇閲戣处鎴锋姷鎵�
- String feeAccountDetailDtoList = reqJson.getString("feeAccountDetailDtoList");
- JSONArray feeAccountDetails = JSONArray.parseArray(feeAccountDetailDtoList);
- if (feeAccountDetails != null && feeAccountDetails.size() > 0) {
- String ownerId = "";
- if (!StringUtil.isEmpty(reqJson.getString("payerObjType")) && reqJson.getString("payerObjType").equals("3333")) { //鎴垮眿
- OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
- ownerRoomRelDto.setRoomId(reqJson.getString("payerObjId"));
- List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
- Assert.listOnlyOne(ownerRoomRelDtos, "鏌ヨ涓氫富鎴垮眿鍏崇郴琛ㄩ敊璇紒");
- ownerId = ownerRoomRelDtos.get(0).getOwnerId();
- } else if (!StringUtil.isEmpty(reqJson.getString("payerObjType")) && reqJson.getString("payerObjType").equals("6666")) { //杞﹁締
- OwnerCarDto ownerCarDto = new OwnerCarDto();
- ownerCarDto.setCarId(reqJson.getString("payerObjId"));
- List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
- Assert.listOnlyOne(ownerCarDtos, "鏌ヨ涓氫富杞﹁締閿欒锛�");
- ownerId = ownerCarDtos.get(0).getOwnerId();
- }
- for (int index = 0; index < feeAccountDetails.size(); index++) {
- JSONObject param = feeAccountDetails.getJSONObject(index);
- String state = param.getString("state");
- if (!StringUtil.isEmpty(param.getString("state")) && param.getString("state").equals("1002")) { //1001 鏃犳姷鎵� 1002 鐜伴噾璐︽埛鎶垫墸 1003 绉垎璐︽埛鎶垫墸 1004 浼樻儬鍒告姷鎵�
- AccountDto accountDto = new AccountDto();
- accountDto.setObjId(ownerId);
- accountDto.setAcctType(AccountDto.ACCT_TYPE_CASH); //2003 鐜伴噾璐︽埛
- List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto);
- Assert.listOnlyOne(accountDtos, "鏌ヨ涓氫富鐜伴噾璐︽埛閿欒锛�");
- BigDecimal amount = new BigDecimal(accountDtos.get(0).getAmount());
- BigDecimal money = new BigDecimal(param.getString("amount"));
- BigDecimal newAmount = amount.add(money);
- AccountPo accountPo = new AccountPo();
- accountPo.setAcctId(accountDtos.get(0).getAcctId());
- accountPo.setAmount(String.valueOf(newAmount));
- int flag = accountInnerServiceSMOImpl.updateAccount(accountPo);
- if (flag < 1) {
- throw new IllegalArgumentException("鏇存柊涓氫富鐜伴噾璐︽埛澶辫触锛�");
- }
- AccountDetailPo accountDetailPo = new AccountDetailPo();
- accountDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
- accountDetailPo.setAcctId(accountDtos.get(0).getAcctId());
- accountDetailPo.setDetailType("1001"); //1001 杞叆 2002 杞嚭
- accountDetailPo.setRelAcctId("-1");
- accountDetailPo.setAmount(param.getString("amount"));
- accountDetailPo.setObjType("6006"); //6006 涓汉 7007 鍟嗘埛
- accountDetailPo.setObjId(ownerId);
- accountDetailPo.setOrderId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId));
- accountDetailPo.setbId("-1");
- accountDetailPo.setRemark("鐜伴噾璐︽埛閫�璐�");
- accountDetailPo.setCreateTime(new Date());
- int i = accountDetailInnerServiceSMOImpl.saveAccountDetails(accountDetailPo);
- if (i < 1) {
- throw new IllegalArgumentException("淇濆瓨涓氫富鐜伴噾璐︽埛鏄庣粏澶辫触锛�");
- }
- }
- }
- }
- //鎻愪氦绾夸笂閫�璐�
+ //todo 鍒よ鏄惁鏈夎禒閫佽鍒欎紭鎯�
+ returnCoupon(reqJson, feeDtos);
+ //todo 妫�鏌ユ槸鍚︾幇閲戣处鎴锋姷鎵�
+ returnAccount(reqJson);
+ //todo 鎻愪氦绾夸笂閫�璐�
returnOnlinePayMoney(feeDetailDto);
-
}
//涓嶉�氳繃
if ("1200".equals(reqJson.getString("state"))) {
@@ -363,6 +284,129 @@
}
}
+ private void returnAccount(JSONObject reqJson) {
+ String feeAccountDetailDtoList = reqJson.getString("feeAccountDetailDtoList");
+ JSONArray feeAccountDetails = JSONArray.parseArray(feeAccountDetailDtoList);
+ if (feeAccountDetails == null || feeAccountDetails.size() < 1) {
+ return;
+ }
+ String ownerId = "";
+ if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(reqJson.getString("payerObjType"))) { //鎴垮眿
+ OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
+ ownerRoomRelDto.setRoomId(reqJson.getString("payerObjId"));
+ List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
+ Assert.listOnlyOne(ownerRoomRelDtos, "鏌ヨ涓氫富鎴垮眿鍏崇郴琛ㄩ敊璇紒");
+ ownerId = ownerRoomRelDtos.get(0).getOwnerId();
+ } else if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(reqJson.getString("payerObjType"))) { //杞﹁締
+ OwnerCarDto ownerCarDto = new OwnerCarDto();
+ ownerCarDto.setMemberId(reqJson.getString("payerObjId"));
+ List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
+ Assert.listOnlyOne(ownerCarDtos, "鏌ヨ涓氫富杞﹁締閿欒锛�");
+ ownerId = ownerCarDtos.get(0).getOwnerId();
+ }
+ for (int index = 0; index < feeAccountDetails.size(); index++) {
+ JSONObject param = feeAccountDetails.getJSONObject(index);
+ String state = param.getString("state");
+ if (!"1002".equals(param.getString("state"))) { //1001 鏃犳姷鎵� 1002 鐜伴噾璐︽埛鎶垫墸 1003 绉垎璐︽埛鎶垫墸 1004 浼樻儬鍒告姷鎵�
+ continue;
+ }
+ AccountDto accountDto = new AccountDto();
+ accountDto.setObjId(ownerId);
+ accountDto.setAcctType(AccountDto.ACCT_TYPE_CASH); //2003 鐜伴噾璐︽埛
+ List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto);
+ Assert.listOnlyOne(accountDtos, "鏌ヨ涓氫富鐜伴噾璐︽埛閿欒锛�");
+ BigDecimal amount = new BigDecimal(accountDtos.get(0).getAmount());
+ BigDecimal money = new BigDecimal(param.getString("amount"));
+ BigDecimal newAmount = amount.add(money);
+ AccountPo accountPo = new AccountPo();
+ accountPo.setAcctId(accountDtos.get(0).getAcctId());
+ accountPo.setAmount(String.valueOf(newAmount));
+ int flag = accountInnerServiceSMOImpl.updateAccount(accountPo);
+ if (flag < 1) {
+ throw new IllegalArgumentException("鏇存柊涓氫富鐜伴噾璐︽埛澶辫触锛�");
+ }
+ AccountDetailPo accountDetailPo = new AccountDetailPo();
+ accountDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
+ accountDetailPo.setAcctId(accountDtos.get(0).getAcctId());
+ accountDetailPo.setDetailType("1001"); //1001 杞叆 2002 杞嚭
+ accountDetailPo.setRelAcctId("-1");
+ accountDetailPo.setAmount(param.getString("amount"));
+ accountDetailPo.setObjType("6006"); //6006 涓汉 7007 鍟嗘埛
+ accountDetailPo.setObjId(ownerId);
+ accountDetailPo.setOrderId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId));
+ accountDetailPo.setbId("-1");
+ accountDetailPo.setRemark("鐜伴噾璐︽埛閫�璐�");
+ accountDetailPo.setCreateTime(new Date());
+ int i = accountDetailInnerServiceSMOImpl.saveAccountDetails(accountDetailPo);
+ if (i < 1) {
+ throw new IllegalArgumentException("淇濆瓨涓氫富鐜伴噾璐︽埛鏄庣粏澶辫触锛�");
+ }
+ }
+ }
+
+ private void returnCoupon(JSONObject reqJson, List<FeeDto> feeDtos) {
+ PayFeeConfigDiscountDto payFeeConfigDiscountDto = new PayFeeConfigDiscountDto();
+ payFeeConfigDiscountDto.setConfigId(reqJson.getString("configId"));
+ List<PayFeeConfigDiscountDto> payFeeConfigDiscountDtos = payFeeConfigDiscountInnerServiceSMOImpl.queryPayFeeConfigDiscounts(payFeeConfigDiscountDto);
+ if (payFeeConfigDiscountDtos == null || payFeeConfigDiscountDtos.size() < 1) {
+ return;
+ }
+ for (PayFeeConfigDiscountDto payFeeConfigDiscount : payFeeConfigDiscountDtos) {
+ FeeDiscountDto feeDiscountDto = new FeeDiscountDto();
+ feeDiscountDto.setDiscountId(payFeeConfigDiscount.getDiscountId());
+ List<FeeDiscountDto> feeDiscountDtos = feeDiscountInnerServiceSMOImpl.queryFeeDiscounts(feeDiscountDto);
+ Assert.listOnlyOne(feeDiscountDtos, "鏌ヨ鎵撴姌浼樻儬琛ㄩ敊璇�");
+ FeeDiscountRuleDto feeDiscountRuleDto = new FeeDiscountRuleDto();
+ feeDiscountRuleDto.setRuleId(feeDiscountDtos.get(0).getRuleId());
+ List<FeeDiscountRuleDto> feeDiscountRuleDtos = feeDiscountRuleInnerServiceSMOImpl.queryFeeDiscountRules(feeDiscountRuleDto);
+ Assert.listOnlyOne(feeDiscountRuleDtos, "鏌ヨ瑙勫垯琛ㄩ敊璇�");
+ //鑾峰彇瀹炵幇鏂瑰紡
+ String beanImpl = feeDiscountRuleDtos.get(0).getBeanImpl();
+ if (!"reductionMonthFeeRule".equals(beanImpl)) { //璧犻�佽鍒�
+ continue;
+ }
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ Calendar cal = Calendar.getInstance();
+ //鑾峰彇缂磋垂寮�濮嬫椂闂�
+ Date startTime = DateUtil.getDateFromStringA(reqJson.getString("startTime"));
+ FeeDiscountSpecDto feeDiscountSpecDto = new FeeDiscountSpecDto();
+ feeDiscountSpecDto.setDiscountId(payFeeConfigDiscount.getDiscountId());
+ feeDiscountSpecDto.setSpecId(SPEC_RATE); //璧犻�佽鍒�
+ //鏌ヨ鎵撴姌瑙勬牸
+ List<FeeDiscountSpecDto> feeDiscountSpecDtos = feeDiscountSpecInnerServiceSMOImpl.queryFeeDiscountSpecs(feeDiscountSpecDto);
+ Assert.listOnlyOne(feeDiscountSpecDtos, "鏌ヨ鎵撴姌瑙勬牸琛ㄩ敊璇紒");
+ //鑾峰彇璧犻�佹湀浠�
+ String specValue = feeDiscountSpecDtos.get(0).getSpecValue();
+ BigDecimal value = new BigDecimal(specValue);
+ FeeDiscountSpecDto feeDiscountSpec = new FeeDiscountSpecDto();
+ feeDiscountSpec.setDiscountId(payFeeConfigDiscount.getDiscountId());
+ feeDiscountSpec.setSpecId(SPEC_MONTH); //鏈堜唤
+ List<FeeDiscountSpecDto> feeDiscountSpecs = feeDiscountSpecInnerServiceSMOImpl.queryFeeDiscountSpecs(feeDiscountSpec);
+ Assert.listOnlyOne(feeDiscountSpecs, "鏌ヨ鎵撴姌瑙勬牸琛ㄩ敊璇紒");
+ //鑾峰彇鏈堜唤
+ BigDecimal discountMonth = new BigDecimal(feeDiscountSpecs.get(0).getSpecValue());
+ //鑾峰彇鍛ㄦ湡
+ BigDecimal cycle = new BigDecimal(reqJson.getString("cycles"));
+ int flag = discountMonth.compareTo(cycle);
+ if (flag == 1) { //鏈堜唤discountMonth澶т簬鍛ㄦ湡cycle锛屾棤娉曚韩鍙楄禒閫佽鍒�
+ continue;
+ }
+
+ int monthNum = cycle.add(value).intValue();
+ //鑾峰彇璐圭敤寮�濮嬫椂闂�
+ Date endTime = feeDtos.get(0).getEndTime();
+
+ cal.setTime(endTime);
+ cal.add(Calendar.MONTH, -monthNum);
+ PayFeePo payFeePo = new PayFeePo();
+ payFeePo.setFeeId(feeDtos.get(0).getFeeId());
+ payFeePo.setEndTime(simpleDateFormat.format(cal.getTime()));
+ feeInnerServiceSMOImpl.updateFee(payFeePo);
+
+ }
+
+ }
+
private double unum(String value) {
double dValue = Double.parseDouble(value);
return dValue * -1;
@@ -374,19 +418,14 @@
* @param paramInJson 鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
* @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
*/
- public void updateReturnPayFee(JSONObject paramInJson) {
-
- ReturnPayFeeDto returnPayFeeDto = new ReturnPayFeeDto();
- returnPayFeeDto.setReturnFeeId(paramInJson.getString("returnFeeId"));
- List<ReturnPayFeeDto> returnPayFeeDtos = returnPayFeeInnerServiceSMOImpl.queryReturnPayFees(returnPayFeeDto);
-
- Assert.listOnlyOne(returnPayFeeDtos, "鏈壘鍒伴渶瑕佷慨鏀圭殑娲诲姩 鎴栧鏉℃暟鎹�");
-
+ public void updateReturnPayFee(JSONObject paramInJson, UserDto userDto, ReturnPayFeeDto returnPayFeeDto) {
JSONObject businessReturnPayFee = new JSONObject();
- businessReturnPayFee.putAll(BeanConvertUtil.beanCovertMap(returnPayFeeDtos.get(0)));
+ businessReturnPayFee.putAll(BeanConvertUtil.beanCovertMap(returnPayFeeDto));
businessReturnPayFee.putAll(paramInJson);
ReturnPayFeePo returnPayFeePo = BeanConvertUtil.covertBean(businessReturnPayFee, ReturnPayFeePo.class);
+ returnPayFeePo.setAuditPersonId(userDto.getUserId());
+ returnPayFeePo.setAuditPersonName(userDto.getName());
int flag = returnPayFeeV1InnerServiceSMOImpl.updateReturnPayFee(returnPayFeePo);
if (flag < 1) {
throw new CmdException("鏇存柊鏁版嵁澶辫触");
@@ -394,29 +433,47 @@
}
public void updateFeeDetail(JSONObject paramInJson) {
-
FeeDetailDto feeDetailDto = new FeeDetailDto();
feeDetailDto.setDetailId(paramInJson.getString("detailId"));
List<FeeDetailDto> feeDetailDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
Assert.listOnlyOne(feeDetailDtos, "鏈壘鍒伴渶瑕佷慨鏀圭殑娲诲姩 鎴栧鏉℃暟鎹�");
-
JSONObject businessReturnPayFee = new JSONObject();
businessReturnPayFee.putAll(BeanConvertUtil.beanCovertMap(feeDetailDtos.get(0)));
businessReturnPayFee.putAll(paramInJson);
PayFeeDetailPo returnPayFeePo = BeanConvertUtil.covertBean(businessReturnPayFee, PayFeeDetailPo.class);
+ returnPayFeePo.setPrimeRate(feeDetailDtos.get(0).getPrimeRate());
int flag = payFeeDetailV1InnerServiceSMOImpl.updatePayFeeDetailNew(returnPayFeePo);
if (flag < 1) {
throw new CmdException("鏇存柊鏁版嵁澶辫触");
}
+
+ // todo 灏嗘敹鎹垹闄�
+ FeeReceiptDetailDto feeReceiptDetailDto = new FeeReceiptDetailDto();
+ feeReceiptDetailDto.setDetailId(returnPayFeePo.getDetailId());
+ feeReceiptDetailDto.setCommunityId(returnPayFeePo.getCommunityId());
+ int count = feeReceiptDetailInnerServiceSMOImpl.queryFeeReceiptDetailsCount(feeReceiptDetailDto);
+ if (count != 1) {
+ return;
+ }
+ FeeReceiptDetailPo feeReceiptDetailPo = new FeeReceiptDetailPo();
+ feeReceiptDetailPo.setDetailId(returnPayFeePo.getDetailId());
+ feeReceiptDetailPo.setCommunityId(returnPayFeePo.getCommunityId());
+ feeReceiptDetailInnerServiceSMOImpl.deleteFeeReceiptDetail(feeReceiptDetailPo);
}
-
- public void addFeeDetail(JSONObject paramInJson) {
-
+ /**
+ * 娣诲姞閫�璐瑰崟
+ *
+ * @param paramInJson
+ * @param returnPayFeeDto
+ */
+ public void addFeeDetail(JSONObject paramInJson, ReturnPayFeeDto returnPayFeeDto) {
JSONObject businessReturnPayFee = new JSONObject();
businessReturnPayFee.putAll(paramInJson);
businessReturnPayFee.put("detailId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
PayFeeDetailPo returnPayFeePo = BeanConvertUtil.covertBean(businessReturnPayFee, PayFeeDetailPo.class);
+ returnPayFeePo.setCashierId(returnPayFeeDto.getApplyPersonId());
+ returnPayFeePo.setCashierName(returnPayFeeDto.getApplyPersonName());
int flag = payFeeDetailV1InnerServiceSMOImpl.savePayFeeDetailNew(returnPayFeePo);
if (flag < 1) {
throw new CmdException("鏇存柊鏁版嵁澶辫触");
@@ -429,6 +486,77 @@
int flag = payFeeV1InnerServiceSMOImpl.updatePayFee(payFeePo);
if (flag < 1) {
throw new CmdException("鏇存柊鏁版嵁澶辫触");
+ }
+ }
+
+ //鏀舵嵁鐩稿叧鎿嶄綔
+ public void dealFeeReceipt(JSONObject paramInJson) {
+ //娣诲姞鏀舵嵁
+ FeeReceiptPo feeReceiptPo = new FeeReceiptPo();
+ feeReceiptPo.setReceiptId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_receiptId));
+ feeReceiptPo.setCommunityId(paramInJson.getString("communityId"));
+ feeReceiptPo.setObjType(paramInJson.getString("payerObjType")); //鏀舵嵁瀵硅薄 3333 鎴垮眿 6666 杞︿綅杞﹁締
+ feeReceiptPo.setObjId(paramInJson.getString("payerObjId")); //瀵硅薄ID
+ feeReceiptPo.setObjName(paramInJson.getString("payerObjName")); //瀵硅薄鍚嶇О
+ double receivedAmount = unum(paramInJson.getString("receivedAmount"));
+ feeReceiptPo.setAmount(String.valueOf(receivedAmount)); //鎬婚噾棰�
+ feeReceiptPo.setRemark("閫�璐规敹鎹�");
+ String payObjId = "";
+ String payObjName = "";
+ String roomArea = "";
+ if (!StringUtil.isEmpty(paramInJson.getString("payerObjType")) && paramInJson.getString("payerObjType").equals("3333")) { //鎴垮眿
+ OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
+ ownerRoomRelDto.setRoomId(paramInJson.getString("payerObjId"));
+ List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
+ Assert.listOnlyOne(ownerRoomRelDtos, "鏌ヨ鎴垮眿閿欒锛�");
+ OwnerDto ownerDto = new OwnerDto();
+ ownerDto.setOwnerId(ownerRoomRelDtos.get(0).getOwnerId());
+ ownerDto.setOwnerTypeCd("1001"); //1001 涓氫富鏈汉 1002 瀹跺涵鎴愬憳
+ List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
+ Assert.listOnlyOne(ownerDtos, "鏌ヨ涓氫富淇℃伅閿欒锛�");
+ payObjId = ownerDtos.get(0).getOwnerId();
+ payObjName = ownerDtos.get(0).getName();
+ } else if (!StringUtil.isEmpty(paramInJson.getString("payerObjType")) && paramInJson.getString("payerObjType").equals("6666")) { //杞﹁締
+ OwnerCarDto ownerCarDto = new OwnerCarDto();
+ ownerCarDto.setCarId(paramInJson.getString("payerObjId"));
+ List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
+ Assert.listOnlyOne(ownerCarDtos, "鏌ヨ涓氫富杞﹁締閿欒锛�");
+ OwnerDto ownerDto = new OwnerDto();
+ ownerDto.setOwnerId(ownerCarDtos.get(0).getOwnerId());
+ ownerDto.setOwnerTypeCd("1001"); //1001 涓氫富鏈汉 1002 瀹跺涵鎴愬憳
+ List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
+ Assert.listOnlyOne(ownerDtos, "鏌ヨ涓氫富淇℃伅閿欒锛�");
+ payObjId = ownerDtos.get(0).getOwnerId();
+ payObjName = ownerDtos.get(0).getName();
+ }
+ feeReceiptPo.setPayObjId(payObjId); //浠樿垂浜篿d
+ feeReceiptPo.setPayObjName(payObjName); //浠樿垂浜哄鍚�
+ int i = feeReceiptInnerServiceSMOImpl.saveFeeReceipt(feeReceiptPo);
+ if (i < 1) {
+ throw new CmdException("娣诲姞鏀舵嵁澶辫触");
+ }
+ //娣诲姞鏀舵嵁璇︽儏
+ FeeReceiptDetailPo feeReceiptDetailPo = new FeeReceiptDetailPo();
+ feeReceiptDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
+ feeReceiptDetailPo.setReceiptId(feeReceiptPo.getReceiptId()); //鏀舵嵁id
+ feeReceiptDetailPo.setFeeId(paramInJson.getString("feeId")); //璐圭敤id
+ feeReceiptDetailPo.setFeeName(paramInJson.getString("feeName"));
+ if (!StringUtil.isEmpty(paramInJson.getString("payerObjType")) && paramInJson.getString("payerObjType").equals("3333")) { //鎴垮眿
+ RoomDto roomDto = new RoomDto();
+ roomDto.setRoomId(paramInJson.getString("payerObjId"));
+ List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
+ Assert.listOnlyOne(roomDtos, "鏌ヨ鎴垮眿閿欒锛�");
+ roomArea = roomDtos.get(0).getRoomArea();
+ }
+ feeReceiptDetailPo.setArea(roomArea); //闈㈢Н/鐢ㄩ噺
+ feeReceiptDetailPo.setStartTime(paramInJson.getString("startTime"));
+ feeReceiptDetailPo.setEndTime(paramInJson.getString("endTime"));
+ feeReceiptDetailPo.setAmount(feeReceiptPo.getAmount());
+ feeReceiptDetailPo.setCycle(paramInJson.getString("cycles"));
+ feeReceiptDetailPo.setCommunityId(paramInJson.getString("communityId"));
+ int flag = feeReceiptDetailInnerServiceSMOImpl.saveFeeReceiptDetail(feeReceiptDetailPo);
+ if (flag < 1) {
+ throw new CmdException("娣诲姞鏀舵嵁璇︽儏澶辫触");
}
}
@@ -455,22 +583,20 @@
/**
* 鍙戣捣閫�娆�
+ * 杩欓噷鍙戣捣閫�娆惧悗 閫氳繃databus 瑙﹀彂 ReturnPayFeeMoneyAdapt 杩欎釜绫� 閫�娆�
*
* @param feeDetailDto
*/
private void returnOnlinePayMoney(FeeDetailDto feeDetailDto) {
-
- if(StringUtil.isEmpty(feeDetailDto.getPayOrderId())){
+ if (StringUtil.isEmpty(feeDetailDto.getPayOrderId())) {
return;
}
-
OnlinePayDto onlinePayDto = new OnlinePayDto();
onlinePayDto.setOrderId(feeDetailDto.getPayOrderId());
List<OnlinePayDto> onlinePayDtos = onlinePayV1InnerServiceSMOImpl.queryOnlinePays(onlinePayDto);
if (onlinePayDtos == null || onlinePayDtos.size() < 1) {
return;
}
-
OnlinePayPo onlinePayPo = new OnlinePayPo();
onlinePayPo.setOrderId(onlinePayDtos.get(0).getOrderId());
onlinePayPo.setPayId(onlinePayDtos.get(0).getPayId());
@@ -478,5 +604,4 @@
onlinePayPo.setRefundFee(feeDetailDto.getReceivedAmount());
onlinePayV1InnerServiceSMOImpl.updateOnlinePay(onlinePayPo);
}
-
}
--
Gitblit v1.8.0