通用项目详情完善
This commit is contained in:
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
+1
-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}
|
||||
|
||||
+13
@@ -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);
|
||||
}
|
||||
|
||||
+91
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user