Преглед изворни кода

1、收入填报时需要填到账时间;
2、累计欠费汇总时A项超额不能抵扣B项欠费;
3、超额完成收入需要汇总

yanliming пре 10 месеци
родитељ
комит
6c426a8381

+ 2 - 0
common/src/main/java/com/jpsoft/employment/modules/base/dao/FundIncomeInfoDAO.java

@@ -35,6 +35,8 @@ public interface FundIncomeInfoDAO {
 
     Map<String, BigDecimal> sumBudgetRevenue(@Param("serialNumber") String serialNumber, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("templateId") String templateId);
 
+    List<Map<String, BigDecimal>> findBudgetRevenue(@Param("serialNumber") String serialNumber, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("templateId") String templateId);
+
     FundIncomeInfo findOneByTemplateOptionId(@Param("templateOptionId") String templateOptionId, @Param("startDate") String startDate, @Param("endDate") String endDate);
 
     List<FundIncomeInfo> search(Map<String, Object> searchParams, List<Sort> sortList);

+ 1 - 0
common/src/main/java/com/jpsoft/employment/modules/base/service/FundIncomeInfoService.java

@@ -19,6 +19,7 @@ public interface FundIncomeInfoService {
 	BigDecimal sumBySerialNumber(String serialNumber,String curMonth,String templateId);
 	BigDecimal sumByTemplateOptionId(String templateOptionId,String startDate,String endDate);
 	Map<String,BigDecimal> sumBudgetRevenue(String serialNumber,String startDate,String endDate,String templateId);
+	List<Map<String, BigDecimal>> findBudgetRevenue(String serialNumber,String startDate,String endDate,String templateId);
 	FundIncomeInfo findOneByTemplateOptionId(String templateOptionId,String startDate,String endDate);
 	Page<FundIncomeInfo> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
 }

+ 5 - 0
common/src/main/java/com/jpsoft/employment/modules/base/service/impl/FundIncomeInfoServiceImpl.java

@@ -197,6 +197,11 @@ public class FundIncomeInfoServiceImpl implements FundIncomeInfoService {
         return fundIncomeInfoDAO.sumBudgetRevenue(serialNumber, startDate, endDate, templateId);
     }
 
+    @Override
+    public List<Map<String, BigDecimal>> findBudgetRevenue(String serialNumber,String startDate,String endDate,String templateId){
+        return fundIncomeInfoDAO.findBudgetRevenue(serialNumber, startDate, endDate, templateId);
+    }
+
     @Override
     public FundIncomeInfo findOneByTemplateOptionId(String templateOptionId,String startDate,String endDate){
         return fundIncomeInfoDAO.findOneByTemplateOptionId(templateOptionId, startDate, endDate);

+ 18 - 0
common/src/main/resources/mapper/base/FundIncomeInfo.xml

@@ -241,6 +241,24 @@
 			order by create_time
 
 	</select>
+	<select id="findBudgetRevenue" resultType="java.util.Map">
+		<![CDATA[
+			select cur_budget_revenue-sum(cur_month_received) as 'accAmount' from base_fund_income_info
+		]]>
+		<where>
+			del_flag=false and is_sum=FALSE
+			<if test="serialNumber != null">
+				and serial_number like #{serialNumber}
+			</if>
+			<![CDATA[
+					and year_>=#{startDate}
+					and year_<=#{endDate}
+					and template_id=#{templateId}
+				]]>
+		</where>
+		GROUP BY template_option_id
+		order by create_time
+	</select>
 	<select id="search" parameterType="hashmap" resultMap="FundIncomeInfoMap">
 		<![CDATA[
 			select * from base_fund_income_info

+ 83 - 7
web/src/main/java/com/jpsoft/employment/modules/base/controller/FundIncomeInfoController.java

@@ -807,6 +807,7 @@ public class FundIncomeInfoController {
             BigDecimal accumulatedArrearsTotal = BigDecimal.ZERO;
             BigDecimal actualTotalRevenueTotal = BigDecimal.ZERO;
             BigDecimal curMonthReceivedTotal = BigDecimal.ZERO;
+            BigDecimal overIncomeTotal = BigDecimal.ZERO;
 
 
             List<TemplateInfo> templateInfoList1 = templateInfoService.list(searchParams, sortList);
@@ -873,9 +874,32 @@ public class FundIncomeInfoController {
                         totalSum = totalSum.add(sumCurBudgetRevenue);
                         totalActualTotalRevenue = totalActualTotalRevenue.add(actualTotalRevenue);
 
+                        //累计欠费
+                        List<Map<String, BigDecimal>> accListMap = fundIncomeInfoService.findBudgetRevenue(templateOption.getSerialNum() + "%", startYearDate, endDate, templateOption.getTemplateId());
+
                         BigDecimal accumulatedArrears = BigDecimal.ZERO;
-                        if (sumCurBudgetRevenue != null && actualTotalRevenue != null) {
-                            accumulatedArrears = sumCurBudgetRevenue.subtract(actualTotalRevenue);
+                        BigDecimal accumulatedArrears1 = BigDecimal.ZERO;
+
+                        for (Map<String, BigDecimal> mapItem : accListMap) {
+                            if (mapItem != null && mapItem.get("accAmount") != null) {
+                                BigDecimal accAmount = mapItem.get("accAmount");
+
+                                accumulatedArrears1 = accumulatedArrears1.add(accAmount);
+
+                                if (accAmount.compareTo(BigDecimal.ZERO) < 0) {
+                                    accAmount = BigDecimal.ZERO;
+                                }
+
+                                accumulatedArrears = accumulatedArrears.add(accAmount);
+                            }
+                        }
+
+                        if (accumulatedArrears != null && accumulatedArrears1 != null) {
+                            BigDecimal overIncome = accumulatedArrears.subtract(accumulatedArrears1);
+                            if (overIncome.compareTo(BigDecimal.ZERO) > 0) {
+                                map1.put("overIncome", overIncome);
+                            }
+
                         }
                         map1.put("accumulatedArrears", accumulatedArrears);
 
@@ -925,10 +949,35 @@ public class FundIncomeInfoController {
                 map.put("percentage", percentage);
 
 
+                //累计欠费
+                List<Map<String, BigDecimal>> accListMap = fundIncomeInfoService.findBudgetRevenue(null, startYearDate, endDate, templateInfo.getId());
+
                 BigDecimal accumulatedArrears = BigDecimal.ZERO;
-                if (totalSum != null && totalActualTotalRevenue != null) {
-                    accumulatedArrears = totalSum.subtract(totalActualTotalRevenue);
+                BigDecimal accumulatedArrears1 = BigDecimal.ZERO;
+
+                for (Map<String, BigDecimal> mapItem : accListMap) {
+                    if (mapItem != null && mapItem.get("accAmount") != null) {
+                        BigDecimal accAmount = mapItem.get("accAmount");
+
+                        accumulatedArrears1 = accumulatedArrears1.add(accAmount);
+
+                        if (accAmount.compareTo(BigDecimal.ZERO) < 0) {
+                            accAmount = BigDecimal.ZERO;
+                        }
+
+                        accumulatedArrears = accumulatedArrears.add(accAmount);
+                    }
                 }
+
+                if (accumulatedArrears != null && accumulatedArrears1 != null) {
+                    BigDecimal overIncome = accumulatedArrears.subtract(accumulatedArrears1);
+                    if (overIncome.compareTo(BigDecimal.ZERO) > 0) {
+                        map.put("overIncome", overIncome);
+                        overIncomeTotal = overIncomeTotal.add(overIncome);
+                    }
+
+                }
+
                 map.put("accumulatedArrears", accumulatedArrears);
 
                 accumulatedArrearsTotal = accumulatedArrearsTotal.add(accumulatedArrears);
@@ -947,6 +996,9 @@ public class FundIncomeInfoController {
             map.put("accumulatedArrears", accumulatedArrearsTotal);
             map.put("actualTotalRevenue", actualTotalRevenueTotal);
             map.put("curMonthReceived", curMonthReceivedTotal);
+            if (overIncomeTotal.compareTo(BigDecimal.ZERO) > 0) {
+                map.put("overIncome", overIncomeTotal);
+            }
 
             BigDecimal percentage = BigDecimal.ZERO;
 
@@ -1027,12 +1079,36 @@ public class FundIncomeInfoController {
 
                 map.put("actualTotalRevenue", actualTotalRevenue);
 
+                //累计欠费
+                List<Map<String, BigDecimal>> accListMap = fundIncomeInfoService.findBudgetRevenue(item.getSerialNum() + "%", startYearDate, endDate, item.getTemplateId());
+
                 BigDecimal accumulatedArrears = BigDecimal.ZERO;
-                if (sumCurBudgetRevenue != null && actualTotalRevenue != null) {
-                    accumulatedArrears = sumCurBudgetRevenue.subtract(actualTotalRevenue);
+                BigDecimal accumulatedArrears1 = BigDecimal.ZERO;
+
+                for (Map<String, BigDecimal> mapItem : accListMap) {
+                    BigDecimal accAmount = mapItem.get("accAmount");
+
+                    accumulatedArrears1 = accumulatedArrears1.add(accAmount);
+
+                    if (accAmount.compareTo(BigDecimal.ZERO) < 0) {
+                        accAmount = BigDecimal.ZERO;
+                    }
+
+                    accumulatedArrears = accumulatedArrears.add(accAmount);
+
                 }
+
+                if (accumulatedArrears != null && accumulatedArrears1 != null) {
+                    BigDecimal overIncome = accumulatedArrears.subtract(accumulatedArrears1);
+                    if (overIncome.compareTo(BigDecimal.ZERO) > 0) {
+                        map.put("overIncome", overIncome);
+                    }
+
+                }
+
                 map.put("accumulatedArrears", accumulatedArrears);
 
+
                 BigDecimal percentage = BigDecimal.ZERO;
 
                 if (sumCurBudgetRevenue != null && accumulatedArrears != null) {
@@ -1082,7 +1158,7 @@ public class FundIncomeInfoController {
                     }
 
                     if (accumulatedArrears.compareTo(BigDecimal.ZERO) < 0) {
-                        map.put("overIncome",accumulatedArrears.abs());
+                        map.put("overIncome", accumulatedArrears.abs());
                         accumulatedArrears = BigDecimal.ZERO;
                     }
                 }