Merge branch 'master' into 2023年7月变更

This commit is contained in:
lijiarao
2023-07-27 09:10:57 +08:00
40 changed files with 412 additions and 147 deletions
+228
View File
@@ -720,3 +720,231 @@ INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `descri
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1587319992635285506', '1587319627974107138', '13%', '0.13', '', 7.00, 1, 'LKGLZ', '2022-11-01 13:45:52', 'LKGLZ', '2022-11-01 13:54:02'); INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1587319992635285506', '1587319627974107138', '13%', '0.13', '', 7.00, 1, 'LKGLZ', '2022-11-01 13:45:52', 'LKGLZ', '2022-11-01 13:54:02');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1587320050650898434', '1587319627974107138', '19%欧洲', '0.19', '', 8.00, 1, 'LKGLZ', '2022-11-01 13:46:06', 'LKGLZ', '2022-11-01 13:53:55'); INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1587320050650898434', '1587319627974107138', '19%欧洲', '0.19', '', 8.00, 1, 'LKGLZ', '2022-11-01 13:46:06', 'LKGLZ', '2022-11-01 13:53:55');
create view v_statistical_all as
select pp.id as projectId,
pp.superId,
pp.projectName,
principalName,
chargeCompanyId,
chargeCompanyTemporaryId,
chargeCompanyTemporaryName,
allMoney,
comeAllMoney,
chargeUse,
depart,
createTime,
if(pp.pack = 0, '否', '是') as packText,
year,
payStatue,
departId,
departCode,
principalNameId,
type,
billMoney as invoiceAmount,
if(billMoney is null, 0, billMoney) as billMoney,
confirmAmount,
invoiceNoTaxAmount,
paidNoTaxAmount,
confirmNoTaxAmount,
contactsName,
confirmDate,
pp.pack
from (SELECT pwgs.id,
pwg.id as superId,
pwg.working_group_project AS projectName,
pwg.principal_name_a as principalName,
pwgs.charge_company_id AS chargeCompanyId,
pwgs.charge_company_temporary_id as chargeCompanyTemporaryId,
pwgs.charge_company_temporary_name AS chargeCompanyTemporaryName,
pwgs.no_tax_amount as allMoney,
pwgs.paid_amount as comeAllMoney,
pwgs.charge_use as chargeUse,
sd.depart_name as depart,
pwgs.pack as pack,
pwg.year as year,
pwgs.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pwg.principal_id_a as principalNameId,
2 as type,
pwgs.invoice_amount AS billMoney,
confirm_amount as confirmAmount,
invoice_no_tax_amount as invoiceNoTaxAmount,
paid_no_tax_amount as paidNoTaxAmount,
confirm_no_tax_amount as confirmNoTaxAmount,
GROUP_CONCAT(DISTINCT pwgsc.contacts_temporary_name order by pwgsc.contacts_temporary_name) as contactsName,
GROUP_CONCAT(DISTINCT DATE_FORMAT(pcpr.payment_date,'%Y-%m')) as confirmDate,
pwgs.create_time as createTime
FROM pay_working_group pwg
right join pay_working_group_subitem pwgs on (pwg.id = pwgs.working_group_id)
left JOIN sys_user su on (pwg.principal_id_a = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left JOIN pay_working_group_subitem_contacts pwgsc on pwgsc.working_group_sub_id = pwgs.id
left join pay_confirm_payment_record pcpr on pwgs.id = pcpr.project_id
group by pwgs.id
union all
SELECT pcp.id,
pcp.id as superId,
pcp.charge_project AS projectName,
pcp.principal_name as principalName,
pcp.charge_company_id AS chargeCompanyId,
pcp.charge_company_temporary_id as chargeCompanyTemporaryId,
pcp.charge_company_temporary_name AS chargeCompanyTemporaryName,
pcp.no_tax_amount as allMoney,
pcp.paid_amount as comeAllMoney,
pcp.charge_use as chargeUse,
sd.depart_name as depart,
pcp.pack as pack,
pcp.year as year,
pcp.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pcp.principal_id as principalNameId,
1 as type,
pcp.invoice_amount AS billMoney,
confirm_amount as confirmAmount,
invoice_no_tax_amount as invoiceNoTaxAmount,
paid_no_tax_amount as paidNoTaxAmount,
confirm_no_tax_amount as confirmNoTaxAmount,
contacts_temporary_name as contactsName,
GROUP_CONCAT(DATE_FORMAT(pcpr.payment_date,'%Y-%m')) as confirmDate,
pcp.create_time as createTime
FROM pay_common_project pcp
left JOIN sys_user su on (pcp.principal_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join pay_confirm_payment_record pcpr on pcp.id = pcpr.project_id
group by pcp.id
union all
SELECT pmps.id,
pmp.id as superId,
pmp.project_name AS projectName,
su.realname as principalName,
pmps.company_id AS chargeCompanyId,
pmps.company_id as chargeCompanyTemporaryId,
pmps.company_name AS chargeCompanyTemporaryName,
pmps.no_tax_amount as allMoney,
pmps.paid_amount as comeAllMoney,
pmps.charge_use as chargeUse,
sd.depart_name as depart,
pmps.pack as pack,
pmp.particular_year as year,
pmps.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pmp.director_id as principalNameId,
4 as type,
pmps.invoice_amount AS billMoney,
confirm_amount as confirmAmount,
invoice_no_tax_amount as invoiceNoTaxAmount,
paid_no_tax_amount as paidNoTaxAmount,
confirm_no_tax_amount as confirmNoTaxAmount,
company_contact_name as contactsName,
GROUP_CONCAT(DATE_FORMAT(pcpr.payment_date,'%Y-%m')) as confirmDate,
pmps.create_time as createTime
FROM pay_member_project pmp
right join pay_member_project_subitem pmps on (pmp.id = pmps.project_id)
left JOIN sys_user su on (pmp.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join pay_confirm_payment_record pcpr on pmps.id = pcpr.project_id
group by pmps.id
union all
SELECT pms.id,
pm.id as superId,
pm.meeting_name AS projectName,
su.realname as principalName,
pms.company_id AS chargeCompanyId,
pms.company_id as chargeCompanyTemporaryId,
pms.company_name AS chargeCompanyTemporaryName,
pms.no_tax_amount as allMoney,
pms.paid_amount as comeAllMoney,
pms.charge_use as chargeUse,
sd.depart_name as depart,
pms.pack as pack,
pm.particular_year as year,
pms.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pm.director_id as principalNameId,
3 as type,
pms.invoice_amount AS billMoney,
confirm_amount as confirmAmount,
invoice_no_tax_amount as invoiceNoTaxAmount,
paid_no_tax_amount as paidNoTaxAmount,
confirm_no_tax_amount as confirmNoTaxAmount,
company_contact_name as contactsName,
GROUP_CONCAT(DATE_FORMAT(pcpr.payment_date,'%Y-%m')) as confirmDate,
pms.create_time as createTime
FROM pay_meeting pm
right join pay_meeting_situation pms on (pm.id = pms.meeting_id)
left JOIN sys_user su on (pm.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join pay_confirm_payment_record pcpr on pms.id = pcpr.project_id
group by pms.id
union all
SELECT tmps.id,
tmp.id as superId,
tmp.project_name AS projectName,
su.realname as principalName,
tmps.company_id AS chargeCompanyId,
tmps.company_id as chargeCompanyTemporaryId,
tmps.company_name AS chargeCompanyTemporaryName,
tmps.no_tax_amount as allMoney,
tmps.paid_amount as comeAllMoney,
tmps.charge_use as chargeUse,
sd.depart_name as depart,
tmps.pack as pack,
tmp.year as year,
tmps.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
tmp.director_id as principalNameId,
5 as type,
tmps.invoice_amount AS billMoney,
confirm_amount as confirmAmount,
invoice_no_tax_amount as invoiceNoTaxAmount,
paid_no_tax_amount as paidNoTaxAmount,
confirm_no_tax_amount as confirmNoTaxAmount,
liaison_man as contactsName,
GROUP_CONCAT(DATE_FORMAT(pcpr.payment_date,'%Y-%m')) as confirmDate,
tmps.create_time as createTime
FROM tb_member_project tmp
left join tb_member_project_subitem tmps on (tmp.id = tmps.project_id)
left JOIN sys_user su on (tmp.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join pay_confirm_payment_record pcpr on tmps.id = pcpr.project_id
group by tmps.id
union all
SELECT tcp.id,
tmp.id as superId,
tmp.project_name AS projectName,
su.realname as principalName,
tcp.company_id AS chargeCompanyId,
tcp.company_id as chargeCompanyTemporaryId,
tcp.company_name AS chargeCompanyTemporaryName,
tcp.no_tax_amount as allMoney,
tcp.paid_amount as comeAllMoney,
tcp.charge_use as chargeUse,
sd.depart_name as depart,
tcp.pack as pack,
tmp.year as year,
tcp.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
tmp.director_id as principalNameId,
6 as type,
tcp.invoice_amount AS billMoney,
confirm_amount as confirmAmount,
invoice_no_tax_amount as invoiceNoTaxAmount,
paid_no_tax_amount as paidNoTaxAmount,
confirm_no_tax_amount as confirmNoTaxAmount,
liaison_man as contactsName,
GROUP_CONCAT(DATE_FORMAT(pcpr.payment_date,'%Y-%m')) as confirmDate,
tcp.create_time as createTime
FROM tb_member_project tmp
left join tb_certificate_payment tcp on (tmp.id = tcp.project_id)
left JOIN sys_user su on (tmp.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join pay_confirm_payment_record pcpr on tcp.id = pcpr.project_id
group by tcp.id
) pp
order by pp.createTime;
@@ -28,11 +28,11 @@ public interface ProjectDetailService {
*/ */
List<PayCommonProject> queryProjectList(List<String> list); List<PayCommonProject> queryProjectList(List<String> list);
/** /**
* @Description 获取变更应收金额之后的状态 * @Description 获取变更待确收金额之后的状态
* @Author lqt * @Author lqt
* @Date 2021/9/14 * @Date 2021/9/14
* @Param projectId 项目id * @Param projectId 项目id
* @Param receivableAmount 应收金额 * @Param receivableAmount 待确收金额
* @Param needInvoice 需要发票 * @Param needInvoice 需要发票
* @Return * @Return
* @Exception * @Exception
@@ -358,13 +358,13 @@ public class ProjectDetailServiceImpl implements ProjectDetailService {
if(Objects.isNull(payCommonProject.getPaidAmount())){ if(Objects.isNull(payCommonProject.getPaidAmount())){
payCommonProject.setPaidAmount(new BigDecimal("0.00")); payCommonProject.setPaidAmount(new BigDecimal("0.00"));
} }
// 应收金额没有变更 && 验证来款方式没有变更 // 待确收金额没有变更 && 验证来款方式没有变更
if(receivableAmount.compareTo(payCommonProject.getReceivableAmount()) == 0 && needInvoice.equals(payCommonProject.getNeedInvoice())){ if(receivableAmount.compareTo(payCommonProject.getReceivableAmount()) == 0 && needInvoice.equals(payCommonProject.getNeedInvoice())){
return null; return null;
} }
// 验证应收金额不能小于实收金额 // 验证待确收金额不能小于实收金额
if(receivableAmount.compareTo(payCommonProject.getPaidAmount()) < 0){ if(receivableAmount.compareTo(payCommonProject.getPaidAmount()) < 0){
throw new JeroBootException("应收金额不能小于实收金额!"); throw new JeroBootException("待确收金额不能小于实收金额!");
} }
// 验证来款方式,有变更,按照变更处理 // 验证来款方式,有变更,按照变更处理
if(!needInvoice.equals(payCommonProject.getNeedInvoice())){ if(!needInvoice.equals(payCommonProject.getNeedInvoice())){
@@ -384,7 +384,7 @@ public class ProjectDetailServiceImpl implements ProjectDetailService {
BigDecimal b = listPayMailBillProject.stream().map(PayMailBillProject::getInvoiceAmount).reduce(BigDecimal.ZERO,BigDecimal::add); BigDecimal b = listPayMailBillProject.stream().map(PayMailBillProject::getInvoiceAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
invoice = invoice.add(b); invoice = invoice.add(b);
if(receivableAmount.compareTo(invoice) < 0){ if(receivableAmount.compareTo(invoice) < 0){
throw new JeroBootException("应收金额不可小于实收金额,请先修改实际来款后再来修改!"); throw new JeroBootException("待确收金额不可小于实收金额,请先修改实际来款后再来修改!");
} }
List<String> list = listPayMailBillProject.stream().map(PayMailBillProject::getBillId).collect(Collectors.toList()); List<String> list = listPayMailBillProject.stream().map(PayMailBillProject::getBillId).collect(Collectors.toList());
LambdaQueryWrapper<PayMailBill> queryPayMailBill = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PayMailBill> queryPayMailBill = new LambdaQueryWrapper<>();
@@ -394,7 +394,7 @@ public class ProjectDetailServiceImpl implements ProjectDetailService {
y = listPayMailBill.size(); y = listPayMailBill.size();
} }
// 到账 // 到账
// 应收金额 = 实收金额 = 1 // 待确收金额 = 实收金额 = 1
if(receivableAmount.compareTo(payCommonProject.getPaidAmount()) == 0){ if(receivableAmount.compareTo(payCommonProject.getPaidAmount()) == 0){
projectStatusVO.setInAccount(ProjectCommon.IN_ACCOUNT1); projectStatusVO.setInAccount(ProjectCommon.IN_ACCOUNT1);
} }
@@ -402,7 +402,7 @@ public class ProjectDetailServiceImpl implements ProjectDetailService {
if(payCommonProject.getPaidAmount().compareTo(new BigDecimal("0.00")) == 0){ if(payCommonProject.getPaidAmount().compareTo(new BigDecimal("0.00")) == 0){
projectStatusVO.setInAccount(ProjectCommon.IN_ACCOUNT0); projectStatusVO.setInAccount(ProjectCommon.IN_ACCOUNT0);
} }
// 0 < 实收金额 && 实收金额 < 应收金额 = 2 // 0 < 实收金额 && 实收金额 < 待确收金额 = 2
if(payCommonProject.getPaidAmount().compareTo(new BigDecimal("0.00")) > 0 if(payCommonProject.getPaidAmount().compareTo(new BigDecimal("0.00")) > 0
&& payCommonProject.getPaidAmount().compareTo(receivableAmount) < 0){ && payCommonProject.getPaidAmount().compareTo(receivableAmount) < 0){
projectStatusVO.setInAccount(ProjectCommon.IN_ACCOUNT2); projectStatusVO.setInAccount(ProjectCommon.IN_ACCOUNT2);
@@ -412,7 +412,7 @@ public class ProjectDetailServiceImpl implements ProjectDetailService {
if(Objects.equals(payCommonProject.getNeedInvoice(),ProjectCommon.NEED_INVOICE0)){ if(Objects.equals(payCommonProject.getNeedInvoice(),ProjectCommon.NEED_INVOICE0)){
projectStatusVO.setMakeInvoice(ProjectCommon.MAKE_INVOICE0); projectStatusVO.setMakeInvoice(ProjectCommon.MAKE_INVOICE0);
}else{ }else{
// 开票金额 = 应收金额 = 1 // 开票金额 = 待确收金额 = 1
if(invoice.compareTo(receivableAmount) == 0 ){ if(invoice.compareTo(receivableAmount) == 0 ){
projectStatusVO.setMakeInvoice(ProjectCommon.MAKE_INVOICE1); projectStatusVO.setMakeInvoice(ProjectCommon.MAKE_INVOICE1);
} }
@@ -420,13 +420,13 @@ public class ProjectDetailServiceImpl implements ProjectDetailService {
if(invoice.compareTo(new BigDecimal("0.00")) == 0){ if(invoice.compareTo(new BigDecimal("0.00")) == 0){
projectStatusVO.setMakeInvoice(ProjectCommon.MAKE_INVOICE0); projectStatusVO.setMakeInvoice(ProjectCommon.MAKE_INVOICE0);
} }
// 开票金额 > 0 && 开票金额 < 应收金额 = 2 // 开票金额 > 0 && 开票金额 < 待确收金额 = 2
if(invoice.compareTo(new BigDecimal("0.00")) > 0 && invoice.compareTo(payCommonProject.getReceivableAmount()) < 0){ if(invoice.compareTo(new BigDecimal("0.00")) > 0 && invoice.compareTo(payCommonProject.getReceivableAmount()) < 0){
projectStatusVO.setMakeInvoice(ProjectCommon.MAKE_INVOICE2); projectStatusVO.setMakeInvoice(ProjectCommon.MAKE_INVOICE2);
} }
} }
// 邮寄 // 邮寄
// 开票金额 = 应收金额 && 邮寄次数 = 开票次数 = 1 // 开票金额 = 待确收金额 && 邮寄次数 = 开票次数 = 1
if(invoice.compareTo(receivableAmount) == 0 && c == y){ if(invoice.compareTo(receivableAmount) == 0 && c == y){
projectStatusVO.setMail(ProjectCommon.MAIL1); projectStatusVO.setMail(ProjectCommon.MAIL1);
} }
@@ -24,9 +24,9 @@ public class ProjectDetailVO implements Serializable {
@ApiModelProperty(value = "项目类型") @ApiModelProperty(value = "项目类型")
private Integer projectType; private Integer projectType;
/** /**
* 应收金额 * 待确收金额
*/ */
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal receivableAmount; private BigDecimal receivableAmount;
/** /**
@@ -663,7 +663,7 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
} }
//已收金额 //已收金额
BigDecimal amountReceived = payIncomeContractDetailOutput.getAmountReceived(); BigDecimal amountReceived = payIncomeContractDetailOutput.getAmountReceived();
//应收金额 //待确收金额
BigDecimal accountsReceivableAmount = payIncomeContractDetailOutput.getAccountsReceivableAmount(); BigDecimal accountsReceivableAmount = payIncomeContractDetailOutput.getAccountsReceivableAmount();
//相减得到未收金额 //相减得到未收金额
BigDecimal outstandingAmount = accountsReceivableAmount.subtract(amountReceived); BigDecimal outstandingAmount = accountsReceivableAmount.subtract(amountReceived);
@@ -797,7 +797,7 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
filedsList.add(new ExcelExportEntity("合同签订日期", "contractDate")); filedsList.add(new ExcelExportEntity("合同签订日期", "contractDate"));
filedsList.add(new ExcelExportEntity("合同终止日期", "terminationDate")); filedsList.add(new ExcelExportEntity("合同终止日期", "terminationDate"));
filedsList.add(new ExcelExportEntity("合同约定主要时点", "contractTimePoints")); filedsList.add(new ExcelExportEntity("合同约定主要时点", "contractTimePoints"));
filedsList.add(new ExcelExportEntity("应收金额", "accountsReceivableAmount")); filedsList.add(new ExcelExportEntity("待确收金额", "accountsReceivableAmount"));
filedsList.add(new ExcelExportEntity("已收金额", "amountReceived")); filedsList.add(new ExcelExportEntity("已收金额", "amountReceived"));
filedsList.add(new ExcelExportEntity("未收金额", "outstandingAmount")); filedsList.add(new ExcelExportEntity("未收金额", "outstandingAmount"));
filedsList.add(new ExcelExportEntity("账款状态", "accountStatus")); filedsList.add(new ExcelExportEntity("账款状态", "accountStatus"));
@@ -140,11 +140,11 @@ public class PayIncomeContract implements Serializable {
@ApiModelProperty(value = "合同约定主要时点") @ApiModelProperty(value = "合同约定主要时点")
@Size(max = 200, message = "合同约定主要时点不能大于200个字符") @Size(max = 200, message = "合同约定主要时点不能大于200个字符")
private java.lang.String contractTimePoints; private java.lang.String contractTimePoints;
/**应收金额*/ /**待确收金额*/
@Excel(name = "应收金额", width = 15) @Excel(name = "待确收金额", width = 15)
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
@NotNull(message = "应收金额不能为空") @NotNull(message = "待确收金额不能为空")
@DecimalMax(value = "9999999999.99",message = "应收金额格式错误") @DecimalMax(value = "9999999999.99",message = "待确收金额格式错误")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal accountsReceivableAmount; private BigDecimal accountsReceivableAmount;
/**已收金额*/ /**已收金额*/
@@ -58,9 +58,9 @@ public class PayIncomeContractAssociatedCancellation implements Serializable {
@Excel(name = "来款单位", width = 15) @Excel(name = "来款单位", width = 15)
@ApiModelProperty(value = "来款单位") @ApiModelProperty(value = "来款单位")
private java.lang.String chargeCompanyName; private java.lang.String chargeCompanyName;
/**应收金额(元)*/ /**待确收金额(元)*/
@Excel(name = "应收金额(元)", width = 15) @Excel(name = "待确收金额(元)", width = 15)
@ApiModelProperty(value = "应收金额(元)") @ApiModelProperty(value = "待确收金额(元)")
private java.math.BigDecimal receivableAmount; private java.math.BigDecimal receivableAmount;
/**实收金额(元)*/ /**实收金额(元)*/
@Excel(name = "实收金额(元)", width = 15) @Excel(name = "实收金额(元)", width = 15)
@@ -47,11 +47,11 @@ public class PayIncomeContractInstallment implements Serializable {
@NotEmpty(message = "阶段不能为空") @NotEmpty(message = "阶段不能为空")
@Size(max = 50, message = "阶段长度不能大于50个字符") @Size(max = 50, message = "阶段长度不能大于50个字符")
private java.lang.String phaseName; private java.lang.String phaseName;
/**应收金额*/ /**待确收金额*/
@Excel(name = "应收金额", width = 15) @Excel(name = "待确收金额", width = 15)
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
@NotNull(message = "应收金额不能为空") @NotNull(message = "待确收金额不能为空")
@DecimalMax(value = "9999999999.99",message = "应收金额格式错误") @DecimalMax(value = "9999999999.99",message = "待确收金额格式错误")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal accountsReceivableAmount; private BigDecimal accountsReceivableAmount;
/**应收时间*/ /**应收时间*/
@@ -144,12 +144,12 @@ public class PaySpendingContract implements Serializable {
@ApiModelProperty(value = "合同约定主要时点") @ApiModelProperty(value = "合同约定主要时点")
@Size(max = 200, message = "合同约定主要时点不能大于200个字符") @Size(max = 200, message = "合同约定主要时点不能大于200个字符")
private String contractTimePoints; private String contractTimePoints;
/**应收金额*/ /**待确收金额*/
@Excel(name = "应收金额", width = 15) @Excel(name = "待确收金额", width = 15)
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
@NotNull(message = "应收金额不能为空") @NotNull(message = "待确收金额不能为空")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
@DecimalMax(value = "9999999999.99",message = "应收金额格式错误") @DecimalMax(value = "9999999999.99",message = "待确收金额格式错误")
private BigDecimal accountsReceivableAmount; private BigDecimal accountsReceivableAmount;
/**已收金额*/ /**已收金额*/
@Excel(name = "已收金额", width = 15) @Excel(name = "已收金额", width = 15)
@@ -47,9 +47,9 @@ public class PaySpendingContractInstallment implements Serializable {
@NotEmpty(message = "阶段不能为空") @NotEmpty(message = "阶段不能为空")
@Size(max = 50, message = "阶段长度不能大于50个字符") @Size(max = 50, message = "阶段长度不能大于50个字符")
private String phaseName; private String phaseName;
/**应收金额*/ /**待确收金额*/
@Excel(name = "阶段应收金额", width = 15) @Excel(name = "阶段待确收金额", width = 15)
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
@NotNull(message = "阶段应收不能为空") @NotNull(message = "阶段应收不能为空")
@DecimalMax(value = "9999999999.99",message = "阶段应收格式错误") @DecimalMax(value = "9999999999.99",message = "阶段应收格式错误")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
@@ -146,7 +146,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
} }
// if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived()) // if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
// && payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){ // && payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
// throw new JeroBootException("已收金额大于应收金额!"); // throw new JeroBootException("已收金额大于待确收金额!");
// } // }
StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract); StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract);
if(!StringUtils.isBlank(msgPayIncomeContract)){ if(!StringUtils.isBlank(msgPayIncomeContract)){
@@ -237,7 +237,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
} }
if(!Objects.isNull(p.getAccountsReceivableAmount()) && !Objects.isNull(p.getPaidAmount()) if(!Objects.isNull(p.getAccountsReceivableAmount()) && !Objects.isNull(p.getPaidAmount())
&& p.getAccountsReceivableAmount().compareTo(p.getPaidAmount()) < 0){ && p.getAccountsReceivableAmount().compareTo(p.getPaidAmount()) < 0){
msgPayIncomeContractInstallment.append("第").append(listPayIncomeContractInstallment.indexOf(p) + 1).append("期实收金额大于应收金额!"); msgPayIncomeContractInstallment.append("第").append(listPayIncomeContractInstallment.indexOf(p) + 1).append("期实收金额大于待确收金额!");
} }
}); });
if(!StringUtils.isBlank(msgPayIncomeContractInstallment)){ if(!StringUtils.isBlank(msgPayIncomeContractInstallment)){
@@ -259,7 +259,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
} }
// if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived()) // if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
// && payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){ // && payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
// throw new JeroBootException("已收金额大于应收金额!"); // throw new JeroBootException("已收金额大于待确收金额!");
// } // }
StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract); StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract);
if(!StringUtils.isBlank(msgPayIncomeContract)){ if(!StringUtils.isBlank(msgPayIncomeContract)){
@@ -53,9 +53,9 @@ public class ProjectOutput implements Serializable {
@ApiModelProperty(value = "来款单位") @ApiModelProperty(value = "来款单位")
private String chargeCompanyName; private String chargeCompanyName;
/** /**
* 应收金额 * 待确收金额
*/ */
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal receivableAmount; private BigDecimal receivableAmount;
/** /**
@@ -15,11 +15,16 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.text.DecimalFormat; import java.text.DecimalFormat;
@@ -132,4 +137,31 @@ public class IndexController {
} }
@ApiOperation(value = "导出应收账款统计列表")
@GetMapping(value = "/exportUncollectedList")
public ModelAndView exportUncollectedList(
@RequestParam(name="type",defaultValue = "1")String type,
@RequestParam(name="departCode",required = false)String departCode,
@RequestParam(name="column",required = false)String column,
@RequestParam(name="order",required = false)String order) {
Page<AllProjectStatistics> page = new Page<>(-1, -1);
HashMap<String, Object> hashMap = indexService.uncollectedList(type,departCode,page,column,order);
IPage<AllProjectStatistics> pageList = (IPage<AllProjectStatistics>) hashMap.get("pageList");
List<AllProjectStatistics> records = pageList.getRecords();
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
String title = "应收账款统计";
mv.addObject(NormalExcelConstants.FILE_NAME, title); //此处设置的filename无效 ,前端会重更新设置一下
mv.addObject(NormalExcelConstants.CLASS, AllProjectStatistics.class);
//update-begin--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置--------------------
ExportParams exportParams=new ExportParams(title, title);
exportParams.setType(ExcelType.XSSF);
//update-end--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
mv.addObject(NormalExcelConstants.PARAMS,exportParams);
mv.addObject(NormalExcelConstants.DATA_LIST, records);
return mv;
}
} }
@@ -6,7 +6,7 @@ package com.jero.mail.commont;
*/ */
public interface constant { public interface constant {
/** /**
* 邮寄状态标识√,应收金额等于开票金额,开票次数等于邮寄次数。 * 邮寄状态标识√,待确收金额等于开票金额,开票次数等于邮寄次数。
*/ */
public static final int ONE=1; public static final int ONE=1;
/** /**
@@ -428,7 +428,7 @@ public class PayMailBillController extends JeroController<PayMailBill, IPayMailB
List<PayMailBill> listPayMailBill = payMailBillService.list(queryPayMailBill); List<PayMailBill> listPayMailBill = payMailBillService.list(queryPayMailBill);
y = listPayMailBill.size(); y = listPayMailBill.size();
} }
//获取项目应收金额 //获取项目待确收金额
BigDecimal receivableAmount = new BigDecimal("0.00"); BigDecimal receivableAmount = new BigDecimal("0.00");
String project = ""; String project = "";
@@ -798,7 +798,7 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
StringBuilder projectName,StringBuilder chargeCompanyName,StringBuilder principalName,StringBuilder principalId, StringBuilder projectName,StringBuilder chargeCompanyName,StringBuilder principalName,StringBuilder principalId,
int i) { int i) {
int makeInvoice=4; int makeInvoice=4;
BigDecimal amountReceivable=new BigDecimal("0");//应收金额 BigDecimal amountReceivable=new BigDecimal("0");//待确收金额
Integer needInvoice = 0;//是否需要发票 Integer needInvoice = 0;//是否需要发票
BigDecimal invoiceAmount=payMailBillProject.getInvoiceAmount();//本次开票金额 BigDecimal invoiceAmount=payMailBillProject.getInvoiceAmount();//本次开票金额
if(invoiceAmount ==null){ if(invoiceAmount ==null){
@@ -1131,7 +1131,7 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
private String editCheckCompanyProject(PayMailBillVO bm,PayMailBillProject oldBmp) { private String editCheckCompanyProject(PayMailBillVO bm,PayMailBillProject oldBmp) {
int makeInvoice=4; int makeInvoice=4;
BigDecimal amountReceivable=new BigDecimal("0");//应收金额 BigDecimal amountReceivable=new BigDecimal("0");//待确收金额
Integer needInvoice = 0;//是否需要发票 Integer needInvoice = 0;//是否需要发票
//之前开票总额-编辑之前的开票金额=原始开票总额 //之前开票总额-编辑之前的开票金额=原始开票总额
@@ -315,9 +315,9 @@ public class PayMeetingSituation implements Serializable {
private Integer newContact; private Integer newContact;
/** /**
* 应收金额 * 待确收金额
*/ */
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal amountReceivable; private BigDecimal amountReceivable;
@@ -672,7 +672,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
throw new JeroBootException("合并开票只能是同一企业"); throw new JeroBootException("合并开票只能是同一企业");
} }
if (amountReceivable.compareTo(new BigDecimal("0")) == 0) { if (amountReceivable.compareTo(new BigDecimal("0")) == 0) {
throw new JeroBootException("应收金额为0,不能合并开票"); throw new JeroBootException("待确收金额为0,不能合并开票");
} }
if (MeetingSubitemCommon.PAY_MODE_3.equals(payMeetingSituation1.getPayMode())) { if (MeetingSubitemCommon.PAY_MODE_3.equals(payMeetingSituation1.getPayMode())) {
throw new JeroBootException("缴费方式为打包,不能合并开票"); throw new JeroBootException("缴费方式为打包,不能合并开票");
@@ -1279,7 +1279,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
payMeetingSituation1.setNoTaxAmount(payMeetingSituation.getNoTaxAmount()); payMeetingSituation1.setNoTaxAmount(payMeetingSituation.getNoTaxAmount());
payMeetingSituation1.setTax(payMeetingSituation.getTax()); payMeetingSituation1.setTax(payMeetingSituation.getTax());
} }
//如果是编辑可以更新应收金额 //如果是编辑可以更新待确收金额
if (payMeetingSituation.getId() != null){ if (payMeetingSituation.getId() != null){
payMeetingSituation1.setAmountReceivable(payMeetingSituation.getAmountReceivable()); payMeetingSituation1.setAmountReceivable(payMeetingSituation.getAmountReceivable());
} }
@@ -85,9 +85,9 @@ public class MeetingEntity implements Serializable {
private Integer identity; private Integer identity;
/** /**
* 应收金额 * 待确收金额
*/ */
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
private BigDecimal amountReceivable; private BigDecimal amountReceivable;
/** /**
@@ -265,9 +265,9 @@ public class MeetingSituationContractVO {
private Integer newContact; private Integer newContact;
/** /**
* 应收金额 * 待确收金额
*/ */
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal amountReceivable; private BigDecimal amountReceivable;
@@ -278,9 +278,9 @@ public class PayMeetingSituationVO {
private String paymentRecord; private String paymentRecord;
/** /**
* 应收金额 * 待确收金额
*/ */
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal amountReceivable; private BigDecimal amountReceivable;
@@ -69,9 +69,9 @@ public class StandardsSituationExcel extends SituationBaseExcel {
private String postCode; private String postCode;
/** /**
* 应收金额 * 待确收金额
*/ */
@Excel(name = "应收金额", width = 15) @Excel(name = "待确收金额", width = 15)
private BigDecimal amountReceivable; private BigDecimal amountReceivable;
/**缴费方式*/ /**缴费方式*/
@@ -283,7 +283,7 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
projectSubitemExcel.setProjectId(projectId); projectSubitemExcel.setProjectId(projectId);
PayMemberProjectSubitem projectSubitem = new PayMemberProjectSubitem(); PayMemberProjectSubitem projectSubitem = new PayMemberProjectSubitem();
errorMessage.addAll(ValidUtil.validateReturnListWithNum(projectSubitemExcel,errorRowNum)); errorMessage.addAll(ValidUtil.validateReturnListWithNum(projectSubitemExcel,errorRowNum));
//应收金额 //待确收金额
String amountReceivable = projectSubitemExcel.getAmountReceivable(); String amountReceivable = projectSubitemExcel.getAmountReceivable();
if (errorMessage.isEmpty()) { if (errorMessage.isEmpty()) {
projectSubitem.setAmountReceivable(new BigDecimal(amountReceivable)); projectSubitem.setAmountReceivable(new BigDecimal(amountReceivable));
@@ -164,13 +164,13 @@ public class PayMemberProjectSubitem implements Serializable {
private String postContactName; private String postContactName;
/** /**
* 应收金额 * 待确收金额
*/ */
@Excel(name = "应收金额", width = 15,orderNum = "8") @Excel(name = "待确收金额", width = 15,orderNum = "8")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
@NotNull(message = "应收金额不能为空") @NotNull(message = "待确收金额不能为空")
@DecimalMax(value = "9999999999.99",message = "应收金额格式错误") @DecimalMax(value = "9999999999.99",message = "待确收金额格式错误")
private BigDecimal amountReceivable; private BigDecimal amountReceivable;
/** /**
@@ -194,11 +194,11 @@ public class TbCertificatePayment implements Serializable {
private String certificateId; private String certificateId;
/** /**
* 应收金额 * 待确收金额
*/ */
@Excel(name = "应收金额", width = 15) @Excel(name = "待确收金额", width = 15)
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
@DecimalMax(value = "9999999999.99", message = "应收金额格式错误") @DecimalMax(value = "9999999999.99", message = "待确收金额格式错误")
private BigDecimal amountReceivable; private BigDecimal amountReceivable;
/** /**
@@ -129,12 +129,12 @@ public class TbMemberProjectSubitem implements Serializable {
private java.util.Date registerTime; private java.util.Date registerTime;
/** /**
* 应收金额 * 待确收金额
*/ */
@Excel(name = "应收金额", width = 15) @Excel(name = "待确收金额", width = 15)
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
@NotNull(message = "应收金额不能为空") @NotNull(message = "待确收金额不能为空")
@DecimalMax(value = "9999999999.99", message = "应收金额格式错误") @DecimalMax(value = "9999999999.99", message = "待确收金额格式错误")
private BigDecimal amountReceivable; private BigDecimal amountReceivable;
/** /**
@@ -141,7 +141,7 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
paySendContactsMessageDTO.setPhone(payContactsManagement.getPhone()); paySendContactsMessageDTO.setPhone(payContactsManagement.getPhone());
paySendContactsMessageDTO.setUserId(memberProject.getDirectorId()); paySendContactsMessageDTO.setUserId(memberProject.getDirectorId());
paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0); paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0);
// 项目的应收金额>0 发送缴费通知 // 项目的待确收金额>0 发送缴费通知
if(payMemberProjectSubitem.getAmountReceivable().compareTo(new BigDecimal("0")) > 0){ if(payMemberProjectSubitem.getAmountReceivable().compareTo(new BigDecimal("0")) > 0){
paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0 + "," + ProjectCommon.FLAG1); paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0 + "," + ProjectCommon.FLAG1);
} }
@@ -220,7 +220,7 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
// if (!payMemberProjectSubitem1.getPostContactTemporaryId().equals(postContactId)) { // if (!payMemberProjectSubitem1.getPostContactTemporaryId().equals(postContactId)) {
// contactsManagementTemporaryService.removeById(postContactId); // contactsManagementTemporaryService.removeById(postContactId);
// } // }
// 变更应收金额,重新校验状态 // 变更待确收金额,重新校验状态
ProjectStatusVO projectStatusVO = projectDetailService.getStatus(payMemberProjectSubitem.getId(),payMemberProjectSubitem.getAmountReceivable(),payMemberProjectSubitem.getNeedInvoice()); ProjectStatusVO projectStatusVO = projectDetailService.getStatus(payMemberProjectSubitem.getId(),payMemberProjectSubitem.getAmountReceivable(),payMemberProjectSubitem.getNeedInvoice());
if(!Objects.isNull(projectStatusVO)){ if(!Objects.isNull(projectStatusVO)){
if(!Objects.isNull(projectStatusVO.getInAccount())){ if(!Objects.isNull(projectStatusVO.getInAccount())){
@@ -55,12 +55,12 @@ public class PayMemberProjectSubitemExcel {
private String postContactId; private String postContactId;
/** /**
* 应收金额 * 待确收金额
*/ */
@Excel(name = "应收金额", width = 15,orderNum = "4") @Excel(name = "待确收金额", width = 15,orderNum = "4")
@ApiModelProperty(value = "应收金额") @ApiModelProperty(value = "待确收金额")
@NotBlank(message = "应收金额不能为空") @NotBlank(message = "待确收金额不能为空")
@Pattern(regexp = "^[0-9]{1,10}(\\.[0-9]{1,2})?$",message = "应收金额格式错误") @Pattern(regexp = "^[0-9]{1,10}(\\.[0-9]{1,2})?$",message = "待确收金额格式错误")
private String amountReceivable; private String amountReceivable;
@@ -105,11 +105,11 @@ public class PayProjectExcel implements Serializable {
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "联系人邮箱") @ApiModelProperty(value = "联系人邮箱")
private String email; private String email;
/**应收金额(元)*/ /**待确收金额(元)*/
@Excel(name = "应收金额(元)", width = 15) @Excel(name = "待确收金额(元)", width = 15)
@ApiModelProperty(value = "应收金额(元)") @ApiModelProperty(value = "待确收金额(元)")
@NotNull(message = "应收金额(元)不能为空!") @NotNull(message = "待确收金额(元)不能为空!")
@DecimalMax(value = "9999999999.99",message = "应收金额(元)格式错误") @DecimalMax(value = "9999999999.99",message = "待确收金额(元)格式错误")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal receivableAmount; private BigDecimal receivableAmount;
/**实收金额(元)*/ /**实收金额(元)*/
@@ -751,13 +751,13 @@ public class PayPaymentCheckServiceImpl extends ServiceImpl<PayPaymentCheckMappe
paidAmount = new BigDecimal("0.00"); paidAmount = new BigDecimal("0.00");
} }
// 实收金额 < 应收金额 && 不等于待审核/已拒绝 // 实收金额 < 待确收金额 && 不等于待审核/已拒绝
if(paidAmount.compareTo(amountReceivable) < 0 if(paidAmount.compareTo(amountReceivable) < 0
&& !PaymentStatusEnum.TO_BE_REVIEWED.getCode().equals(paymentStatus) && !PaymentStatusEnum.TO_BE_REVIEWED.getCode().equals(paymentStatus)
&& !PaymentStatusEnum.REJECTED.getCode().equals(paymentStatus)){ && !PaymentStatusEnum.REJECTED.getCode().equals(paymentStatus)){
paymentStatus = PaymentStatusEnum.TO_BE_UPLOADED.getCode();//待上传 paymentStatus = PaymentStatusEnum.TO_BE_UPLOADED.getCode();//待上传
} }
// 应收>0 && 实收金额 == 应收金额 // 应收>0 && 实收金额 == 待确收金额
if(amountReceivable.compareTo(new BigDecimal("0.00")) > 0 if(amountReceivable.compareTo(new BigDecimal("0.00")) > 0
&& paidAmount.compareTo(amountReceivable) == 0){ && paidAmount.compareTo(amountReceivable) == 0){
paymentStatus = PaymentStatusEnum.COMPLETED.getCode();//已完结 paymentStatus = PaymentStatusEnum.COMPLETED.getCode();//已完结
@@ -90,11 +90,11 @@ public class PayCommonProject implements Serializable {
@ApiModelProperty(value = "临时联系人名称") @ApiModelProperty(value = "临时联系人名称")
@Excel(name = "企业联系人", width = 15,orderNum = "3") @Excel(name = "企业联系人", width = 15,orderNum = "3")
private String contactsTemporaryName; private String contactsTemporaryName;
/**应收金额(元)*/ /**待确收金额(元)*/
@Excel(name = "应收金额(元)", width = 15,orderNum = "4") @Excel(name = "待确收金额(元)", width = 15,orderNum = "4")
@ApiModelProperty(value = "应收金额(元)") @ApiModelProperty(value = "待确收金额(元)")
@NotNull(message = "应收金额(元)不能为空") @NotNull(message = "待确收金额(元)不能为空")
@DecimalMax(value = "9999999999.99",message = "应收金额(元)格式错误") @DecimalMax(value = "9999999999.99",message = "待确收金额(元)格式错误")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal receivableAmount; private BigDecimal receivableAmount;
/**实收金额(元)*/ /**实收金额(元)*/
@@ -117,10 +117,10 @@ public class PayWorkingGroupSubItem implements Serializable {
@ApiModelProperty(value = "来款方式(1:无,2:合同,3:收费通知)") @ApiModelProperty(value = "来款方式(1:无,2:合同,3:收费通知)")
@NotNull(message = "来款方式不能为空") @NotNull(message = "来款方式不能为空")
private java.lang.Integer chargeWay; private java.lang.Integer chargeWay;
/**应收金额(元)*/ /**待确收金额(元)*/
@Excel(name = "应收金额(元)", width = 15) @Excel(name = "待确收金额(元)", width = 15)
@ApiModelProperty(value = "应收金额(元)") @ApiModelProperty(value = "待确收金额(元)")
@DecimalMax(value = "9999999999.99",message = "应收金额(元)格式错误") @DecimalMax(value = "9999999999.99",message = "待确收金额(元)格式错误")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal receivableAmount; private BigDecimal receivableAmount;
/**实收金额(元)*/ /**实收金额(元)*/
@@ -456,7 +456,8 @@
packText, packText,
pack, pack,
invoiceNoTaxAmount as billMoney, invoiceNoTaxAmount as billMoney,
confirmNoTaxAmount as confirmAmount confirmNoTaxAmount as confirmAmount,
year
from from
<if test="allProjectStatisticsSearch.paymentYear == null or allProjectStatisticsSearch.paymentYear == ''"> <if test="allProjectStatisticsSearch.paymentYear == null or allProjectStatisticsSearch.paymentYear == ''">
v_statistical v v_statistical v
@@ -2367,7 +2368,7 @@
IFNULL(sum(money),0) from IFNULL(sum(money),0) from
( (
SELECT distinct v.projectId, invoiceNoTaxAmount - ifnull( paidNoTaxAmount, 0) money SELECT distinct v.projectId, invoiceNoTaxAmount - ifnull( paidNoTaxAmount, 0) money
FROM v_statistical v FROM v_statistical_all v
left join pay_mail_bill_project pmbp on v.projectId = pmbp.project_id left join pay_mail_bill_project pmbp on v.projectId = pmbp.project_id
left join pay_mail_bill pmb on pmb.id = pmbp.bill_id left join pay_mail_bill pmb on pmb.id = pmbp.bill_id
<where> <where>
@@ -2384,8 +2385,8 @@
and departCode = #{departCode} and departCode = #{departCode}
</if> </if>
<!-- 开票未来款 --> <!-- 开票未来款 -->
AND (paidNoTaxAmount <![CDATA[<]]> invoiceNoTaxAmount or AND (comeAllMoney <![CDATA[<]]> v.invoiceAmount or
(paidNoTaxAmount is null and invoiceNoTaxAmount is not null and invoiceNoTaxAmount != 0)) (comeAllMoney is null and v.invoiceAmount is not null and v.invoiceAmount != 0))
</where> </where>
) a ) a
</select> </select>
@@ -2435,8 +2436,9 @@
allMoney, allMoney,
paidNoTaxAmount AS comeAllMoney, paidNoTaxAmount AS comeAllMoney,
invoiceNoTaxAmount AS billMoney, invoiceNoTaxAmount AS billMoney,
confirmNoTaxAmount AS confirmAmount confirmNoTaxAmount AS confirmAmount,
FROM v_statistical v year
FROM v_statistical_all v
left join pay_mail_bill_project pmbp on v.projectId = pmbp.project_id left join pay_mail_bill_project pmbp on v.projectId = pmbp.project_id
left join pay_mail_bill pmb on pmb.id = pmbp.bill_id left join pay_mail_bill pmb on pmb.id = pmbp.bill_id
<where> <where>
@@ -2453,8 +2455,8 @@
and departCode = #{departCode} and departCode = #{departCode}
</if> </if>
<!-- 开票未来款 --> <!-- 开票未来款 -->
AND (paidNoTaxAmount <![CDATA[<]]> invoiceNoTaxAmount or AND (comeAllMoney <![CDATA[<]]> v.invoiceAmount or
(paidNoTaxAmount is null and invoiceNoTaxAmount is not null and invoiceNoTaxAmount != 0)) (comeAllMoney is null and v.invoiceAmount is not null and v.invoiceAmount != 0))
</where>) p </where>) p
<if test="column != null and column != ''"> <if test="column != null and column != ''">
<if test="column == 'allMoney' and order == 'desc'"> <if test="column == 'allMoney' and order == 'desc'">
@@ -2496,7 +2498,7 @@
paidNoTaxAmount, paidNoTaxAmount,
invoiceNoTaxAmount, invoiceNoTaxAmount,
confirmNoTaxAmount confirmNoTaxAmount
FROM v_statistical v FROM v_statistical_all v
left join pay_mail_bill_project pmbp on v.projectId = pmbp.project_id left join pay_mail_bill_project pmbp on v.projectId = pmbp.project_id
left join pay_mail_bill pmb on pmb.id = pmbp.bill_id left join pay_mail_bill pmb on pmb.id = pmbp.bill_id
<where> <where>
@@ -2513,8 +2515,8 @@
and departCode = #{departCode} and departCode = #{departCode}
</if> </if>
<!-- 开票未来款 --> <!-- 开票未来款 -->
AND (paidNoTaxAmount <![CDATA[<]]> invoiceNoTaxAmount or AND (comeAllMoney <![CDATA[<]]> v.invoiceAmount or
(paidNoTaxAmount is null and invoiceNoTaxAmount is not null and invoiceNoTaxAmount != 0)) (comeAllMoney is null and v.invoiceAmount is not null and v.invoiceAmount != 0))
</where> </where>
) a ) a
</select> </select>
@@ -149,7 +149,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
paySendContactsMessageDTO.setPhone(payContactsManagement.getPhone()); paySendContactsMessageDTO.setPhone(payContactsManagement.getPhone());
paySendContactsMessageDTO.setUserId(payCommonProject.getPrincipalId()); paySendContactsMessageDTO.setUserId(payCommonProject.getPrincipalId());
paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0); paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0);
// 项目的应收金额>0 发送缴费通知 // 项目的待确收金额>0 发送缴费通知
if(!Objects.isNull(payCommonProject.getReceivableAmount()) && payCommonProject.getReceivableAmount().compareTo(new BigDecimal("0")) > 0){ if(!Objects.isNull(payCommonProject.getReceivableAmount()) && payCommonProject.getReceivableAmount().compareTo(new BigDecimal("0")) > 0){
paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0 + "," + ProjectCommon.FLAG1); paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0 + "," + ProjectCommon.FLAG1);
} }
@@ -223,7 +223,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
} }
setPayCommonProjectEdit(payCommonProject,payCommonProjectOld); setPayCommonProjectEdit(payCommonProject,payCommonProjectOld);
// 变更应收金额,重新校验状态 // 变更待确收金额,重新校验状态
ProjectStatusVO projectStatusVO = projectDetailService.getStatus(payCommonProject.getId(),payCommonProject.getReceivableAmount(),payCommonProject.getNeedInvoice()); ProjectStatusVO projectStatusVO = projectDetailService.getStatus(payCommonProject.getId(),payCommonProject.getReceivableAmount(),payCommonProject.getNeedInvoice());
if(!Objects.isNull(projectStatusVO)){ if(!Objects.isNull(projectStatusVO)){
if(!Objects.isNull(projectStatusVO.getInAccount())){ if(!Objects.isNull(projectStatusVO.getInAccount())){
@@ -346,7 +346,7 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
paySendContactsMessageDTO.setUserId(payWorkingGroupOld.getPrincipalIdA()); paySendContactsMessageDTO.setUserId(payWorkingGroupOld.getPrincipalIdA());
paySendContactsMessageDTO.setPhone(payContactsManagement.getPhone()); paySendContactsMessageDTO.setPhone(payContactsManagement.getPhone());
paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0); paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0);
// 项目的应收金额>0 发送缴费通知 // 项目的待确收金额>0 发送缴费通知
if(!Objects.isNull(p.getReceivableAmount()) && p.getReceivableAmount().compareTo(new BigDecimal("0")) > 0){ if(!Objects.isNull(p.getReceivableAmount()) && p.getReceivableAmount().compareTo(new BigDecimal("0")) > 0){
paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0 + "," + ProjectCommon.FLAG1); paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0 + "," + ProjectCommon.FLAG1);
} }
@@ -184,7 +184,7 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
if(Objects.equals(payWorkingGroupSubItem.getChargeWay(),PayProjectCommon.CHARGE_WAY2)){ if(Objects.equals(payWorkingGroupSubItem.getChargeWay(),PayProjectCommon.CHARGE_WAY2)){
if(Objects.isNull(payWorkingGroupSubItem.getReceivableAmount())){ if(Objects.isNull(payWorkingGroupSubItem.getReceivableAmount())){
throw new JeroBootException("应收金额不能为空"); throw new JeroBootException("待确收金额不能为空");
} }
if(StringUtils.isBlank(payWorkingGroupSubItem.getContractNum())){ if(StringUtils.isBlank(payWorkingGroupSubItem.getContractNum())){
throw new JeroBootException("合同号不能为空"); throw new JeroBootException("合同号不能为空");
@@ -195,7 +195,7 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
throw new JeroBootException("收费通知号不能为空"); throw new JeroBootException("收费通知号不能为空");
} }
if(Objects.isNull(payWorkingGroupSubItem.getReceivableAmount())){ if(Objects.isNull(payWorkingGroupSubItem.getReceivableAmount())){
throw new JeroBootException("应收金额不能为空"); throw new JeroBootException("待确收金额不能为空");
} }
} }
@@ -293,7 +293,7 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
paySendContactsMessageDTO.setListFile(listFile); paySendContactsMessageDTO.setListFile(listFile);
} }
paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0); paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0);
// 项目的应收金额>0 发送缴费通知 // 项目的待确收金额>0 发送缴费通知
if(!Objects.isNull(payWorkingGroupSubItem.getReceivableAmount()) && payWorkingGroupSubItem.getReceivableAmount().compareTo(new BigDecimal("0")) > 0){ if(!Objects.isNull(payWorkingGroupSubItem.getReceivableAmount()) && payWorkingGroupSubItem.getReceivableAmount().compareTo(new BigDecimal("0")) > 0){
paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0 + "," + ProjectCommon.FLAG1); paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0 + "," + ProjectCommon.FLAG1);
} }
@@ -332,7 +332,7 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
} }
if(Objects.equals(payWorkingGroupSubItem.getChargeWay(),PayProjectCommon.CHARGE_WAY2)){ if(Objects.equals(payWorkingGroupSubItem.getChargeWay(),PayProjectCommon.CHARGE_WAY2)){
if(Objects.isNull(payWorkingGroupSubItem.getReceivableAmount())){ if(Objects.isNull(payWorkingGroupSubItem.getReceivableAmount())){
throw new JeroBootException("应收金额不能为空"); throw new JeroBootException("待确收金额不能为空");
} }
if(StringUtils.isBlank(payWorkingGroupSubItem.getContractNum())){ if(StringUtils.isBlank(payWorkingGroupSubItem.getContractNum())){
throw new JeroBootException("合同号不能为空"); throw new JeroBootException("合同号不能为空");
@@ -343,7 +343,7 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
throw new JeroBootException("收费通知号不能为空"); throw new JeroBootException("收费通知号不能为空");
} }
if(Objects.isNull(payWorkingGroupSubItem.getReceivableAmount())){ if(Objects.isNull(payWorkingGroupSubItem.getReceivableAmount())){
throw new JeroBootException("应收金额不能为空"); throw new JeroBootException("待确收金额不能为空");
} }
} }
@@ -412,7 +412,7 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
payWorkingGroupSubItemContactsService.saveBatch(listPayWorkingGroupSubItemContactsNew); payWorkingGroupSubItemContactsService.saveBatch(listPayWorkingGroupSubItemContactsNew);
} }
payWorkingGroupSubItem.setChargeUse(PayProjectCommon.CHARGE_USE1); payWorkingGroupSubItem.setChargeUse(PayProjectCommon.CHARGE_USE1);
// 变更应收金额,重新校验状态 // 变更待确收金额,重新校验状态
ProjectStatusVO projectStatusVO = projectDetailService.getStatus(workingGroupSubItemId,payWorkingGroupSubItem.getReceivableAmount(),payWorkingGroupSubItem.getNeedInvoice()); ProjectStatusVO projectStatusVO = projectDetailService.getStatus(workingGroupSubItemId,payWorkingGroupSubItem.getReceivableAmount(),payWorkingGroupSubItem.getNeedInvoice());
if(!Objects.isNull(projectStatusVO)){ if(!Objects.isNull(projectStatusVO)){
if(!Objects.isNull(projectStatusVO.getInAccount())){ if(!Objects.isNull(projectStatusVO.getInAccount())){
@@ -629,7 +629,7 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
// 校验 // 校验
if (Objects.equals(p.getChargeWay(), PayProjectCommon.CHARGE_WAY2)) { if (Objects.equals(p.getChargeWay(), PayProjectCommon.CHARGE_WAY2)) {
if (Objects.isNull(p.getReceivableAmount())) { if (Objects.isNull(p.getReceivableAmount())) {
msg.append("第").append(count + 3).append("行:应收金额不能为空,请修改。<br/>"); msg.append("第").append(count + 3).append("行:待确收金额不能为空,请修改。<br/>");
} }
if (StringUtils.isBlank(p.getContractNum())) { if (StringUtils.isBlank(p.getContractNum())) {
msg.append("第").append(count + 3).append("行:合同号不能为空,请修改。<br/>"); msg.append("第").append(count + 3).append("行:合同号不能为空,请修改。<br/>");
@@ -661,7 +661,7 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
} }
} }
if (Objects.isNull(p.getReceivableAmount())) { if (Objects.isNull(p.getReceivableAmount())) {
msg.append("第").append(count + 3).append("行:应收金额不能为空,请修改。<br/>"); msg.append("第").append(count + 3).append("行:待确收金额不能为空,请修改。<br/>");
} }
} }
p.setChargeUse(PayProjectCommon.CHARGE_USE1); p.setChargeUse(PayProjectCommon.CHARGE_USE1);
@@ -926,7 +926,7 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
return; return;
} }
LambdaUpdateWrapper<PayWorkingGroupSubItem> updatePayWorkingGroupSubItem = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<PayWorkingGroupSubItem> updatePayWorkingGroupSubItem = new LambdaUpdateWrapper<>();
// 变更应收金额,重新校验状态 // 变更待确收金额,重新校验状态
ProjectStatusVO projectStatusVO = projectDetailService.getStatus(p.getId(),input.getReceivableAmount(),p.getNeedInvoice()); ProjectStatusVO projectStatusVO = projectDetailService.getStatus(p.getId(),input.getReceivableAmount(),p.getNeedInvoice());
if(!Objects.isNull(projectStatusVO)){ if(!Objects.isNull(projectStatusVO)){
if(!Objects.isNull(projectStatusVO.getInAccount())){ if(!Objects.isNull(projectStatusVO.getInAccount())){
@@ -20,10 +20,10 @@ public class SetChargeInput implements Serializable {
@ApiModelProperty(value = "收费通知唯一标识(收费通知号A:a,收费通知号B:b)") @ApiModelProperty(value = "收费通知唯一标识(收费通知号A:a,收费通知号B:b)")
@NotEmpty(message = "收费通知唯一标识不能为空") @NotEmpty(message = "收费通知唯一标识不能为空")
private java.lang.String charge; private java.lang.String charge;
/**应收金额(元)*/ /**待确收金额(元)*/
@ApiModelProperty(value = "应收金额(元)") @ApiModelProperty(value = "待确收金额(元)")
@DecimalMax(value = "9999999999.99",message = "应收金额(元)格式错误") @DecimalMax(value = "9999999999.99",message = "待确收金额(元)格式错误")
@NotNull(message = "应收金额(元)不能为空!") @NotNull(message = "待确收金额(元)不能为空!")
private BigDecimal receivableAmount; private BigDecimal receivableAmount;
/**收费通知号*/ /**收费通知号*/
@ApiModelProperty(value = "收费通知号") @ApiModelProperty(value = "收费通知号")
@@ -38,10 +38,10 @@ public class PayWorkingGroupSubItemExcel implements Serializable {
@ApiModelProperty(value = "来款方式(1:无,2:合同,3:收费通知)") @ApiModelProperty(value = "来款方式(1:无,2:合同,3:收费通知)")
private Integer chargeWay; private Integer chargeWay;
/** /**
* 应收金额(元) * 待确收金额(元)
*/ */
@Excel(name = "应收金额(元)", width = 15) @Excel(name = "待确收金额(元)", width = 15)
@ApiModelProperty(value = "应收金额(元)") @ApiModelProperty(value = "待确收金额(元)")
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal receivableAmount; private BigDecimal receivableAmount;
/** /**
@@ -22,10 +22,26 @@ public class AllProjectStatistics {
@ApiModelProperty(value = "来款项目") @ApiModelProperty(value = "来款项目")
private String projectName; private String projectName;
@Excel(name = "项目负责人", width = 15)
@ApiModelProperty(value = "项目负责人")
private String principalName;
@Excel(name = "科室", width = 15)
@ApiModelProperty(value = "科室")
private String depart;
@Excel(name = "来款单位", width = 15) @Excel(name = "来款单位", width = 15)
@ApiModelProperty(value = "来款单位") @ApiModelProperty(value = "来款单位")
private String chargeCompanyTemporaryName; private String chargeCompanyTemporaryName;
@ApiModelProperty(value = "打包")
private Integer pack;
@TableField(exist = false)
@Excel(name = "打包", width = 15)
@ApiModelProperty(value = "打包")
private String packText;
@Excel(name = "年度待确收金额", width = 15) @Excel(name = "年度待确收金额", width = 15)
@ApiModelProperty(value = "合同金额") @ApiModelProperty(value = "合同金额")
private String allMoney; private String allMoney;
@@ -49,27 +65,14 @@ public class AllProjectStatistics {
@ApiModelProperty(value = "来款用途") @ApiModelProperty(value = "来款用途")
private String ChargeUse_text; private String ChargeUse_text;
@ApiModelProperty(value = "打包")
private Integer pack;
@TableField(exist = false)
@Excel(name = "打包", width = 15)
@ApiModelProperty(value = "打包")
private String packText;
@Excel(name = "科室", width = 15)
@ApiModelProperty(value = "科室")
private String depart;
@Excel(name = "项目负责人", width = 15)
@ApiModelProperty(value = "项目负责人")
private String principalName;
@Excel(name = "到账时间", width = 15)
@ApiModelProperty(value = "到账时间") @ApiModelProperty(value = "到账时间")
private String paymentDate; private String paymentDate;
@Excel(name = "项目年份", width = 15)
@ApiModelProperty(value = "项目年份")
private String year;
public AllProjectStatistics(String allMoney, String confirmAmount, String billMoney, String comeAllMoney, String paymentDate) { public AllProjectStatistics(String allMoney, String confirmAmount, String billMoney, String comeAllMoney, String paymentDate) {
this.allMoney=allMoney; this.allMoney=allMoney;
this.confirmAmount=confirmAmount; this.confirmAmount=confirmAmount;
@@ -22,17 +22,17 @@ public class AmountUtil {
/** /**
* 计算到账状态 * 计算到账状态
* *
* @param amountReceivable 应收金额 * @param amountReceivable 待确收金额
* @param paidAmount 实收金额 * @param paidAmount 实收金额
* @return * @return
*/ */
public static int calculate(Integer amountReceivable, Integer paidAmount) { public static int calculate(Integer amountReceivable, Integer paidAmount) {
//应收金额大于0时 //待确收金额大于0时
if (amountReceivable > 0) { if (amountReceivable > 0) {
//实收金额等于应收金额 //实收金额等于待确收金额
if (paidAmount.equals(amountReceivable)) { if (paidAmount.equals(amountReceivable)) {
return 2; return 2;
//实收金额大于0小于应收金额时 //实收金额大于0小于待确收金额时
} else if (paidAmount > 0 && paidAmount < amountReceivable) { } else if (paidAmount > 0 && paidAmount < amountReceivable) {
return 1; return 1;
//实收金额等于0时 //实收金额等于0时