通用项目详情完善

This commit is contained in:
梁琦涛
2021-09-15 10:35:42 +08:00
parent 1f2ae5932e
commit 86d2075381
9 changed files with 251 additions and 8 deletions
@@ -37,4 +37,62 @@ public class ProjectCommon {
* 来源(1:收入合同,2:打包管理)
*/
public final static Integer COME2 = 2;
/**
* 到账(1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志))
*/
public final static Integer IN_ACCOUNT0 = 0;
/**
* 到账(1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志))
*/
public final static Integer IN_ACCOUNT1 = 1;
/**
* 到账(1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志))
*/
public final static Integer IN_ACCOUNT2 = 2;
/**
* 开票(1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志))
*/
public final static Integer MAKE_INVOICE0 = 0;
/**
* 开票(1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志))
*/
public final static Integer MAKE_INVOICE1 = 1;
/**
* 开票(1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志))
*/
public final static Integer MAKE_INVOICE2 = 2;
/**
* 邮寄((1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志)))
*/
public final static Integer MAIL0 = 0;
/**
* 邮寄((1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志)))
*/
public final static Integer MAIL1 = 1;
/**
* 邮寄((1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志)))
*/
public final static Integer MAIL2 = 2;
/**
* 需要发票(1:增值税普通发票,2:增值税专用发票,0:否)
*/
public final static Integer NEED_INVOICE0 = 0;
/**
* 需要发票(1:增值税普通发票,2:增值税专用发票,0:否)
*/
public final static Integer NEED_INVOICE1 = 1;
/**
* 需要发票(1:增值税普通发票,2:增值税专用发票,0:否)
*/
public final static Integer NEED_INVOICE2 = 2;
/**
* 邮寄状态(0:未邮寄,1:已邮寄)
*/
public final static Integer POST_STATUS0 = 0;
/**
* 邮寄状态(0:未邮寄,1:已邮寄)
*/
public final static Integer POST_STATUS1 = 1;
}
@@ -15,7 +15,7 @@
UNION ALL
select gsub.id,g.working_group_project, gsub.charge_use, g.principal_id_a,g.principal_name_a,gsub.contacts_temporary_id_one,gsub.contacts_temporary_name_one,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,'','',gsub.remarks,gsub.contract_num,gsub.charge_company_temporary_id,gsub.charge_way
from pay_working_group g
inner join pay_working_group_subitem gsub on g.id = gsub.charge_company_id
inner join pay_working_group_subitem gsub on g.id = gsub.working_group_id
<where>
<if test="projectId != null and projectId != ''">
AND gsub.id = #{projectId}
@@ -1,6 +1,9 @@
package com.jero.common.service;
import com.jero.common.vo.ProjectDetailVO;
import com.jero.common.vo.ProjectStatusVO;
import java.math.BigDecimal;
public interface ProjectDetailService {
@@ -13,4 +16,14 @@ public interface ProjectDetailService {
* @Exception
*/
ProjectDetailVO getProjectDetail(String projectId);
/**
* @Description 获取变更应收金额之后的状态
* @Author lqt
* @Date 2021/9/14
* @Param
* @Return
* @Exception
*/
ProjectStatusVO getStatus(String projectId, BigDecimal receivableAmount);
}
@@ -8,6 +8,7 @@ import com.jero.common.service.ProjectDetailService;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.util.PasswordUtil;
import com.jero.common.vo.ProjectDetailVO;
import com.jero.common.vo.ProjectStatusVO;
import com.jero.company.entity.PayCompanyManagement;
import com.jero.company.entity.PayContactsManagement;
import com.jero.company.service.IPayCompanyManagementService;
@@ -17,6 +18,8 @@ import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.service.IPayIncomeContractAssociatedService;
import com.jero.contract.service.IPayIncomeContractService;
import com.jero.mail.entity.PayMailBill;
import com.jero.mail.entity.PayMailBillProject;
import com.jero.mail.service.IPayMailBillProjectService;
import com.jero.mail.service.IPayMailBillService;
import com.jero.payment.entity.PayPaymentRecord;
import com.jero.payment.service.IPayPaymentRecordService;
@@ -31,8 +34,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
public class ProjectDetailServiceImpl implements ProjectDetailService {
@@ -57,6 +62,8 @@ public class ProjectDetailServiceImpl implements ProjectDetailService {
private IPayIncomeContractService payIncomeContractService;
@Autowired
private IPayIncomeContractAssociatedService payIncomeContractAssociatedService;
@Autowired
private IPayMailBillProjectService payMailBillProjectService;
@Override
public ProjectDetailVO getProjectDetail(String projectId) {
@@ -185,4 +192,88 @@ public class ProjectDetailServiceImpl implements ProjectDetailService {
}
return projectDetailVO;
}
@Override
public ProjectStatusVO getStatus(String projectId, BigDecimal receivableAmount) {
if(StringUtils.isBlank(projectId)){
throw new JeroBootException("项目id不能为空!");
}
if(receivableAmount.compareTo(new BigDecimal("0.00")) == 0){
return null;
}
// 获取项目信息
PayCommonProject payCommonProject = projectDetailMapper.queryProject(projectId);
if(Objects.isNull(payCommonProject)){
throw new JeroBootException("项目不存在!");
}
// 应收金额没有变更
if(receivableAmount.compareTo(payCommonProject.getReceivableAmount()) == 0){
return null;
}
ProjectStatusVO projectStatusVO = new ProjectStatusVO();
LambdaQueryWrapper<PayMailBillProject> queryPayMailBillProject = new LambdaQueryWrapper<>();
queryPayMailBillProject.eq(PayMailBillProject::getProjectId,projectId);
List<PayMailBillProject> listPayMailBillProject = payMailBillProjectService.list(queryPayMailBillProject);
// 开票金额
BigDecimal invoice = new BigDecimal("0.00");
// 开票次数
int c = listPayMailBillProject.size();
// 邮寄次数
int y = 0;
if(!CollectionUtils.isEmpty(listPayMailBillProject)){
BigDecimal b = listPayMailBillProject.stream().map(PayMailBillProject::getInvoiceAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
invoice = invoice.add(b);
if(receivableAmount.compareTo(invoice) == -1){
throw new JeroBootException("应收金额不能小于开票金额!");
}
List<String> list = listPayMailBillProject.stream().map(PayMailBillProject::getBillId).collect(Collectors.toList());
LambdaQueryWrapper<PayMailBill> queryPayMailBill = new LambdaQueryWrapper<>();
queryPayMailBill.in(PayMailBill::getId,list);
queryPayMailBill.eq(PayMailBill::getPostStatus,ProjectCommon.POST_STATUS1);
List<PayMailBill> listPayMailBill = payMailBillService.list(queryPayMailBill);
y = listPayMailBill.size();
}
// 到账
// 应收金额 = 实收金额 = 1
if(receivableAmount.compareTo(payCommonProject.getPaidAmount()) == 0){
projectStatusVO.setInAccount(ProjectCommon.IN_ACCOUNT1);
}
// 0 = 实收金额 = 0
if(payCommonProject.getPaidAmount().compareTo(new BigDecimal("0.00")) == 0){
projectStatusVO.setInAccount(ProjectCommon.IN_ACCOUNT0);
}
// 0 < 实收金额 && 实收金额 < 应收金额 = 2
if(payCommonProject.getPaidAmount().compareTo(new BigDecimal("0.00")) == 1
&& payCommonProject.getPaidAmount().compareTo(receivableAmount) ==-1){
projectStatusVO.setInAccount(ProjectCommon.IN_ACCOUNT2);
}
// 开票
// 不需要开票 || 开票金额 = 0 = 0
if(Objects.equals(payCommonProject.getNeedInvoice(),ProjectCommon.NEED_INVOICE0)
|| invoice.compareTo(new BigDecimal("0.00")) == 0){
projectStatusVO.setMakeInvoice(ProjectCommon.IN_ACCOUNT0);
}
// 开票金额 = 应收金额 = 1
if(invoice.compareTo(receivableAmount) == 0){
projectStatusVO.setMakeInvoice(ProjectCommon.IN_ACCOUNT1);
}
// 开票金额 > 0 && 开票金额 < 实收金额 = 2
if(invoice.compareTo(new BigDecimal("0.00")) == 1 && invoice.compareTo(payCommonProject.getPaidAmount()) == -1){
projectStatusVO.setMakeInvoice(ProjectCommon.IN_ACCOUNT2);
}
// 邮寄
// 开票金额 = 应收金额 && 邮寄次数 = 开票次数 = 1
if(invoice.compareTo(receivableAmount) == 0 && c == y){
projectStatusVO.setMail(ProjectCommon.IN_ACCOUNT2);
}
// 邮寄次数 = 0 = 0
if(y == 0){
projectStatusVO.setMail(ProjectCommon.IN_ACCOUNT0);
}
// 邮寄次数 > 0 && 邮寄次数 < 开票次数 = 2
if(y > 0 && y <= c){
projectStatusVO.setMail(ProjectCommon.IN_ACCOUNT2);
}
return projectStatusVO;
}
}
@@ -0,0 +1,21 @@
package com.jero.common.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class ProjectStatusVO implements Serializable {
/**
* 到账(1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志))
*/
private Integer inAccount;
/**
* 开票(1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志))
*/
private Integer makeInvoice;
/**
* 邮寄((1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志)))
*/
private Integer mail;
}