Selaa lähdekoodia

增加分润财务订单

周箭河 5 vuotta sitten
vanhempi
commit
9a929c5fc9

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentRouteOrderDao.java

@@ -0,0 +1,26 @@
+package com.ym.mec.biz.dal.dao;
+
+
+import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
+import com.ym.mec.common.dal.BaseDAO;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+public interface StudentPaymentRouteOrderDao extends BaseDAO<Long, StudentPaymentRouteOrder> {
+
+    List<StudentPaymentRouteOrderDto> queryPageOrder(Map<String, Object> params);
+
+    StudentPaymentRouteOrderDto getOrderMoneyAmount(Map<String, Object> params);
+
+    /**
+     * 统计充值金额
+     *
+     * @param params
+     * @return
+     */
+    BigDecimal getChargeAmount(Map<String, Object> params);
+}

+ 75 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentRouteOrderDto.java

@@ -0,0 +1,75 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+
+import java.math.BigDecimal;
+
+public class StudentPaymentRouteOrderDto extends StudentPaymentOrder {
+
+    /**
+     * 原始订单编号
+     */
+    private Long orderId;
+
+    /**
+     * 分配分部id
+     */
+    private Integer routingOrganId;
+
+    /**
+     * 预计金额
+     */
+    private BigDecimal routeAmount;
+
+    /**
+     * 渠道收款账户
+     */
+    private String merNo;
+
+    /**
+     * 备注
+     */
+    private String memo;
+
+    public Long getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Long orderId) {
+        this.orderId = orderId;
+    }
+
+    public Integer getRoutingOrganId() {
+        return routingOrganId;
+    }
+
+    public void setRoutingOrganId(Integer routingOrganId) {
+        this.routingOrganId = routingOrganId;
+    }
+
+    public BigDecimal getRouteAmount() {
+        return routeAmount;
+    }
+
+    public void setRouteAmount(BigDecimal routeAmount) {
+        this.routeAmount = routeAmount;
+    }
+
+    public String getMerNo() {
+        return merNo;
+    }
+
+    public void setMerNo(String merNo) {
+        this.merNo = merNo;
+    }
+
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+}

+ 101 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentRouteOrder.java

@@ -0,0 +1,101 @@
+package com.ym.mec.biz.dal.entity;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class StudentPaymentRouteOrder {
+    private Long id;
+
+    /**
+    * 分配分部id
+    */
+    private Integer routingOrganId;
+
+    /**
+    * 预计金额
+    */
+    private BigDecimal routeAmount;
+
+    /**
+    * 渠道收款账户
+    */
+    private String merNo;
+
+    /**
+    * 原始编号订单号
+    */
+    private Long orderId;
+
+    /**
+    * 备注
+    */
+    private String memo;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Integer getRoutingOrganId() {
+        return routingOrganId;
+    }
+
+    public void setRoutingOrganId(Integer routingOrganId) {
+        this.routingOrganId = routingOrganId;
+    }
+
+    public BigDecimal getRouteAmount() {
+        return routeAmount;
+    }
+
+    public void setRouteAmount(BigDecimal routeAmount) {
+        this.routeAmount = routeAmount;
+    }
+
+    public String getMerNo() {
+        return merNo;
+    }
+
+    public void setMerNo(String merNo) {
+        this.merNo = merNo;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Long getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Long orderId) {
+        this.orderId = orderId;
+    }
+}

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentRouteOrderService.java

@@ -0,0 +1,15 @@
+package com.ym.mec.biz.service;
+
+
+import com.ym.mec.biz.dal.dto.PageInfoOrder;
+import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
+import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
+import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
+import com.ym.mec.common.service.BaseService;
+
+
+public interface StudentPaymentRouteOrderService extends BaseService<Long, StudentPaymentRouteOrder> {
+
+	PageInfoOrder<StudentPaymentRouteOrderDto> OrderQueryPage(StudentPaymentOrderQueryInfo queryInfo);
+
+}

+ 71 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentRouteOrderServiceImpl.java

@@ -0,0 +1,71 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.StudentPaymentRouteOrderDao;
+import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
+import com.ym.mec.biz.dal.dto.PageInfoOrder;
+import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
+import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
+import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
+import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
+import com.ym.mec.biz.service.StudentPaymentRouteOrderService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.collection.MapUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, StudentPaymentRouteOrder> implements StudentPaymentRouteOrderService {
+
+    @Autowired
+    private StudentPaymentRouteOrderDao studentPaymentRouteOrderDao;
+    @Autowired
+    private SysUserCashAccountDao sysUserCashAccountDao;
+
+    @Override
+    public BaseDAO<Long, StudentPaymentRouteOrder> getDAO() {
+        return studentPaymentRouteOrderDao;
+    }
+
+    @Override
+    public PageInfoOrder<StudentPaymentRouteOrderDto> OrderQueryPage(StudentPaymentOrderQueryInfo queryInfo) {
+        PageInfoOrder<StudentPaymentRouteOrderDto> pageInfo = new PageInfoOrder<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<StudentPaymentRouteOrderDto> dataList = new ArrayList<>();
+        int count = this.findCount(params);
+
+        BigDecimal totalUserBalance = sysUserCashAccountDao.getTotalUserBalance(params);
+        pageInfo.setTotalUserBalance(totalUserBalance);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = studentPaymentRouteOrderDao.queryPageOrder(params);
+
+            StudentPaymentRouteOrderDto orderMoneyAmount = studentPaymentRouteOrderDao.getOrderMoneyAmount(params);
+            BigDecimal totalExpectAmount = orderMoneyAmount.getExpectAmount() != null ? orderMoneyAmount.getExpectAmount() : BigDecimal.ZERO;
+            BigDecimal totalActualAmount = orderMoneyAmount.getActualAmount() != null ? orderMoneyAmount.getActualAmount() : BigDecimal.ZERO;
+            BigDecimal totalBalancePaymentAmount = orderMoneyAmount.getBalancePaymentAmount() != null ? orderMoneyAmount.getBalancePaymentAmount() : BigDecimal.ZERO;
+
+            params.put("chargeType", SporadicChargeTypeEnum.RECHARGE);
+            BigDecimal totalChargeAmount = studentPaymentRouteOrderDao.getChargeAmount(params);
+            totalChargeAmount = totalChargeAmount != null ? totalChargeAmount : BigDecimal.ZERO;
+            BigDecimal totalAdvanceAmount = totalChargeAmount.subtract(totalBalancePaymentAmount);
+
+            pageInfo.setTotalAdvanceAmount(totalAdvanceAmount);
+            pageInfo.setTotalExpectAmount(totalExpectAmount);
+            pageInfo.setTotalActualAmount(totalActualAmount);
+            pageInfo.setTotalRevenueAmount(totalActualAmount.subtract(totalAdvanceAmount));
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+}

+ 169 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml

@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.StudentPaymentRouteOrderDao">
+    <resultMap id="StudentPaymentRouteOrder" type="com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder">
+        <!--@mbg.generated-->
+        <!--@Table student_payment_route_order-->
+        <id column="id_" property="id"/>
+        <result column="routing_organ_id_" property="routingOrganId"/>
+        <result column="route_amount_" property="routeAmount"/>
+        <result column="mer_no_" property="merNo"/>
+        <result column="order_id_" property="orderId"/>
+        <result column="memo_" property="memo"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+    </resultMap>
+
+    <resultMap id="StudentPaymentRouteOrderDto" type="com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto"
+               extends="com.ym.mec.biz.dal.dao.StudentPaymentOrderDao.StudentPaymentOrder">
+        <result column="username_" property="user.username"/>
+        <result column="phone_" property="user.phone"/>
+        <result column="routing_organ_id_" property="routingOrganId"/>
+        <result column="route_amount_" property="routeAmount"/>
+        <result column="mer_no_" property="merNo"/>
+        <result column="order_id_" property="orderId"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        <!--@mbg.generated-->
+        id_, routing_organ_id_, route_amount_, mer_no_, order_id_, memo_, create_time_, update_time_
+    </sql>
+    <select id="get" parameterType="java.lang.Long" resultMap="StudentPaymentRouteOrder">
+        <!--@mbg.generated-->
+        select
+        <include refid="Base_Column_List"/>
+        from student_payment_route_order
+        where id_ = #{id}
+    </select>
+    <delete id="delete" parameterType="java.lang.Long">
+        <!--@mbg.generated-->
+        delete from student_payment_route_order
+        where id_ = #{id}
+    </delete>
+    <insert id="insert" keyColumn="id_" keyProperty="id"
+            parameterType="com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder" useGeneratedKeys="true">
+        <!--@mbg.generated-->
+        insert into student_payment_route_order (routing_organ_id_, route_amount_, mer_no_,
+        order_id_, memo_, create_time_,
+        update_time_)
+        values (#{routingOrganId}, #{routeAmount}, #{merNo},
+        #{orderId}, #{memo}, #{createTime},
+        #{updateTime})
+    </insert>
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder">
+        <!--@mbg.generated-->
+        update student_payment_route_order
+        <set>
+            <if test="routingOrganId != null">
+                routing_organ_id_ = #{routingOrganId},
+            </if>
+            <if test="routeAmount != null">
+                route_amount_ = #{routeAmount},
+            </if>
+            <if test="merNo != null">
+                mer_no_ = #{merNo},
+            </if>
+            <if test="orderNo != null">
+                order_no_ = #{orderNo},
+            </if>
+            <if test="memo != null">
+                memo_ = #{memo},
+            </if>
+            <if test="createTime != null">
+                create_time_ = #{createTime},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = #{updateTime},
+            </if>
+        </set>
+        where id_ = #{id,jdbcType=BIGINT}
+    </update>
+
+
+    <select id="queryPageOrder" parameterType="map" resultMap="StudentPaymentRouteOrderDto">
+        SELECT spo.*,spro.*,u.username_,u.phone_ FROM student_payment_order spo
+        LEFT JOIN student_payment_route_order spro ON spo.id_ = spro.order_id_
+        left join sys_user u on spo.user_id_ = u.id_
+        <include refid="queryPaymentOrder"/>
+        ORDER BY spo.id_ DESC
+        <include refid="global.limit"/>
+    </select>
+    <select id="getOrderMoneyAmount" parameterType="map" resultMap="StudentPaymentRouteOrderDto">
+        SELECT SUM(spo.expect_amount_) expect_amount_,SUM(actual_amount_) actual_amount_,SUM(balance_payment_amount_)
+        balance_payment_amount_ FROM student_payment_order spo
+        <include refid="queryPaymentOrder"/>
+    </select>
+
+    <select id="getChargeAmount" parameterType="map" resultType="java.math.BigDecimal">
+        SELECT SUM(actual_amount_) FROM student_payment_order spo
+        LEFT JOIN sporadic_charge_info sci ON spo.music_group_id_ = sci.id_
+        <include refid="queryPaymentOrder"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int" parameterType="map">
+        SELECT COUNT(spo.id_) FROM student_payment_order spo
+        LEFT JOIN student_payment_route_order spro ON spo.id_ = spro.order_id_
+        LEFT JOIN sys_user u on spo.user_id_ = u.id_
+        <include refid="queryPaymentOrder"/>
+    </select>
+
+    <sql id="queryPaymentOrder">
+        <where>
+            <if test="organId != null">
+                AND FIND_IN_SET(spo.organ_id_,#{organId})
+            </if>
+            <if test="orderStartDate != null">
+                AND DATE_FORMAT(spo.create_time_,'%Y-%m-%d') &gt;= #{orderStartDate}
+            </if>
+            <if test="orderEndDate != null">
+                AND DATE_FORMAT(spo.create_time_,'%Y-%m-%d') &lt;= #{orderEndDate}
+            </if>
+            <if test="paymentType != null">
+                AND spo.type_ = #{paymentType}
+            </if>
+            <if test="remark != null">
+                AND spo.memo_ LIKE CONCAT('%',#{remark},'%')
+            </if>
+            <if test="studentId != null">
+                AND spo.user_id_ = #{studentId}
+            </if>
+            <if test="paymentStatus != null">
+                AND spo.status_ = #{paymentStatus}
+            </if>
+            <if test="paymentChannel != null">
+                AND spo.payment_channel_ NOT IN (#{paymentChannel})
+            </if>
+            <if test='orderType != null and orderType.toString()=="1".toString()'>
+                AND spo.com_amount_ > 0
+            </if>
+            <if test='orderType != null and orderType.toString()=="2".toString()'>
+                AND spo.per_amount_ > 0
+            </if>
+            <if test="routingOrganId != null">
+                AND FIND_IN_SET(spro.routing_organ_id_,#{routingOrganId})
+            </if>
+            <if test="actualAmount != null">
+                AND spo.actual_amount_ >= #{actualAmount}
+            </if>
+
+            <if test="balancePaymentAmount != null">
+                AND spo.balance_payment_amount_ >= #{balancePaymentAmount}
+            </if>
+            <if test="orderNo != null">
+                AND spo.order_no_ = #{orderNo}
+            </if>
+            <if test="merNos != null">
+                AND spro.mer_no_ = #{merNos}
+            </if>
+            <if test="transNo != null">
+                AND spo.trans_no_ = #{transNo}
+            </if>
+            <if test="chargeType != null">
+                AND spo.group_type_='SPORADIC'
+                AND sci.charge_type_ = #{chargeType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+        </where>
+    </sql>
+
+</mapper>

+ 72 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentRouteOrderController.java

@@ -0,0 +1,72 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.page.SporadicOrderQueryInfo;
+import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.biz.service.StudentPaymentRouteOrderService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.List;
+
+@RequestMapping("routeOrder")
+@Api(tags = "分润订单服务")
+@RestController
+public class StudentPaymentRouteOrderController extends BaseController {
+
+    @Autowired
+    private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
+
+    @ApiOperation(value = "财务订单列表")
+    @GetMapping("/finance")
+    @PreAuthorize("@pcs.hasPermissions('routeOrder/finance')")
+    public HttpResponseResult<PageInfo<StudentPaymentRouteOrderDto>> queryOrderPage(StudentPaymentOrderQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getRoutingOrganId())) {
+                queryInfo.setRoutingOrganId(employee.getOrganIdList());
+            } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
+                return failed("用户所在分部异常");
+            } else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if (!list.containsAll(Arrays.asList(queryInfo.getRoutingOrganId().split(",")))) {
+                    return failed("非法请求");
+                }
+            }
+        }
+
+        PageInfo<StudentPaymentRouteOrderDto> studentPaymentRouteOrderPageInfo = studentPaymentRouteOrderService.OrderQueryPage(queryInfo);
+        return succeed(studentPaymentRouteOrderPageInfo);
+    }
+
+
+}