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/bmo/impl/ImportRoomFeeImpl.java |  669 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 636 insertions(+), 33 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/bmo/impl/ImportRoomFeeImpl.java b/service-fee/src/main/java/com/java110/fee/bmo/impl/ImportRoomFeeImpl.java
old mode 100644
new mode 100755
index f378907..d4261ec
--- a/service-fee/src/main/java/com/java110/fee/bmo/impl/ImportRoomFeeImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/bmo/impl/ImportRoomFeeImpl.java
@@ -4,41 +4,39 @@
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Transactional;
 import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.dto.RoomDto;
-import com.java110.dto.fee.*;
-import com.java110.dto.parking.ParkingSpaceDto;
-import com.java110.dto.repair.RepairDto;
+import com.java110.dto.fee.FeeAttrDto;
+import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.importData.ImportFeeDto;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.importData.ImportRoomFee;
 import com.java110.fee.bmo.IImportRoomFee;
-import com.java110.fee.bmo.IPayOweFee;
-import com.java110.fee.listener.fee.UpdateFeeInfoListener;
-import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
-import com.java110.intf.community.IRepairInnerServiceSMO;
 import com.java110.intf.community.IRoomInnerServiceSMO;
 import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
 import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
 import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
 import com.java110.intf.fee.IFeeInnerServiceSMO;
-import com.java110.po.fee.PayFeeDetailPo;
+import com.java110.intf.fee.IImportFeeDetailInnerServiceSMO;
+import com.java110.intf.fee.IImportFeeInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
+import com.java110.po.fee.FeeAttrPo;
+import com.java110.po.fee.PayFeeConfigPo;
 import com.java110.po.fee.PayFeePo;
-import com.java110.po.owner.RepairPoolPo;
-import com.java110.utils.constant.FeeFlagTypeConstant;
-import com.java110.utils.constant.FeeStateConstant;
-import com.java110.utils.constant.ResponseConstant;
-import com.java110.utils.exception.ListenerExecuteException;
-import com.java110.utils.lock.DistributedLock;
+import com.java110.po.importFee.ImportFeePo;
+import com.java110.po.importFee.ImportFeeDetailPo;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.java110.core.log.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
-import java.text.ParseException;
-import java.util.Calendar;
-import java.util.Date;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -47,11 +45,15 @@
 @Service
 public class ImportRoomFeeImpl implements IImportRoomFee {
 
-    private static Logger logger = LoggerFactory.getLogger(UpdateFeeInfoListener.class);
+    private static Logger logger = LoggerFactory.getLogger(ImportRoomFeeImpl.class);
+
+
+    private static final String IMPORT_FEE_NAME = "瀵煎叆璐圭敤";
 
 
     @Autowired
     private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+
 
     @Autowired
     private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
@@ -63,43 +65,644 @@
     private IFeeAttrInnerServiceSMO feeAttrInnerServiceSMOImpl;
 
     @Autowired
-    private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
+    private IImportFeeDetailInnerServiceSMO importFeeDetailInnerServiceSMOImpl;
 
     @Autowired
     private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
 
     @Autowired
-    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
+    private IImportFeeInnerServiceSMO importFeeInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
 
     /**
      * 娆犺垂缂磋垂
      *
-     * @param reqJson 缂磋垂鎶ユ枃 {"communityId":"7020181217000001","fees":[{"feeId":"902020073149140091","feePrice":90},{"feeId":"902020072844020741","feePrice":1500}]}
+     * @param reqJson
      * @return
      */
     @Override
     @Java110Transactional
     public ResponseEntity<String> importFee(JSONObject reqJson) {
 
+        int successCount = 0;
+        int errorCount = 0;
+
         //灏忓尯ID
         String communityId = reqJson.getString("communityId");
+        String importFeeId = reqJson.getString("importFeeId");
+        String feeTypeCd = reqJson.getString("feeTypeCd");//璐圭敤澶х被
+        String storeId = reqJson.getString("storeId");
+        String userId = reqJson.getString("userId");
+        String feeName = reqJson.getString("feeName");
+        String batchId = reqJson.getString("batchId");
 
 
         JSONArray importRoomFees = reqJson.getJSONArray("importRoomFees");
 
-        JSONObject feeObj = null;
+        List<ImportRoomFee> tmpImportRoomFees = importRoomFees.toJavaList(ImportRoomFee.class);
 
-        for (int feeIndex = 0; feeIndex < importRoomFees.size(); feeIndex++) {
-            feeObj = importRoomFees.getJSONObject(feeIndex);
-            Assert.hasKeyAndValue(feeObj, "feeId", "鏈寘鍚垂鐢ㄩ」ID");
-            Assert.hasKeyAndValue(feeObj, "feePrice", "鏈寘鍚即璐归噾棰�");
-
-            feeObj.put("communityId", communityId);
-
+        if (tmpImportRoomFees == null || tmpImportRoomFees.size() < 1) {
+            throw new IllegalArgumentException("鏈寘鍚鍏ヨ垂鐢�");
         }
-        return ResultVo.success();
+
+        if (StringUtil.isEmpty(feeName)) {
+            feeName = tmpImportRoomFees.get(0).getFeeName();
+        }
+
+        if (StringUtil.isEmpty(feeName)) {
+            feeName = IMPORT_FEE_NAME;
+        }
+
+        if (!StringUtil.isEmpty(feeName)) {
+            feeName = feeName.trim();
+        }
+
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setFeeTypeCd(feeTypeCd);
+        if (!StringUtil.isEmpty(tmpImportRoomFees.get(0).getConfigId())) {
+            feeConfigDto.setConfigId(tmpImportRoomFees.get(0).getConfigId());
+        } else {
+            feeConfigDto.setFeeNameEq(feeName);
+        }
+        feeConfigDto.setComputingFormula(FeeConfigDto.COMPUTING_FORMULA_DYNAMIC);
+        feeConfigDto.setCommunityId(communityId);
+        List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
+        // 鏍规嵁璐圭敤澶х被 鍒ゆ柇鏄惁鏈夊瓨鍦� 璐圭敤瀵煎叆鏀跺叆椤�
+        if (feeConfigDtos == null || feeConfigDtos.size() < 1) {
+            //鐢熸垚瀵煎叆璐�
+            feeConfigDto.setConfigId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_configId));
+            saveFeeConfig(feeConfigDto);
+        } else {
+            feeConfigDto.setConfigId(feeConfigDtos.get(0).getConfigId());
+        }
+
+        for (ImportRoomFee tmpImportRoomFee : tmpImportRoomFees) {
+            tmpImportRoomFee.setCommunityId(communityId);
+        }
+
+        Assert.isNotNull(tmpImportRoomFees, "鍙傛暟閿欒锛屾湭鍖呭惈澶勭悊璐圭敤");
+
+        tmpImportRoomFees = roomInnerServiceSMOImpl.freshRoomIds(tmpImportRoomFees);
+
+        List<String> roomIds = new ArrayList<>();
+        for (ImportRoomFee importRoomFee : tmpImportRoomFees) {
+            roomIds.add(importRoomFee.getRoomId());
+        }
+        OwnerDto ownerDto = new OwnerDto();
+        ownerDto.setCommunityId(tmpImportRoomFees.get(0).getCommunityId());
+        ownerDto.setRoomIds(roomIds.toArray(new String[roomIds.size()]));
+        List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByRoom(ownerDto);
+        for (ImportRoomFee importRoomFee : tmpImportRoomFees) {
+            if (StringUtil.isEmpty(importRoomFee.getRoomId())) {
+                throw new IllegalArgumentException("鎴垮眿涓嶅瓨鍦紝" + importRoomFee.getFloorNum() + "-" + importRoomFee.getUnitNum() + "-" + importRoomFee.getRoomNum());
+            }
+            for (OwnerDto tmpOwnerDto : ownerDtos) {
+                if (importRoomFee.getRoomId().equals(tmpOwnerDto.getRoomId())) {
+                    importRoomFee.setOwnerId(tmpOwnerDto.getOwnerId());
+                    importRoomFee.setOwnerName(tmpOwnerDto.getName());
+                    importRoomFee.setOwnerLink(tmpOwnerDto.getLink());
+                }
+            }
+        }
+
+        List<PayFeePo> payFeePos = new ArrayList<>();
+        List<FeeAttrPo> feeAttrPos = new ArrayList<>();
+        List<ImportFeeDetailPo> importFeeDetailPos = new ArrayList<>();
+        PayFeePo payFeePo = null;
+        ImportFeeDetailPo importFeeDetailPo = null;
+        for (ImportRoomFee importRoomFee : tmpImportRoomFees) {
+            if (StringUtil.isEmpty(importRoomFee.getRoomId()) || importRoomFee.getRoomId().startsWith("-") ||
+                    StringUtil.isEmpty(importRoomFee.getFloorNum()) || importRoomFee.getFloorNum().startsWith("-") ||
+                    StringUtil.isEmpty(importRoomFee.getUnitNum()) || importRoomFee.getUnitNum().startsWith("-")
+            ) {
+                errorCount++;
+                continue;
+            }
+            successCount++;
+            payFeePo = new PayFeePo();
+            payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
+            payFeePo.setEndTime(importRoomFee.getStartTime());
+            payFeePo.setState(FeeDto.STATE_DOING);
+            payFeePo.setCommunityId(communityId);
+            payFeePo.setConfigId(feeConfigDto.getConfigId());
+            payFeePo.setPayerObjId(importRoomFee.getRoomId());
+            payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+            payFeePo.setUserId(userId);
+            payFeePo.setIncomeObjId(storeId);
+            payFeePo.setFeeTypeCd(feeTypeCd);
+            payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE);
+            payFeePo.setAmount(importRoomFee.getAmount());
+            payFeePo.setBatchId(batchId);
+            //payFeePo.setStartTime(importRoomFee.getStartTime());
+            payFeePo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+
+            payFeePos.add(payFeePo);
+
+            FeeAttrPo feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(communityId);
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_IMPORT_FEE_NAME);
+            feeAttrPo.setValue(importRoomFee.getFeeName());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+
+            //todo 鎻掑叆鎴鏃堕棿
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(communityId);
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME);
+            feeAttrPo.setValue(importRoomFee.getEndTime());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+
+            //todo 璐圭敤瀵硅薄鍚嶇О
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(communityId);
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_PAY_OBJECT_NAME);
+            feeAttrPo.setValue(importRoomFee.getRoomName());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+
+
+            if (!StringUtil.isEmpty(importRoomFee.getOwnerId())) {
+                feeAttrPo = new FeeAttrPo();
+                feeAttrPo.setCommunityId(communityId);
+                feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+                feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID);
+                feeAttrPo.setValue(importRoomFee.getOwnerId());
+                feeAttrPo.setFeeId(payFeePo.getFeeId());
+                feeAttrPos.add(feeAttrPo);
+
+                feeAttrPo = new FeeAttrPo();
+                feeAttrPo.setCommunityId(communityId);
+                feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+                feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME);
+                feeAttrPo.setValue(importRoomFee.getOwnerName());
+                feeAttrPo.setFeeId(payFeePo.getFeeId());
+                feeAttrPos.add(feeAttrPo);
+
+                feeAttrPo = new FeeAttrPo();
+                feeAttrPo.setCommunityId(communityId);
+                feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+                feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK);
+                feeAttrPo.setValue(importRoomFee.getOwnerLink());
+                feeAttrPo.setFeeId(payFeePo.getFeeId());
+                feeAttrPos.add(feeAttrPo);
+            }
+
+            importFeeDetailPo = new ImportFeeDetailPo();
+            importFeeDetailPo.setAmount(importRoomFee.getAmount());
+            importFeeDetailPo.setCommunityId(communityId);
+            importFeeDetailPo.setEndTime(importRoomFee.getEndTime());
+            importFeeDetailPo.setFeeId(payFeePo.getFeeId());
+            importFeeDetailPo.setFeeName(importRoomFee.getFeeName());
+            importFeeDetailPo.setFloorNum(importRoomFee.getFloorNum());
+            importFeeDetailPo.setUnitNum(importRoomFee.getUnitNum());
+            importFeeDetailPo.setRoomNum(importRoomFee.getRoomNum());
+            importFeeDetailPo.setRoomId(importRoomFee.getRoomId());
+            importFeeDetailPo.setObjId(importRoomFee.getRoomId());
+            importFeeDetailPo.setObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+            importFeeDetailPo.setObjName(!"0".equals(importRoomFee.getUnitNum())
+                    ? importRoomFee.getFloorNum() + "鏍�" + importRoomFee.getUnitNum() + "鍗曞厓" + importRoomFee.getRoomNum() + "瀹�" :
+                    importRoomFee.getFloorNum() + "鏍�" + importRoomFee.getRoomNum() + "瀹�"
+            );
+            importFeeDetailPo.setStartTime(importRoomFee.getStartTime());
+            importFeeDetailPo.setIfdId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_IfdId));
+            importFeeDetailPo.setState("1000");
+            importFeeDetailPo.setImportFeeId(importFeeId);
+            importFeeDetailPos.add(importFeeDetailPo);
+        }
+
+        feeInnerServiceSMOImpl.saveFee(payFeePos);
+
+        feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrPos);
+
+        ImportFeeDto importFeeDto = new ImportFeeDto();
+        importFeeDto.setCommunityId(communityId);
+        importFeeDto.setImportFeeId(importFeeId);
+
+        List<ImportFeeDto> importRoomFeess = importFeeInnerServiceSMOImpl.queryImportFees(importFeeDto);
+
+        if (importRoomFeess == null || importRoomFeess.size() < 1) {
+            //淇濆瓨鏃ュ織
+            ImportFeePo importFeePo = new ImportFeePo();
+            importFeePo.setCommunityId(communityId);
+            importFeePo.setFeeTypeCd(feeTypeCd);
+            importFeePo.setImportFeeId(importFeeId);
+            importFeeInnerServiceSMOImpl.saveImportFee(importFeePo);
+        }
+
+
+        importFeeDetailInnerServiceSMOImpl.saveImportFeeDetails(importFeeDetailPos);
+
+
+        JSONObject data = new JSONObject();
+        data.put("successCount", successCount);
+        data.put("errorCount", errorCount);
+
+        return ResultVo.createResponseEntity(data);
     }
 
+    /**
+     * 杞﹁締璐圭敤瀵煎叆
+     *
+     * @param reqJson
+     * @return
+     */
+    @Override
+    @Java110Transactional
+    public ResponseEntity<String> importCarFee(JSONObject reqJson) {
+
+        int successCount = 0;
+        int errorCount = 0;
+
+        //灏忓尯ID
+        String communityId = reqJson.getString("communityId");
+        String importFeeId = reqJson.getString("importFeeId");
+        String feeTypeCd = reqJson.getString("feeTypeCd");//璐圭敤澶х被
+        String storeId = reqJson.getString("storeId");
+        String userId = reqJson.getString("userId");
+        String feeName = reqJson.getString("feeName");
+        String batchId = reqJson.getString("batchId");
+        JSONArray importCarFees = reqJson.getJSONArray("importCarFees");
+
+        List<ImportRoomFee> tmpImportCarFees = importCarFees.toJavaList(ImportRoomFee.class);
+        if (StringUtil.isEmpty(feeName)) {
+            feeName = IMPORT_FEE_NAME;
+        }
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setFeeTypeCd(feeTypeCd);
+        if (!StringUtil.isEmpty(tmpImportCarFees.get(0).getConfigId())) {
+            feeConfigDto.setConfigId(tmpImportCarFees.get(0).getConfigId());
+        } else {
+            feeConfigDto.setFeeNameEq(feeName);
+        }
+        feeConfigDto.setComputingFormula(FeeConfigDto.COMPUTING_FORMULA_DYNAMIC);
+        feeConfigDto.setCommunityId(communityId);
+        List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
+        // 鏍规嵁璐圭敤澶х被 鍒ゆ柇鏄惁鏈夊瓨鍦� 璐圭敤瀵煎叆鏀跺叆椤�
+        if (feeConfigDtos == null || feeConfigDtos.size() < 1) {
+            //鐢熸垚瀵煎叆璐�
+            feeConfigDto.setConfigId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_configId));
+            saveFeeConfig(feeConfigDto);
+        } else {
+            feeConfigDto.setConfigId(feeConfigDtos.get(0).getConfigId());
+        }
+
+
+
+
+        for (ImportRoomFee tmpImportCarFee : tmpImportCarFees) {
+            tmpImportCarFee.setCommunityId(communityId);
+        }
+
+        Assert.isNotNull(tmpImportCarFees, "鍙傛暟閿欒锛屾湭鍖呭惈澶勭悊璐圭敤");
+
+        tmpImportCarFees = ownerCarInnerServiceSMOImpl.freshCarIds(tmpImportCarFees);
+
+        List<PayFeePo> payFeePos = new ArrayList<>();
+        List<FeeAttrPo> feeAttrPos = new ArrayList<>();
+        List<ImportFeeDetailPo> importFeeDetailPos = new ArrayList<>();
+        PayFeePo payFeePo = null;
+        ImportFeeDetailPo importFeeDetailPo = null;
+        for (ImportRoomFee importCarFee : tmpImportCarFees) {
+            if (StringUtil.isEmpty(importCarFee.getCarId()) || importCarFee.getCarId().startsWith("-") ||
+                    StringUtil.isEmpty(importCarFee.getCarNum()) || importCarFee.getCarNum().startsWith("-")
+            ) {
+                errorCount++;
+                continue;
+            }
+            successCount++;
+            payFeePo = new PayFeePo();
+            payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
+            payFeePo.setEndTime(importCarFee.getStartTime());
+            payFeePo.setState(FeeDto.STATE_DOING);
+            payFeePo.setCommunityId(communityId);
+            payFeePo.setConfigId(feeConfigDto.getConfigId());
+            payFeePo.setPayerObjId(importCarFee.getCarId());
+            payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
+            payFeePo.setUserId(userId);
+            payFeePo.setIncomeObjId(storeId);
+            payFeePo.setFeeTypeCd(feeTypeCd);
+            payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE);
+            payFeePo.setAmount(importCarFee.getAmount());
+            payFeePo.setBatchId(batchId);
+            //payFeePo.setStartTime(importRoomFee.getStartTime());
+            payFeePo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+
+            payFeePos.add(payFeePo);
+
+            FeeAttrPo feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(communityId);
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_IMPORT_FEE_NAME);
+            feeAttrPo.setValue(importCarFee.getFeeName());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+
+
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(communityId);
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME);
+            feeAttrPo.setValue(importCarFee.getEndTime());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+
+
+            if (!StringUtil.isEmpty(importCarFee.getOwnerId())) {
+                feeAttrPo = new FeeAttrPo();
+                feeAttrPo.setCommunityId(communityId);
+                feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+                feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID);
+                feeAttrPo.setValue(importCarFee.getOwnerId());
+                feeAttrPo.setFeeId(payFeePo.getFeeId());
+                feeAttrPos.add(feeAttrPo);
+
+                feeAttrPo = new FeeAttrPo();
+                feeAttrPo.setCommunityId(communityId);
+                feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+                feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME);
+                feeAttrPo.setValue(importCarFee.getOwnerName());
+                feeAttrPo.setFeeId(payFeePo.getFeeId());
+                feeAttrPos.add(feeAttrPo);
+
+                feeAttrPo = new FeeAttrPo();
+                feeAttrPo.setCommunityId(communityId);
+                feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+                feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK);
+                feeAttrPo.setValue(importCarFee.getOwnerLink());
+                feeAttrPo.setFeeId(payFeePo.getFeeId());
+                feeAttrPos.add(feeAttrPo);
+            }
+
+            importFeeDetailPo = new ImportFeeDetailPo();
+            importFeeDetailPo.setAmount(importCarFee.getAmount());
+            importFeeDetailPo.setCommunityId(communityId);
+            importFeeDetailPo.setEndTime(importCarFee.getEndTime());
+            importFeeDetailPo.setFeeId(payFeePo.getFeeId());
+            importFeeDetailPo.setFeeName(importCarFee.getFeeName());
+            importFeeDetailPo.setFloorNum("-");
+            importFeeDetailPo.setUnitNum("-");
+            importFeeDetailPo.setRoomNum("-");
+            importFeeDetailPo.setRoomId("-");
+            importFeeDetailPo.setObjId(importCarFee.getCarId());
+            importFeeDetailPo.setObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
+            importFeeDetailPo.setObjName(importCarFee.getCarNum());
+            importFeeDetailPo.setStartTime(importCarFee.getStartTime());
+            importFeeDetailPo.setIfdId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_IfdId));
+            importFeeDetailPo.setState("1000");
+            importFeeDetailPo.setImportFeeId(importFeeId);
+            importFeeDetailPos.add(importFeeDetailPo);
+        }
+
+        feeInnerServiceSMOImpl.saveFee(payFeePos);
+
+        feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrPos);
+
+        ImportFeeDto importFeeDto = new ImportFeeDto();
+        importFeeDto.setCommunityId(communityId);
+        importFeeDto.setImportFeeId(importFeeId);
+
+        List<ImportFeeDto> importRoomFeess = importFeeInnerServiceSMOImpl.queryImportFees(importFeeDto);
+
+        if (importRoomFeess == null || importRoomFeess.size() < 1) {
+            //淇濆瓨鏃ュ織
+            ImportFeePo importFeePo = new ImportFeePo();
+            importFeePo.setCommunityId(communityId);
+            importFeePo.setFeeTypeCd(feeTypeCd);
+            importFeePo.setImportFeeId(importFeeId);
+            importFeeInnerServiceSMOImpl.saveImportFee(importFeePo);
+        }
+
+
+        importFeeDetailInnerServiceSMOImpl.saveImportFeeDetails(importFeeDetailPos);
+
+
+        JSONObject data = new JSONObject();
+        data.put("successCount", successCount);
+        data.put("errorCount", errorCount);
+
+        return ResultVo.createResponseEntity(data);
+    }
+
+    /**
+     * 鍚堝悓璐圭敤瀵煎叆
+     *
+     * @param reqJson
+     * @return
+     */
+    @Override
+    @Java110Transactional
+    public ResponseEntity<String> importContractFees(JSONObject reqJson) {
+
+        int successCount = 0;
+        int errorCount = 0;
+
+        //灏忓尯ID
+        String communityId = reqJson.getString("communityId");
+        String importFeeId = reqJson.getString("importFeeId");
+        String feeTypeCd = reqJson.getString("feeTypeCd");//璐圭敤澶х被
+        String storeId = reqJson.getString("storeId");
+        String userId = reqJson.getString("userId");
+        String feeName = reqJson.getString("feeName");
+        String batchId = reqJson.getString("batchId");
+
+        JSONArray importCarFees = reqJson.getJSONArray("importRoomFees");
+
+        List<ImportRoomFee> tmpImportContractFees = importCarFees.toJavaList(ImportRoomFee.class);
+
+        if (StringUtil.isEmpty(feeName)) {
+            feeName = IMPORT_FEE_NAME;
+        }
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setFeeTypeCd(feeTypeCd);
+        //feeConfigDto.setFeeNameEq(feeName);
+        if (!StringUtil.isEmpty(tmpImportContractFees.get(0).getConfigId())) {
+            feeConfigDto.setConfigId(tmpImportContractFees.get(0).getConfigId());
+        } else {
+            feeConfigDto.setFeeNameEq(feeName);
+        }
+        feeConfigDto.setComputingFormula(FeeConfigDto.COMPUTING_FORMULA_DYNAMIC);
+        feeConfigDto.setCommunityId(communityId);
+        List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
+        // 鏍规嵁璐圭敤澶х被 鍒ゆ柇鏄惁鏈夊瓨鍦� 璐圭敤瀵煎叆鏀跺叆椤�
+        if (feeConfigDtos == null || feeConfigDtos.size() < 1) {
+            //鐢熸垚瀵煎叆璐�
+            feeConfigDto.setConfigId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_configId));
+            saveFeeConfig(feeConfigDto);
+        } else {
+            feeConfigDto.setConfigId(feeConfigDtos.get(0).getConfigId());
+        }
+
+
+        for (ImportRoomFee tmpImportCarFee : tmpImportContractFees) {
+            tmpImportCarFee.setCommunityId(communityId);
+        }
+
+        Assert.isNotNull(tmpImportContractFees, "鍙傛暟閿欒锛屾湭鍖呭惈澶勭悊璐圭敤");
+
+        List<PayFeePo> payFeePos = new ArrayList<>();
+        List<FeeAttrPo> feeAttrPos = new ArrayList<>();
+        List<ImportFeeDetailPo> importFeeDetailPos = new ArrayList<>();
+        PayFeePo payFeePo = null;
+        ImportFeeDetailPo importFeeDetailPo = null;
+        for (ImportRoomFee importCarFee : tmpImportContractFees) {
+            if (StringUtil.isEmpty(importCarFee.getContractId()) || importCarFee.getContractId().startsWith("-")
+            ) {
+                errorCount++;
+                continue;
+            }
+            successCount++;
+            payFeePo = new PayFeePo();
+            payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
+            payFeePo.setEndTime(importCarFee.getStartTime());
+            payFeePo.setState(FeeDto.STATE_DOING);
+            payFeePo.setCommunityId(communityId);
+            payFeePo.setConfigId(feeConfigDto.getConfigId());
+            payFeePo.setPayerObjId(importCarFee.getContractId());
+            payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CONTRACT);
+            payFeePo.setUserId(userId);
+            payFeePo.setIncomeObjId(storeId);
+            payFeePo.setFeeTypeCd(feeTypeCd);
+            payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE);
+            payFeePo.setAmount(importCarFee.getAmount());
+            payFeePo.setStartTime(importCarFee.getStartTime());
+            payFeePo.setBatchId(batchId);
+            //payFeePo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+
+            payFeePos.add(payFeePo);
+
+            FeeAttrPo feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(communityId);
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_IMPORT_FEE_NAME);
+            feeAttrPo.setValue(importCarFee.getFeeName());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+
+
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(communityId);
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME);
+            feeAttrPo.setValue(importCarFee.getEndTime());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+
+
+            if (!StringUtil.isEmpty(importCarFee.getOwnerId())) {
+                feeAttrPo = new FeeAttrPo();
+                feeAttrPo.setCommunityId(communityId);
+                feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+                feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID);
+                feeAttrPo.setValue(importCarFee.getOwnerId());
+                feeAttrPo.setFeeId(payFeePo.getFeeId());
+                feeAttrPos.add(feeAttrPo);
+
+                feeAttrPo = new FeeAttrPo();
+                feeAttrPo.setCommunityId(communityId);
+                feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+                feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME);
+                feeAttrPo.setValue(importCarFee.getOwnerName());
+                feeAttrPo.setFeeId(payFeePo.getFeeId());
+                feeAttrPos.add(feeAttrPo);
+
+                feeAttrPo = new FeeAttrPo();
+                feeAttrPo.setCommunityId(communityId);
+                feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+                feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK);
+                feeAttrPo.setValue(importCarFee.getOwnerLink());
+                feeAttrPo.setFeeId(payFeePo.getFeeId());
+                feeAttrPos.add(feeAttrPo);
+            }
+
+            importFeeDetailPo = new ImportFeeDetailPo();
+            importFeeDetailPo.setAmount(importCarFee.getAmount());
+            importFeeDetailPo.setCommunityId(communityId);
+            importFeeDetailPo.setEndTime(importCarFee.getEndTime());
+            importFeeDetailPo.setFeeId(payFeePo.getFeeId());
+            importFeeDetailPo.setFeeName(importCarFee.getFeeName());
+            importFeeDetailPo.setFloorNum("-");
+            importFeeDetailPo.setUnitNum("-");
+            importFeeDetailPo.setRoomNum("-");
+            importFeeDetailPo.setRoomId("-");
+            importFeeDetailPo.setObjId(importCarFee.getContractId());
+            importFeeDetailPo.setObjType(FeeDto.PAYER_OBJ_TYPE_CONTRACT);
+            importFeeDetailPo.setObjName("鍚堝悓");
+            importFeeDetailPo.setStartTime(importCarFee.getStartTime());
+            importFeeDetailPo.setIfdId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_IfdId));
+            importFeeDetailPo.setState("1000");
+            importFeeDetailPo.setImportFeeId(importFeeId);
+            importFeeDetailPos.add(importFeeDetailPo);
+        }
+
+        feeInnerServiceSMOImpl.saveFee(payFeePos);
+
+        feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrPos);
+
+        ImportFeeDto importFeeDto = new ImportFeeDto();
+        importFeeDto.setCommunityId(communityId);
+        importFeeDto.setImportFeeId(importFeeId);
+
+        List<ImportFeeDto> importRoomFeess = importFeeInnerServiceSMOImpl.queryImportFees(importFeeDto);
+
+        if (importRoomFeess == null || importRoomFeess.size() < 1) {
+            //淇濆瓨鏃ュ織
+            ImportFeePo importFeePo = new ImportFeePo();
+            importFeePo.setCommunityId(communityId);
+            importFeePo.setFeeTypeCd(feeTypeCd);
+            importFeePo.setImportFeeId(importFeeId);
+            importFeeInnerServiceSMOImpl.saveImportFee(importFeePo);
+        }
+
+
+        importFeeDetailInnerServiceSMOImpl.saveImportFeeDetails(importFeeDetailPos);
+
+
+        JSONObject data = new JSONObject();
+        data.put("successCount", successCount);
+        data.put("errorCount", errorCount);
+
+        return ResultVo.createResponseEntity(data);
+    }
+
+    /**
+     * 淇濆瓨淇濆瓨瀵煎叆璐圭敤閰嶇疆
+     *
+     * @param feeConfigDto
+     */
+    private void saveFeeConfig(FeeConfigDto feeConfigDto) {
+
+        PayFeeConfigPo payFeeConfigPo = BeanConvertUtil.covertBean(feeConfigDto, PayFeeConfigPo.class);
+        payFeeConfigPo.setAdditionalAmount("0");
+        payFeeConfigPo.setBillType(FeeConfigDto.BILL_TYPE_MONTH);
+        payFeeConfigPo.setComputingFormula(FeeConfigDto.COMPUTING_FORMULA_DYNAMIC);
+        payFeeConfigPo.setEndTime(DateUtil.getLastTime());
+        payFeeConfigPo.setFeeFlag("2006012");
+        payFeeConfigPo.setIsDefault("F");
+        payFeeConfigPo.setPaymentCd("2100");
+        payFeeConfigPo.setFeeName(feeConfigDto.getFeeNameEq());
+        payFeeConfigPo.setSquarePrice("0");
+        payFeeConfigPo.setPaymentCycle("1");
+        payFeeConfigPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        payFeeConfigPo.setDeductFrom(FeeConfigDto.DEDUCT_FROM_N);
+        payFeeConfigPo.setDecimalPlace("2");
+        payFeeConfigPo.setScale("1");
+        payFeeConfigPo.setUnits("鍏�");
+        payFeeConfigPo.setPayOnline("Y");
+        int saveFlag = feeConfigInnerServiceSMOImpl.saveFeeConfig(payFeeConfigPo);
+
+        if (saveFlag < 1) {
+            throw new IllegalArgumentException("鍒涘缓瀵煎叆璐圭敤澶辫触");
+        }
+    }
 
 
 }

--
Gitblit v1.8.0