소스 검색

优化代码

java110 5 년 전
부모
커밋
9620914bd9

+ 11 - 0
java110-bean/src/main/java/com/java110/dto/fee/FeeAttrDto.java

@@ -20,9 +20,12 @@ public class FeeAttrDto extends PageDto implements Serializable {
     public static final String SPEC_CD_IMPORT_FEE_NAME = "390002";//导入费用名称
 
     public static final String SPEC_CD_SHARE_DEGREES = "390003";//公摊用量
+    public static final String SPEC_CD_TOTAL_DEGREES = "390004";//公摊总用量
+    public static final String SPEC_CD_SHARE_FORMULA = "390005";//公摊公式
 
     private String attrId;
     private String specCd;
+    private String specCdName;
     private String communityId;
     private String feeId;
     private String value;
@@ -89,4 +92,12 @@ public class FeeAttrDto extends PageDto implements Serializable {
     public void setStatusCd(String statusCd) {
         this.statusCd = statusCd;
     }
+
+    public String getSpecCdName() {
+        return specCdName;
+    }
+
+    public void setSpecCdName(String specCdName) {
+        this.specCdName = specCdName;
+    }
 }

+ 11 - 0
java110-bean/src/main/java/com/java110/dto/fee/FeeDto.java

@@ -4,6 +4,7 @@ import com.java110.dto.PageDto;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @ClassName FloorDto
@@ -99,6 +100,8 @@ public class FeeDto extends PageDto implements Serializable {
     private Date preReadingTime;
     private Date curReadingTime;
 
+    private List<FeeAttrDto> feeAttrDtos;
+
 
     public String getAmount() {
         return amount;
@@ -485,4 +488,12 @@ public class FeeDto extends PageDto implements Serializable {
     public void setCurReadingTime(Date curReadingTime) {
         this.curReadingTime = curReadingTime;
     }
+
+    public List<FeeAttrDto> getFeeAttrDtos() {
+        return feeAttrDtos;
+    }
+
+    public void setFeeAttrDtos(List<FeeAttrDto> feeAttrDtos) {
+        this.feeAttrDtos = feeAttrDtos;
+    }
 }

+ 12 - 0
java110-bean/src/main/java/com/java110/vo/api/fee/ApiFeeDataVo.java

@@ -1,7 +1,10 @@
 package com.java110.vo.api.fee;
 
+import com.java110.dto.fee.FeeAttrDto;
+
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @ClassName ApiFeeDataVo
@@ -49,6 +52,7 @@ public class ApiFeeDataVo implements Serializable {
 
     private String preReadingTime;
     private String curReadingTime;
+    private List<FeeAttrDto> feeAttrs;
 
     public String getAmount() {
         return amount;
@@ -289,4 +293,12 @@ public class ApiFeeDataVo implements Serializable {
     public void setCurReadingTime(String curReadingTime) {
         this.curReadingTime = curReadingTime;
     }
+
+    public List<FeeAttrDto> getFeeAttrs() {
+        return feeAttrs;
+    }
+
+    public void setFeeAttrs(List<FeeAttrDto> feeAttrs) {
+        this.feeAttrs = feeAttrs;
+    }
 }

+ 9 - 1
java110-db/src/main/resources/mapper/fee/FeeAttrServiceDaoImplMapper.xml

@@ -76,8 +76,10 @@
     <!-- 查询费用属性信息 add by wuxw 2018-07-03 -->
     <select id="getFeeAttrInfo" parameterType="Map" resultType="Map">
         select t.attr_id,t.attr_id attrId,t.spec_cd,t.spec_cd specCd,t.status_cd,t.status_cd
-        statusCd,t.community_id,t.community_id communityId,t.b_id,t.b_id bId,t.fee_id,t.fee_id feeId,t.value
+        statusCd,t.community_id,t.community_id communityId,t.b_id,t.b_id bId,t.fee_id,t.fee_id feeId,t.value,
+        td.name specCdName
         from pay_fee_attrs t
+        left join t_dict td on t.spec_cd = td.table_columns and td.table_name = 'pay_fee_attrs'
         where 1 =1
         <if test="attrId !=null and attrId != ''">
             and t.attr_id= #{attrId}
@@ -97,6 +99,12 @@
         <if test="feeId !=null and feeId != ''">
             and t.fee_id= #{feeId}
         </if>
+        <if test="feeIds !=null">
+            and t.fee_id in
+            <foreach collection="feeIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="value !=null and value != ''">
             and t.value= #{value}
         </if>

+ 1 - 0
java110-db/src/main/resources/mapper/fee/FeeServiceDaoImplMapper.xml

@@ -655,6 +655,7 @@
     </select>
 
 
+
     <!-- 查询费用信息 add by wuxw 2018-07-03 -->
     <select id="queryFeeByAttr" parameterType="Map" resultType="Map">
         select t.amount,t.income_obj_id,t.income_obj_id incomeObjId,t.fee_type_cd,t.fee_type_cd

+ 13 - 6
service-api/src/main/java/com/java110/api/listener/fee/ListFeeListener.java

@@ -28,12 +28,7 @@ import org.springframework.http.ResponseEntity;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 /**
@@ -103,6 +98,7 @@ public class ListFeeListener extends AbstractServiceApiListener {
             List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
             computeFeePrice(feeDtos);
             fees = BeanConvertUtil.covertBeanList(feeDtos, ApiFeeDataVo.class);
+            freshFeeAttrs(fees, feeDtos);
 
 
         } else {
@@ -121,6 +117,17 @@ public class ListFeeListener extends AbstractServiceApiListener {
 
     }
 
+    private void freshFeeAttrs(List<ApiFeeDataVo> fees, List<FeeDto> feeDtos) {
+
+        for (ApiFeeDataVo apiFeeDataVo : fees) {
+            for (FeeDto feeDto : feeDtos) {
+                if (apiFeeDataVo.getFeeId().equals(feeDto.getFeeId())) {
+                    apiFeeDataVo.setFeeAttrs(feeDto.getFeeAttrDtos());
+                }
+            }
+        }
+    }
+
     private void computeFeePrice(List<FeeDto> feeDtos) {
 
         for (FeeDto feeDto : feeDtos) {

+ 26 - 2
service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java

@@ -223,6 +223,7 @@ public class FeeSharingBMOImpl implements IFeeSharingBMO {
 
         payFeePos.add(payFeePo);
 
+        // 导入费用名称
         FeeAttrPo feeAttrPo = new FeeAttrPo();
         feeAttrPo.setCommunityId(reqJson.getString("communityId"));
         feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
@@ -231,6 +232,7 @@ public class FeeSharingBMOImpl implements IFeeSharingBMO {
         feeAttrPo.setFeeId(payFeePo.getFeeId());
         feeAttrPos.add(feeAttrPo);
 
+        // 公摊用量
         feeAttrPo = new FeeAttrPo();
         feeAttrPo.setCommunityId(reqJson.getString("communityId"));
         feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
@@ -238,6 +240,30 @@ public class FeeSharingBMOImpl implements IFeeSharingBMO {
         feeAttrPo.setValue(value);
         feeAttrPo.setFeeId(payFeePo.getFeeId());
         feeAttrPos.add(feeAttrPo);
+
+        // 公摊总用量
+        feeAttrPo = new FeeAttrPo();
+        feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+        feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+        feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_TOTAL_DEGREES);
+        feeAttrPo.setValue(reqJson.getString("totalDegrees"));
+        feeAttrPo.setFeeId(payFeePo.getFeeId());
+        feeAttrPos.add(feeAttrPo);
+
+        String formulaValueRemark = orgFormulaValue.replace("T", reqJson.getString("totalDegrees")+"<总用量>")
+                .replace("F", roomDto.getFloorArea()+"<"+roomDto.getFloorNum()+"栋面积>")
+                .replace("U", roomDto.getUnitArea()+"<"+roomDto.getUnitNum()+"单元面积>")
+                .replace("R", roomDto.getBuiltUpArea()+"<"+roomDto.getRoomNum()+"室面积>")
+                .replace("X", roomDto.getFeeCoefficient()+"<"+roomDto.getRoomNum()+"室算费系数>");
+        // 公摊公式
+        feeAttrPo = new FeeAttrPo();
+        feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+        feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+        feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_SHARE_FORMULA);
+        feeAttrPo.setValue(formulaValueRemark);
+        feeAttrPo.setFeeId(payFeePo.getFeeId());
+        feeAttrPos.add(feeAttrPo);
+
         ImportFeeDetailPo importFeeDetailPo = new ImportFeeDetailPo();
         importFeeDetailPo.setAmount(amount + "");
         importFeeDetailPo.setCommunityId(reqJson.getString("communityId"));
@@ -254,8 +280,6 @@ public class FeeSharingBMOImpl implements IFeeSharingBMO {
         importFeeDetailPo.setImportFeeId(importFeeId);
         importFeeDetailPo.setRemark("公摊用量:" + value);
         importFeeDetailPos.add(importFeeDetailPo);
-
-
     }
 
     private String deakFormula(FeeFormulaDto feeFormulaDto) {

+ 28 - 2
service-fee/src/main/java/com/java110/fee/smo/impl/FeeInnerServiceSMOImpl.java

@@ -7,6 +7,7 @@ import com.java110.core.base.smo.BaseServiceSMO;
 import com.java110.dto.PageDto;
 import com.java110.dto.fee.*;
 import com.java110.dto.user.UserDto;
+import com.java110.fee.dao.IFeeAttrServiceDao;
 import com.java110.fee.dao.IFeeServiceDao;
 import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
 import com.java110.intf.fee.IFeeInnerServiceSMO;
@@ -44,12 +45,14 @@ public class FeeInnerServiceSMOImpl extends BaseServiceSMO implements IFeeInnerS
     @Autowired
     private IUserInnerServiceSMO userInnerServiceSMOImpl;
 
+    @Autowired
+    private IFeeAttrServiceDao feeAttrServiceDaoImpl;
+
 
     @Override
     public List<FeeDto> queryFees(@RequestBody FeeDto feeDto) {
 
         //校验是否传了 分页信息
-
         int page = feeDto.getPage();
 
         if (page != PageDto.DEFAULT_PAGE) {
@@ -69,6 +72,30 @@ public class FeeInnerServiceSMOImpl extends BaseServiceSMO implements IFeeInnerS
         for (FeeDto fee : fees) {
             refreshFee(fee, users);
         }
+
+        List<String> feeIds = new ArrayList<>();
+        for (FeeDto tmpFeeDto : fees) {
+            feeIds.add(tmpFeeDto.getFeeId());
+        }
+
+        Map info = new HashMap();
+        info.put("feeIds", feeIds);
+        info.put("communityId", feeDto.getCommunityId());
+
+        List<Map> attrMaps = feeAttrServiceDaoImpl.getFeeAttrInfo(info);
+
+        List<FeeAttrDto> feeAttrDtos = BeanConvertUtil.covertBeanList(attrMaps, FeeAttrDto.class);
+        List<FeeAttrDto> tmpFeeAttrDtos = null;
+        for (FeeDto tmpFeeDto : fees) {
+            tmpFeeAttrDtos = new ArrayList<>();
+            for (FeeAttrDto feeAttrDto : feeAttrDtos) {
+
+                if (tmpFeeDto.getFeeId().equals(feeAttrDto.getFeeId())) {
+                    tmpFeeAttrDtos.add(feeAttrDto);
+                }
+            }
+            tmpFeeDto.setFeeAttrDtos(tmpFeeAttrDtos);
+        }
         return fees;
     }
 
@@ -177,7 +204,6 @@ public class FeeInnerServiceSMOImpl extends BaseServiceSMO implements IFeeInnerS
     }
 
 
-
     @Override
     public List<FeeDto> computeBillOweFee(@RequestBody FeeDto feeDto) {
         int page = feeDto.getPage();