dcs 5 mesiacov pred
rodič
commit
12ead9fbd1

+ 6 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/controller/PaymentController.java

@@ -223,4 +223,10 @@ public class PaymentController {
         return Response.ok();
     }
 
+    @ApiOperation("项目工作台-费用管理")
+    @RequestMapping(value = "/count/{projectId}", method = RequestMethod.GET)
+    public Response getCount(@PathVariable long projectId) {
+        return Response.ok(paymentService.getCount(projectId));
+    }
+
 }

+ 1 - 1
virgo.api/src/main/java/com/bosshand/virgo/api/controller/ProjectItemTargetRoomController.java

@@ -188,7 +188,7 @@ public class ProjectItemTargetRoomController {
         return map;
     }
 
-    @ApiOperation("房源管理统计")
+    @ApiOperation("工作台-房源管理")
     @RequestMapping(value = "/roomCount/{projectId}", method = RequestMethod.GET)
     public Response roomCount(@PathVariable long projectId) {
         return Response.ok(projectItemTargetRoomService.roomCount(projectId));

+ 8 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/dao/PaymentDao.java

@@ -4,7 +4,9 @@ import com.bosshand.virgo.api.model.Payment;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface PaymentDao {
@@ -29,4 +31,10 @@ public interface PaymentDao {
 
     List<Payment> getIds(List<Long> ids);
 
+    Map<String, BigDecimal> getAccumulateProjectId(long projectId);
+
+    Map<String, BigDecimal> getYearProjectId(long projectId);
+
+    Map<String, BigDecimal> getMonthProjectId(long projectId);
+
 }

+ 9 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/dao/PaymentOrdinaryDao.java

@@ -5,7 +5,9 @@ import com.bosshand.virgo.api.model.PaymentOrdinary;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface PaymentOrdinaryDao {
@@ -22,4 +24,11 @@ public interface PaymentOrdinaryDao {
 
     PaymentOrdinary get(long id);
 
+    Map<String, BigDecimal> getAccumulateProjectId(long projectId, int type);
+
+    Map<String, BigDecimal> getYearProjectId(long projectId, int type);
+
+    Map<String, BigDecimal> getMonthProjectId(long projectId, int type);
+
+
 }

+ 41 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/service/PaymentService.java

@@ -362,4 +362,45 @@ public class PaymentService {
         return paymentOrdinaryDao.update(paymentOrdinary);
     }
 
+
+    public Map<String, Object> getCount(long projectId) {
+        Map<String, Object> m = new HashMap<>();
+
+        Map<String, Object> defaultMap = new HashMap<>();
+        defaultMap.put("receivable", 0);
+        defaultMap.put("received", 0);
+        defaultMap.put("overdue", 0);
+
+        Map<String, Object> map1 = new HashMap<>();
+        Map<String, BigDecimal> property1 = paymentDao.getAccumulateProjectId(projectId);
+        Map<String, BigDecimal> hydropower1 = paymentOrdinaryDao.getAccumulateProjectId(projectId, 1);
+        Map<String, BigDecimal> rent1 = paymentOrdinaryDao.getAccumulateProjectId(projectId, 2);
+        map1.put("property", property1 != null ? property1 : defaultMap);
+        map1.put("hydropower", hydropower1 != null ? hydropower1 : defaultMap);
+        map1.put("rent", rent1 != null ? rent1 : defaultMap);
+        m.put("accumulate", map1);
+
+        Map<String, Object> map2 = new HashMap<>();
+        Map<String, BigDecimal> property2 = paymentDao.getYearProjectId(projectId);
+        Map<String, BigDecimal> hydropower2 = paymentOrdinaryDao.getYearProjectId(projectId, 1);
+        Map<String, BigDecimal> rent2 = paymentOrdinaryDao.getYearProjectId(projectId, 2);
+        map2.put("property", property2 != null ? property2 : defaultMap);
+        map2.put("hydropower", hydropower2 != null ? hydropower2 : defaultMap);
+        map2.put("rent", rent2 != null ? rent2 : defaultMap);
+        m.put("year", map2);
+
+        Map<String, Object> map3 = new HashMap<>();
+        Map<String, BigDecimal> property3 = paymentDao.getMonthProjectId(projectId);
+        Map<String, BigDecimal> hydropower3 = paymentOrdinaryDao.getMonthProjectId(projectId, 1);
+        Map<String, BigDecimal> rent3 = paymentOrdinaryDao.getMonthProjectId(projectId, 2);
+        map3.put("property", property3 != null ? property3 : defaultMap);
+        map3.put("hydropower", hydropower3 != null ? hydropower3 : defaultMap);
+        map3.put("rent", rent3 != null ? rent3 : defaultMap);
+        m.put("month", map3);
+
+        return m;
+    }
+
+
+
 }

+ 14 - 2
virgo.api/src/main/resources/mapper/PaymentMapper.xml

@@ -26,10 +26,10 @@
     </resultMap>
 
     <insert id="batchInsert" parameterType="com.bosshand.virgo.api.model.Payment" useGeneratedKeys="true" keyProperty="id">
-        INSERT INTO payment(`reminderDate`, `projectId`, `contractCode`, `contractId`, `organizationId`, `payMerchantId`, `payClientId`, `startDate`, `endDate`, `phase`, `amount`, `status`, `data`)
+        INSERT INTO payment(`reminderDate`, `projectId`, `contractCode`, `contractId`, `organizationId`, `payMerchantId`, `payClientId`, `startDate`, `endDate`, `phase`, `amount`, `data`)
         VALUES
         <foreach collection="list" item="item" index="index" separator=",">
-               (#{item.reminderDate}, #{item.projectId}, #{item.contractCode}, #{item.contractId}, #{item.organizationId}, #{item.payMerchantId}, #{item.payClientId}, #{item.startDate}, #{item.endDate}, #{item.phase}, #{item.amount}, #{item.status}, #{item.data})
+               (#{item.reminderDate}, #{item.projectId}, #{item.contractCode}, #{item.contractId}, #{item.organizationId}, #{item.payMerchantId}, #{item.payClientId}, #{item.startDate}, #{item.endDate}, #{item.phase}, #{item.amount}, #{item.data})
         </foreach>
     </insert>
 
@@ -49,6 +49,18 @@
         SELECT contractId FROM payment where contractId = #{contractId}
     </select>
 
+    <select id="getMonthProjectId" resultType="map">
+        SELECT SUM(`amount`) as receivable, SUM(if(`status`=2,`amount`,0)) as received, SUM(if(`status`!=2 and startDate &lt; now(),`amount`,0)) as overdue FROM payment WHERE projectId = #{projectId} and YEAR(startDate) = YEAR(NOW()) and MONTH(startDate) = MONTH(NOW())
+    </select>
+
+    <select id="getYearProjectId" resultType="map">
+        SELECT SUM(`amount`) as receivable, SUM(if(`status`=2,`amount`,0)) as received, SUM(if(`status`!=2 and startDate &lt; now(),`amount`,0)) as overdue FROM payment WHERE projectId = #{projectId} and YEAR(startDate) = YEAR(NOW())
+    </select>
+
+    <select id="getAccumulateProjectId" resultType="map">
+        SELECT SUM(`amount`) as receivable, SUM(if(`status`=2,`amount`,0)) as received, SUM(if(`status`!=2 and startDate &lt; now(),`amount`,0)) as overdue FROM payment WHERE projectId = #{projectId}
+    </select>
+
     <select id="getList" resultMap="paymentResult">
         SELECT * FROM payment
         <where>

+ 14 - 0
virgo.api/src/main/resources/mapper/PaymentOrdinaryMapper.xml

@@ -149,4 +149,18 @@
     </select>
 
 
+    <select id="getMonthProjectId" resultType="map">
+        SELECT SUM(`amount`) as receivable, SUM(if(`status`=2,`amount`,0)) as received, SUM(if(`status`!=2 and reminderDate &lt; now(),`amount`,0)) as overdue FROM payment_ordinary WHERE projectId = #{projectId} and type = #{type} and YEAR(reminderDate) = YEAR(NOW()) and MONTH(reminderDate) = MONTH(NOW())
+    </select>
+
+    <select id="getYearProjectId" resultType="map">
+        SELECT SUM(`amount`) as receivable, SUM(if(`status`=2,`amount`,0)) as received, SUM(if(`status`!=2 and reminderDate &lt; now(),`amount`,0)) as overdue FROM payment_ordinary WHERE projectId = #{projectId} and type = #{type} and YEAR(reminderDate) = YEAR(NOW())
+    </select>
+
+    <select id="getAccumulateProjectId" resultType="map">
+        SELECT SUM(`amount`) as receivable, SUM(if(`status`=2,`amount`,0)) as received, SUM(if(`status`!=2 and reminderDate &lt; now(),`amount`,0)) as overdue FROM payment_ordinary WHERE projectId = #{projectId} and type = #{type}
+    </select>
+
+
+
 </mapper>