This commit is contained in:
baozhipeng
2021-09-09 12:05:00 +08:00
parent 40502fddce
commit fbd5da7c76
7 changed files with 234 additions and 29 deletions
@@ -1,6 +1,7 @@
package com.jero.payment.controller;
import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -12,6 +13,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.payment.entity.PayPaymentRecord;
import com.jero.payment.service.IPayPaymentRecordService;
import com.jero.project.entity.PayCommonProject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -32,38 +34,32 @@ import io.swagger.annotations.ApiOperation;
public class PayPaymentRecordController extends JeroController<PayPaymentRecord, IPayPaymentRecordService> {
@Autowired
private IPayPaymentRecordService payPaymentRecordService;
/**
* 分页列表查询
*
* @param payPaymentRecord
* @param pageNo
* @param pageSize
* @param req
* @return
* 到账开票主列表
*/
@ApiOperation(value="pay_payment_record-分页列表查询", notes="pay_payment_record-分页列表查询")
@GetMapping(value = "/list")
public Result<?> queryPageList(PayPaymentRecord payPaymentRecord,
@ApiOperation(value="到账开票主列表", notes="到账开票主列表")
@GetMapping(value = "/mainList")
public Result<?> mainList(PayCommonProject payCommonProject,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<PayPaymentRecord> queryWrapper = QueryGenerator.initQueryWrapper(payPaymentRecord, req.getParameterMap());
Page<PayPaymentRecord> page = new Page<PayPaymentRecord>(pageNo, pageSize);
IPage<PayPaymentRecord> pageList = payPaymentRecordService.page(page, queryWrapper);
return Result.OK(pageList);
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
Page<PayCommonProject> page = new Page<PayCommonProject>(pageNo, pageSize);
List<PayCommonProject> pageList = payPaymentRecordService.mainList(page, payCommonProject);
page.setRecords(pageList);
return Result.OK(page);
}
/**
* 添加
*
* 添加阶段
* @param payPaymentRecord
* @return
*/
@ApiOperation(value="pay_payment_record-添加", notes="pay_payment_record-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody PayPaymentRecord payPaymentRecord) {
payPaymentRecordService.save(payPaymentRecord);
@ApiOperation(value="添加阶段", notes="添加阶段")
@PostMapping(value = "/addPhase")
public Result<?> addPhase(@RequestBody PayPaymentRecord payPaymentRecord) {
payPaymentRecordService.addPhase(payPaymentRecord);
return Result.OK("添加成功!");
}
@@ -1,6 +1,8 @@
package com.jero.payment.entity;
import java.io.Serializable;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@@ -13,6 +15,9 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
/**
* @Description: pay_payment_record
* @Author: jeecg-boot
@@ -32,22 +37,22 @@ public class PayPaymentRecord implements Serializable {
@ApiModelProperty(value = "id")
private java.lang.String id;
/**项目id*/
@Excel(name = "项目id", width = 15)
@ApiModelProperty(value = "项目id")
private java.lang.String projectId;
/**项目类型*/
@Excel(name = "项目类型", width = 15)
@ApiModelProperty(value = "项目类型")
private java.lang.String projectType;
private Integer projectType;
/**到账金额*/
@Excel(name = "到账金额", width = 15)
@ApiModelProperty(value = "到账金额")
private java.lang.Integer amountReceived;
@NotNull(message = "到账金额(元)不能为空!")
@Max(value = 999999999,message = "到账金额(元)格式错误")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal amountReceived;
/**来款日期*/
@Excel(name = "来款日期", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "来款日期")
@NotNull(message = "来款日期不能为空!")
private java.util.Date paymentDate;
/**备注*/
@Excel(name = "备注", width = 15)
@@ -1,7 +1,12 @@
package com.jero.payment.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.payment.entity.PayPaymentRecord;
import com.jero.project.entity.PayCommonProject;
import io.lettuce.core.dynamic.annotation.Param;
import java.util.List;
/**
* @Description: pay_payment_record
@@ -11,4 +16,11 @@ import com.jero.payment.entity.PayPaymentRecord;
*/
public interface PayPaymentRecordMapper extends BaseMapper<PayPaymentRecord> {
/**
* 到账开票主列表
* @param page
* @param payCommonProject
* @return
*/
List<PayCommonProject> mainList(Page page, @Param("payCommonProject")PayCommonProject payCommonProject);
}
@@ -2,4 +2,79 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.payment.mapper.PayPaymentRecordMapper">
<!-- 到账开票主列表-->
<select id="mainList" resultType="com.jero.project.entity.PayCommonProject">
<!-- 普通项目-->
select c.id,c.charge_project, c.charge_use, c.principal_id,c.principal_name,c.charge_company_temporary_name,c.receivable_amount,c.paid_amount,c.need_invoice,c.pack,c.in_account,c.make_invoice,c.mail,c.create_time,1 as projectType
from pay_common_project c
where c.receivable_amount <![CDATA[>]]> c.paid_amount
<if test="payCommonProject.principalId != null and payCommonProject.principalId != ''">
AND c.principal_id = #{payCommonProject.principalId}
</if>
<if test="payCommonProject.chargeProject != null and payCommonProject.chargeProject != ''">
AND c.charge_project = #{payCommonProject.chargeProject}
</if>
<if test="payCommonProject.chargeCompanyTemporaryName != null and payCommonProject.chargeCompanyTemporaryName != ''">
AND c.charge_company_temporary_name = #{payCommonProject.chargeCompanyTemporaryName}
</if>
<!--工作组项目-->
UNION ALL
select gsub.id,g.working_group_project, gsub.charge_use, g.principal_id_a,g.principal_name_a,gsub.charge_company_temporary_name,gsub.receivable_amount,gsub.paid_amount,gsub.need_invoice,gsub.pack,gsub.in_account,gsub.make_invoice,gsub.mail,gsub.create_time,2
from pay_working_group g
left join pay_working_group_subitem gsub on g.id = gsub.charge_company_id
where gsub.receivable_amount <![CDATA[>]]> gsub.paid_amount
<if test="payCommonProject.principalId != null and payCommonProject.principalId != ''">
AND g.principal_id_a = #{payCommonProject.principalId}
</if>
<if test="payCommonProject.chargeProject != null and payCommonProject.chargeProject != ''">
AND g.working_group_project = #{payCommonProject.chargeProject}
</if>
<if test="payCommonProject.chargeCompanyTemporaryName != null and payCommonProject.chargeCompanyTemporaryName != ''">
AND gsub.charge_company_temporary_name = #{payCommonProject.chargeCompanyTemporaryName}
</if>
<!-- 会议项目-->
UNION ALL
select sit.id,meeting.meeting_name,sit.charge_use, meeting.director_id, meeting.director_name,sit.company_name,sit.amount_receivable,sit.paid_amount,sit.need_invoice,sit.pack,sit.in_account,sit.make_invoice,sit.mail,sit.create_time,3
from pay_meeting meeting
left join pay_meeting_situation sit on meeting.id = sit.meeting_id
where sit.amount_receivable <![CDATA[>]]> sit.paid_amount
<if test="payCommonProject.principalId != null and payCommonProject.principalId != ''">
AND meeting.director_id = #{payCommonProject.principalId}
</if>
<if test="payCommonProject.chargeProject != null and payCommonProject.chargeProject != ''">
AND meeting.meeting_name = #{payCommonProject.chargeProject}
</if>
<if test="payCommonProject.chargeCompanyTemporaryName != null and payCommonProject.chargeCompanyTemporaryName != ''">
AND sit.company_name = #{payCommonProject.chargeCompanyTemporaryName}
</if>
<!-- 会员项目-->
UNION ALL
select msub.id,member.project_name,msub.charge_use,member.director_id,member.director_name,msub.company_name,msub.amount_receivable,msub.paid_amount,msub.need_invoice,msub.pack,msub.in_account,msub.make_invoice,msub.mail,msub.create_time,4
from pay_member_project member
left join pay_member_project_subitem msub on member.id=msub.project_id
where msub.amount_receivable <![CDATA[>]]> msub.paid_amount
<if test="payCommonProject.principalId != null and payCommonProject.principalId != ''">
AND member.director_id = #{payCommonProject.principalId}
</if>
<if test="payCommonProject.chargeProject != null and payCommonProject.chargeProject != ''">
AND member.project_name = #{payCommonProject.chargeProject}
</if>
<if test="payCommonProject.chargeCompanyTemporaryName != null and payCommonProject.chargeCompanyTemporaryName != ''">
AND msub.company_name = #{payCommonProject.chargeCompanyTemporaryName}
</if>
<!-- 标协会员项目-->
UNION ALL
select tmsub.id,tmember.project_name,tmsub.charge_use,'','',tmsub.company_name,tmsub.amount_receivable,tmsub.paid_amount,tmsub.invoice_requirements,tmsub.pack,tmsub.in_account,tmsub.make_invoice,tmsub.mail,tmsub.create_time,5
from tb_member_project tmember
left join tb_member_project_subitem tmsub on tmember.id=tmsub.project_id
where tmsub.amount_receivable <![CDATA[>]]> tmsub.paid_amount
<if test="payCommonProject.chargeProject != null and payCommonProject.chargeProject != ''">
AND tmember.project_name = #{payCommonProject.chargeProject}
</if>
<if test="payCommonProject.chargeCompanyTemporaryName != null and payCommonProject.chargeCompanyTemporaryName != ''">
AND tmsub.company_name = #{payCommonProject.chargeCompanyTemporaryName}
</if>
order by create_time DESC
</select>
</mapper>
@@ -1,7 +1,12 @@
package com.jero.payment.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.payment.entity.PayPaymentRecord;
import com.jero.project.entity.PayCommonProject;
import java.util.List;
/**
* @Description: pay_payment_record
@@ -10,5 +15,17 @@ import com.jero.payment.entity.PayPaymentRecord;
* @Version: V1.0
*/
public interface IPayPaymentRecordService extends IService<PayPaymentRecord> {
/**
* 到账开票主列表
* @param page
* @param payCommonProject
* @return
*/
List<PayCommonProject> mainList(Page page, PayCommonProject payCommonProject);
/**
* 添加阶段
* @param payPaymentRecord
*/
void addPhase(PayPaymentRecord payPaymentRecord);
}
@@ -1,11 +1,30 @@
package com.jero.payment.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.exception.JeroBootException;
import com.jero.contract.common.PayIncomeContractCommon;
import com.jero.payment.entity.PayPaymentRecord;
import com.jero.payment.mapper.PayPaymentRecordMapper;
import com.jero.payment.service.IPayPaymentRecordService;
import com.jero.project.entity.PayCommonProject;
import com.jero.project.entity.PayWorkingGroup;
import com.jero.project.entity.PayWorkingGroupSubItem;
import com.jero.project.mapper.PayCommonProjectMapper;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* @Description: pay_payment_record
* @Author: jeecg-boot
@@ -14,5 +33,77 @@ import org.springframework.stereotype.Service;
*/
@Service
public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMapper, PayPaymentRecord> implements IPayPaymentRecordService {
@Resource
private PayPaymentRecordMapper payPaymentRecordMapper;
@Resource
private PayCommonProjectMapper payCommonProjectMapper;
/**
* 到账开票主列表
* @param page
* @param payCommonProject
* @return
*/
public List<PayCommonProject> mainList(Page page, PayCommonProject payCommonProject){
return payPaymentRecordMapper.mainList(page, payCommonProject);
}
/**
*
* @param payPaymentRecord
*/
public void addPhase(PayPaymentRecord payPaymentRecord){
payPaymentRecordMapper.insert(payPaymentRecord);
//累加主列表实收金额
switch (String.valueOf(payPaymentRecord.getProjectType())){
// 普通项目
case PayIncomeContractCommon.PROJECT_TYPE1:
PayCommonProject payCommonProject = payCommonProjectMapper.selectById(payPaymentRecord.getProjectId());
BigDecimal receivableAmount = payCommonProject.getReceivableAmount();//应收
Boolean isAdd = isAdd(receivableAmount, payPaymentRecord.getAmountReceived());
// payCommonProject.setPaidAmount();
break;
// 工作组项目
case PayIncomeContractCommon.PROJECT_TYPE2:
break;
//会议项目
case PayIncomeContractCommon.PROJECT_TYPE3:
break;
//会员项目
case PayIncomeContractCommon.PROJECT_TYPE4:
break;
//标协会员
case PayIncomeContractCommon.PROJECT_TYPE5:
break;
default:break;
}
}
/**
* 是否还能再添加来款
* @param receivableAmount 应收
* @param amountReceived 到账
* @return
*/
private Boolean isAdd(BigDecimal receivableAmount, BigDecimal amountReceived){
if(receivableAmount == null){
receivableAmount = new BigDecimal("0");
}
//欠款
BigDecimal debt = receivableAmount.subtract(amountReceived);
if(amountReceived.compareTo(debt) == 1){
//本次到账金额大于欠款
return Boolean.FALSE;
}else{
return Boolean.TRUE;
}
}
}
@@ -5,6 +5,7 @@ import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jero.common.aspect.annotation.Dict;
@@ -188,4 +189,12 @@ public class PayCommonProject implements Serializable {
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 项目类型(1:普通项目,2:工作组项目,3:会议项目,4:会员项目,5:标协会员项目)
*/
@TableField(exist = false)
@Dict(dicCode = "project_type")
@ApiModelProperty(value = "项目类型")
private Integer projectType;
}