Merge branch 'branch20240105'

This commit is contained in:
lijiarao
2024-01-05 18:46:42 +08:00
48 changed files with 1330 additions and 168 deletions
+26
View File
@@ -0,0 +1,26 @@
-- 增加会议打包统计的菜单
INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1739214868996505601', '1739213908475723777', '导出', '', NULL, NULL, NULL, 2, 'meetingPackStatistics:export', '1', 2.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-12-25 17:21:52', NULL, NULL, 0, 0, '1', 0, 0);
INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1739214686250680322', '1739213908475723777', '查询', NULL, NULL, NULL, NULL, 2, 'meetingPackStatistics:search', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-12-25 17:21:09', NULL, NULL, 0, 0, '1', 0, 0);
INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1739213908475723777', '1437320526513905666', '会议打包统计', '/statisticalReport/meetingPackStatistics', 'statisticalReport/MeetingPackStatistics', NULL, NULL, 1, NULL, '1', 12.00, 0, NULL, 1, 0, 0, 0, NULL, 'LKGLZ', '2023-12-25 17:18:03', NULL, NULL, 0, 0, '1', 0, 0);
-- pay_common_project表新增estimated_arrival_date(预估到账日期)字段
ALTER TABLE `pay_common_project` ADD COLUMN `estimated_arrival_date` date COMMENT '预估到账日期';
-- pay_member_project_subitem表新增estimated_arrival_date(预估到账日期)字段
ALTER TABLE `pay_member_project_subitem` ADD COLUMN `estimated_arrival_date` date COMMENT '预估到账日期';
-- pay_working_group_subitem表新增estimated_arrival_date(预估到账日期)字段
ALTER TABLE `pay_working_group_subitem` ADD COLUMN `estimated_arrival_date` date COMMENT '预估到账日期';
-- 财务管理-到账开票-撤回开票、撤回确认收入菜单的调整
INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1739913897061462018', '1435815710331621378', '撤销确认收入', NULL, NULL, NULL, NULL, 2, 'incomePaymentAndInvoicing:revokeConfirm', '1', 11.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-12-27 15:39:34', NULL, NULL, 0, 0, '1', 0, 1);
INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1739913548313473026', '1435815710331621378', '撤销开票', NULL, NULL, NULL, NULL, 2, 'incomePaymentAndInvoicing:revokeInvoice', '1', 10.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-12-27 15:38:11', NULL, NULL, 0, 0, '1', 0, 1);
update sys_permission SET `name` = '撤销来款' WHERE id = '1570599545738825729';
-- pay_meeting_situation 添加预计到账日期
ALTER TABLE `pay_meeting_situation` ADD COLUMN `estimated_arrival_date` datetime COMMENT '预计到账日期';
-- 添加索引
ALTER TABLE pay_meeting_situation ADD INDEX pm_situation_idx_meeting_id (meeting_id);
ALTER TABLE pay_confirm_payment_record ADD INDEX pcpr_idx_project_id (project_id);
@@ -1,6 +1,7 @@
package com.jero.company.service.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -52,6 +53,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -742,55 +744,133 @@ public class PayCompanyManagementServiceImpl extends ServiceImpl<PayCompanyManag
* @Exception
*/
private void updateBatchData(PayCompanyManagement payCompanyManagement){
// 更新临时数据
LambdaUpdateWrapper<PayCompanyManagementTemporary> updatePayCompanyManagementTemporary = new LambdaUpdateWrapper<>();
updatePayCompanyManagementTemporary.eq(PayCompanyManagementTemporary::getCompanyId,payCompanyManagement.getId());
updatePayCompanyManagementTemporary.ge(PayCompanyManagementTemporary::getEditTime,payCompanyManagement.getEditTime());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getCompanyName,payCompanyManagement.getCompanyName());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getCompanyAddress,payCompanyManagement.getCompanyAddress());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getCompanyPhone,payCompanyManagement.getCompanyPhone());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getPostalCode,payCompanyManagement.getPostalCode());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getBankAccountName,payCompanyManagement.getBankAccountName());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getOpeningBank,payCompanyManagement.getOpeningBank());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getDutyCode,payCompanyManagement.getDutyCode());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getStatus,PayCompanyManagementCommon.STATUS1);
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getDataSource,payCompanyManagement.getDataSource());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getRemarks,payCompanyManagement.getRemarks());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getEditTime,payCompanyManagement.getEditTime());
//updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getCreateBy,payCompanyManagement.getCreateBy());
//updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getCreateTime,payCompanyManagement.getCreateTime());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getUpdateBy,payCompanyManagement.getUpdateBy());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getUpdateTime,payCompanyManagement.getUpdateTime());
payCompanyManagementTemporaryService.update(updatePayCompanyManagementTemporary);
//更新人员
LambdaUpdateWrapper<PayContactsManagement> updatePayContactsManagement = new LambdaUpdateWrapper<>();
updatePayContactsManagement.eq(PayContactsManagement::getCompanyId,payCompanyManagement.getId());
updatePayContactsManagement.set(PayContactsManagement::getCompanyName,payCompanyManagement.getCompanyName());
payContactsManagementService.update(updatePayContactsManagement);
int thisYear = DateUtil.thisYear();
//需要更新的临时企业id
List<String> companyTemporaryIdList = new ArrayList<>();
// 更新普通项目
LambdaUpdateWrapper<PayCommonProject> updatePayCommonProject = new LambdaUpdateWrapper<>();
updatePayCommonProject.eq(PayCommonProject::getChargeCompanyId,payCompanyManagement.getId());
//updatePayCommonProject.ge(PayCommonProject::getCreateTime,payCompanyManagement.getEditTime());
updatePayCommonProject.set(PayCommonProject::getChargeCompanyTemporaryName,payCompanyManagement.getCompanyName());
updatePayCommonProject.exists(" select 1 from pay_company_management_temporary where " +
"pay_common_project.charge_company_temporary_id = id and create_time >= '" + DateTime.of(payCompanyManagement.getEditTime()) + "'");
payCommonProjectService.update(updatePayCommonProject);
LambdaQueryWrapper<PayCommonProject> quaryPayCommonProject = new LambdaQueryWrapper<>();
quaryPayCommonProject.eq(PayCommonProject::getChargeCompanyId,payCompanyManagement.getId());
quaryPayCommonProject.eq(PayCommonProject::getYear,thisYear);
quaryPayCommonProject.and(
a -> {
a.eq(PayCommonProject::getPaidAmount, BigDecimal.ZERO)
.or()
.isNull(PayCommonProject::getPaidAmount);
});
quaryPayCommonProject.and(
a -> {
a.eq(PayCommonProject::getInvoiceAmount, BigDecimal.ZERO)
.or()
.isNull(PayCommonProject::getInvoiceAmount);
});
quaryPayCommonProject.and(
a -> {
a.eq(PayCommonProject::getConfirmAmount, BigDecimal.ZERO)
.or()
.isNull(PayCommonProject::getConfirmAmount);
});
List<PayCommonProject> list = payCommonProjectService.list(quaryPayCommonProject);
List<String> collect = list.stream().map(PayCommonProject::getChargeCompanyTemporaryId).collect(Collectors.toList());
companyTemporaryIdList.addAll(collect);
if (!collect.isEmpty()){
LambdaUpdateWrapper<PayCommonProject> updatePayCommonProject = new LambdaUpdateWrapper<>();
updatePayCommonProject.in(PayCommonProject::getChargeCompanyTemporaryId,collect);
updatePayCommonProject.set(PayCommonProject::getChargeCompanyTemporaryName,payCompanyManagement.getCompanyName());
payCommonProjectService.update(updatePayCommonProject);
}
// 更新工作组
LambdaUpdateWrapper<PayWorkingGroupSubItem> updatePayWorkingGroupSubItem = new LambdaUpdateWrapper<>();
updatePayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getChargeCompanyId,payCompanyManagement.getId());
//updatePayWorkingGroupSubItem.ge(PayWorkingGroupSubItem::getCreateTime,payCompanyManagement.getEditTime());
updatePayWorkingGroupSubItem.exists(" select 1 from pay_company_management_temporary where " +
"pay_working_group_subitem.charge_company_temporary_id = id and create_time >= '" + DateTime.of(payCompanyManagement.getEditTime()) + "'");
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getChargeCompanyTemporaryName,payCompanyManagement.getCompanyName());
payWorkingGroupSubItemService.update(updatePayWorkingGroupSubItem);
QueryWrapper<PayWorkingGroupSubItem> queryPayWorkingGroupSubItem = new QueryWrapper<>();
queryPayWorkingGroupSubItem.eq("pwg.year",thisYear);
queryPayWorkingGroupSubItem.lambda().eq(PayWorkingGroupSubItem::getChargeCompanyId,payCompanyManagement.getId())
.and(
a -> {
a.eq(PayWorkingGroupSubItem::getPaidAmount, BigDecimal.ZERO)
.or()
.isNull(PayWorkingGroupSubItem::getPaidAmount);
})
.and(
a -> {
a.eq(PayWorkingGroupSubItem::getInvoiceAmount, BigDecimal.ZERO)
.or()
.isNull(PayWorkingGroupSubItem::getInvoiceAmount);
})
.and(
a -> {
a.eq(PayWorkingGroupSubItem::getConfirmAmount, BigDecimal.ZERO)
.or()
.isNull(PayWorkingGroupSubItem::getConfirmAmount);
});
List<PayWorkingGroupSubItem> workingGroupSubItemList = payWorkingGroupSubItemService.queryList(queryPayWorkingGroupSubItem);
List<String> collect1 = workingGroupSubItemList.stream().map(PayWorkingGroupSubItem::getChargeCompanyTemporaryId).collect(Collectors.toList());
companyTemporaryIdList.addAll(collect1);
if (!collect1.isEmpty()){
LambdaUpdateWrapper<PayWorkingGroupSubItem> updatePayWorkingGroupSubItem = new LambdaUpdateWrapper<>();
updatePayWorkingGroupSubItem.in(PayWorkingGroupSubItem::getChargeCompanyId,collect1);
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getChargeCompanyTemporaryName,payCompanyManagement.getCompanyName());
payWorkingGroupSubItemService.update(updatePayWorkingGroupSubItem);
}
// 更新会员
LambdaUpdateWrapper<PayMemberProjectSubitem> updatePayMemberProjectSubitem = new LambdaUpdateWrapper<>();
updatePayMemberProjectSubitem.eq(PayMemberProjectSubitem::getCompanyId,payCompanyManagement.getId());
//updatePayMemberProjectSubitem.ge(PayMemberProjectSubitem::getCreateTime,payCompanyManagement.getEditTime());
updatePayMemberProjectSubitem.exists(" select 1 from pay_company_management_temporary where " +
"pay_member_project_subitem.company_temporary_id = id and create_time >= '" + DateTime.of(payCompanyManagement.getEditTime()) + "'");
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getCompanyName,payCompanyManagement.getCompanyName());
memberProjectSubitemService.update(updatePayMemberProjectSubitem);
QueryWrapper<PayMemberProjectSubitem> queryPayMemberProjectSubitem = new QueryWrapper<>();
queryPayMemberProjectSubitem.eq("pmp.particular_year",thisYear);
queryPayMemberProjectSubitem.lambda().eq(PayMemberProjectSubitem::getCompanyId,payCompanyManagement.getId())
.and(
a -> {
a.eq(PayMemberProjectSubitem::getPaidAmount, BigDecimal.ZERO)
.or()
.isNull(PayMemberProjectSubitem::getPaidAmount);
})
.and(
a -> {
a.eq(PayMemberProjectSubitem::getInvoiceAmount, BigDecimal.ZERO)
.or()
.isNull(PayMemberProjectSubitem::getInvoiceAmount);
})
.and(
a -> {
a.eq(PayMemberProjectSubitem::getConfirmAmount, BigDecimal.ZERO)
.or()
.isNull(PayMemberProjectSubitem::getConfirmAmount);
});
List<PayMemberProjectSubitem> payMemberProjectSubitems = memberProjectSubitemService.queryPageListCompany(queryPayMemberProjectSubitem);
List<String> collect2 = payMemberProjectSubitems.stream().map(PayMemberProjectSubitem::getCompanyTemporaryId).collect(Collectors.toList());
companyTemporaryIdList.addAll(collect2);
if (!collect2.isEmpty()){
LambdaUpdateWrapper<PayMemberProjectSubitem> updatePayMemberProjectSubitem = new LambdaUpdateWrapper<>();
updatePayMemberProjectSubitem.in(PayMemberProjectSubitem::getCompanyId,payCompanyManagement.getId());
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getCompanyName,payCompanyManagement.getCompanyName());
memberProjectSubitemService.update(updatePayMemberProjectSubitem);
}
// 更新临时数据
if (!companyTemporaryIdList.isEmpty()) {
LambdaUpdateWrapper<PayCompanyManagementTemporary> updatePayCompanyManagementTemporary = new LambdaUpdateWrapper<>();
updatePayCompanyManagementTemporary.in(PayCompanyManagementTemporary::getId,companyTemporaryIdList);
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getCompanyName,payCompanyManagement.getCompanyName());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getCompanyAddress,payCompanyManagement.getCompanyAddress());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getCompanyPhone,payCompanyManagement.getCompanyPhone());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getPostalCode,payCompanyManagement.getPostalCode());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getBankAccountName,payCompanyManagement.getBankAccountName());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getOpeningBank,payCompanyManagement.getOpeningBank());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getDutyCode,payCompanyManagement.getDutyCode());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getStatus,PayCompanyManagementCommon.STATUS1);
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getDataSource,payCompanyManagement.getDataSource());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getRemarks,payCompanyManagement.getRemarks());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getEditTime,payCompanyManagement.getEditTime());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getUpdateBy,payCompanyManagement.getUpdateBy());
updatePayCompanyManagementTemporary.set(PayCompanyManagementTemporary::getUpdateTime,payCompanyManagement.getUpdateTime());
payCompanyManagementTemporaryService.update(updatePayCompanyManagementTemporary);
}
// 更新合同
LambdaUpdateWrapper<PayIncomeContract> updatePayIncomeContract = new LambdaUpdateWrapper<>();
updatePayIncomeContract.eq(PayIncomeContract::getSignedCompanyId,payCompanyManagement.getId());
@@ -1,10 +1,9 @@
package com.jero.index.service;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.DictModel;
import com.jero.index.dto.YearMoneyDTO;
@@ -19,7 +18,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -78,6 +76,8 @@ public class IndexService {
lineChartListVO.setBillMoney(reduce2.toString());
BigDecimal reduce3 = lineChartListVOList.stream().map(i -> new BigDecimal(i.getComeAllMoney())).reduce(BigDecimal.ZERO, BigDecimal::add);
lineChartListVO.setComeAllMoney(reduce3.toString());
BigDecimal reduce4 = lineChartListVOList.stream().map(i -> new BigDecimal(i.getEstimatedArrivalMoney())).reduce(BigDecimal.ZERO, BigDecimal::add);
lineChartListVO.setEstimatedArrivalMoney(reduce4.toString());
lineChartListVO.setPaymentDate("总数");
lineChartListVOList.add(lineChartListVO);
return lineChartListVOList;
@@ -99,6 +99,7 @@ public class IndexService {
lineChartListVO.setBillMoney(allProjectStatistics.getBillMoney());
lineChartListVO.setComeAllMoney(allProjectStatistics.getComeAllMoney());
lineChartListVO.setPaymentDate(allProjectStatistics.getPaymentDate());
lineChartListVO.setEstimatedArrivalMoney(allProjectStatistics.getEstimatedArrivalMoney());
return lineChartListVO;
}
@@ -111,6 +112,18 @@ public class IndexService {
List<String> billMoneyMap = cumulativeProcesZero(list.stream().map(AllProjectStatistics::getBillMoney).collect(Collectors.toList()));
List<String> confirmAmountMap = cumulativeProcesZero(list.stream().map(AllProjectStatistics::getConfirmAmount).collect(Collectors.toList()));
List<String> allMoneyMap = cumulativeProcesZero(list.stream().map(AllProjectStatistics::getAllMoney).collect(Collectors.toList()));
// 预计到账金额
List<AllProjectStatistics> listEstimatedArrivalMoney = payWorkingGroupMapper.cumulativeListEstimatedArrivalMoney(allProjectStatisticsSearch.getPaymentYear());
// 累加金额
for (int i = 1; i < listEstimatedArrivalMoney.size(); i++) {
AllProjectStatistics obj = listEstimatedArrivalMoney.get(i);
AllProjectStatistics objLast = listEstimatedArrivalMoney.get(i-1);
BigDecimal n = new BigDecimal(obj.getEstimatedArrivalMoney());
BigDecimal l = new BigDecimal(objLast.getEstimatedArrivalMoney());
obj.setEstimatedArrivalMoney(n.add(l).toPlainString());
listEstimatedArrivalMoney.set(i,obj);
}
List<String> date = list.stream().map(AllProjectStatistics::getPaymentDate).collect(Collectors.toList());
List<String> dateList = new ArrayList<>(12);
for (String d : date) {
@@ -169,6 +182,9 @@ public class IndexService {
if (lineChartListVO.getComeAllMoney().equals("0.00")) {
lineChartListVO.setComeAllMoney(old.getComeAllMoney());
}
if (lineChartListVO.getEstimatedArrivalMoney().equals("0.00")) {
lineChartListVO.setEstimatedArrivalMoney(old.getEstimatedArrivalMoney());
}
}
return list;
}
@@ -24,4 +24,6 @@ public class LineChartListVO {
@ApiModelProperty(value = "到账时间")
private String paymentDate;
@ApiModelProperty(value = "预计到账金额")
private String estimatedArrivalMoney;
}
@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.common.api.vo.Result;
import com.jero.company.entity.PayContactsManagement;
import com.jero.mail.vo.PayMailBillVO;
import com.jero.mail.entity.PayMailBill;
import com.jero.mail.vo.PayMailBillVO;
import com.jero.member.enums.StandardsTypeEnum;
import java.util.List;
@@ -98,4 +98,7 @@ public interface IPayMailBillService extends IService<PayMailBill> {
IPage<PayMailBill> contactsSearchPageList(Page<PayMailBill> page, String userId, QueryWrapper<PayMailBill> queryWrapper);
void backInvoice(String id);
}
@@ -25,7 +25,6 @@ import com.jero.company.service.IPayCompanyManagementService;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.config.StaticConfig;
import com.jero.contract.common.PayIncomeContractCommon;
import com.jero.mail.vo.PayMailBillVO;
import com.jero.mail.entity.BillingInfo;
import com.jero.mail.entity.PayMailBill;
import com.jero.mail.entity.PayMailBillProject;
@@ -33,17 +32,17 @@ import com.jero.mail.mapper.PayMailBillMapper;
import com.jero.mail.mapper.PayMailBillProjectMapper;
import com.jero.mail.service.IPayMailBillProjectService;
import com.jero.mail.service.IPayMailBillService;
import com.jero.mail.vo.PayMailBillVO;
import com.jero.meeting.entity.PayMeeting;
import com.jero.meeting.entity.PayMeetingSituation;
import com.jero.meeting.mapper.PayMeetingMapper;
import com.jero.meeting.mapper.PayMeetingSituationMapper;
import com.jero.meeting.service.IPayMeetingService;
import com.jero.meeting.service.IPayMeetingSituationService;
import com.jero.member.entity.*;
import com.jero.member.enums.StandardsTypeEnum;
import com.jero.member.mapper.*;
import com.jero.member.service.IPayMemberProjectService;
import com.jero.member.service.ITbCertificatePaymentService;
import com.jero.member.service.ITbMemberProjectService;
import com.jero.member.service.*;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.payment.service.IPayPaymentRecordService;
@@ -53,9 +52,12 @@ import com.jero.project.entity.PayWorkingGroupSubItem;
import com.jero.project.entity.PayWorkingGroupSubItemContacts;
import com.jero.project.mapper.PayCommonProjectMapper;
import com.jero.project.mapper.PayWorkingGroupMapper;
import com.jero.project.mapper.PayWorkingGroupSubItemContactsMapper;
import com.jero.project.mapper.PayWorkingGroupSubItemMapper;
import com.jero.project.service.IPayCommonProjectService;
import com.jero.project.service.IPayWorkingGroupService;
import com.jero.project.service.IPayWorkingGroupSubItemContactsService;
import com.jero.project.service.IPayWorkingGroupSubItemService;
import com.jero.temporary.entity.PayCompanyManagementTemporary;
import com.jero.temporary.entity.PayContactsManagementTemporary;
import com.jero.temporary.service.IPayCompanyManagementTemporaryService;
@@ -72,10 +74,7 @@ import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -143,6 +142,22 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
@Autowired
private IPayPaymentRecordService payPaymentRecordService;
@Resource
private IPayCommonProjectService payCommonProjectService;
@Resource
private IPayMemberProjectSubitemService payMemberProjectSubitemService;
@Resource
private IPayMeetingSituationService payMeetingSituationService;
@Resource
private IPayWorkingGroupSubItemService payWorkingGroupSubItemService;
@Resource
private ITbMemberProjectSubitemService tbMemberProjectSubitemService;
@Resource
private ITbCertificatePaymentService tbCertificatePaymentService;
@Resource
private PayWorkingGroupSubItemContactsMapper payWorkingGroupSubItemContactsMapper;
@Override
public List<PayMailBill> selectMailBillVO(String projectId) {
if (StringUtils.isBlank(projectId)) {
@@ -603,6 +618,189 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
return payMailBillMapper.contactsSearchPageList(page,userId,queryWrapper);
}
@Override
@Transactional(rollbackFor = JeroBootException.class)
public void backInvoice(String id) {
if(StringUtils.isBlank(id)){
throw new JeroBootException("邮寄票据Id不能为空");
}
PayMailBill payMailBill = getById(id);
if(Objects.isNull(payMailBill)){
throw new JeroBootException("未找到对应数据");
}
LambdaQueryWrapper<PayMailBillProject> queryPayMailBillProject = new LambdaQueryWrapper<>();
queryPayMailBillProject.eq(PayMailBillProject::getBillId,id);
PayMailBillProject payMailBillProjectObj = payMailBillProjectService.getOne(queryPayMailBillProject,false);
if(Objects.isNull(payMailBillProjectObj)){
throw new JeroBootException("未找到对应数据");
}
// 标协会员缴费、证书缴费 先不做此功能的开发
if(Arrays.asList(5,6).contains(payMailBillProjectObj.getProjectType())){
throw new JeroBootException("标协会员缴费、证书缴费项目不可撤销");
}
// 开票被邮寄的话就不能撤销
if(Objects.equals(payMailBill.getPostStatus(),1)){
throw new JeroBootException("票据已邮寄不可撤销");
}
// 删除邮寄票据表
removeById(id);
// 删除邮寄票据关联项目表
payMailBillProjectService.removeById(payMailBillProjectObj.getId());
// 更新项目信息
updateProjectInfo(payMailBillProjectObj);
}
public void updateProjectInfo(PayMailBillProject payMailBillProject){
int makeInvoice=4;
BigDecimal amountReceivable = new BigDecimal("0");//待确收金额
Integer needInvoice = 0;//是否需要发票
BigDecimal invoiceAmount = payMailBillProject.getInvoiceAmount();
if(Objects.isNull(invoiceAmount)){
invoiceAmount = new BigDecimal("0");//本次开票金额
}
BigDecimal oldInvoiceAmount;//开票金额
BigDecimal noTaxAmount = payMailBillProject.getNoTaxAmount();
BigDecimal tax = payMailBillProject.getTax();
if (noTaxAmount == null || tax == null){
noTaxAmount = invoiceAmount.divide(StaticConfig.TAX_RATE_CALCULATE, 2, RoundingMode.HALF_UP);
tax = invoiceAmount.subtract(noTaxAmount);
}
switch (payMailBillProject.getProjectType().toString()) {
// 普通项目
case PayIncomeContractCommon.PROJECT_TYPE1:
PayCommonProject payCommonProject = payCommonProjectMapper.selectById(payMailBillProject.getProjectId());
amountReceivable = payCommonProject.getReceivableAmount();//应收
needInvoice = payCommonProject.getNeedInvoice();//是否需要发票
oldInvoiceAmount = payCommonProject.getInvoiceAmount();
if(oldInvoiceAmount==null){
oldInvoiceAmount= new BigDecimal("0");
}
//之前开票总额+本次开票金额
invoiceAmount = oldInvoiceAmount.subtract(invoiceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
//税额
noTaxAmount = payPaymentRecordService.subtractPaidAmount(noTaxAmount,payCommonProject.getInvoiceNoTaxAmount());
tax = payPaymentRecordService.subtractPaidAmount(tax,payCommonProject.getInvoiceTax());
break;
// 工作组项目
case PayIncomeContractCommon.PROJECT_TYPE2:
PayWorkingGroupSubItem workingGroup = payWorkingGroupSubItemMapper.selectById(payMailBillProject.getProjectId());
amountReceivable = workingGroup.getReceivableAmount();//应收
needInvoice = workingGroup.getNeedInvoice();//是否需要发票
oldInvoiceAmount = workingGroup.getInvoiceAmount();
if(oldInvoiceAmount==null){
oldInvoiceAmount= new BigDecimal("0");
}
//之前开票总额+本次开票金额
invoiceAmount = oldInvoiceAmount.subtract(invoiceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
//税额
noTaxAmount = payPaymentRecordService.subtractPaidAmount(noTaxAmount,workingGroup.getInvoiceNoTaxAmount());
tax = payPaymentRecordService.subtractPaidAmount(tax,workingGroup.getInvoiceTax());
break;
//会议项目
case PayIncomeContractCommon.PROJECT_TYPE3:
PayMeetingSituation meeting = payMeetingSituationMapper.selectById(payMailBillProject.getProjectId());
amountReceivable = meeting.getAmountReceivable();//应收
needInvoice = meeting.getNeedInvoice();//是否需要发票
oldInvoiceAmount = meeting.getInvoiceAmount();
if(oldInvoiceAmount==null){
oldInvoiceAmount= new BigDecimal("0");
}
//之前开票总额+本次开票金额
invoiceAmount = oldInvoiceAmount.subtract(invoiceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
//税额
noTaxAmount = payPaymentRecordService.subtractPaidAmount(noTaxAmount,meeting.getInvoiceNoTaxAmount());
tax = payPaymentRecordService.subtractPaidAmount(tax,meeting.getInvoiceTax());
break;
//会员项目
case PayIncomeContractCommon.PROJECT_TYPE4:
PayMemberProjectSubitem memberProject = payMemberProjectSubitemMapper.selectById(payMailBillProject.getProjectId());
amountReceivable = memberProject.getAmountReceivable();//应收
needInvoice = memberProject.getNeedInvoice();//是否需要发票
oldInvoiceAmount = memberProject.getInvoiceAmount();
if(oldInvoiceAmount==null){
oldInvoiceAmount= new BigDecimal("0");
}
//之前开票总额+本次开票金额
invoiceAmount = oldInvoiceAmount.subtract(invoiceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
//税额
noTaxAmount = payPaymentRecordService.subtractPaidAmount(noTaxAmount,memberProject.getInvoiceNoTaxAmount());
tax = payPaymentRecordService.subtractPaidAmount(tax,memberProject.getInvoiceTax());
break;
default:
break;
}
if(amountReceivable==null){
amountReceivable =new BigDecimal("0");
}
BigDecimal zero =new BigDecimal("0");
//应收=0 || 不需要开票
if(amountReceivable.compareTo(zero)==0 || needInvoice.equals(0)){
makeInvoice= 3;
}
//应收>开票总额 && 开票总额!=0
if(amountReceivable.compareTo(invoiceAmount) == 1 && !(invoiceAmount.compareTo(zero) == 0)){
makeInvoice= 2;
}
//开票总额>=应收
if(invoiceAmount.compareTo(amountReceivable) > -1){
makeInvoice= 1;
}
//开票总额为0
if(invoiceAmount.compareTo(zero)==0){
makeInvoice= 0;
}
//更新项目表开票状态
switch (payMailBillProject.getProjectType().toString()) {
// 普通项目
case PayIncomeContractCommon.PROJECT_TYPE1:
PayCommonProject newCommon = new PayCommonProject();
newCommon.setId(payMailBillProject.getProjectId());
newCommon.setMakeInvoice(makeInvoice);
newCommon.setInvoiceAmount(invoiceAmount);
newCommon.setInvoiceNoTaxAmount(noTaxAmount);
newCommon.setInvoiceTax(tax);
payCommonProjectMapper.updateById(newCommon);
break;
// 工作组项目
case PayIncomeContractCommon.PROJECT_TYPE2:
PayWorkingGroupSubItem newWorkingGroup = new PayWorkingGroupSubItem();
newWorkingGroup.setId(payMailBillProject.getProjectId());
newWorkingGroup.setMakeInvoice(makeInvoice);
newWorkingGroup.setInvoiceAmount(invoiceAmount);
newWorkingGroup.setInvoiceNoTaxAmount(noTaxAmount);
newWorkingGroup.setInvoiceTax(tax);
payWorkingGroupSubItemMapper.updateById(newWorkingGroup);
break;
//会议项目
case PayIncomeContractCommon.PROJECT_TYPE3:
PayMeetingSituation newMeeting = new PayMeetingSituation();
newMeeting.setId(payMailBillProject.getProjectId());
newMeeting.setMakeInvoice(makeInvoice);
newMeeting.setInvoiceAmount(invoiceAmount);
newMeeting.setInvoiceNoTaxAmount(noTaxAmount);
newMeeting.setInvoiceTax(tax);
payMeetingSituationMapper.updateById(newMeeting);
break;
//会员项目
case PayIncomeContractCommon.PROJECT_TYPE4:
PayMemberProjectSubitem newMemberProject = new PayMemberProjectSubitem();
newMemberProject.setId(payMailBillProject.getProjectId());
newMemberProject.setMakeInvoice(makeInvoice);
newMemberProject.setInvoiceAmount(invoiceAmount);
newMemberProject.setInvoiceNoTaxAmount(noTaxAmount);
newMemberProject.setInvoiceTax(tax);
payMemberProjectSubitemMapper.updateById(newMemberProject);
break;
default:
break;
}
}
//校验不同项目是否属于同一个公司,开票金额是否大于当前未开票金额,企业名称是否审核
private String checkCompanyProject(List<PayMailBillProject> bmpList) {
@@ -17,6 +17,10 @@ import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.*;
import com.jero.company.common.PayContactsManagementCommon;
import com.jero.company.entity.PayCompanyManagement;
import com.jero.company.entity.PayContactsManagement;
import com.jero.company.service.IPayCompanyManagementService;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.data.entity.PayCaseCommittee;
import com.jero.data.entity.PayCaseCommitteeSubitem;
@@ -84,6 +88,8 @@ public class PayMeetingController extends JeroController<PayMeeting, IPayMeeting
@Resource
private IPayContactsManagementService payContactsManagementService;
@Resource
private IPayCompanyManagementService payCompanyManagementService;
@Resource
private IPayMeetingSituationService payMeetingSituationService;
@Resource
private IPayWorkingGroupSubItemService payWorkingGroupSubItemService;
@@ -513,6 +519,7 @@ public class PayMeetingController extends JeroController<PayMeeting, IPayMeeting
}
Integer meetingType = payMeeting.getMeetingType();
//如果是分标委会议或理事会会议,判断是否为成员
//如果是标协会议,判断公司是否是会员单位
boolean isSubItem = false;
if (meetingType.equals(MeetingCommon.COMMITTEE_MEETING_INT)) {
LambdaQueryWrapper<PayCaseCommitteeSubitem> wrapper = new LambdaQueryWrapper<>();
@@ -531,7 +538,16 @@ public class PayMeetingController extends JeroController<PayMeeting, IPayMeeting
if (count > 0) {
isSubItem = true;
}
} else if (meetingType.equals(MeetingCommon.STANDARD_MEETING_INT)) {
PayContactsManagement contactsManagement = payContactsManagementService.getById(sysUserId);
String companyId = contactsManagement.getCompanyId();
PayCompanyManagement companyManagement = payCompanyManagementService.getById(companyId);
String memberId = companyManagement.getMemberId();
if (StringUtils.isNotBlank(memberId)) {
isSubItem = true;
}
}
String meetingMinute = payMeeting.getMeetingMinute();
String meetingData = payMeeting.getMeetingData();
List<String> fileList = new ArrayList<>();
@@ -1,23 +1,26 @@
package com.jero.meeting.entity;
import java.io.Serializable;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
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.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import com.jero.company.vo.UpdateInvoicePram;
import com.jero.meeting.valid.group.CommonPeople;
import com.jero.meeting.valid.group.Guest;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 会议报名信息
@@ -569,4 +572,10 @@ public class PayMeetingSituation implements Serializable {
@ApiModelProperty(value = "发票项目")
private Integer invoiceProject;
/**预计到账日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "预计到账日期")
private Date estimatedArrivalDate;
}
@@ -2,13 +2,16 @@ package com.jero.meeting.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.meeting.vo.MeetingSituationContractVO;
import org.apache.ibatis.annotations.Param;
import com.jero.meeting.entity.PayMeetingSituation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.meeting.vo.MeetingSituationContractVO;
import com.jero.statistics.entity.MeetingPackStatistics;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Description: 会议报名信息
@@ -27,4 +30,10 @@ public interface PayMeetingSituationMapper extends BaseMapper<PayMeetingSituatio
@Param(Constants.WRAPPER) QueryWrapper<PayMeetingSituation> queryWrapper);
Integer standardsCheckPhone(@Param("meetingId") String meetingId, @Param("phone") String phone);
IPage<MeetingPackStatistics> getMeetingPackStatistics(Page<PayMeetingSituation> page,@Param(Constants.WRAPPER) QueryWrapper<PayMeetingSituation> query);
List<MeetingPackStatistics> getMeetingPackStatistics(@Param(Constants.WRAPPER) QueryWrapper<PayMeetingSituation> query);
MeetingPackStatistics getMeetingPackStatisticsCount(@Param(Constants.WRAPPER) QueryWrapper<PayMeetingSituation> query);
}
@@ -178,4 +178,21 @@
and pms.check_result = 1
and pms.register_check_result = 1
</select>
</mapper>
<select id="getMeetingPackStatistics" resultType="com.jero.statistics.entity.MeetingPackStatistics">
select
${ew.sqlSelect}
from pay_meeting_situation p1
left join pay_meeting p2 on p1.meeting_id = p2.id
left join pay_confirm_payment_record p3 on p3.project_id = p1.id
${ew.customSqlSegment}
</select>
<select id="getMeetingPackStatisticsCount" resultType="com.jero.statistics.entity.MeetingPackStatistics">
select sum(amount_receivable ) AS allMoney,sum(confirm_amount ) AS confirm_amount, sum(invoice_amount ) AS billMoney,sum(paid_amount ) AS comeAllMoney from
(
select p1.amount_receivable, p1.confirm_amount, p1.invoice_amount, p1.paid_amount from pay_meeting_situation p1
left join pay_meeting p2 on p1.meeting_id = p2.id
left join pay_confirm_payment_record p3 on p3.project_id = p1.id
${ew.customSqlSegment}
) a
</select>
</mapper>
@@ -3,15 +3,18 @@ package com.jero.meeting.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.common.api.vo.Result;
import com.jero.meeting.entity.PayMeeting;
import com.jero.meeting.entity.PayMeetingGuestsFile;
import com.jero.meeting.entity.PayMeetingSituation;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.meeting.vo.*;
import com.jero.statistics.entity.MeetingPackStatisticsSearch;
import org.jetbrains.annotations.Nullable;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
/**
@@ -102,4 +105,10 @@ public interface IPayMeetingSituationService extends IService<PayMeetingSituatio
List<PayMeetingGuestsFile> guestsUploadFileList(GuestsUploadFileVO guestsUploadFileVO);
void guestsDeleteFile(GuestsUploadFileVO guestsUploadFileVO);
HashMap<String, Object> getMeetingPackStatistics(MeetingPackStatisticsSearch metingPackStatisticsSearch,
Integer pageNo,
Integer pageSize);
ModelAndView excelMeetingPackStatistics(MeetingPackStatisticsSearch metingPackStatisticsSearch);
}
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.constant.CommonConstant;
import com.jero.common.dto.SendMessageDTO;
import com.jero.common.enums.CompanyMessageEnums;
@@ -66,20 +67,16 @@ import org.jetbrains.annotations.NotNull;
import org.springframework.beans.BeanUtils;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
/**
* @Description: 会议管理
* @Author: jero-boot
@@ -314,6 +311,12 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
//进行校验,赋值操作
PayMeeting payMeeting = getPayMeeting(payMeetingVO, hotelContactsList);
saveOrUpdate(payMeeting);
// 同步预计到账日期
LambdaUpdateWrapper<PayMeetingSituation> upPayMeetingSituation = new LambdaUpdateWrapper<>();
upPayMeetingSituation.eq(PayMeetingSituation::getMeetingId,payMeeting.getId());
upPayMeetingSituation.set(PayMeetingSituation::getEstimatedArrivalDate,payMeeting.getStartTime());
payMeetingSituationService.update(upPayMeetingSituation);
delWithStandardForUpdate(payMeeting);
//如果酒店联系人列表不为空,就更新
if (!CollectionUtils.isEmpty(hotelContactsList)) {
@@ -1,5 +1,4 @@
package com.jero.meeting.service.impl;
import java.util.Date;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
@@ -12,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.api.vo.Result;
import com.jero.common.common.ProjectCommon;
import com.jero.common.constant.CommonConstant;
@@ -20,15 +20,16 @@ import com.jero.common.enums.CompanyMessageEnums;
import com.jero.common.enums.ManagementMessageEnums;
import com.jero.common.enums.PaymentStatusEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.ContractCreateProjectSendMessageService;
import com.jero.common.service.RolePermissionService;
import com.jero.common.service.SendMessageService;
import com.jero.common.service.ContractCreateProjectSendMessageService;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.ValidUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.company.common.PayContactsManagementCommon;
import com.jero.company.entity.PayCompanyManagement;
import com.jero.company.entity.PayContactsManagement;
import com.jero.company.service.IPayCompanyManagementService;
@@ -73,28 +74,32 @@ import com.jero.project.entity.PayWorkingGroupSubItemContacts;
import com.jero.project.service.IPayWorkingGroupSubItemContactsService;
import com.jero.project.service.IPayWorkingGroupSubItemService;
import com.jero.standards.memberinfo.service.IMemberInfoService;
import com.jero.statistics.entity.MeetingPackStatistics;
import com.jero.statistics.entity.MeetingPackStatisticsSearch;
import com.jero.temporary.service.IPayCompanyManagementTemporaryService;
import com.jero.temporary.service.IPayContactsManagementTemporaryService;
import com.jero.util.ObjRecordUtil;
import com.jero.util.module.ObjRecordUtilModule;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
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.jetbrains.annotations.NotNull;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.transaction.annotation.Transactional;
/**
* @Description: 会议报名信息
* @Author: jero-boot
@@ -154,6 +159,8 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
private PayRandomCodeService randomCodeService;
@Resource
private PayMeetingGuestsFileMapper meetingGuestsFileMapper;
@Resource
private ISysBaseAPI sysBaseAPI;
private static final String[] CAN_MODIFY_LIST =
@@ -186,7 +193,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
payMeetingSituation.setAmountReceivable(new BigDecimal("0"));
//处理校验参会人信息
PayMeetingSituation payMeetingSituation1 = getPayMeetingSituation(payMeetingSituation);
payMeetingSituation1.setEstimatedArrivalDate(payMeeting1.getStartTime());
saveMeetingSituation(payMeetingSituation1);
// 收入合同创建项目发送消息到项目负责人
@@ -228,7 +235,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
//handlePack(payMeetingSituation1);
//如果关联合同就不发消息
if (!Objects.equals(ProjectCommon.FLAG, payMeetingSituation.getFlag())) {
signUpSendMessage(payMeetingSituation, payMeeting, payMeetingSituation1);
signUpSendMessage(payMeetingSituation, payMeeting, payMeetingSituation1);
}
//Wasic国际研讨会报名成功短信消息
sendWasicMessage(payMeeting,payMeetingSituation1);
@@ -338,6 +345,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
//处理校验参会人信息
payMeetingSituation.setAmountReceivable(new BigDecimal("0"));
PayMeetingSituation payMeetingSituation1 = getPayMeetingSituation(payMeetingSituation);
payMeetingSituation1.setEstimatedArrivalDate(payMeeting.getStartTime());
saveMeetingSituation(payMeetingSituation1);
//处理打包
//handlePack(payMeetingSituation1);
@@ -1077,7 +1085,6 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
sendMessageService.SendMessageService(sendMessageDTO);
}
}
saveOrUpdate(payMeetingSituation1);
//判断凭证是否修改
String paymentRecord = oldObject.getPaymentRecord();
@@ -1749,8 +1756,14 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
@Override
public Integer standardsCheckPhone(String meetingId, String phone) {
Integer integer = baseMapper.standardsCheckPhone(meetingId, PasswordUtil.encrypt(phone));
return integer;
LambdaQueryWrapper<PayContactsManagement> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayContactsManagement::getPhone,PasswordUtil.encrypt(phone));
wrapper.eq(PayContactsManagement::getDelFlag, PayContactsManagementCommon.DEL_FLAG0);
PayContactsManagement contactsManagement = contactsManagementService.getOne(wrapper);
String companyId = contactsManagement.getCompanyId();
PayCompanyManagement companyManagement = companyManagementService.getById(companyId);
String memberId = companyManagement.getMemberId();
return StringUtils.isNotBlank(memberId)?1:0;
}
@Override
@@ -1920,4 +1933,92 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
meetingService.update(updateWrapper);
}
@Override
public HashMap<String, Object> getMeetingPackStatistics(MeetingPackStatisticsSearch metingPackStatisticsSearch,
Integer pageNo,
Integer pageSize) {
QueryWrapper<PayMeetingSituation> query = getPayMeetingSituationQueryWrapper(metingPackStatisticsSearch);
Page<PayMeetingSituation> page = new Page<>(pageNo, pageSize);
addOrder(metingPackStatisticsSearch, query);
// 查看分页数据
IPage<MeetingPackStatistics> pageList = payMeetingSituationMapper.getMeetingPackStatistics(page,query);
List<MeetingPackStatistics> list = pageList.getRecords();
if(!CollectionUtils.isEmpty(list)){
for (MeetingPackStatistics obj : list) {
String str = sysBaseAPI.translateDict("meeting_type",String.valueOf(obj.getMeetingType()));
obj.setMeetingType_dictText(str);
}
}
// 查看汇总价格
QueryWrapper<PayMeetingSituation> querySum = getPayMeetingSituationQueryWrapper(metingPackStatisticsSearch);
MeetingPackStatistics count = payMeetingSituationMapper.getMeetingPackStatisticsCount(querySum);
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("sumOfMoney", (Objects.isNull(count) || StringUtils.isBlank(count.getAllMoney())) ? 0 : count.getAllMoney());
hashMap.put("sumOfReallyMoney", (Objects.isNull(count) || StringUtils.isBlank(count.getComeAllMoney())) ? 0 : count.getComeAllMoney());
hashMap.put("sumOfBillMoney", (Objects.isNull(count) || StringUtils.isBlank(count.getBillMoney())) ? 0 : count.getBillMoney());
hashMap.put("sumOfConfirmAmount", (Objects.isNull(count) || StringUtils.isBlank(count.getConfirmAmount())) ? 0 : count.getConfirmAmount());
hashMap.put("pageList", pageList);
return hashMap;
}
@Override
public ModelAndView excelMeetingPackStatistics(MeetingPackStatisticsSearch metingPackStatisticsSearch) {
QueryWrapper<PayMeetingSituation> query = getPayMeetingSituationQueryWrapper(metingPackStatisticsSearch);
addOrder(metingPackStatisticsSearch, query);
List<MeetingPackStatistics> list = payMeetingSituationMapper.getMeetingPackStatistics(query);
// Step.3 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
mv.addObject(NormalExcelConstants.FILE_NAME, "会议打包统计"); //此处设置的filename无效 ,前端会重更新设置一下
mv.addObject(NormalExcelConstants.CLASS, MeetingPackStatistics.class);
//update-begin--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置--------------------
ExportParams exportParams=new ExportParams("会议打包统计", "会议打包统计");
exportParams.setType(ExcelType.XSSF);
//update-end--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
mv.addObject(NormalExcelConstants.PARAMS,exportParams);
mv.addObject(NormalExcelConstants.DATA_LIST, list);
return mv;
}
@NotNull
private QueryWrapper<PayMeetingSituation> getPayMeetingSituationQueryWrapper(MeetingPackStatisticsSearch metingPackStatisticsSearch) {
QueryWrapper<PayMeetingSituation> query = new QueryWrapper<>();
if (!StringUtils.isBlank(metingPackStatisticsSearch.getCompanyName())) {
query.lambda().like(PayMeetingSituation::getCompanyName, metingPackStatisticsSearch.getCompanyName());
}
if (!StringUtils.isBlank(metingPackStatisticsSearch.getPayMode())) {
query.lambda().in(PayMeetingSituation::getPayMode, Arrays.asList(metingPackStatisticsSearch.getPayMode().split(",")));
}
if (!StringUtils.isBlank(metingPackStatisticsSearch.getPaymentYear())) {
query.eq("DATE_FORMAT(p3.payment_date,'%Y')", metingPackStatisticsSearch.getPaymentYear());
}
query.groupBy("p3.project_id");
return query;
}
@NotNull
private void addOrder(MeetingPackStatisticsSearch metingPackStatisticsSearch,QueryWrapper<PayMeetingSituation> query) {
query.select("p1.id,p1.meeting_id,p1.company_name,p1.company_contact_name,p1.amount_receivable as allMoney,p1.confirm_amount,\n" +
" p1.invoice_amount as billMoney,p1.paid_amount as comeAllMoney,p2.meeting_name,p2.meeting_type,DATE_FORMAT(p3.payment_date,'%Y') as payment_year");
// 排序
if(!StringUtils.isBlank(metingPackStatisticsSearch.getColumn()) && !StringUtils.isBlank(metingPackStatisticsSearch.getOrder())){
String column = "";
switch (metingPackStatisticsSearch.getColumn()){
case "allMoney": column = "p1.amount_receivable";break;
case "confirmAmount": column = "p1.confirm_amount";break;
case "billMoney": column = "p1.invoice_amount";break;
case "comeAllMoney": column = "p1.paid_amount";break;
default:break;
}
if(!StringUtils.isBlank(column)){
if(Objects.equals(metingPackStatisticsSearch.getOrder(),"asc")){
query.orderByAsc(column);
}else{
query.orderByDesc(column);
}
}
}
}
}
@@ -1,6 +1,8 @@
package com.jero.member.controller;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
@@ -8,6 +10,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.api.vo.Result;
@@ -83,6 +86,21 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<PayMemberProjectSubitem> queryWrapper = QueryGenerator.initQueryWrapper(payMemberProjectSubitem, req.getParameterMap());
// 预计到账开始日期
String estimatedArrivalStartDate = payMemberProjectSubitem.getEstimatedArrivalStartDate();
// 预计到账结束日期
String estimatedArrivalEndDate = payMemberProjectSubitem.getEstimatedArrivalEndDate();
if (ObjectUtil.isNotEmpty(estimatedArrivalStartDate) && ObjectUtil.isNotEmpty(estimatedArrivalEndDate)) {
queryWrapper.lambda().ge(PayMemberProjectSubitem::getEstimatedArrivalDate,estimatedArrivalStartDate);
queryWrapper.lambda().le(PayMemberProjectSubitem::getEstimatedArrivalDate,estimatedArrivalEndDate);
}
if (ObjectUtil.isNotEmpty(estimatedArrivalStartDate) && ObjectUtil.isEmpty(estimatedArrivalEndDate)) {
queryWrapper.lambda().ge(PayMemberProjectSubitem::getEstimatedArrivalDate,estimatedArrivalStartDate);
}
if (ObjectUtil.isEmpty(estimatedArrivalEndDate) && ObjectUtil.isNotEmpty(estimatedArrivalEndDate)) {
queryWrapper.lambda().le(PayMemberProjectSubitem::getEstimatedArrivalDate,estimatedArrivalEndDate);
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (!rolePermissionService.getRolePermission("safeguardMember:search")) {
queryWrapper.eq("pmp.director_id",sysUser.getId());
@@ -144,6 +162,9 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
@ApiOperation(value = "会员项目成员表-添加", notes = "会员项目成员表-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody PayMemberProjectSubitem payMemberProjectSubitem) {
if (Objects.isNull(payMemberProjectSubitem.getEstimatedArrivalDate())) {
return Result.error("预估到账日期不能为空");
}
memberProjectService.check(payMemberProjectSubitem.getProjectId(),"safeguardMember:add");
ValidUtil.validate(payMemberProjectSubitem);
memberProjectSubitemService.add(payMemberProjectSubitem);
@@ -158,6 +179,9 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
@ApiOperation(value = "会员项目成员表-编辑", notes = "会员项目成员表-编辑")
@PostMapping(value = "/edit")
public Result<?> edit(@RequestBody PayMemberProjectSubitem payMemberProjectSubitem) {
if (Objects.isNull(payMemberProjectSubitem.getEstimatedArrivalDate())) {
return Result.error("预估到账日期不能为空");
}
memberProjectSubitemService.check(payMemberProjectSubitem.getId(),"safeguardMember:edit");
ValidUtil.validate(payMemberProjectSubitem);
memberProjectSubitemService.editById(payMemberProjectSubitem);
@@ -283,6 +307,18 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
projectSubitemExcel.setProjectId(projectId);
PayMemberProjectSubitem projectSubitem = new PayMemberProjectSubitem();
errorMessage.addAll(ValidUtil.validateReturnListWithNum(projectSubitemExcel,errorRowNum));
// 校验预估到账日期
String estimatedArrivalDate = projectSubitemExcel.getEstimatedArrivalDate();
if (Objects.isNull(estimatedArrivalDate)) {
errorMessage.add("第" + errorRowNum + "行:预估到账日期不能为空");
}else {
try {
LocalDate.parse(estimatedArrivalDate, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}catch (Exception e) {
errorMessage.add("第" + errorRowNum + "行:预估到账日期格式不正确");
}
}
//待确收金额
String amountReceivable = projectSubitemExcel.getAmountReceivable();
if (errorMessage.isEmpty()) {
@@ -320,11 +356,18 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
//复制属性
BeanUtils.copyProperties(projectSubitemExcel, projectSubitem);
try {
//ValidUtil.validate(projectSubitem);
memberProjectSubitemService.add(projectSubitem);
} catch (JeroBootException e) {
errorMessage.add("第" + errorRowNum + "行:" + e.getMessage());
// 给税率填充默认值 6%
if (Objects.isNull(projectSubitem.getTaxRate())) {
projectSubitem.setTaxRate(new BigDecimal("0.06"));
}
if (errorMessage.isEmpty()) {
try {
//ValidUtil.validate(projectSubitem);
memberProjectSubitemService.add(projectSubitem);
} catch (JeroBootException e) {
errorMessage.add("第" + errorRowNum + "行:" + e.getMessage());
}
}
}
if (!errorMessage.isEmpty()) {
@@ -385,5 +385,24 @@ public class PayMemberProjectSubitem implements Serializable {
//@TableField(exist = false)
//private String postContactName;
/**预估到账日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "预估到账日期")
@Excel(name = "预估到账日期", width = 15,orderNum = "9")
private String estimatedArrivalDate;
/**预计到账开始日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "预计到账开始的日期")
@TableField(exist = false)
private String estimatedArrivalStartDate;
/**预计到账结束日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "预计到账结束的日期")
@TableField(exist = false)
private String estimatedArrivalEndDate;
}
@@ -8,6 +8,8 @@ import com.jero.member.entity.PayMemberProjectSubitem;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Description: 会员项目_subitem
* @Author: jero-boot
@@ -18,5 +20,7 @@ public interface PayMemberProjectSubitemMapper extends BaseMapper<PayMemberProje
IPage<PayMemberProjectSubitem> queryPageListCompany(Page<PayMemberProjectSubitem> page, @Param(Constants.WRAPPER) QueryWrapper<PayMemberProjectSubitem> queryWrapper);
List<PayMemberProjectSubitem> queryPageListCompany(@Param(Constants.WRAPPER) QueryWrapper<PayMemberProjectSubitem> queryWrapper);
IPage<PayMemberProjectSubitem> getPage(Page<PayMemberProjectSubitem> page, @Param(Constants.WRAPPER) QueryWrapper<PayMemberProjectSubitem> queryWrapper);
}
@@ -33,7 +33,24 @@
<result column="particular_year" property="particularYear"/>
<result column="director_name" property="directorName" />
<result column="payment_status" property="paymentStatus" />
<result column="affirm_income" property="affirmIncome"/>
<result column="confirm_amount" property="confirmAmount"/>
<result column="confirm_no_tax_amount" property="confirmNoTaxAmount"/>
<result column="confirm_tax" property="confirmTax"/>
<result column="estimated_arrival_date" property="estimatedArrivalDate"/>
<result column="invoice_amount" property="invoiceAmount"/>
<result column="invoice_no_tax_amount" property="invoiceNoTaxAmount"/>
<result column="invoice_tax" property="invoiceTax"/>
<result column="no_tax_amount" property="noTaxAmount"/>
<result column="paid_no_tax_amount" property="paidNoTaxAmount"/>
<result column="paid_tax" property="paidTax"/>
<result column="post_company_id" property="postCompanyId"/>
<result column="tax" property="tax"/>
<result column="tax_rate" property="taxRate"/>
</resultMap>
<sql id="a">
</sql>
<select id="queryPageListCompany" resultMap="MemberProjectSubitemResultMap">
select pmps.*,pmp.project_name,pmp.particular_year,pmp.director_id as director_name from pay_member_project_subitem pmps
@@ -42,7 +59,23 @@
</select>
<select id="getPage" resultMap="MemberProjectSubitemResultMap">
select pmps.* from pay_member_project_subitem pmps left join pay_member_project pmp on pmps.project_id = pmp.id
select pmps.id,pmps.create_by,pmps.create_time,pmps.update_by,pmps.update_time,pmps.project_id,pmps.company_id,pmps.company_temporary_id,
if(pmps.company_name = pcm.company_name, pmps.company_name, concat(pmps.company_name,'(更名为',pcm.company_name,')')) as company_name,
pmps.company_contact_id,pmps.company_contact_temporary_id,pmps.company_contact_name,pmps.post_contact_id,
pmps.post_contact_temporary_id,
pmps.post_contact_name,pmps.amount_receivable,pmps.paid_amount,pmps.confirm_amount,pmps.payment_method,pmps.charge_notice_no,
pmps.charge_notice_file_id,pmps.contract_no,pmps.remark,pmps.pack,pmps.need_invoice,pmps.in_account,pmps.make_invoice,
pmps.mail,pmps.invoice_amount,pmps.payment_status,pmps.affirm_income,pmps.confirm_tax,pmps.confirm_no_tax_amount,pmps.paid_tax,pmps.paid_no_tax_amount,
pmps.invoice_tax,pmps.invoice_no_tax_amount,pmps.tax_rate,pmps.tax,pmps.no_tax_amount,pmps.post_company_id,
pmps.estimated_arrival_date
from pay_member_project_subitem pmps
left join pay_member_project pmp on pmps.project_id = pmp.id
left join pay_company_management_temporary pcmt on pmps.company_temporary_id = pcmt.id
left join pay_company_management pcm on pcmt.company_id = pcm.id
${ew.customSqlSegment}
<where>
</where>
</select>
</mapper>
@@ -70,6 +70,8 @@ public interface IPayMemberProjectSubitemService extends IService<PayMemberProje
IPage<PayMemberProjectSubitem> queryPageListCompany(Page<PayMemberProjectSubitem> page, QueryWrapper<PayMemberProjectSubitem> queryWrapper);
List<PayMemberProjectSubitem> queryPageListCompany(QueryWrapper<PayMemberProjectSubitem> queryWrapper);
IPage<PayMemberProjectSubitem> getPage(Page<PayMemberProjectSubitem> page, QueryWrapper<PayMemberProjectSubitem> queryWrapper);
void check(String subitemId, String permission);
@@ -328,25 +328,24 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
}
// 联系人id != 联系人模板id 变更
if(!Objects.equals(payMemberProjectSubitem.getCompanyContactId(),payMemberProjectSubitemOld.getCompanyContactId())){
// 联系人
PayContactsManagementTemporary contactsName = contactsManagementTemporaryService.insertContactsManagementTemporary(payMemberProjectSubitem.getCompanyContactId());
if(Objects.isNull(contactsName)){
throw new JeroBootException("联系人名称为空!");
}
payMemberProjectSubitem.setCompanyContactTemporaryId(contactsName.getId());
payMemberProjectSubitem.setCompanyContactName(contactsName.getName());
contactsManagementTemporaryService.removeById(payMemberProjectSubitemOld.getCompanyContactTemporaryId());
PayContactsManagementTemporary companyContact = contactsManagementTemporaryService.insertContactsManagementTemporary(payMemberProjectSubitem.getCompanyContactId());
if(Objects.isNull(companyContact)){
throw new JeroBootException("联系人名称为空!");
}
payMemberProjectSubitem.setCompanyContactTemporaryId(companyContact.getId());
payMemberProjectSubitem.setCompanyContactName(companyContact.getName());
contactsManagementTemporaryService.removeById(payMemberProjectSubitemOld.getCompanyContactTemporaryId());
// 邮寄联系人id != 邮寄联系人模板id 变更
if(!Objects.equals(payMemberProjectSubitem.getPostContactId(),payMemberProjectSubitemOld.getPostContactId())){
// 联系人
PayContactsManagementTemporary contactsName = contactsManagementTemporaryService.insertContactsManagementTemporary(payMemberProjectSubitem.getPostContactId());
if(Objects.isNull(contactsName)){
PayContactsManagementTemporary postContact = contactsManagementTemporaryService.insertContactsManagementTemporary(payMemberProjectSubitem.getPostContactId());
if(Objects.isNull(postContact)){
throw new JeroBootException("邮寄联系人为空!");
}
payMemberProjectSubitem.setPostContactTemporaryId(contactsName.getId());
payMemberProjectSubitem.setPostContactName(contactsName.getName());
payMemberProjectSubitem.setPostContactTemporaryId(postContact.getId());
payMemberProjectSubitem.setPostContactName(postContact.getName());
contactsManagementTemporaryService.removeById(payMemberProjectSubitemOld.getPostContactTemporaryId());
}
@@ -497,6 +496,11 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
return baseMapper.queryPageListCompany(page,queryWrapper);
}
@Override
public List<PayMemberProjectSubitem> queryPageListCompany(QueryWrapper<PayMemberProjectSubitem> queryWrapper) {
return baseMapper.queryPageListCompany(queryWrapper);
}
@Override
public IPage<PayMemberProjectSubitem> getPage(Page<PayMemberProjectSubitem> page, QueryWrapper<PayMemberProjectSubitem> queryWrapper) {
return baseMapper.getPage(page, queryWrapper);
@@ -1,6 +1,7 @@
package com.jero.member.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
@@ -113,4 +114,32 @@ public class PayMemberProjectSubitemExcel {
@NotBlank(message = "需要发票不能为空")
private String needInvoice;
/**预估到账日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "预估到账日期")
@Excel(name = "预估到账日期", width = 15,orderNum = "5")
private String estimatedArrivalDate;
@Excel(name = "邮寄联系人手机号", width = 17, orderNum = "4")
@ApiModelProperty(value = "邮寄联系人手机号")
@TableField(exist = false)
private String postContactPhone;
@Excel(name = "邮寄联系人邮箱", width = 15, orderNum = "5")
@ApiModelProperty(value = "邮寄联系人邮箱")
@TableField(exist = false)
private String postContactMail;
@Excel(name = "邮寄联系人通讯地址", width = 19, orderNum = "6")
@ApiModelProperty(value = "邮寄联系人地址")
@TableField(exist = false)
private String postContactAddress;
@Excel(name = "邮寄联系人邮政编码", width = 19, orderNum = "7")
@ApiModelProperty(value = "邮寄联系人邮编")
@TableField(exist = false)
private String contactPostCode;
}
@@ -1,29 +1,27 @@
package com.jero.payment.controller;
import com.jero.payment.entity.PayConfirmPaymentRecord;
import com.jero.payment.service.impl.PayConfirmPaymentRecordService;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController;
import org.springframework.validation.annotation.Validated;
import com.jero.common.system.query.QueryGenerator;
import com.jero.payment.entity.PayConfirmPaymentRecord;
import com.jero.payment.service.impl.PayConfirmPaymentRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.jero.common.aspect.annotation.AutoLog;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
/**
* (pay_confirm_payment_record)表控制层
@@ -152,4 +150,15 @@ public class PayConfirmPaymentRecordController extends JeroController<PayConfir
return super.importExcel(request, response, PayConfirmPaymentRecord.class);
}
/**
* 确认收入-撤销
*/
@RequiresPermissions({"incomePaymentAndInvoicing:revokeConfirm"})
@AutoLog(value = "确认来款-撤销")
@ApiOperation(value="确认来款-撤销", notes="确认来款-撤销")
@PostMapping(value = "/backIncoming")
public Result<?> backIncoming(@RequestParam(name = "id") String id) {
payConfirmPaymentRecordService.backIncoming(id);
return Result.OK();
}
}
@@ -9,8 +9,8 @@ import com.jero.common.enums.PaymentStatusEnum;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.util.ValidUtil;
import com.jero.contract.common.PayIncomeContractCommon;
import com.jero.mail.vo.PayMailBillVO;
import com.jero.mail.service.IPayMailBillService;
import com.jero.mail.vo.PayMailBillVO;
import com.jero.member.entity.TbCertificatePayment;
import com.jero.member.entity.TbMemberProjectSubitem;
import com.jero.member.service.ITbCertificatePaymentService;
@@ -27,6 +27,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
@@ -266,6 +267,15 @@ public class PayPaymentRecordController extends JeroController<PayPaymentRecord,
String projectType, String paymentDate, String paidInvoicStatus) {
return payPaymentRecordService.exportXls(request, payCommonProject, projectType, paymentDate, paidInvoicStatus, PayCommonProjectOutput.class, "到账开票");
}
/**
* 开票-撤销
*/
@AutoLog(value = "开票-撤销")
@ApiOperation(value = "开票-撤销", notes = "开票-撤销")
@PostMapping(value = "/backInvoice")
@RequiresPermissions("incomePaymentAndInvoicing:revokeInvoice")
public Result<?> backInvoice(@RequestParam String id) {
payMailBillService.backInvoice(id);
return Result.OK();
}
}
@@ -47,11 +47,11 @@
</resultMap>
<select id="mainList" resultType="com.jero.project.entity.PayCommonProject">
select p.id,p.charge_project, p.charge_use, p.principal_id,p.principal_name,p.charge_company_id,p.charge_company_temporary_name,p.receivable_amount,p.paid_amount,p.need_invoice,p.pack,p.in_account,p.make_invoice,p.mail,p.create_time,p.projectType,
p.invoice_amount,p.mail_contacts_id,p.register_check_result,p.contacts_temporary_name,p.payment_status,p.charge_company_temporary_id,p.confirm_amount,p.affirm_income
p.invoice_amount,p.mail_contacts_id,p.register_check_result,p.contacts_temporary_name,p.payment_status,p.charge_company_temporary_id,p.confirm_amount,p.affirm_income,p.admin_add_flag
from
(<!-- 普通项目-->
select c.id,c.charge_project, c.charge_use, c.principal_id,su.realname as principal_name,c.charge_company_id,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,
c.invoice_amount,c.mail_contacts_id,'' as register_check_result,c.contacts_temporary_name,c.payment_status,c.charge_company_temporary_id,c.confirm_amount,c.affirm_income
c.invoice_amount,c.mail_contacts_id,'' as register_check_result,c.contacts_temporary_name,c.payment_status,c.charge_company_temporary_id,c.confirm_amount,c.affirm_income,0 as admin_add_flag
from pay_common_project c
left join sys_user su on c.principal_id = su.id
where
@@ -85,7 +85,7 @@
<!--工作组项目-->
UNION ALL
select gsub.id,g.working_group_project, gsub.charge_use, g.principal_id_a,su.realname,gsub.charge_company_id,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.invoice_amount,gsub.mail_contacts_id,'' as register_check_result,gsubc.contacts_temporary_name as contacts_temporary_name_one,gsub.payment_status,gsub.charge_company_temporary_id,gsub.confirm_amount,gsub.affirm_income
gsub.invoice_amount,gsub.mail_contacts_id,'' as register_check_result,gsubc.contacts_temporary_name as contacts_temporary_name_one,gsub.payment_status,gsub.charge_company_temporary_id,gsub.confirm_amount,gsub.affirm_income,0
from pay_working_group g
left join sys_user su on g.principal_id_a = su.id
inner join pay_working_group_subitem gsub on g.id = gsub.working_group_id
@@ -121,7 +121,7 @@
<!-- 会议项目-->
UNION ALL
select sit.id,meeting.meeting_name,sit.charge_use, meeting.director_id, su.realname,sit.company_id,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,
sit.invoice_amount,sit.post_contact_id,sit.register_check_result,sit.company_contact_name,sit.payment_status,sit.company_id,sit.confirm_amount,sit.affirm_income
sit.invoice_amount,sit.post_contact_id,sit.register_check_result,sit.company_contact_name,sit.payment_status,sit.company_id,sit.confirm_amount,sit.affirm_income,0
from pay_meeting meeting
inner join pay_meeting_situation sit on meeting.id = sit.meeting_id
left join sys_user su on su.id = meeting.director_id
@@ -156,7 +156,7 @@
<!-- 会员项目-->
UNION ALL
select msub.id,pmp.project_name,msub.charge_use,pmp.director_id,su.realname,msub.company_id,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,
msub.invoice_amount,msub.post_contact_id,'' as register_check_result,msub.company_contact_name,msub.payment_status,msub.company_temporary_id,msub.confirm_amount,msub.affirm_income
msub.invoice_amount,msub.post_contact_id,'' as register_check_result,msub.company_contact_name,msub.payment_status,msub.company_temporary_id,msub.confirm_amount,msub.affirm_income,0
from pay_member_project pmp
inner join pay_member_project_subitem msub on pmp.id=msub.project_id
left join sys_user su on su.id = pmp.director_id
@@ -193,7 +193,8 @@
select tmsub.id,tmember.project_name,tmsub.charge_use,tmember.director_id,su.realname,tmsub.company_id,
if(tmsub.company_name = tmsub.header_name or tmsub.header_name is null, tmsub.company_name , concat(tmsub.company_name,'(代付)')) as 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,
tmsub.invoice_amount,tmsub.post_contact_id,'' as register_check_result,tmsub.liaison_man,tmsub.payment_status,tmsub.company_id,tmsub.confirm_amount,tmsub.affirm_income
tmsub.invoice_amount,tmsub.post_contact_id,'' as register_check_result,tmsub.liaison_man,tmsub.payment_status,tmsub.company_id,tmsub.confirm_amount,tmsub.affirm_income,
tmsub.admin_add_flag
from tb_member_project tmember
inner join tb_member_project_subitem tmsub on tmember.id=tmsub.project_id
left join sys_user su on su.id = tmember.director_id
@@ -234,7 +235,8 @@
select tcp.id,tmember.project_name,tcp.charge_use,tmember.director_id,su.realname,tcp.company_id,
if(tcp.company_name = tcp.header_name or tcp.header_name is null, tcp.company_name , concat(tcp.company_name,'(代付)')) as company_name,
tcp.amount_receivable,tcp.paid_amount,tcp.invoice_requirements,tcp.pack,tcp.in_account,tcp.make_invoice,tcp.mail,tcp.create_time,6,
tcp.invoice_amount,tcp.post_contact_id,'' as register_check_result,tcp.liaison_man,tcp.payment_status,tcp.company_id,tcp.confirm_amount,tcp.affirm_income
tcp.invoice_amount,tcp.post_contact_id,'' as register_check_result,tcp.liaison_man,tcp.payment_status,tcp.company_id,tcp.confirm_amount,tcp.affirm_income,
tcp.admin_add_flag
from tb_member_project tmember
inner join tb_certificate_payment tcp on tmember.id=tcp.project_id
left join sys_user su on su.id = tmember.director_id
@@ -81,6 +81,14 @@ public interface IPayPaymentRecordService extends IService<PayPaymentRecord> {
* @return
*/
BigDecimal addPaidAmount(BigDecimal paidAmount,BigDecimal amountReceived);
/**
* 减去实收并四舍五入
* @param paidAmount 实收
* @param amountReceived 到账
* @return
*/
BigDecimal subtractPaidAmount(BigDecimal paidAmount,BigDecimal amountReceived);
/**
* 得到到账状态
* @param receivableAmount 应收
@@ -1,30 +1,37 @@
package com.jero.payment.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.exception.JeroBootException;
import com.jero.config.StaticConfig;
import com.jero.contract.common.PayIncomeContractCommon;
import com.jero.meeting.entity.PayMeetingSituation;
import com.jero.meeting.mapper.PayMeetingSituationMapper;
import com.jero.member.entity.*;
import com.jero.member.entity.PayMemberProjectSubitem;
import com.jero.member.entity.TbCertificatePayment;
import com.jero.member.entity.TbMemberProjectSubitem;
import com.jero.member.mapper.PayMemberProjectSubitemMapper;
import com.jero.member.mapper.TbCertificatePaymentMapper;
import com.jero.member.mapper.TbMemberProjectSubitemMapper;
import com.jero.payment.entity.PayConfirmPaymentRecord;
import com.jero.payment.mapper.PayConfirmPaymentRecordMapper;
import com.jero.payment.mapper.PayPaymentRecordMapper;
import com.jero.payment.service.IPayPaymentRecordService;
import com.jero.project.entity.PayCommonProject;
import com.jero.project.entity.PayWorkingGroupSubItem;
import com.jero.project.mapper.PayCommonProjectMapper;
import com.jero.project.mapper.PayWorkingGroupSubItemMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.payment.entity.PayConfirmPaymentRecord;
import com.jero.payment.mapper.PayConfirmPaymentRecordMapper;
import java.util.Objects;
/**
* @author liJiaRao
@@ -315,7 +322,140 @@ public class PayConfirmPaymentRecordService extends ServiceImpl<PayConfirmPaymen
}
}
@Transactional(rollbackFor = JeroBootException.class)
public void backIncoming(String id){
if(StringUtils.isBlank(id)){
throw new JeroBootException("确认来款id不能为空");
}
PayConfirmPaymentRecord obj = getById(id);
if(Objects.isNull(obj)){
throw new JeroBootException("未找到对应数据");
}
// 标协会员缴费、证书缴费 先不做此功能的开发
if(Arrays.asList("5","6").contains(obj.getProjectType())){
throw new JeroBootException("标协会员缴费、证书缴费项目不可撤销");
}
// 删除数据
removeById(id);
// 更新对应项目金
updateConfirmAmountBackIncoming(obj);
}
private void updateConfirmAmountBackIncoming(PayConfirmPaymentRecord payConfirmPaymentRecord) {
String projectId = payConfirmPaymentRecord.getProjectId();
String projectType = payConfirmPaymentRecord.getProjectType();
//获得金额的和
PayConfirmPaymentRecord confirmPaymentRecord = baseMapper.selectOneByProjectIdAndProjectType(projectId, projectType);
BigDecimal confirmAmount = new BigDecimal("0");
BigDecimal noTaxAmount = new BigDecimal("0");
BigDecimal tax = new BigDecimal("0");
if(!Objects.isNull(confirmPaymentRecord)){
confirmAmount = confirmPaymentRecord.getAmountReceived();
noTaxAmount = confirmPaymentRecord.getNoTaxAmount();
tax = confirmPaymentRecord.getTax();
}
Integer affirmIncome;
switch (projectType){
// 普通项目
case PayIncomeContractCommon.PROJECT_TYPE1:
PayCommonProject payCommonProject = payCommonProjectMapper.selectById(projectId);
if (payCommonProject == null) {
break;
}
//更新主列表
payCommonProject.setConfirmAmount(confirmAmount);
payCommonProject.setConfirmTax(tax);
payCommonProject.setConfirmNoTaxAmount(noTaxAmount);
affirmIncome = getAffirmIncome(payCommonProject.getReceivableAmount(), confirmAmount);
payCommonProject.setAffirmIncome(affirmIncome);
payCommonProjectMapper.updateById(payCommonProject);
break;
// 工作组项目
case PayIncomeContractCommon.PROJECT_TYPE2:
PayWorkingGroupSubItem payWorking = payWorkingGroupSubItemMapper.selectById(projectId);
if (payWorking == null) {
break;
}
//更新主列表
payWorking.setConfirmAmount(confirmAmount);
payWorking.setConfirmTax(tax);
payWorking.setConfirmNoTaxAmount(noTaxAmount);
affirmIncome = getAffirmIncome(payWorking.getReceivableAmount(), confirmAmount);
payWorking.setAffirmIncome(affirmIncome);
payWorkingGroupSubItemMapper.updateById(payWorking);
break;
//会议项目
case PayIncomeContractCommon.PROJECT_TYPE3:
PayMeetingSituation meeting = payMeetingSituationMapper.selectById(projectId);
if (meeting == null) {
break;
}
//更新主列表
meeting.setConfirmAmount(confirmAmount);
meeting.setConfirmTax(tax);
meeting.setConfirmNoTaxAmount(noTaxAmount);
affirmIncome = getAffirmIncome(meeting.getAmountReceivable(), confirmAmount);
meeting.setAffirmIncome(affirmIncome);
payMeetingSituationMapper.updateById(meeting);
break;
//会员项目
case PayIncomeContractCommon.PROJECT_TYPE4:
PayMemberProjectSubitem member = payMemberProjectSubitemMapper.selectById(projectId);
if (member == null) {
break;
}
//更新主列表
member.setConfirmAmount(confirmAmount);
member.setConfirmTax(tax);
member.setConfirmNoTaxAmount(noTaxAmount);
affirmIncome = getAffirmIncome(member.getAmountReceivable(), confirmAmount);
member.setAffirmIncome(affirmIncome);
payMemberProjectSubitemMapper.updateById(member);
break;
//标协会员
case PayIncomeContractCommon.PROJECT_TYPE5:
TbMemberProjectSubitem tbMember = tbMemberProjectSubitemMapper.selectById(projectId);
if (tbMember == null) {
break;
}
//更新主列表
tbMember.setConfirmAmount(confirmAmount);
tbMember.setConfirmTax(tax);
tbMember.setConfirmNoTaxAmount(noTaxAmount);
affirmIncome = getAffirmIncome(tbMember.getAmountReceivable(), confirmAmount);
tbMember.setAffirmIncome(affirmIncome);
tbMemberProjectSubitemMapper.updateById(tbMember);
break;
//标协证书
case PayIncomeContractCommon.PROJECT_TYPE6:
TbCertificatePayment tbMemberCertificate = certificatePaymentMapper.selectById(projectId);
if (tbMemberCertificate == null) {
break;
}
//更新主列表
tbMemberCertificate.setConfirmAmount(confirmAmount);
tbMemberCertificate.setConfirmTax(tax);
tbMemberCertificate.setConfirmNoTaxAmount(noTaxAmount);
affirmIncome = getAffirmIncome(tbMemberCertificate.getAmountReceivable(), confirmAmount);
tbMemberCertificate.setAffirmIncome(affirmIncome);
certificatePaymentMapper.updateById(tbMemberCertificate);
break;
default:break;
}
}
}
@@ -1,6 +1,6 @@
package com.jero.payment.service.impl;
import com.alibaba.druid.sql.visitor.functions.If;
import cn.hutool.core.collection.CollStreamUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -77,7 +77,6 @@ import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.validation.constraints.DecimalMax;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
@@ -157,26 +156,26 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
//查审核记录表,每阶段最新的一条
LambdaQueryWrapper<PayPaymentRecordSub> wrapper = new LambdaQueryWrapper<>();
wrapper.select(PayPaymentRecordSub::getProjectId,PayPaymentRecordSub::getPaymentStatus);
wrapper.eq(PayPaymentRecordSub::getLastSign, LastSignEnum.LAST.getCode());
wrapper.eq(PayPaymentRecordSub::getDelFlag, PayProjectCommon.NO);
List<PayPaymentRecordSub> RecordSubList = payPaymentCheckService.list(wrapper);
Map<String, String> projectIdPaymentStatusMap = CollStreamUtil.toMap(RecordSubList, PayPaymentRecordSub::getProjectId, PayPaymentRecordSub::getPaymentStatus);
for (PayCommonProject commonProject : list) {
//如果是会议类型,就查询会议的具体类型
String id = commonProject.getId();
if (commonProject.getProjectType().equals(Integer.parseInt(ProjectCommon.PROJECT_TYPE3))) {
String id = commonProject.getId();
PayMeeting payMeeting = payMeetingService.getMeetingBySituationId(id);
commonProject.setMeetingType(payMeeting.getMeetingType());
commonProject.setSituationId(id);
}
//插入待审核状态,供前端判断是否显示审核按钮
//先查审核记录表有没有待审核的
for(PayPaymentRecordSub recordSub : RecordSubList){
if(commonProject.getId().equals(recordSub.getProjectId())){
if(PaymentStatusEnum.TO_BE_REVIEWED.getCode().equals(recordSub.getPaymentStatus())){
commonProject.setCheckPaymentStatus(recordSub.getPaymentStatus());
continue;
}
if(projectIdPaymentStatusMap.containsKey(id)){
String paymentStatus = projectIdPaymentStatusMap.get(id);
if(PaymentStatusEnum.TO_BE_REVIEWED.getCode().equals(paymentStatus)){
commonProject.setCheckPaymentStatus(paymentStatus);
continue;
}
}
//再查项目主表状态是不是待审核
@@ -880,6 +879,24 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
return paidAmount.add(amountReceived).setScale(2, RoundingMode.HALF_UP);
}
/**
* 减去实收并四舍五入
* @param paidAmount 实收
* @param amountReceived 到账
* @return
*/
@Override
public BigDecimal subtractPaidAmount(BigDecimal paidAmount,BigDecimal amountReceived){
if(paidAmount == null){
paidAmount = new BigDecimal("0");
}
if (amountReceived == null){
amountReceived = BigDecimal.ZERO;
}
return paidAmount.subtract(amountReceived).setScale(2, RoundingMode.HALF_UP);
}
/**
* 相减
* @param paidAmount 实收
@@ -371,6 +371,9 @@ public class PayCommonProjectController extends JeroController<PayCommonProject,
@ApiOperation(value="普通项目管理-添加", notes="普通项目管理-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody PayCommonProject payCommonProject) {
if (Objects.isNull(payCommonProject.getEstimatedArrivalDate())) {
return Result.error("预估到账日期不能为空");
}
StringBuilder msg = ValidUtil.validateAll(payCommonProject);
if(!StringUtils.isBlank(msg)){
return Result.error(msg.toString());
@@ -390,6 +393,9 @@ public class PayCommonProjectController extends JeroController<PayCommonProject,
@ApiOperation(value="普通项目管理-编辑", notes="普通项目管理-编辑")
@PostMapping(value = "/edit")
public Result<?> edit(@RequestBody PayCommonProject payCommonProject) {
if (Objects.isNull(payCommonProject.getEstimatedArrivalDate())) {
return Result.error("预估到账日期不能为空");
}
StringBuilder msg = ValidUtil.validateAll(payCommonProject);
if(!StringUtils.isBlank(msg)){
return Result.error(msg.toString());
@@ -357,6 +357,9 @@ public class PayWorkingGroupSubItemController extends JeroController<PayWorkingG
@ApiOperation(value = "工作组成员-添加", notes = "工作组成员-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody PayWorkingGroupSubItem payWorkingGroupSubItem) {
if (Objects.isNull(payWorkingGroupSubItem.getEstimatedArrivalDate())) {
return Result.error("预估到账日期不能为空");
}
StringBuilder msg = ValidUtil.validateAll(payWorkingGroupSubItem);
if (!StringUtils.isBlank(msg)) {
return Result.error(msg.toString());
@@ -376,6 +379,9 @@ public class PayWorkingGroupSubItemController extends JeroController<PayWorkingG
@ApiOperation(value = "工作组成员-编辑", notes = "工作组成员-编辑")
@PostMapping(value = "/edit")
public Result<?> edit(@RequestBody PayWorkingGroupSubItem payWorkingGroupSubItem) {
if (Objects.isNull(payWorkingGroupSubItem.getEstimatedArrivalDate())) {
return Result.error("预估到账日期不能为空");
}
StringBuilder msg = ValidUtil.validateAll(payWorkingGroupSubItem);
if (!StringUtils.isBlank(msg)) {
return Result.error(msg.toString());
@@ -319,4 +319,28 @@ public class PayCommonProject implements Serializable {
@ApiModelProperty(value = "未税金额")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal noTaxAmount;
/**预计到账日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "预计到账日期")
private String estimatedArrivalDate;
/**预计到账开始日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "预计到账开始的日期")
@TableField(exist = false)
private String estimatedArrivalStartDate;
/**预计到账结束日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "预计到账结束的日期")
@TableField(exist = false)
private String estimatedArrivalEndDate;
@TableField(exist = false)
private Integer adminAddFlag;
}
@@ -19,6 +19,8 @@ import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
/**
@@ -123,6 +125,14 @@ public class PayWorkingGroupSubItem implements Serializable {
@DecimalMax(value = "9999999999.99",message = "待确收金额(元)格式错误")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal receivableAmount;
/**预估到账日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "预估到账日期")
@Excel(name = "预估到账日期",width = 15,format = "yyyy-MM-dd")
private String estimatedArrivalDate;
/**实收金额(元)*/
@ApiModelProperty(value = "实收金额(元)")
@DecimalMax(value = "9999999999.99",message = "实收金额(元)格式错误")
@@ -162,6 +172,7 @@ public class PayWorkingGroupSubItem implements Serializable {
/**收费通知文件id*/
@ApiModelProperty(value = "收费通知文件id")
private java.lang.String chargeNoticeId;
/**打包(1:是,0:否)*/
@ApiModelProperty(value = "打包(1:是,0:否)")
private java.lang.Integer pack;
@@ -585,4 +596,18 @@ public class PayWorkingGroupSubItem implements Serializable {
@ApiModelProperty(value = "标签")
@Size(max = 32,message = "标签名称长度不能大于50个字符")
private String label;
/**预计到账开始日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "预计到账开始的日期")
@TableField(exist = false)
private String estimatedArrivalStartDate;
/**预计到账结束日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "预计到账结束的日期")
@TableField(exist = false)
private String estimatedArrivalEndDate;
}
@@ -49,4 +49,7 @@ public class PayWorkingGroupSubletSearch {
@ApiModelProperty(value = "项目负责人id")
private String principalNameId;
@ApiModelProperty(value = "是否打包")
private String pack;
}
@@ -242,6 +242,8 @@ public interface PayWorkingGroupMapper extends BaseMapper<PayWorkingGroup> {
List<AllProjectStatistics> cumulativeListComeAllMoney(@Param("paymentYear") String paymentYear);
List<AllProjectStatistics> cumulativeListEstimatedArrivalMoney(@Param("paymentYear") String paymentYear);
BigDecimal invoiceAmount(@Param("start") Integer start, @Param("end") Integer end, @Param("departCode") String departCode);
IPage<AllProjectStatisticsOther> invoiceAmountList(Page<AllProjectStatistics> page, @Param("start") Integer start, @Param("end") Integer end, @Param("departCode") String departCode, @Param("column") String column, @Param("order") String order);
@@ -1,6 +1,9 @@
package com.jero.project.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.company.entity.PayContactsManagement;
import com.jero.project.entity.PayWorkGroupSubletStatistics;
@@ -59,4 +62,6 @@ public interface PayWorkingGroupSubItemMapper extends BaseMapper<PayWorkingGroup
AllMoney queryPageList233(@Param("payWorkingGroupSubletSearch") PayWorkingGroupSubletSearch payWorkingGroupSubletSearch, @Param("id") String id);
IPage<PayWorkingGroupSubItem> publishReminderList(Page<PayWorkingGroupSubItem> page, @Param("payWorkingGroupSubItem") PayWorkingGroupSubItem payWorkingGroupSubItem);
List<PayWorkingGroupSubItem> queryList(@Param(Constants.WRAPPER) QueryWrapper<PayWorkingGroupSubItem> queryPayWorkingGroupSubItem);
}
@@ -11,7 +11,7 @@
su.realname as principal_name,
pcp.charge_company_id,
pcp.charge_company_temporary_id,
pcp.charge_company_temporary_name,
if(pcp.charge_company_temporary_name = pcm.company_name, pcp.charge_company_temporary_name, concat(pcp.charge_company_temporary_name,'(更名为',pcm.company_name,')')) as charge_company_temporary_name,
pcp.charge_use,
pcp.contacts_id,
pcp.contacts_temporary_id,
@@ -41,16 +41,19 @@
pcp.payment_status,
pcp.tax,
pcp.tax_rate,
pcp.no_tax_amount
pcp.no_tax_amount,
pcp.estimated_arrival_date
FROM pay_common_project pcp
left join sys_user su on pcp.principal_id = su.id
LEFT JOIN pay_payment_record ppr ON ppr.project_id = pcp.id
left join pay_company_management_temporary pcmt on pcp.charge_company_temporary_id = pcmt.id
left join pay_company_management pcm on pcmt.company_id = pcm.id
<where>
<if test="payCommonProject.chargeProject != null and payCommonProject.chargeProject != ''">
AND pcp.charge_project like concat('%',concat(#{payCommonProject.chargeProject},'%'))
</if>
<if test="payCommonProject.chargeCompanyTemporaryName != null and payCommonProject.chargeCompanyTemporaryName != ''">
AND pcp.charge_company_temporary_name like concat('%',concat(#{payCommonProject.chargeCompanyTemporaryName},'%'))
AND pcm.company_name like concat('%',concat(#{payCommonProject.chargeCompanyTemporaryName},'%'))
</if>
<if test="payCommonProject.contactsTemporaryName != null and payCommonProject.contactsTemporaryName != ''">
AND pcp.contacts_temporary_name like concat('%',concat(#{payCommonProject.contactsTemporaryName},'%'))
@@ -73,6 +76,12 @@
<if test="payCommonProject.principal != null and payCommonProject.principal != ''">
AND pcp.principal_id = #{payCommonProject.principal}
</if>
<if test="payCommonProject.estimatedArrivalStartDate != null">
AND pcp.estimated_arrival_date &gt;= #{payCommonProject.estimatedArrivalStartDate}
</if>
<if test="payCommonProject.estimatedArrivalEndDate != null">
AND pcp.estimated_arrival_date &lt;= #{payCommonProject.estimatedArrivalEndDate}
</if>
</where>
GROUP BY pcp.id ORDER BY pcp.create_time DESC
</select>
@@ -2522,4 +2522,17 @@
</where>
) a
</select>
<!-- 统计预计到账金额(应收金额) 预计到账日期 -->
<select id="cumulativeListEstimatedArrivalMoney"
resultType="com.jero.statistics.entity.AllProjectStatistics">
select DATE_FORMAT(paymentDate, '%Y-%m') as paymentDate,sum(estimatedArrivalMoney) as estimatedArrivalMoney from (
select receivable_amount as estimatedArrivalMoney,estimated_arrival_date as paymentDate from pay_common_project where DATE_FORMAT(estimated_arrival_date, '%Y') = #{paymentYear}
union all
select receivable_amount as estimatedArrivalMoney,estimated_arrival_date as paymentDate from pay_working_group_subitem where DATE_FORMAT(estimated_arrival_date, '%Y') = #{paymentYear}
union all
select amount_receivable as estimatedArrivalMoney,estimated_arrival_date as paymentDate from pay_meeting_situation where DATE_FORMAT(estimated_arrival_date, '%Y') = #{paymentYear}
union all
select amount_receivable as estimatedArrivalMoney,estimated_arrival_date as paymentDate from pay_member_project_subitem where DATE_FORMAT(estimated_arrival_date, '%Y') = #{paymentYear}
) dataAll group by DATE_FORMAT(paymentDate, '%Y-%m') order by paymentDate
</select>
</mapper>
@@ -8,7 +8,8 @@
pwgs.working_group_id AS workingGroupId,
pwgs.charge_company_id AS chargeCompanyId,
pwgs.charge_company_temporary_id AS chargeCompanyTemporaryId,
pwgs.charge_company_temporary_name AS chargeCompanyTemporaryName,
<!-- pwgs.charge_company_temporary_name AS chargeCompanyTemporaryName,-->
if(pwgs.charge_company_temporary_name = pcm.company_name, pwgs.charge_company_temporary_name, concat(pwgs.charge_company_temporary_name,'(更名为',pcm.company_name,')')) as chargeCompanyTemporaryName,
pwgs.contacts_id_one AS contactsIdOne,
pwgs.contacts_temporary_id_one AS contactsTemporaryIdOne,
pwgs.contacts_temporary_name_one AS contactsTemporaryNameOne,
@@ -44,13 +45,16 @@
pwgs.tax,
pwgs.tax_rate,
pwgs.no_tax_amount,
pwgs.label
pwgs.label,
pwgs.estimated_arrival_date
FROM pay_working_group_subitem pwgs
LEFT JOIN pay_payment_record ppr ON ppr.project_id = pwgs.id
left join pay_company_management_temporary pcmt on pwgs.charge_company_temporary_id = pcmt.id
left join pay_company_management pcm on pcmt.company_id = pcm.id
<where>
pwgs.working_group_id = #{payWorkingGroupSubItem.workingGroupId}
<if test="payWorkingGroupSubItem.chargeCompanyTemporaryName != null and payWorkingGroupSubItem.chargeCompanyTemporaryName != ''">
AND pwgs.charge_company_temporary_name LIKE
AND pcm.company_name LIKE
concat('%',concat(#{payWorkingGroupSubItem.chargeCompanyTemporaryName},'%'))
</if>
<if test="paymentDate != null and paymentDate != ''">
@@ -68,6 +72,12 @@
<if test="payWorkingGroupSubItem.label != null and payWorkingGroupSubItem.label != ''">
and label LIKE concat('%',#{payWorkingGroupSubItem.label},'%')
</if>
<if test="payWorkingGroupSubItem.estimatedArrivalStartDate != null">
AND pwgs.estimated_arrival_date &gt;= #{payWorkingGroupSubItem.estimatedArrivalStartDate}
</if>
<if test="payWorkingGroupSubItem.estimatedArrivalEndDate != null">
AND pwgs.estimated_arrival_date &lt;= #{payWorkingGroupSubItem.estimatedArrivalEndDate}
</if>
</where>
GROUP BY pwgs.id
ORDER BY pwgs.create_time desc
@@ -179,6 +189,9 @@
and DATE_FORMAT (pcpr.payment_date,'%m') like concat(#{payWorkingGroupSubletSearch.paymentMonth}, '%')
</if>
</if>-->
<if test="payWorkingGroupSubletSearch.pack != null and payWorkingGroupSubletSearch.pack != ''">
AND pack = #{payWorkingGroupSubletSearch.pack}
</if>
</where>
group by id
</select>
@@ -251,6 +264,9 @@
</if>
</otherwise>
</choose>
<if test="payWorkingGroupSubletSearch.pack != null and payWorkingGroupSubletSearch.pack != ''">
AND pack = #{payWorkingGroupSubletSearch.pack}
</if>
<!--<if test="payWorkingGroupSubletSearch.paymentYear != null and payWorkingGroupSubletSearch.paymentYear != ''">
and DATE_FORMAT (pcpr.payment_date,'%Y') like concat(#{payWorkingGroupSubletSearch.paymentYear}, '%')
<if test="payWorkingGroupSubletSearch.paymentMonth != null and payWorkingGroupSubletSearch.paymentMonth != ''">
@@ -346,4 +362,9 @@
</where>
</select>
<select id="queryList" resultType="com.jero.project.entity.PayWorkingGroupSubItem">
select pwgs.* from pay_working_group_subitem pwgs
left join pay_working_group pwg ON pwgs.working_group_id = pwg.id
${ew.customSqlSegment}
</select>
</mapper>
@@ -1,5 +1,7 @@
package com.jero.project.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -123,4 +125,6 @@ public interface IPayWorkingGroupSubItemService extends IService<PayWorkingGroup
void setLabel(SetLabelVO setLabelVO);
void deleteLabel(SetLabelVO setLabelVO);
List<PayWorkingGroupSubItem> queryList(QueryWrapper<PayWorkingGroupSubItem> queryPayWorkingGroupSubItem);
}
@@ -93,7 +93,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
}
@Override
@Transactional()
@Transactional(rollbackFor = Exception.class)
public void addPayCommonProject(PayCommonProject payCommonProject) {
try {
// 编辑保存前再次校验来款项目是否存在
@@ -163,7 +163,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
}
@Override
@Transactional
@Transactional(rollbackFor = Exception.class)
public void editPayCommonProject(PayCommonProject payCommonProject) {
PayCommonProject payCommonProjectOld = payCommonProjectService.getById(payCommonProject);
if(Objects.isNull(payCommonProjectOld)){
@@ -266,7 +266,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
@Override
@Transactional
@Transactional(rollbackFor = Exception.class)
public void delete(String id) {
if(StringUtils.isBlank(id)){
throw new JeroBootException("id不能为空!");
@@ -279,7 +279,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
}
@Override
@Transactional
@Transactional(rollbackFor = Exception.class)
public void deleteBatch(String ids) {
if(StringUtils.isBlank(ids)){
throw new JeroBootException("id不能为空!");
@@ -251,7 +251,7 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
if(Objects.isNull(payCompanyManagementTemporary)){
payCompanyManagementTemporary = payCompanyManagementTemporaryService.insertCompanyManagementTemporary(p.getChargeCompanyId());
}else{
payCompanyManagementTemporary.setCompanyId(payCompanyManagementTemporary.getId());
payCompanyManagementTemporary.setCompanyId(payCompanyManagementTemporary.getCompanyId());
payCompanyManagementTemporary.setId(null);
payCompanyManagementTemporaryService.save(payCompanyManagementTemporary);
}
@@ -606,7 +606,9 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
List<AllProjectStatistics> listConfirmAmount = payWorkingGroupMapper.queryListConfirmAmount(allProjectStatisticsSearch);
List<AllProjectStatistics> listBillMoney = payWorkingGroupMapper.queryListBillMoney(allProjectStatisticsSearch);
List<AllProjectStatistics> listComeAllMoney = payWorkingGroupMapper.queryListComeAllMoney(allProjectStatisticsSearch);
return getAllProjectMoneyStatistics(allProjectStatisticsSearch,allMoneyList,listConfirmAmount, listBillMoney,listComeAllMoney);
// 预计到账金额
List<AllProjectStatistics> listEstimatedArrivalMoney = payWorkingGroupMapper.cumulativeListEstimatedArrivalMoney(allProjectStatisticsSearch.getPaymentYear());
return getAllProjectMoneyStatistics(allProjectStatisticsSearch,allMoneyList,listConfirmAmount, listBillMoney,listComeAllMoney,listEstimatedArrivalMoney);
}
@Override
@@ -615,7 +617,18 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
List<AllProjectStatistics> listConfirmAmount = payWorkingGroupMapper.cumulativeListConfirmAmount(allProjectStatisticsSearch.getPaymentYear());
List<AllProjectStatistics> listBillMoney = payWorkingGroupMapper.cumulativeListBillMoney(allProjectStatisticsSearch.getPaymentYear());
List<AllProjectStatistics> listComeAllMoney = payWorkingGroupMapper.cumulativeListComeAllMoney(allProjectStatisticsSearch.getPaymentYear());
return getAllProjectMoneyStatistics(allProjectStatisticsSearch,allMoneyList,listConfirmAmount, listBillMoney,listComeAllMoney);
// 预计到账金额
List<AllProjectStatistics> listEstimatedArrivalMoney = payWorkingGroupMapper.cumulativeListEstimatedArrivalMoney(allProjectStatisticsSearch.getPaymentYear());
// 累加金额
for (int i = 1; i < listEstimatedArrivalMoney.size(); i++) {
AllProjectStatistics obj = listEstimatedArrivalMoney.get(i);
AllProjectStatistics objLast = listEstimatedArrivalMoney.get(i-1);
BigDecimal n = new BigDecimal(obj.getEstimatedArrivalMoney());
BigDecimal l = new BigDecimal(objLast.getEstimatedArrivalMoney());
obj.setEstimatedArrivalMoney(n.add(l).toPlainString());
listEstimatedArrivalMoney.set(i,obj);
}
return getAllProjectMoneyStatistics(allProjectStatisticsSearch,allMoneyList,listConfirmAmount, listBillMoney,listComeAllMoney,listEstimatedArrivalMoney);
}
@Override
@@ -625,7 +638,9 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
List<AllProjectStatistics> listBillMoney = payWorkingGroupMapper.queryListBillMoney(allProjectStatisticsSearch);
List<AllProjectStatistics> listComeAllMoney = payWorkingGroupMapper.queryListComeAllMoney(allProjectStatisticsSearch);
List<AllProjectStatistics> list2=getAllProjectMoneyStatistics(allProjectStatisticsSearch,allMoneyList,listConfirmAmount, listBillMoney,listComeAllMoney);
// 预计到账金额
List<AllProjectStatistics> listEstimatedArrivalMoney = payWorkingGroupMapper.cumulativeListEstimatedArrivalMoney(allProjectStatisticsSearch.getPaymentYear());
List<AllProjectStatistics> list2=getAllProjectMoneyStatistics(allProjectStatisticsSearch,allMoneyList,listConfirmAmount, listBillMoney,listComeAllMoney,listEstimatedArrivalMoney);
AllMoney allMoney=payWorkingGroupMapper.queryPageList33(allProjectStatisticsSearch, idList);
List<String> comeAllMoneyList=list2.stream().map(AllProjectStatistics::getComeAllMoney).collect(Collectors.toList());
@@ -677,11 +692,13 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
List<AllProjectStatistics> allMoneyList,
List<AllProjectStatistics> listConfirmAmount,
List<AllProjectStatistics> listBillMoney,
List<AllProjectStatistics> listComeAllMoney) {
List<AllProjectStatistics> listComeAllMoney,
List<AllProjectStatistics> listEstimatedArrivalMoney) {
Map<String, String> allMoneyMap = allMoneyList.stream().collect(Collectors.toMap(AllProjectStatistics::getPaymentDate, AllProjectStatistics::getAllMoney));
Map<String, String> confirmAmountMap = listConfirmAmount.stream().collect(Collectors.toMap(AllProjectStatistics::getPaymentDate, AllProjectStatistics::getConfirmAmount));
Map<String, String> billMoneyMap = listBillMoney.stream().collect(Collectors.toMap(AllProjectStatistics::getPaymentDate, AllProjectStatistics::getBillMoney));
Map<String, String> comeAllMoneyMap = listComeAllMoney.stream().collect(Collectors.toMap(AllProjectStatistics::getPaymentDate, AllProjectStatistics::getComeAllMoney));
Map<String, String> estimatedArrivalMoneyMap = listEstimatedArrivalMoney.stream().collect(Collectors.toMap(AllProjectStatistics::getPaymentDate, AllProjectStatistics::getEstimatedArrivalMoney));
String paymentYear=allProjectStatisticsSearch.getPaymentYear();
List<String> yearMonth = getYearMonth(paymentYear);
@@ -692,6 +709,7 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
allProjectStatistics.setConfirmAmount("0.00");
allProjectStatistics.setBillMoney("0.00");
allProjectStatistics.setComeAllMoney("0.00");
allProjectStatistics.setEstimatedArrivalMoney("0.00");
allProjectStatistics.setPaymentDate(date);
returnList.add(allProjectStatistics);
}
@@ -709,6 +727,9 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
if (allMoneyMap.containsKey(paymentDate)) {
allProjectStatistics.setAllMoney(allMoneyMap.get(paymentDate));
}
if (estimatedArrivalMoneyMap.containsKey(paymentDate)) {
allProjectStatistics.setEstimatedArrivalMoney(estimatedArrivalMoneyMap.get(paymentDate));
}
}
return returnList;
}
@@ -2,6 +2,7 @@ package com.jero.project.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -56,11 +57,13 @@ import com.jero.temporary.service.IPayContactsManagementTemporaryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.shiro.SecurityUtils;
import org.jeecgframework.poi.excel.ExcelImportCheckUtil;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.core.env.Environment;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@@ -71,6 +74,9 @@ import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -129,6 +135,8 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
@Resource
PayWorkingGroupSubItemContactsMapper payWorkingGroupSubItemContactsMapper;
private static final String DATE_FORMAT = "yyyy-MM-dd";
@Override
public IPage<PayWorkingGroupSubItem> queryPageList(Page<PayWorkingGroupSubItem> page, PayWorkingGroupSubItem payWorkingGroupSubitem,String paymentDate) {
@@ -583,6 +591,26 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
msg.append("工作组不存在 !");
}
if(StringUtils.isBlank(msg)) {
// 校验预估到账日期
list.forEach(
p -> {
// 填充税率为默认值 6%
if (Objects.isNull(p.getTaxRate())) {
p.setTaxRate(new BigDecimal("0.06"));
}
String estimatedArrivalDate = p.getEstimatedArrivalDate();
if (Objects.isNull(estimatedArrivalDate)) {
msg.append("第").append(list.indexOf(p) + 3).append("行预估到账日期不能为空,请修改。<br/>");
}else {
try {
LocalDate.parse(estimatedArrivalDate,DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}catch (Exception e) {
msg.append("第").append(list.indexOf(p) + 3).append("行预估到账日期格式不正确,请修改。<br/>");
}
}
}
);
// 获取工作组成员
LambdaQueryWrapper<PayWorkingGroupSubItem> query = new LambdaQueryWrapper<>();
query.eq(PayWorkingGroupSubItem::getWorkingGroupId, workGroupId);
@@ -1040,6 +1068,12 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
payWorkingGroupSubItemMapper.update(null, updateWrapper);
}
@Override
public List<PayWorkingGroupSubItem> queryList(QueryWrapper<PayWorkingGroupSubItem> queryPayWorkingGroupSubItem) {
return payWorkingGroupSubItemMapper.queryList(queryPayWorkingGroupSubItem);
}
/**
* @Description 删除项目打包关联,临时企业、联系信息
* @Author lqt
@@ -4,10 +4,12 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.DecimalMax;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: pay_working_group_subitem
@@ -51,6 +53,14 @@ public class PayWorkingGroupSubItemExcel implements Serializable {
@ApiModelProperty(value = "实收金额(元)")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal paidAmount;
/**预估到账日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "预估到账日期")
@Excel(name = "预估到账日期",width = 15)
private String estimatedArrivalDate;
/**
* 合同编号
*/
@@ -63,6 +73,7 @@ public class PayWorkingGroupSubItemExcel implements Serializable {
@Excel(name = "收费通知号", width = 15)
@ApiModelProperty(value = "收费通知号")
private String chargeNoticeNo;
/**
* 打包
*/
@@ -0,0 +1,65 @@
package com.jero.statistics.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.meeting.service.IPayMeetingService;
import com.jero.meeting.service.IPayMeetingSituationService;
import com.jero.payment.service.impl.PayConfirmPaymentRecordService;
import com.jero.statistics.entity.MeetingPackStatisticsSearch;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
/**
* @author zql
* @date 2021/9/20 21:00:00
*/
@Api(tags = "会议打包统计")
@RestController
@RequestMapping("/statistics/meetingPackStatistics")
@Slf4j
public class MeetingPackStatisticsController {
@Resource
private IPayMeetingSituationService payMeetingSituationService;
@Resource
private IPayMeetingService payMeetingService;
@Resource
private PayConfirmPaymentRecordService payConfirmPaymentRecordService;
/**
* 分页列表查询
*
* @param metingPackStatisticsSearch 会议打包统计
* @param pageNo 页数
* @param pageSize 条数
*/
// @RequiresPermissions("individualPaymentStatistics:search")
@ApiOperation(value = "会议打包统计-分页列表查询", notes = "会议打包统计-分页列表查询")
@GetMapping(value = "/page")
public Result<?> list(MeetingPackStatisticsSearch metingPackStatisticsSearch,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
return Result.OK(payMeetingSituationService.getMeetingPackStatistics(metingPackStatisticsSearch, pageNo, pageSize));
}
/**
* 导出
*
* @param metingPackStatisticsSearch
*/
@AutoLog(value = "会议打包统计-导出统计")
@ApiOperation(value = "会议打包统计-导出统计", notes = "会议打包统计-导出统计")
@GetMapping(value = "/excelMeetingPackStatistics")
public ModelAndView excelMeetingPackStatistics(MeetingPackStatisticsSearch metingPackStatisticsSearch) {
return payMeetingSituationService.excelMeetingPackStatistics(metingPackStatisticsSearch);
}
}
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.constant.enums.LoginType;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.LoginUser;
import com.jero.mail.commont.constant;
@@ -63,12 +64,19 @@ public class PrincipalPeopleStatisticsController {
//判断登录角色,显示特定内容,判断依据为登录用户的角色和机构编码
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String roleCode = sysUser.getRoleCode();
LoginType loginType = sysUser.getLoginType();
List<String> roleCodes = new ArrayList<>(Arrays.asList(roleCode.split(",")));
//admin
if (roleCodes.contains(constant.ADMIN)|| roleCodes.contains(constant.SLD)) {
if (LoginType.EXTERNAL.equals(loginType)){
return Result.OK();
}
idList = null;
//部门负责人
} else if (roleCodes.contains(constant.BMFZR) ) {
if (LoginType.EXTERNAL.equals(loginType)){
return Result.OK();
}
//获取本部门及其所有下部部门所有成员(不包含最开始的部门下级成员)
List<String> allDepartIds = sysBaseAPI.getAllUserIdsByDepart(sysUser.getDepartIds(), idList);
//获取本部门成员
@@ -80,6 +80,10 @@ public class AllProjectStatistics {
@ApiModelProperty(value = "项目年份")
private String year;
@ApiModelProperty(value = "预计到账金额")
private String estimatedArrivalMoney;
public AllProjectStatistics(String allMoney, String confirmAmount, String billMoney, String comeAllMoney, String paymentDate) {
this.allMoney=allMoney;
@@ -0,0 +1,64 @@
package com.jero.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author lqt
* @version 1.0
* @date 2023/12/27 17:53
*/
@Data
public class MeetingPackStatistics implements Serializable {
@ApiModelProperty(value = "参会人id")
private String id;
@ApiModelProperty(value = "会议id")
private String meetingId;
@Excel(name = "会议名称", width = 15)
@ApiModelProperty(value = "会议名称")
private String meetingName;
@Excel(name = "会议类型", width = 15, dicCode = "meeting_type")
@ApiModelProperty(value = "会议类型")
private Integer meetingType;
@Excel(name = "来款单位", width = 15)
@ApiModelProperty(value = "来款单位")
private String companyName;
@Excel(name = "参会人员", width = 15)
@ApiModelProperty(value = "参会人员")
private String companyContactName;
@Excel(name = "年度待确收金额", width = 15)
@ApiModelProperty(value = "应收金额")
private String allMoney;
@Excel(name = "确认收入金额", width = 15)
@ApiModelProperty(value = "确认金额")
private String confirmAmount;
@Excel(name = "开票金额", width = 15)
@ApiModelProperty(value = "开票金额")
private String billMoney;
@Excel(name = "到账金额", width = 15)
@ApiModelProperty(value = "到账金额")
private String comeAllMoney;
@ApiModelProperty(value = "确认年份")
private BigDecimal paymentYear;
@ApiModelProperty(value = "会议类型")
private String meetingType_dictText;
}
@@ -0,0 +1,28 @@
package com.jero.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author lqt
* @version 1.0
* @date 2023/12/27 17:53
*/
@Data
public class MeetingPackStatisticsSearch implements Serializable {
@ApiModelProperty(value = "来款单位")
private String companyName;
@ApiModelProperty(value = "确认年份")
private String paymentYear;
@ApiModelProperty(value = "来款方式(默认打包)")
private String payMode;
@ApiModelProperty(value = "字段")
private String column;
@ApiModelProperty(value = "排序规则")
private String order;
}
@@ -84,7 +84,7 @@ public class OSSFileController {
*/
@ResponseBody
@GetMapping("/queryById")
public Result<OSSFile> queryById(@RequestParam(name = "id") String id) {
public Result<OSSFile> queryById(@RequestParam(name = "id",required = false) String id) {
Result<OSSFile> result = new Result<>();
OSSFile file = ossFileService.getById(id);
if (file == null) {
@@ -136,15 +136,15 @@ spring:
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
datasource:
master:
url: jdbc:p6spy:mysql://10.10.10.44:3306/income_payments_online_test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
url: jdbc:p6spy:mysql://lijiarao.cn:3306/income_payments_prod?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: hzwlsoft.com
password: 704670af746903fa
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
# 多数据源配置
multi-datasource1:
url: jdbc:p6spy:mysql://10.10.10.44:3306/standards_association?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&serverTimezone=Asia/Shanghai
url: jdbc:p6spy:mysql://lijiarao.cn:3306/standards_association?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&serverTimezone=Asia/Shanghai
username: root
password: hzwlsoft.com
password: 704670af746903fa
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
redis:
database: 14