From a20310f135ebf1c8ccff2b619f3eff3d704436a0 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期四, 08 十二月 2022 13:12:03 +0800
Subject: [PATCH] Merge branch 'xinghong-dev' of http://git.homecommunity.cn/supervip/MicroCommunity

---
 service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java |  387 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 380 insertions(+), 7 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 61c3e53..3faa67c 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
@@ -15,22 +15,52 @@
  */
 package com.java110.fee.cmd.returnPayFee;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Cmd;
 import com.java110.core.annotation.Java110Transactional;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
-import com.java110.intf.fee.IReturnPayFeeV1InnerServiceSMO;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.RoomDto;
+import com.java110.dto.account.AccountDto;
+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.owner.OwnerCarDto;
+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.intf.acct.IAccountDetailInnerServiceSMO;
+import com.java110.intf.acct.IAccountInnerServiceSMO;
+import com.java110.intf.community.IRoomInnerServiceSMO;
+import com.java110.intf.fee.*;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
+import com.java110.po.account.AccountPo;
+import com.java110.po.accountDetail.AccountDetailPo;
+import com.java110.po.fee.PayFeeDetailPo;
+import com.java110.po.fee.PayFeePo;
+import com.java110.po.payFeeDetailDiscount.PayFeeDetailDiscountPo;
 import com.java110.po.returnPayFee.ReturnPayFeePo;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
-import com.java110.vo.ResultVo;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 绫昏〃杩帮細鏇存柊
@@ -50,23 +80,366 @@
     @Autowired
     private IReturnPayFeeV1InnerServiceSMO returnPayFeeV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IPayFeeConfigDiscountInnerServiceSMO payFeeConfigDiscountInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeDiscountInnerServiceSMO feeDiscountInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeDiscountRuleInnerServiceSMO feeDiscountRuleInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeDiscountSpecInnerServiceSMO feeDiscountSpecInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
+
+    @Autowired
+    private IPayFeeDetailV1InnerServiceSMO payFeeDetailV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPayFeeDetailDiscountInnerServiceSMO payFeeDetailDiscountInnerServiceSMOImpl;
+
+    @Autowired
+    private IReturnPayFeeInnerServiceSMO returnPayFeeInnerServiceSMOImpl;
+
+    @Autowired
+    private IPayFeeV1InnerServiceSMO payFeeV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPayFeeDetailDiscountNewV1InnerServiceSMO payFeeDetailDiscountNewV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+
+    @Autowired
+    private IAccountInnerServiceSMO accountInnerServiceSMOImpl;
+
+    @Autowired
+    private IAccountDetailInnerServiceSMO accountDetailInnerServiceSMOImpl;
+
+    private static final String SPEC_RATE = "89002020980015"; //璧犻�佹湀浠�
+
+    private static final String SPEC_MONTH = "89002020980014"; //鏈堜唤
+
+    public static final String CODE_PREFIX_ID = "10";
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
         Assert.hasKeyAndValue(reqJson, "returnFeeId", "returnFeeId涓嶈兘涓虹┖");
-        Assert.hasKeyAndValue(reqJson, "communityId", "communityId涓嶈兘涓虹┖");
+        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));
     }
 
     @Override
     @Java110Transactional
     public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
 
-        ReturnPayFeePo returnPayFeePo = BeanConvertUtil.covertBean(reqJson, ReturnPayFeePo.class);
-        int flag = returnPayFeeV1InnerServiceSMOImpl.updateReturnPayFee(returnPayFeePo);
+        FeeDetailDto feeDetailDto = (FeeDetailDto) reqJson.get("feeDetailDto");
+        updateReturnPayFee(reqJson);
 
+        //閫�璐瑰鏍搁�氳繃
+        if ("1100".equals(reqJson.getString("state"))) {
+            //鍒ゆ柇閫�璐瑰懆鏈熸槸鍚︿负璐熸暟濡傛灉涓嶆槸 鎶涘嚭寮傚父
+            String cycles = reqJson.getString("cycles");
+            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));
+            addFeeDetail(reqJson);
+
+            reqJson.put("state", "1100");
+            String receivableAmount = (String) reqJson.get("receivableAmount");
+            String receivedAmount = (String) reqJson.get("receivedAmount");
+            reqJson.put("cycles", unum(cycles));
+            reqJson.put("receivableAmount", unum(receivableAmount));
+            reqJson.put("receivedAmount", unum(receivedAmount));
+            reqJson.put("createTime", reqJson.get("payTime"));
+            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());
+            reqJson.put("feeTypeCd", feeDto1.getFeeTypeCd());
+            reqJson.put("communityId", feeDto1.getCommunityId());
+            reqJson.put("payerObjId", feeDto1.getPayerObjId());
+            reqJson.put("incomeObjId", feeDto1.getIncomeObjId());
+            reqJson.put("startTime", sdf.format(feeDto1.getStartTime()));
+            reqJson.put("userId", feeDto1.getUserId());
+            reqJson.put("feeFlag", feeDto1.getFeeFlag());
+            reqJson.put("statusCd", feeDto1.getStatusCd());
+            reqJson.put("state", feeDto1.getState());
+            reqJson.put("configId", feeDto1.getConfigId());
+            reqJson.put("payerObjType", feeDto1.getPayerObjType());
+            reqJson.put("feeId", feeDto1.getFeeId());
+            if ("888800010006".equals(feeDto1.getFeeTypeCds())) {
+                reqJson.put("state", "2009001");
+            } else {
+                reqJson.put("state", "2008001");
+            }
+            updateFee(reqJson);
+            //妫�鏌ユ槸鍚︽湁浼樻儬
+            PayFeeDetailDiscountDto payFeeDetailDiscountDto = new PayFeeDetailDiscountDto();
+            payFeeDetailDiscountDto.setCommunityId(feeDto1.getCommunityId());
+            payFeeDetailDiscountDto.setDetailId(reqJson.getString("detailId"));
+            List<PayFeeDetailDiscountDto> payFeeDetailDiscountDtos = payFeeDetailDiscountInnerServiceSMOImpl.queryPayFeeDetailDiscounts(payFeeDetailDiscountDto);
+            if (payFeeDetailDiscountDtos != null && payFeeDetailDiscountDtos.size() > 0) {
+                JSONObject discountJson = new JSONObject();
+                discountJson.put("discountId", payFeeDetailDiscountDtos.get(0).getDiscountId());
+                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("淇濆瓨涓氫富鐜伴噾璐︽埛鏄庣粏澶辫触锛�");
+                        }
+                    }
+                }
+            }
+        }
+        //涓嶉�氳繃
+        if ("1200".equals(reqJson.getString("state"))) {
+            reqJson.put("state", "1200");
+            updateFeeDetail(reqJson);
+            reqJson.put("state", "1200");
+            String cycles = (String) reqJson.get("cycles");
+            String receivableAmount = (String) reqJson.get("receivableAmount");
+            String receivedAmount = (String) reqJson.get("receivedAmount");
+            reqJson.put("cycles", unum(cycles));
+            reqJson.put("receivableAmount", unum(receivableAmount));
+            reqJson.put("receivedAmount", unum(receivedAmount));
+            reqJson.put("createTime", reqJson.get("payTime"));
+            updateFeeDetail(reqJson);
+        }
+    }
+
+    private double unum(String value) {
+        double dValue = Double.parseDouble(value);
+        return dValue * -1;
+    }
+
+    /**
+     * 娣诲姞娲诲姩淇℃伅
+     *
+     * @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, "鏈壘鍒伴渶瑕佷慨鏀圭殑娲诲姩 鎴栧鏉℃暟鎹�");
+
+
+        JSONObject businessReturnPayFee = new JSONObject();
+        businessReturnPayFee.putAll(BeanConvertUtil.beanCovertMap(returnPayFeeDtos.get(0)));
+        businessReturnPayFee.putAll(paramInJson);
+        ReturnPayFeePo returnPayFeePo = BeanConvertUtil.covertBean(businessReturnPayFee, ReturnPayFeePo.class);
+        int flag = returnPayFeeV1InnerServiceSMOImpl.updateReturnPayFee(returnPayFeePo);
         if (flag < 1) {
             throw new CmdException("鏇存柊鏁版嵁澶辫触");
         }
-
-        cmdDataFlowContext.setResponseEntity(ResultVo.success());
     }
+
+    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);
+        int flag = payFeeDetailV1InnerServiceSMOImpl.updatePayFeeDetailNew(returnPayFeePo);
+        if (flag < 1) {
+            throw new CmdException("鏇存柊鏁版嵁澶辫触");
+        }
+    }
+
+
+    public void addFeeDetail(JSONObject paramInJson) {
+
+        JSONObject businessReturnPayFee = new JSONObject();
+        businessReturnPayFee.putAll(paramInJson);
+        businessReturnPayFee.put("detailId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
+        PayFeeDetailPo returnPayFeePo = BeanConvertUtil.covertBean(businessReturnPayFee, PayFeeDetailPo.class);
+        int flag = payFeeDetailV1InnerServiceSMOImpl.savePayFeeDetailNew(returnPayFeePo);
+        if (flag < 1) {
+            throw new CmdException("鏇存柊鏁版嵁澶辫触");
+        }
+        paramInJson.put("newDetailId", businessReturnPayFee.getString("detailId"));
+    }
+
+    public void updateFee(JSONObject paramInJson) {
+        PayFeePo payFeePo = BeanConvertUtil.covertBean(paramInJson, PayFeePo.class);
+        int flag = payFeeV1InnerServiceSMOImpl.updatePayFee(payFeePo);
+        if (flag < 1) {
+            throw new CmdException("鏇存柊鏁版嵁澶辫触");
+        }
+    }
+
+    /**
+     * 娣诲姞灏忓尯淇℃伅
+     *
+     * @param paramInJson 鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+     */
+    public void addPayFeeDetailDiscountTwo(JSONObject paramInJson, JSONObject discountJson) {
+        JSONObject businessFee = new JSONObject();
+        businessFee.put("detailDiscountId", GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
+        businessFee.put("discountPrice", discountJson.getString("discountPrice"));
+        businessFee.put("discountId", discountJson.getString("discountId"));
+        businessFee.put("detailId", paramInJson.containsKey("newDetailId") ? paramInJson.getString("newDetailId") : paramInJson.getString("detailId"));
+        businessFee.put("communityId", paramInJson.getString("communityId"));
+        businessFee.put("feeId", paramInJson.getString("feeId"));
+        PayFeeDetailDiscountPo payFeeDetailDiscountPo = BeanConvertUtil.covertBean(businessFee, PayFeeDetailDiscountPo.class);
+        int flag = payFeeDetailDiscountNewV1InnerServiceSMOImpl.savePayFeeDetailDiscountNew(payFeeDetailDiscountPo);
+        if (flag < 1) {
+            throw new CmdException("鏇存柊鏁版嵁澶辫触");
+        }
+    }
+
 }

--
Gitblit v1.8.0