wuxw 1 год назад
Родитель
Сommit
6687554fcd

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/owner/OwnerDto.java

@@ -114,6 +114,8 @@ public class OwnerDto extends PageDto implements Serializable {
     private String memberName;
     private String memberLike;
 
+    private String acctAmount;
+
 
     public String getSex() {
         return sex;
@@ -597,4 +599,12 @@ public class OwnerDto extends PageDto implements Serializable {
     public void setMemberLike(String memberLike) {
         this.memberLike = memberLike;
     }
+
+    public String getAcctAmount() {
+        return acctAmount;
+    }
+
+    public void setAcctAmount(String acctAmount) {
+        this.acctAmount = acctAmount;
+    }
 }

+ 19 - 14
service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java

@@ -24,14 +24,9 @@ import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.CommunitySettingFactory;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.fee.*;
 import com.java110.dto.room.RoomDto;
 import com.java110.dto.account.AccountDto;
-import com.java110.dto.fee.FeeDetailDto;
-import com.java110.dto.fee.FeeDto;
-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;
@@ -157,6 +152,9 @@ public class UpdateReturnPayFeeCmd extends Cmd {
     @Autowired
     private IOnlinePayRefundV1InnerServiceSMO onlinePayRefundV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IPayFeeConfigV1InnerServiceSMO payFeeConfigV1InnerServiceSMOImpl;
+
 
     private static final String SPEC_RATE = "89002020980015"; //赠送月份
 
@@ -203,6 +201,19 @@ public class UpdateReturnPayFeeCmd extends Cmd {
         returnPayFeeDto.setReturnFeeId(reqJson.getString("returnFeeId"));
         List<ReturnPayFeeDto> returnPayFeeDtos = returnPayFeeInnerServiceSMOImpl.queryReturnPayFees(returnPayFeeDto);
         Assert.listOnlyOne(returnPayFeeDtos, "未找到需要修改的活动 或多条数据");
+        FeeDto feeDto = new FeeDto();
+        feeDto.setFeeId((String) reqJson.get("feeId"));
+        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+        Assert.listOnlyOne(feeDtos, "费用不存在");
+        FeeDto feeDto1 = feeDtos.get(0);
+
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setConfigId(feeDto1.getConfigId());
+        feeConfigDto.setCommunityId(feeDto1.getCommunityId());
+        List<FeeConfigDto> feeConfigDtos = payFeeConfigV1InnerServiceSMOImpl.queryPayFeeConfigs(feeConfigDto);
+
+        Assert.listOnlyOne(feeConfigDtos, "费用项不存在");
+
 
         // todo 修改退款状态
         updateReturnPayFee(reqJson, userDtos.get(0), returnPayFeeDtos.get(0));
@@ -227,11 +238,7 @@ public class UpdateReturnPayFeeCmd extends Cmd {
             // 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");
             reqJson.put("endTime", DateUtil.getFormatTimeString(feeDetailDto.getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
             reqJson.put("amount", feeDto1.getAmount());
@@ -248,9 +255,7 @@ public class UpdateReturnPayFeeCmd extends Cmd {
             reqJson.put("payerObjType", feeDto1.getPayerObjType());
             reqJson.put("feeId", feeDto1.getFeeId());
             //1003006 周期性费用  2006012 一次性费用  4012024 间接性费用
-            //todo 这里一次性费用还是要恢复成 再用状态 不然会让 物业感觉懵逼,让他自己手工点击结束去
-            //if ("2006012".equals(feeDto1.getFeeFlag()) || "888800010006".equals(feeDto1.getFeeTypeCd())) { //888800010006 押金
-            if ("888800010006".equals(feeDto1.getFeeTypeCd())) { //888800010006 押金
+            if (FeeDto.FEE_FLAG_ONCE.equals(feeConfigDtos.get(0).getFeeFlag())) { //888800010006 押金
                 reqJson.put("state", "2009001"); //2007001 收费未开始  2008001 有效  2009001 收费结束
             } else {
                 reqJson.put("state", "2008001");

+ 20 - 0
service-user/src/main/java/com/java110/user/bmo/owner/impl/ComprehensiveQueryImpl.java

@@ -1,11 +1,13 @@
 package com.java110.user.bmo.owner.impl;
 
+import com.java110.dto.account.AccountDto;
 import com.java110.dto.room.RoomDto;
 import com.java110.dto.privilege.BasePrivilegeDto;
 import com.java110.dto.contract.ContractDto;
 import com.java110.dto.owner.OwnerCarDto;
 import com.java110.dto.owner.OwnerDto;
 import com.java110.dto.owner.OwnerRoomRelDto;
+import com.java110.intf.acct.IAccountInnerServiceSMO;
 import com.java110.intf.common.IFileInnerServiceSMO;
 import com.java110.intf.common.IFileRelInnerServiceSMO;
 import com.java110.intf.community.IMenuInnerServiceSMO;
@@ -16,6 +18,7 @@ import com.java110.intf.user.IOwnerInnerServiceSMO;
 import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
 import com.java110.user.bmo.owner.IComprehensiveQuery;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.ListUtil;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -63,6 +66,9 @@ public class ComprehensiveQueryImpl implements IComprehensiveQuery {
     @Autowired
     private IContractInnerServiceSMO contractInnerServiceSMOImpl;
 
+    @Autowired
+    private IAccountInnerServiceSMO accountInnerServiceSMOImpl;
+
     @Override
     public ResponseEntity<String> query(String communityId, String searchValue, String searchType, String userId, String storeId) {
         OwnerDto ownerDto = null;
@@ -98,6 +104,20 @@ public class ComprehensiveQueryImpl implements IComprehensiveQuery {
                 ownerDto = queryByContract(communityId, searchValue, userId, storeId);
                 break;
         }
+
+        if(ownerDto == null){
+            return ResultVo.createResponseEntity(1, 1, ownerDto);
+        }
+        //todo 查询账户余额
+        AccountDto accountDto = new AccountDto();
+        accountDto.setObjId(ownerDto.getMemberId());
+        accountDto.setPartId(communityId);
+        accountDto.setAcctType(AccountDto.ACCT_TYPE_CASH);
+        List<AccountDto> accountDtos =accountInnerServiceSMOImpl.queryAccounts(accountDto);
+        if(!ListUtil.isNull(accountDtos)){
+            ownerDto.setAcctAmount(accountDtos.get(0).getAmount());
+        }
+
         return ResultVo.createResponseEntity(1, 1, ownerDto);
     }
 

+ 1 - 67
springboot/src/test/java/com/java110/AppTest.java

@@ -29,77 +29,11 @@ public class AppTest {
     @Test
     public void should() {
 //todo 递增时间 不是 费用建账时间的倍数时,修正一下
-        Date rateStartTime = DateUtil.getDateFromStringB("2023-03-20");
-        FeeDto feeDto =  new FeeDto();
-        feeDto.setStartTime(DateUtil.getDateFromStringB("2023-01-01"));
-        feeDto.setEndTime(DateUtil.getDateFromStringB("2024-03-01"));
-        feeDto.setDeadlineTime(DateUtil.getDateFromStringB("2024-04-01"));
-        feeDto.setFeePrice(1000);
-
-        int rateCycle = 12;
-
-        double rate = 0.03;
-
-        rateStartTime = correctByFeeStartTime(rateStartTime,feeDto.getStartTime());
-
-        BigDecimal addTotalAmount = new BigDecimal("0");
-        double curOweMonth = 0;
-        BigDecimal curFeePrice = new BigDecimal(feeDto.getFeePrice());
-
-        //todo 递增本轮欠费开始时间
-        Date curOweStartTime = null;
-        // todo 如果计费起始时间 小于 递增开始时间
-        if (feeDto.getEndTime().getTime() < rateStartTime.getTime()) {
-            //todo 递增前的欠费
-            curOweMonth = DateUtil.dayCompare(feeDto.getEndTime(), rateStartTime);
-            addTotalAmount = curFeePrice.multiply(new BigDecimal(curOweMonth)).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP);
-            // todo 递增
-            curOweStartTime = rateStartTime;
-        } else {
-            // todo 递增
-            curOweStartTime = feeDto.getEndTime();
-        }
-        double rateMonth = DateUtil.dayCompare(rateStartTime, feeDto.getDeadlineTime());
-
-        // todo 最大周期 递增轮数
-        double maxCycle = Math.ceil(rateMonth / rateCycle);
-
-        // todo 增长前的欠费
-        BigDecimal rateDec = new BigDecimal(rate + "");
-        BigDecimal oweAmountDec = null;
-        //todo 递增轮数 循环 curFeePrice 这个是 原始租金
-        for (int cycleIndex = 0; cycleIndex < maxCycle; cycleIndex++) {
-            //todo 递增月单价
-            curFeePrice = new BigDecimal("1").add(rateDec).multiply(curFeePrice).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP);
-
-            //todo 计算 curCycleRateEneTime 本轮递增结束时间
-            Date curCycleRateEneTime = DateUtil.stepMonth(rateStartTime, (cycleIndex + 1) * rateCycle);
-
-            //todo 说明这个已经缴费了
-            if (curOweStartTime.getTime() > curCycleRateEneTime.getTime()) {
-                continue;
-            }
-            //todo 本轮 欠费开始时间大于 deadlineTime 跳过
-            if(curOweStartTime.getTime() >= feeDto.getDeadlineTime().getTime()){
-                continue;
-            }
+        String hexString = "3839383630343938313032324330343038353530";
 
-            //todo 本轮递增时间未到 费用deadlineTime
-            if (curCycleRateEneTime.getTime() < feeDto.getDeadlineTime().getTime()) {
-                curOweMonth = DateUtil.dayCompare(curOweStartTime, curCycleRateEneTime);
-                curOweStartTime = curCycleRateEneTime;
-            } else {
-                curOweMonth = DateUtil.dayCompare(curOweStartTime, feeDto.getDeadlineTime());
-                curOweStartTime = feeDto.getDeadlineTime();
-            }
 
-            oweAmountDec = curFeePrice.multiply(new BigDecimal(curOweMonth)).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP);
 
-            addTotalAmount = addTotalAmount.add(oweAmountDec);
-        }
 
-        Double amountOwed = MoneyUtil.computePriceScale(addTotalAmount.doubleValue(), feeDto.getScale(), 4);
-        System.out.println(amountOwed);
     }
 
     /**