Merge branch '2023年7月变更'

# Conflicts:
#	jero-boot-incoming-payment/src/main/java/com/jero/common/mapper/xml/ProjectDetailMapper.xml
This commit is contained in:
lijiarao
2023-08-08 15:25:05 +08:00
97 changed files with 2273 additions and 254 deletions
+66
View File
@@ -0,0 +1,66 @@
ALTER TABLE pay_working_group_subitem
ADD COLUMN label varchar(50) NULL COMMENT '标签';
ALTER TABLE pay_meeting_situation
ADD COLUMN guests_upload_file_flag tinyint NULL COMMENT '嘉宾上传文件标识';
create table pay_meeting_guests_file
(
id varchar(36) not null comment 'id',
meeting_id varchar(50) null comment '会议id',
contacts_id varchar(50) null comment '联系人id',
file_id varchar(50) null comment '文件id',
constraint Index_1
unique (id)
)
comment '会议嘉宾文件表';
alter table pay_meeting_guests_file
add primary key (id);
ALTER TABLE sys_announcement ADD deadline datetime COMMENT '截止时间';
CREATE TABLE sys_notice (
id VARCHAR(50) PRIMARY KEY COMMENT 'id',
notice_name VARCHAR(100) NULL COMMENT '公告名称',
notice_content VARCHAR(300) NULL COMMENT '公告内容',
notice_file VARCHAR(1000) NULL COMMENT '附件',
notice_status INT(1) NULL COMMENT '状态(1-启用,0-禁用)',
create_by VARCHAR(50) NULL COMMENT '创建人',
create_time datetime(0) NULL COMMENT '创建日期',
update_by VARCHAR(50) NULL COMMENT '更新人',
update_time datetime(0) NULL COMMENT '更新日期'
) COMMENT '公告管理表';
ALTER TABLE pay_meeting_situation
ADD COLUMN company_address varchar(100) NULL COMMENT '公司地址',
ADD COLUMN company_phone varchar(200) NULL COMMENT '公司电话',
ADD COLUMN opening_bank varchar(50) NULL COMMENT '开户行',
ADD COLUMN bank_account varchar(50) NULL COMMENT '银行账号',
ADD COLUMN duty_code varchar(50) NULL COMMENT '信用代码',
ADD COLUMN link_bank_number varchar(50) NULL COMMENT '联行号';
ALTER TABLE pay_meeting_situation
ADD COLUMN invoice_project tinyint(4) NULL 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`) VALUES ('1683388669166919681', '1443470901166039042', '资料状态(嘉宾是否可以在企业端上传)', NULL, NULL, NULL, NULL, 2, 'standardsMeetingSituation:guestsUploadFileFlag', '1', 10.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-07-24 16:08:29', NULL, NULL, 0, 0, '1', 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`) VALUES ('1683387405624451074', '1470954992463327234', '资料状态(嘉宾是否可以在企业端上传)', NULL, NULL, NULL, NULL, 2, 'councilMeetingSituation:guestsUploadFileFlag', '1', 10.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-07-24 16:03:28', NULL, NULL, 0, 0, '1', 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`) VALUES ('1683387007220097026', '1433322232030777345', '资料状态(嘉宾是否可以在企业端上传)', NULL, NULL, NULL, NULL, 2, 'internalMeetingSituation:guestsUploadFileFlag', '1', 10.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-07-24 16:01:53', NULL, NULL, 0, 0, '1', 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`) VALUES ('1683386847723298817', '1430828460107730946', '资料状态(嘉宾是否可以在企业端上传)', NULL, NULL, NULL, NULL, 2, 'workGroupMeetingSituation:guestsUploadFileFlag', '1', 10.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-07-24 16:01:15', NULL, NULL, 0, 0, '1', 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`) VALUES ('1683386691921682434', '1443461591480487938', '资料状态(嘉宾是否可以在企业端上传)', NULL, NULL, NULL, NULL, 2, 'committeeMeetingSituation:guestsUploadFileFlag', '1', 9.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-07-24 16:00:38', NULL, NULL, 0, 0, '1', 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`) VALUES ('1683386401755537409', '1443460205023940610', '资料状态(嘉宾是否可以在企业端上传)', NULL, NULL, NULL, NULL, 2, 'otherMeetingSituation:guestsUploadFileFlag', '1', 9.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-07-24 15:59:29', NULL, NULL, 0, 0, '1', 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`) VALUES ('1683385996128591874', '1431167539278086146', '设置标签', '', NULL, NULL, NULL, 2, 'workingGroupMember:setLabel', '1', 11.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-07-24 15:57:52', NULL, NULL, 0, 0, '1', 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`) VALUES ('1679782926731005953', '1679684027710234625', '删除', NULL, NULL, NULL, NULL, 2, 'sysNotice:deleteById', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-07-14 17:20:33', 'LKGLZ', '2023-07-14 17:25:35', 0, 0, '1', 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`) VALUES ('1679782858711977986', '1679684027710234625', '编辑', NULL, NULL, NULL, NULL, 2, 'sysNotice:edit', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-07-14 17:20:17', 'LKGLZ', '2023-07-14 17:25:29', 0, 0, '1', 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`) VALUES ('1679782784619597825', '1679684027710234625', '新增', NULL, NULL, NULL, NULL, 2, 'sysNotice:add', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-07-14 17:19:59', 'LKGLZ', '2023-07-14 17:25:23', 0, 0, '1', 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`) VALUES ('1679782718844522497', '1679684027710234625', '查询', '', NULL, NULL, NULL, 2, 'sysNotice:pageList', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2023-07-14 17:19:44', 'LKGLZ', '2023-07-14 17:25:16', 0, 0, '1', 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`) VALUES ('1679684027710234625', '5c8042bd6c601270b2bbd9b20bccc68b', '公告管理', '/isystem/noticeList', 'modules/notice/SysNoticeList', NULL, NULL, 1, NULL, '1', 3.00, 0, NULL, 1, 0, 0, 0, NULL, 'LKGLZ', '2023-07-14 10:47:34', NULL, NULL, 0, 0, '1', 0);
ALTER TABLE pay_meeting ADD file_ids varchar(1000) COMMENT '会议文件';
INSERT INTO `sys_dict` (`id`, `dict_name`, `dict_code`, `description`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `type`) VALUES ('1683411632557694977', '缴费类别', 'invoice_project', '', 0, 'LKGLZ', '2023-07-24 17:39:44', NULL, NULL, 0);
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1683411695635832833', '1683411632557694977', '会议费', '1', '', 1.00, 1, 'LKGLZ', '2023-07-24 17:39:59', NULL, NULL);
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1683411736203141122', '1683411632557694977', '培训费', '2', '', 2.00, 1, 'LKGLZ', '2023-07-24 17:40:09', NULL, NULL);
@@ -57,7 +57,9 @@ public class AutoPoiDictConfig implements AutoPoiDictServiceI {
}
}
if (dictReplaces != null && dictReplaces.size() != 0) {
log.info("---AutoPoi--Get_DB_Dict------"+ dictReplaces.toString());
if (oConvertUtils.isEmpty(dicTable)) {
log.info("---AutoPoi--Get_DB_Dict------"+ dictReplaces.toString());
}
return dictReplaces.toArray(new String[dictReplaces.size()]);
}
return null;
@@ -189,6 +189,9 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/company/payContactsManagement/addMeeting","anon");
filterChainDefinitionMap.put("/company/payContactsManagement/queryByIdMeeting","anon");
filterChainDefinitionMap.put("/company/payContactsManagement/queryWXByCompany","anon");
//无权限直接编辑企业发票信息
filterChainDefinitionMap.put("/company/payCompanyManagement/updateInvoice","anon");
//企业端注册个人
filterChainDefinitionMap.put("/home/registerSelf", "anon");
// 判断当前企业是否是内部企业
@@ -1,5 +1,6 @@
package com.jero.common.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@@ -53,4 +54,9 @@ public class SendMessageDTO implements Serializable {
* 文件名集合(邮箱发送附件)
*/
private List<String> listFile;
/**
* 是否发送邮件
*/
@ApiModelProperty(value = "是否发送邮件")
private Integer sendEmailFlag;
}
@@ -5,7 +5,7 @@
<select id="queryProject" resultType="com.jero.project.entity.PayCommonProject">
<!-- 普通项目-->
select c.id,c.charge_project, c.charge_use, c.principal_id,su.realname as principal_name,c.contacts_temporary_id,c.contacts_temporary_name,c.charge_company_temporary_name,c.receivable_amount,c.paid_amount,c.need_invoice,c.pack,c.in_account,c.make_invoice,c.mail,c.create_time,1 as projectType,'' as phone,'' as email,c.remarks,c.contract_num,c.charge_company_temporary_id,c.charge_way,c.files,c.charge_notice_no,c.charge_notice_id,c.year,c.mail_contacts_temporary_name,'' as mission_and_objectives
,c.tax_rate,c.tax,c.no_tax_amount
,c.tax_rate,c.tax,c.no_tax_amount,c.affirm_income
from pay_common_project c
left join sys_user su on c.principal_id = su.id
<where>
@@ -16,7 +16,7 @@
<!--工作组项目-->
UNION ALL
select gsub.id,g.working_group_project, gsub.charge_use, g.principal_id_a,su.realname,gsub.contacts_temporary_id_one,gsub.contacts_temporary_name_one,gsub.charge_company_temporary_name,gsub.receivable_amount,gsub.paid_amount,gsub.need_invoice,gsub.pack,gsub.in_account,gsub.make_invoice,gsub.mail,gsub.create_time,2,'','',gsub.remarks,gsub.contract_num,gsub.charge_company_temporary_id,gsub.charge_way,'',gsub.charge_notice_no,gsub.charge_notice_id,g.year,gsub.mail_contacts_temporary_name,g.mission_and_objectives
,gsub.tax_rate,gsub.tax,gsub.no_tax_amount
,gsub.tax_rate,gsub.tax,gsub.no_tax_amount,affirm_income
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
@@ -28,7 +28,7 @@
<!-- 会议项目-->
UNION ALL
select sit.id,meeting.meeting_name,sit.charge_use, meeting.director_id, su.realname,sit.company_contact_id,sit.company_contact_name,sit.company_name,sit.amount_receivable,sit.paid_amount,sit.need_invoice,sit.pack,sit.in_account,sit.make_invoice,sit.mail,sit.create_time,3,'','',sit.remark,'',sit.company_id,sit.pay_mode,'','','','','',''
,sit.tax_rate,sit.tax,sit.no_tax_amount
,sit.tax_rate,sit.tax,sit.no_tax_amount,affirm_income
from pay_meeting meeting
left join sys_user su on meeting.director_id = su.id
inner join pay_meeting_situation sit on meeting.id = sit.meeting_id
@@ -40,7 +40,7 @@
<!-- 会员项目-->
UNION ALL
select msub.id,pmp.project_name,msub.charge_use,pmp.director_id,su.realname,msub.company_contact_temporary_id,msub.company_contact_name,msub.company_name,msub.amount_receivable,msub.paid_amount,msub.need_invoice,msub.pack,msub.in_account,msub.make_invoice,msub.mail,msub.create_time,4,'','',msub.remark,msub.contract_no as contract_num,msub.company_temporary_id,msub.payment_method,'',msub.charge_notice_no,msub.charge_notice_file_id,pmp.particular_year,msub.post_contact_name,''
,msub.tax_rate,msub.tax,msub.no_tax_amount
,msub.tax_rate,msub.tax,msub.no_tax_amount,affirm_income
from pay_member_project pmp
left join sys_user su on pmp.director_id = su.id
inner join pay_member_project_subitem msub on pmp.id = msub.project_id
@@ -52,7 +52,7 @@
<!-- 标协会员项目-->
UNION ALL
select tmsub.id,tmember.project_name,tmsub.charge_use,tmember.director_id,su.realname,tmsub.liaison_man_id,tmsub.liaison_man,tmsub.company_name,tmsub.amount_receivable,tmsub.paid_amount,tmsub.invoice_requirements,tmsub.pack,tmsub.in_account,tmsub.make_invoice,tmsub.mail,tmsub.create_time,5,tmsub.mobile,tmsub.email,'',pic.contract_num,tmsub.company_id,tmsub.payment_method,'','','',tmember.year,'',''
,tmsub.tax_rate,tmsub.tax,tmsub.no_tax_amount
,tmsub.tax_rate,tmsub.tax,tmsub.no_tax_amount,affirm_income
from tb_member_project tmember
left join sys_user su on tmember.director_id = su.id
inner join tb_member_project_subitem tmsub on tmember.id=tmsub.project_id
@@ -66,7 +66,7 @@
<!-- 标协会员证书项目-->
UNION ALL
select tmps.id,tmember.project_name,tmps.charge_use,tmember.director_id,su.realname,tmps.liaison_man_id,tmps.liaison_man,tmps.company_name,tmps.amount_receivable,tmps.paid_amount,tmps.invoice_requirements,tmps.pack,tmps.in_account,tmps.make_invoice,tmps.mail,tmps.create_time,5,tmps.mobile,tmps.email,'','',tmps.company_id,tmps.payment_method,'','','',tmember.year,'',''
,tmps.tax_rate,tmps.tax,tmps.no_tax_amount
,tmps.tax_rate,tmps.tax,tmps.no_tax_amount,affirm_income
from tb_member_project tmember
left join sys_user su on tmember.director_id = su.id
inner join tb_certificate_payment tmps on tmember.id=tmps.project_id
@@ -104,8 +104,9 @@ public class SendMessageServiceImpl implements SendMessageService {
// 1短信 2邮件 3系统
// 发送邮件 true
String fromUser = sendMessageDTO.getFromUser();
Integer sendEmailFlag = sendMessageDTO.getSendEmailFlag();
LoginUser loginUser = sysBaseAPI.getUserByName(fromUser);
if(templateType.contains(ProjectCommon.MESSAGE_TYPE2)){
if(templateType.contains(ProjectCommon.MESSAGE_TYPE2) && !CommonConstant.DEL_FLAG_0.equals(sendEmailFlag)){
if(StringUtils.isEmpty(sendMessageDTO.getEmail())){
throw new JeroBootException("邮件发送,邮箱地址不能为空!");
}
@@ -25,6 +25,7 @@ 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.company.vo.UpdateInvoicePram;
import com.jero.meeting.entity.PayMeetingSituation;
import com.jero.meeting.service.IPayMeetingSituationService;
import com.jero.member.entity.PayMemberProjectSubitem;
@@ -763,6 +764,9 @@ public class PayCompanyManagementController extends JeroController<PayCompanyMan
if(payCompanyManagement==null) {
return Result.error("未找到对应数据");
}
if (!StringUtils.isBlank(payCompanyManagement.getCompanyPhone())){
payCompanyManagement.setCompanyPhone(PasswordUtil.decrypt(payCompanyManagement.getCompanyPhone()));
}
return Result.OK(payCompanyManagement);
}
@@ -1004,4 +1008,16 @@ public class PayCompanyManagementController extends JeroController<PayCompanyMan
return Result.OK("同步成功!");
}
/**
* 无权限直接编辑企业发票信息
*
* @return
*/
@ApiOperation(value="无权限直接编辑企业发票信息")
@PostMapping(value = "/updateInvoice")
public Result<?> updateInvoice(@RequestBody UpdateInvoicePram updateInvoicePram) {
payCompanyManagementService.updateInvoice(updateInvoicePram);
return Result.OK("确认成功!");
}
}
@@ -167,4 +167,9 @@ public class PayContactsManagement implements Serializable {
@ApiModelProperty(value = "删除状态")
private String delFlag;
@TableField(exist = false)
@ApiModelProperty(value = "是否已提醒")
@Dict(dicCode = "yn")
private Integer remind;
}
@@ -4,6 +4,7 @@ package com.jero.company.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.company.entity.PayCompanyAndContactsManagement;
import com.jero.company.entity.PayCompanyManagement;
import com.jero.company.vo.UpdateInvoicePram;
import java.util.List;
@@ -94,6 +95,8 @@ public interface IPayCompanyManagementService extends IService<PayCompanyManagem
*/
void edit(PayCompanyManagement payCompanyManagement);
void updateInvoice(UpdateInvoicePram updateInvoicePram);
/**
* @Description 确认
* @Author lqt
@@ -7,6 +7,7 @@ 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.extension.service.impl.ServiceImpl;
import com.jero.common.common.ProjectCommon;
import com.jero.common.common.RoleCommon;
import com.jero.common.dto.SendMessageDTO;
import com.jero.common.enums.ManagementMessageEnums;
@@ -27,6 +28,7 @@ import com.jero.company.service.IPayCompanyManagementService;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.company.service.ProjectCountService;
import com.jero.company.vo.CompanyOrContactsCount;
import com.jero.company.vo.UpdateInvoicePram;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.service.IPayIncomeContractService;
import com.jero.member.entity.PayMemberProjectSubitem;
@@ -437,6 +439,84 @@ public class PayCompanyManagementServiceImpl extends ServiceImpl<PayCompanyManag
}
@Override
public void updateInvoice(UpdateInvoicePram updateInvoicePram) {
String id = updateInvoicePram.getId();
Integer needInvoice = updateInvoicePram.getNeedInvoice();
String companyName = updateInvoicePram.getCompanyName();
String dutyCode = updateInvoicePram.getDutyCode();
String companyAddress = updateInvoicePram.getCompanyAddress();
String companyPhone = updateInvoicePram.getCompanyPhone();
String openingBank = updateInvoicePram.getOpeningBank();
String bankAccount = updateInvoicePram.getBankAccount();
String linkBankNumber = updateInvoicePram.getLinkBankNumber();
ValidUtil.validate(updateInvoicePram);
//普通发票
if (Objects.equals(needInvoice, ProjectCommon.NEED_INVOICE1)) {
ValidUtil.validate(updateInvoicePram, UpdateInvoicePram.needInvoice_1.class);
} else if (Objects.equals(needInvoice, ProjectCommon.NEED_INVOICE2)) {
ValidUtil.validate(updateInvoicePram, UpdateInvoicePram.needInvoice_2.class);
} else {
throw new JeroBootException("需要发票才可变更");
}
PayCompanyManagement payCompanyManagementOld = payCompanyManagementService.getById(id);
if (Objects.isNull(payCompanyManagementOld)) {
throw new JeroBootException("企业不存在!");
}
try {
// 编辑保存企业前再次校验企业名称是否存在
LambdaQueryWrapper<PayCompanyManagement> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PayCompanyManagement::getCompanyName,companyName);
PayCompanyManagement payCompanyManagementNew = payCompanyManagementService.getOne(queryWrapper);
// 企业名称存在,并且编辑id与查询不同,则校验不通过
if(!Objects.isNull(payCompanyManagementNew) && !Objects.equals(payCompanyManagementNew.getId(),id)) {
throw new JeroBootException("企业名称已存在!");
}
}catch (Exception e){
throw new JeroBootException("企业名称已存在!");
}
if(!StringUtils.isBlank(companyPhone)){
try {
companyPhone = PasswordUtil.encrypt(companyPhone);
}catch (Exception e){
throw new JeroBootException("公司电话加密异常!");
}
}
// 会员企业编辑同步会员系统
if(Objects.equals(payCompanyManagementOld.getRoleCode(),PayCompanyManagementCommon.ROLE_CODE2)){
if(!Objects.equals(payCompanyManagementOld.getCompanyName(),companyName)){
throw new JeroBootException("会员企业名称不可修改!");
}
// 调用会员项目接口
MemberInfo memberInfo = new MemberInfo();
memberInfo.setCompanyName(companyName);
memberInfo.setId(payCompanyManagementOld.getMemberId());
memberInfo.setTaxNo(dutyCode);
memberInfo.setDepositBank(openingBank);
memberInfo.setBankAccount(bankAccount);
memberInfo.setInvoiceAddress(companyAddress);
memberInfo.setInvoicePhone(companyPhone);
memberInfo.setLinkBankNumber(linkBankNumber);
AuthenticationUtils.post("/memberInfo/memberInfo/incomingEdit","",memberInfo);
}
LambdaUpdateWrapper<PayCompanyManagement> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(PayCompanyManagement::getId,id);
updateWrapper.set(PayCompanyManagement::getCompanyName,companyName);
updateWrapper.set(PayCompanyManagement::getDutyCode,dutyCode);
//普通发票不set下面的
if (!Objects.equals(needInvoice, 1)) {
updateWrapper.set( PayCompanyManagement::getCompanyAddress,companyAddress);
updateWrapper.set(PayCompanyManagement::getCompanyPhone,companyPhone);
updateWrapper.set(PayCompanyManagement::getOpeningBank,openingBank);
updateWrapper.set(PayCompanyManagement::getBankAccount,bankAccount);
updateWrapper.set(PayCompanyManagement::getLinkBankNumber,linkBankNumber);
}
payCompanyManagementService.update(updateWrapper);
}
@Override
@Transactional(rollbackFor = JeroBootException.class)
public void audit(String id) {
@@ -126,7 +126,8 @@ public class PayContactsManagementServiceImpl extends ServiceImpl<PayContactsMan
if(Objects.isNull(payContactsManagementOld)){
throw new JeroBootException("联系人不存在!");
}
if(!Objects.equals(payContactsManagementOld.getName(),payContactsManagement.getName())){
// 2023年7月需求变更(企业姓名手机号可以修改)
/*if(!Objects.equals(payContactsManagementOld.getName(),payContactsManagement.getName())){
throw new JeroBootException("姓名不可修改!");
}
if(!Objects.equals(PasswordUtil.decrypt(payContactsManagementOld.getPhone()),payContactsManagement.getPhone())){
@@ -134,7 +135,7 @@ public class PayContactsManagementServiceImpl extends ServiceImpl<PayContactsMan
}
if(!Objects.equals(payContactsManagementOld.getCompanyId(),payContactsManagement.getCompanyId())){
throw new JeroBootException("企业不可修改!");
}
}*/
try {
String phone = PasswordUtil.encrypt(payContactsManagement.getPhone());
@@ -167,16 +168,21 @@ public class PayContactsManagementServiceImpl extends ServiceImpl<PayContactsMan
// 企业管理员变更,并且变更了企业,需要同步会员项目
if(Objects.equals(payContactsManagementOld.getRoleCode(),PayContactsManagementCommon.ROLE_CODE2)){
// 调用会员项目接口
MemberInfo memberInfo = new MemberInfo();
memberInfo.setCompanyName(payCompanyManagement.getCompanyName());
memberInfo.setId(payCompanyManagement.getMemberId());
memberInfo.setLiaisonMan(payContactsManagement.getName());
memberInfo.setEmail(payContactsManagement.getEmail());
memberInfo.setMobile(payContactsManagement.getPhone());
memberInfo.setAddress(payContactsManagement.getContactAddress());
memberInfo.setPostcode(payContactsManagement.getPostalCode());
AuthenticationUtils.post("/memberInfo/memberInfo/incomingEdit","",memberInfo);
// 变更了企业,企业管理员不允许变更企业
if(!Objects.equals(payContactsManagementOld.getCompanyId(),payContactsManagement.getCompanyId())){
throw new JeroBootException("企业管理员不允许变更企业");
}else {
// 调用会员项目接口
MemberInfo memberInfo = new MemberInfo();
memberInfo.setCompanyName(payCompanyManagement.getCompanyName());
memberInfo.setId(payCompanyManagement.getMemberId());
memberInfo.setLiaisonMan(payContactsManagement.getName());
memberInfo.setEmail(payContactsManagement.getEmail());
memberInfo.setMobile(payContactsManagement.getPhone());
memberInfo.setAddress(payContactsManagement.getContactAddress());
memberInfo.setPostcode(payContactsManagement.getPostalCode());
AuthenticationUtils.post("/memberInfo/memberInfo/incomingEdit", "", memberInfo);
}
}
try {
@@ -0,0 +1,68 @@
package com.jero.company.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import javax.validation.constraints.*;
/**
* @author liJiaRao
* @date 2023-07-18 16:28
*/
@Data
public class UpdateInvoicePram {
/**主键*/
@ApiModelProperty(value = "公司id")
private String id;
/**需要发票*/
@ApiModelProperty(value = "需要发票")
@Min(0)
@Max(2)
@Dict(dicCode = "invoice_type")
private Integer needInvoice;
/**企业名称*/
@Excel(name = "企业名称", width = 15)
@ApiModelProperty(value = "企业名称")
@NotEmpty(message = "企业名称不能为空",groups = {needInvoice_1.class,needInvoice_2.class})
@Size(max = 50, message = "企业名称长度不能大于50个字符",groups = {needInvoice_1.class,needInvoice_2.class})
private String companyName;
/**信用代码*/
@ApiModelProperty(value = "信用代码")
@NotEmpty(message = "信用代码不能为空",groups = {needInvoice_1.class,needInvoice_2.class})
@Size(max = 18, message = "信用代码长度不能大于18个字符",groups = {needInvoice_1.class,needInvoice_2.class})
@Pattern(regexp = "^([0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\\d{14})$",message = "信用代码格式错误",groups = {needInvoice_1.class,needInvoice_2.class})
private String dutyCode;
/**公司地址*/
@ApiModelProperty(value = "公司地址")
@NotEmpty(message = "公司地址不能为空",groups = needInvoice_2.class)
@Size(max = 50, message = "公司地址长度不能大于50个字符",groups = needInvoice_2.class)
private String companyAddress;
/**公司电话*/
@ApiModelProperty(value = "公司电话")
@Size(max = 15, message = "公司电话长度不能大于15个字符",groups = needInvoice_2.class)
@Pattern(regexp = "^([0-9-]+)$",message = "公司电话格式错误",groups = needInvoice_2.class)
private String companyPhone;
/**开户行*/
@ApiModelProperty(value = "开户行")
@NotEmpty(message = "开户行不能为空",groups = needInvoice_2.class)
@Size(max = 50, message = "开户行长度不能大于50个字符",groups = needInvoice_2.class)
private String openingBank;
/**银行账号*/
@ApiModelProperty(value = "银行账号")
@NotEmpty(message = "银行账号不能为空",groups = needInvoice_2.class)
@Size(max = 50, message = "银行账号长度不能大于50个字符",groups = needInvoice_2.class)
private String bankAccount;
/**联行号*/
@ApiModelProperty(value = "联行号")
@NotEmpty(message = "联行号不能为空",groups = needInvoice_2.class)
private String linkBankNumber;
public @interface needInvoice_1 {
}
public @interface needInvoice_2 {
}
}
@@ -0,0 +1,72 @@
package com.jero.data.entity;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.Data;
/**
*
*@author liJiaRao
*@date 2023-07-12 10:52
*/
/**
* 文件邮件提醒记录表
*/
@ApiModel(description="文件邮件提醒记录表")
@Data
@TableName(value = "pay_file_email_remind_record")
public class PayFileEmailRemindRecord {
/**
* id
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
@ApiModelProperty(value="id")
private String id;
/**
* 创建人
*/
@TableField(value = "create_by")
@ApiModelProperty(value="创建人")
private String createBy;
/**
* 创建日期
*/
@TableField(value = "create_time")
@ApiModelProperty(value="创建日期")
private Date createTime;
/**
* 更新人
*/
@TableField(value = "update_by")
@ApiModelProperty(value="更新人")
private String updateBy;
/**
* 更新日期
*/
@TableField(value = "update_time")
@ApiModelProperty(value="更新日期")
private Date updateTime;
/**
* 会议id
*/
@TableField(value = "file_id")
@ApiModelProperty(value="会议id")
private String fileId;
/**
* 联系人id
*/
@TableField(value = "contact_id")
@ApiModelProperty(value="联系人id")
private String contactId;
}
@@ -0,0 +1,18 @@
package com.jero.data.mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import com.baomidou.mybatisplus.core.injector.methods.SelectMaps;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.data.entity.PayFileEmailRemindRecord;
/**
*
*@author liJiaRao
*@date 2023-07-12 10:52
*/
public interface PayFileEmailRemindRecordMapper extends BaseMapper<PayFileEmailRemindRecord> {
List<String> selectContactIdByFileId(@Param("fileId")String fileId);
}
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.data.mapper.PayFileEmailRemindRecordMapper">
<resultMap id="BaseResultMap" type="com.jero.data.entity.PayFileEmailRemindRecord">
<!--@mbg.generated-->
<!--@Table pay_file_email_remind_record-->
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="file_id" jdbcType="VARCHAR" property="fileId" />
<result column="contact_id" jdbcType="VARCHAR" property="contactId" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, create_by, create_time, update_by, update_time, file_id, contact_id
</sql>
<!--auto generated by MybatisCodeHelper on 2023-07-12-->
<select id="selectContactIdByFileId" resultType="java.lang.String">
select contact_id
from pay_file_email_remind_record
where file_id=#{fileId,jdbcType=VARCHAR}
</select>
</mapper>
@@ -0,0 +1,29 @@
package com.jero.data.service.impl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.data.entity.PayFileEmailRemindRecord;
import com.jero.data.mapper.PayFileEmailRemindRecordMapper;
/**
*
*@author liJiaRao
*@date 2023-07-12 10:52
*/
@Service
public class PayFileEmailRemindRecordService extends ServiceImpl<PayFileEmailRemindRecordMapper, PayFileEmailRemindRecord> {
public void insertByFileList(String fileIds, String contactId) {
String[] fileIdList = fileIds.split(",");
for (String fileId : fileIdList) {
PayFileEmailRemindRecord payFileEmailRemindRecord = new PayFileEmailRemindRecord();
payFileEmailRemindRecord.setFileId(fileId);
payFileEmailRemindRecord.setContactId(contactId);
this.save(payFileEmailRemindRecord);
}
}
}
@@ -164,6 +164,49 @@ public class PayMailBillController extends JeroController<PayMailBill, IPayMailB
return Result.OK(pageList);
}
/**
* 分页列表查询
*
* @param payMailBillSearch
* @param pageNo
* @param pageSize
* @param
* @return
*/
@ApiOperation(value="邮寄票据-企业人员查询")
@GetMapping(value = "/contactsSearch")
public Result<?> contactsSearch(PayMailBillSearch payMailBillSearch,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
QueryWrapper<PayMailBill> queryWrapper = new QueryWrapper<>();
Page<PayMailBill> page = new Page<>(pageNo, pageSize);
if (ObjectUtil.isNotEmpty(payMailBillSearch.getStartTime()) && ObjectUtil.isNotEmpty(payMailBillSearch.getEndTime())) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(payMailBillSearch.getEndTime());
calendar.add(Calendar.HOUR, 23);//时
calendar.add(Calendar.MINUTE, 59);//时
calendar.add(Calendar.SECOND, 59);//秒
queryWrapper.ge("sendDate", payMailBillSearch.getStartTime());
queryWrapper.le("sendDate", calendar.getTime());
} else if (ObjectUtil.isNotEmpty(payMailBillSearch.getStartTime())) {
queryWrapper.ge("sendDate", payMailBillSearch.getStartTime());
} else if (ObjectUtil.isNotEmpty(payMailBillSearch.getEndTime())) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(payMailBillSearch.getEndTime());
calendar.add(Calendar.HOUR, 23);//时
calendar.add(Calendar.MINUTE, 59);//时
calendar.add(Calendar.SECOND, 59);//秒
queryWrapper.le("sendDate", calendar.getTime());
}
if (ObjectUtil.isNotEmpty(payMailBillSearch.getProjectName())) {
queryWrapper.like("project_name", oConvertUtils.replaceAllPercent(payMailBillSearch.getProjectName()));
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
IPage<PayMailBill> pageList = payMailBillService.contactsSearchPageList(page, sysUser.getId(), queryWrapper);
getMobile(pageList.getRecords());
return Result.OK(pageList);
}
/**
* 邮寄票据-修改
*
@@ -7,12 +7,11 @@ 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.mail.PayMailBillVO;
import com.jero.mail.vo.PayMailBillVO;
import com.jero.mail.entity.PayMailBill;
import com.jero.mail.entity.PayMailBillSearch;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -78,4 +77,6 @@ public interface PayMailBillMapper extends BaseMapper<PayMailBill> {
Integer updateTax(@Param("id") String id);
Integer updateNoTaxAmount(@Param("id") String id);
IPage<PayMailBill> contactsSearchPageList(Page<PayMailBill> page, @Param("userId") String userId, @Param(Constants.WRAPPER) QueryWrapper<PayMailBill> queryWrapper);
}
@@ -39,6 +39,8 @@
<result property="sendDate" column="send_date"></result>
<result property="remark" column="remark"></result>
<result property="projectName" column="project_name"></result>
<result property="projectId" column="projectId"></result>
<result property="projectType" column="project_type"></result>
</resultMap>
<select id="selectCommonProjectMailBillVO" resultMap="MailBillVO">
@@ -63,7 +65,7 @@
WHERE pmb.id IN (SELECT bill_id FROM pay_mail_bill_project WHERE project_id=#{projectId})
</select>
<select id="selectInvoicingStage" resultType="com.jero.mail.PayMailBillVO">
<select id="selectInvoicingStage" resultType="com.jero.mail.vo.PayMailBillVO">
select pmb.id as id,pmbp.id as bmpId,pmb.project_name,pmbp.invoice_amount,pmb.bill_no,pmb.bill_date,pmbp.remark,pmbp.no_tax_amount,pmbp.tax,pmbp.tax_rate
from pay_mail_bill pmb
inner JOIN pay_mail_bill_project pmbp on pmb.id = pmbp.bill_id
@@ -248,4 +250,181 @@
set pmb.no_tax_amount = (select sum(pmbp.no_tax_amount) from pay_mail_bill_project pmbp where bill_id = #{id})
where id = #{id}
</update>
<select id="contactsSearchPageList" resultType="com.jero.mail.vo.MailBillProjectVO">
select *
from (
SELECT pmb.id,
project_name,
bill_no,
pmb.invoice_amount,
principal_id,
su.phone,
principal_name,
charge_company_name,
contact_name,
contact_mobile,
post_status,
send_method,
pmbp.project_id,
pmbp.project_type,
pmb.create_time,
postal_code,
mailer,
post_no,
send_date,
contact_address,
pmb.remark
from pay_mail_bill pmb
left join pay_mail_bill_project pmbp on (pmb.id = pmbp.bill_id)
left join pay_working_group_subitem_contacts pwgsc
on pwgsc.working_group_sub_id = pmbp.project_id
left join sys_user su on pmb.principal_id = su.id
where pwgsc.contacts_id = #{userId}
group by pmb.id
union all
SELECT pmb.id,
project_name,
bill_no,
pmb.invoice_amount,
pmb.principal_id,
su.phone,
pmb.principal_name,
charge_company_name,
contact_name,
contact_mobile,
post_status,
send_method,
pmbp.project_id,
pmbp.project_type,
pmb.create_time,
postal_code,
mailer,
post_no,
send_date,
contact_address,
pmb.remark
from pay_mail_bill pmb
left join pay_mail_bill_project pmbp on (pmb.id = pmbp.bill_id)
left join pay_common_project pcp on pcp.id = pmbp.project_id
left join sys_user su on pmb.principal_id = su.id
where pcp.contacts_id = #{userId}
group by pmb.id
union all
SELECT pmb.id,
project_name,
bill_no,
pmb.invoice_amount,
pmb.principal_id,
su.phone,
pmb.principal_name,
charge_company_name,
contact_name,
contact_mobile,
post_status,
send_method,
pmbp.project_id,
pmbp.project_type,
pmb.create_time,
postal_code,
mailer,
post_no,
send_date,
contact_address,
pmb.remark
from pay_mail_bill pmb
left join pay_mail_bill_project pmbp on (pmb.id = pmbp.bill_id)
left join pay_meeting_situation pms on pms.id = pmbp.project_id
left join sys_user su on pmb.principal_id = su.id
where pms.company_contact_id = #{userId}
group by pmb.id
union all
SELECT pmb.id,
project_name,
bill_no,
pmb.invoice_amount,
pmb.principal_id,
su.phone,
pmb.principal_name,
charge_company_name,
contact_name,
contact_mobile,
post_status,
send_method,
pmbp.project_id,
pmbp.project_type,
pmb.create_time,
postal_code,
mailer,
post_no,
send_date,
contact_address,
pmb.remark
from pay_mail_bill pmb
left join pay_mail_bill_project pmbp on (pmb.id = pmbp.bill_id)
left join pay_member_project_subitem pmps on pmps.id = pmbp.project_id
left join sys_user su on pmb.principal_id = su.id
where pmps.company_contact_id = #{userId}
group by pmb.id
union all
SELECT pmb.id,
project_name,
bill_no,
pmb.invoice_amount,
pmb.principal_id,
su.phone,
pmb.principal_name,
charge_company_name,
contact_name,
contact_mobile,
post_status,
send_method,
pmbp.project_id,
pmbp.project_type,
pmb.create_time,
postal_code,
mailer,
post_no,
send_date,
contact_address,
pmb.remark
from pay_mail_bill pmb
left join pay_mail_bill_project pmbp on (pmb.id = pmbp.bill_id)
left join tb_member_project_subitem tmps on tmps.id = pmbp.project_id
left join sys_user su on pmb.principal_id = su.id
where tmps.liaison_man_id = #{userId}
group by pmb.id
union all
SELECT pmb.id,
project_name,
bill_no,
pmb.invoice_amount,
pmb.principal_id,
su.phone,
pmb.principal_name,
charge_company_name,
contact_name,
contact_mobile,
post_status,
send_method,
pmbp.project_id,
pmbp.project_type,
pmb.create_time,
postal_code,
mailer,
post_no,
send_date,
contact_address,
pmb.remark
from pay_mail_bill pmb
left join pay_mail_bill_project pmbp on (pmb.id = pmbp.bill_id)
left join tb_certificate_payment tcp on tcp.id = pmbp.project_id
left join sys_user su on pmb.principal_id = su.id
where tcp.liaison_man_id = #{userId}
group by pmb.id
) t
${ew.customSqlSegment}
ORDER BY create_time
desc
</select>
</mapper>
@@ -6,7 +6,7 @@ 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.PayMailBillVO;
import com.jero.mail.vo.PayMailBillVO;
import com.jero.mail.entity.PayMailBill;
import com.jero.member.enums.StandardsTypeEnum;
@@ -95,4 +95,6 @@ public interface IPayMailBillService extends IService<PayMailBill> {
*/
void updateContactByProjectId(String ContactId,String projectId);
IPage<PayMailBill> contactsSearchPageList(Page<PayMailBill> page, String userId, QueryWrapper<PayMailBill> queryWrapper);
}
@@ -25,7 +25,7 @@ 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.PayMailBillVO;
import com.jero.mail.vo.PayMailBillVO;
import com.jero.mail.entity.BillingInfo;
import com.jero.mail.entity.PayMailBill;
import com.jero.mail.entity.PayMailBillProject;
@@ -585,6 +585,11 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
payMailBillMapper.updateByProjectId(payMailBill,projectId);
}
@Override
public IPage<PayMailBill> contactsSearchPageList(Page<PayMailBill> page, String userId, QueryWrapper<PayMailBill> queryWrapper) {
return payMailBillMapper.contactsSearchPageList(page,userId,queryWrapper);
}
//校验不同项目是否属于同一个公司,开票金额是否大于当前未开票金额,企业名称是否审核
private String checkCompanyProject(List<PayMailBillProject> bmpList) {
@@ -0,0 +1,49 @@
package com.jero.mail.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import com.jero.mail.entity.PayMailBill;
import com.jero.mail.entity.PayMailBillProject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import javax.validation.constraints.DecimalMax;
import java.math.BigDecimal;
import java.util.List;
@Data
public class MailBillProjectVO extends PayMailBill {
/**
* 邮寄票据关联项目表
*/
@TableField(exist = false)
List<PayMailBillProject> bmpList;
/**邮寄票据关联项目表id*/
@TableField(exist = false)
@ApiModelProperty(value = "bmpId")
private String bmpId;
/**税率*/
@ApiModelProperty(value = "税率")
@JsonFormat(shape = JsonFormat.Shape.STRING)
@Dict(dicCode = "rate")
private BigDecimal taxRate;
/**税额*/
@Excel(name = "税额", width = 15)
@ApiModelProperty(value = "税额")
@DecimalMax(value = "9999999999.99",message = "税额")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal tax;
/**未税金额*/
@Excel(name = "未税金额", width = 15)
@ApiModelProperty(value = "未税金额")
@DecimalMax(value = "9999999999.99",message = "未税金额")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal noTaxAmount;
}
@@ -1,4 +1,4 @@
package com.jero.mail;
package com.jero.mail.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
@@ -11,7 +11,6 @@ import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.AuthenticationUtils;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.ValidUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.data.service.IPayCaseCommitteeService;
import com.jero.meeting.common.MeetingCommon;
@@ -36,7 +35,6 @@ import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -205,7 +203,7 @@ public class CommitteeMeetingController extends JeroController<PayMeeting, IPayM
@ApiOperation(value = "上传资料", notes = "上传资料")
@PostMapping(value = "/uploadFile")
public Result<?> uploadFile(@RequestBody UploadFileVO uploadFileVO) {
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.COMMITTEE_MEETING_INT);
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.COMMITTEE_MEETING_INT, false);
return Result.OK("上传资料成功!",strings);
}
@@ -233,4 +233,19 @@ public class CommitteeMeetingSituationController extends JeroController<PayMeeti
payMeetingSituationService.mergePayBill(mergePayBillVO);
return Result.OK("合并开票成功!");
}
/**
* 设置嘉宾上传文件
*/
@RequiresPermissions("committeeMeetingSituation:guestsUploadFileFlag")
@AutoLog(value = "设置嘉宾上传文件")
@ApiOperation(value = "设置嘉宾上传文件", notes = "设置嘉宾上传文件")
@PostMapping(value = "/setGuestsUploadFile")
public Result<?> setGuestsUploadFile(@RequestBody SetGuestsUploadFileVO setGuestsUploadFileVO) {
ValidUtil.validate(setGuestsUploadFileVO);
payMeetingSituationService.setGuestsUploadFile(setGuestsUploadFileVO,MEETING_TYPE);
return Result.OK("设置嘉宾上传文件成功!");
}
}
@@ -190,7 +190,7 @@ public class CouncilMeetingController extends JeroController<PayMeeting, IPayMee
@ApiOperation(value = "上传资料", notes = "上传资料")
@PostMapping(value = "/uploadFile")
public Result<?> uploadFile(@RequestBody UploadFileVO uploadFileVO) {
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.COUNCIL_MEETING_INT);
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.COUNCIL_MEETING_INT, false);
return Result.OK("上传资料成功!",strings);
}
@@ -17,6 +17,7 @@ import com.jero.meeting.service.IPayMeetingSituationService;
import com.jero.meeting.vo.CheckVO;
import com.jero.meeting.vo.MergePayBillVO;
import com.jero.meeting.vo.PayMeetingSituationVO;
import com.jero.meeting.vo.SetGuestsUploadFileVO;
import com.jero.project.common.PayProjectCommon;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -211,4 +212,16 @@ public class CouncilMeetingSituationController extends JeroController<PayMeeting
payMeetingSituationService.mergePayBill(mergePayBillVO);
return Result.OK("合并开票成功!");
}
/**
* 设置嘉宾上传文件
*/
@RequiresPermissions("councilMeetingSituation:guestsUploadFileFlag")
@AutoLog(value = "设置嘉宾上传文件")
@ApiOperation(value = "设置嘉宾上传文件", notes = "设置嘉宾上传文件")
@PostMapping(value = "/setGuestsUploadFile")
public Result<?> setGuestsUploadFile(@RequestBody SetGuestsUploadFileVO setGuestsUploadFileVO) {
ValidUtil.validate(setGuestsUploadFileVO);
payMeetingSituationService.setGuestsUploadFile(setGuestsUploadFileVO,MEETING_TYPE);
return Result.OK("设置嘉宾上传文件成功!");
}
}
@@ -10,7 +10,6 @@ import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.AuthenticationUtils;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.ValidUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.data.service.IPayCaseCommitteeService;
import com.jero.meeting.common.MeetingCommon;
@@ -35,7 +34,6 @@ import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -203,7 +201,7 @@ public class InternalMeetingController extends JeroController<PayMeeting, IPayMe
@ApiOperation(value = "上传资料", notes = "上传资料")
@PostMapping(value = "/uploadFile")
public Result<?> uploadFile(@RequestBody UploadFileVO uploadFileVO) {
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.INTERNATIONAL_MEETING_INT);
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.INTERNATIONAL_MEETING_INT, false);
return Result.OK("上传资料成功!",strings);
}
@@ -237,4 +237,17 @@ public class InternalMeetingSituationController extends JeroController<PayMeetin
public Result<Boolean> checkMember(String companyName) {
return Result.OK(payMeetingSituationService.checkMemberCompany(companyName));
}
/**
* 设置嘉宾上传文件
*/
@RequiresPermissions("internalMeetingSituation:guestsUploadFileFlag")
@AutoLog(value = "设置嘉宾上传文件")
@ApiOperation(value = "设置嘉宾上传文件", notes = "设置嘉宾上传文件")
@PostMapping(value = "/setGuestsUploadFile")
public Result<?> setGuestsUploadFile(@RequestBody SetGuestsUploadFileVO setGuestsUploadFileVO) {
ValidUtil.validate(setGuestsUploadFileVO);
payMeetingSituationService.setGuestsUploadFile(setGuestsUploadFileVO,MEETING_TYPE);
return Result.OK("设置嘉宾上传文件成功!");
}
}
@@ -10,7 +10,6 @@ import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.AuthenticationUtils;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.ValidUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.data.service.IPayCaseCommitteeService;
import com.jero.meeting.common.MeetingCommon;
@@ -35,7 +34,6 @@ import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -203,7 +201,7 @@ public class OtherMeetingController extends JeroController<PayMeeting, IPayMeeti
@ApiOperation(value = "上传资料", notes = "上传资料")
@PostMapping(value = "/uploadFile")
public Result<?> uploadFile(@RequestBody UploadFileVO uploadFileVO) {
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.OTHER_MEETING_INT);
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.OTHER_MEETING_INT, false);
return Result.OK("上传资料成功!",strings);
}
@@ -214,6 +214,17 @@ public class OtherMeetingSituationController extends JeroController<PayMeetingSi
payMeetingSituationService.mergePayBill(mergePayBillVO);
return Result.OK("合并开票成功!");
}
/**
* 设置嘉宾上传文件
*/
@RequiresPermissions("otherMeetingSituation:guestsUploadFileFlag")
@AutoLog(value = "设置嘉宾上传文件")
@ApiOperation(value = "设置嘉宾上传文件", notes = "设置嘉宾上传文件")
@PostMapping(value = "/setGuestsUploadFile")
public Result<?> setGuestsUploadFile(@RequestBody SetGuestsUploadFileVO setGuestsUploadFileVO) {
ValidUtil.validate(setGuestsUploadFileVO);
payMeetingSituationService.setGuestsUploadFile(setGuestsUploadFileVO,MEETING_TYPE);
return Result.OK("设置嘉宾上传文件成功!");
}
}
@@ -9,7 +9,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.constant.CommonConstant;
@@ -26,8 +25,8 @@ import com.jero.data.service.IPayCaseCommitteeService;
import com.jero.data.service.IPayCaseCommitteeSubitemService;
import com.jero.data.service.IPayCaseCouncilSubitemService;
import com.jero.meeting.common.MeetingCommon;
import com.jero.meeting.common.MeetingSubitemCommon;
import com.jero.meeting.entity.*;
import com.jero.meeting.mapper.PayMeetingGuestsFileMapper;
import com.jero.meeting.service.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -39,7 +38,6 @@ import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.system.volid.group.UpdateGroup;
import com.jero.project.entity.PayWorkingGroup;
import com.jero.project.entity.PayWorkingGroupSubItem;
import com.jero.project.service.IPayWorkingGroupService;
import com.jero.project.service.IPayWorkingGroupSubItemService;
import com.jero.util.QrcodeUtil;
@@ -51,7 +49,6 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -104,6 +101,8 @@ public class PayMeetingController extends JeroController<PayMeeting, IPayMeeting
private IPayMeetingContactsService meetingContactsService;
@Resource
private IPayMeetingStandardService payMeetingStandardService;
@Resource
private PayMeetingGuestsFileMapper meetingGuestsFileMapper;
/**
* 分页列表查询
@@ -467,7 +466,7 @@ public class PayMeetingController extends JeroController<PayMeeting, IPayMeeting
@PostMapping(value = "/uploadFile")
@Transactional
public Result<?> uploadFile(@RequestBody UploadFileVO uploadFileVO) {
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.INTERNATIONAL_MEETING_INT);
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.INTERNATIONAL_MEETING_INT, false);
return Result.OK("上传资料成功!",strings);
}
@@ -562,12 +561,6 @@ public class PayMeetingController extends JeroController<PayMeeting, IPayMeeting
if (ObjectUtils.isEmpty(meetingSituation)) {
throw new JeroBootException("未报名会议。");
}
Integer checkResult = meetingSituation.getCheckResult();
Integer registerCheckResult = meetingSituation.getRegisterCheckResult();
if (!Objects.equals(checkResult, MeetingSubitemCommon.SIGNUP_STATUS_1)
|| !Objects.equals(registerCheckResult, MeetingSubitemCommon.SIGNUP_STATUS_1)) {
throw new JeroBootException("会议报名并审核通过后才可查看文件");
}
}
}
// 查询数据表数据是否存在
@@ -672,5 +665,76 @@ public class PayMeetingController extends JeroController<PayMeeting, IPayMeeting
}
}
/**
* 预览图片&下载文件
*
* @param id 传入文件id
* @return
*/
@ApiOperation(value = "小程序企业端会议下载资料", notes = "企业端会议下载资料")
@GetMapping(value = "/userDownloadByApplet/{id}/{meetingId}")
public Result<Object> userDownloadByApplet(@PathVariable String id, @PathVariable String meetingId, HttpServletResponse response, String type) {
LoginUser sysUser =(LoginUser) SecurityUtils.getSubject().getPrincipal();
String sysUserId = sysUser.getId();
PayMeeting payMeeting = payMeetingService.getById(meetingId);
if(ObjectUtils.isEmpty(payMeeting)){
throw new JeroBootException("会议不存在..");
}
Integer meetingType = payMeeting.getMeetingType();
//如果是分标委会议或理事会会议,判断是否为成员
boolean isSubItem = false;
if (meetingType.equals(MeetingCommon.COMMITTEE_MEETING_INT)) {
LambdaQueryWrapper<PayCaseCommitteeSubitem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayCaseCommitteeSubitem::getCommitteeId, payMeeting.getCaseCommitteeId());
wrapper.eq(PayCaseCommitteeSubitem::getContactsId, sysUserId);
int count = payCaseCommitteeSubitemService.count(wrapper);
if (count > 0) {
isSubItem = true;
}
} else if (meetingType.equals(MeetingCommon.COUNCIL_MEETING_INT)) {
LambdaQueryWrapper<PayCaseCouncilSubitem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayCaseCouncilSubitem::getCouncilId, payMeeting.getCouncilId());
wrapper.eq(PayCaseCouncilSubitem::getContactsId, sysUserId);
int count = payCaseCouncilSubitemService.count(wrapper);
if (count > 0) {
isSubItem = true;
}
}
String meetingMinute = payMeeting.getMeetingMinute();
String meetingData = payMeeting.getMeetingData();
List<String> fileList = new ArrayList<>();
if(StringUtils.isNotBlank(meetingMinute)) {
fileList.addAll(Arrays.asList(meetingMinute.split(",")));
}
if(StringUtils.isNotBlank(meetingData)) {
fileList.addAll(Arrays.asList(meetingData.split(",")));
}
if(!fileList.contains(id)){
throw new JeroBootException("会议无此文件..");
}
BigDecimal meetingCosts = payMeeting.getMeetingCosts();
//先判断非成员
if (!isSubItem){
//会议金额等于0并且是工作组会议(工作组会议金额为0时可以下载)
if (meetingCosts.compareTo(BigDecimal.ZERO) == 0 && meetingType.equals(MeetingCommon.WORKING_GROUP_MEETING_INT)){
}else
//在判断会议金额是否大于0
if (meetingCosts.compareTo(BigDecimal.ZERO) > 0){
QueryWrapper<PayMeetingSituation> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("meeting_id", meetingId);
queryWrapper1.eq("company_contact_id", sysUserId);
PayMeetingSituation meetingSituation = payMeetingSituationService.getOne(queryWrapper1);
if (ObjectUtils.isEmpty(meetingSituation)) {
throw new JeroBootException("未报名会议。");
}
}
}
return Result.OK();
}
}
@@ -23,6 +23,7 @@ import com.jero.company.service.IPayCompanyManagementService;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.meeting.common.MeetingCommon;
import com.jero.meeting.entity.PayMeeting;
import com.jero.meeting.entity.PayMeetingGuestsFile;
import com.jero.meeting.entity.PayMeetingSituation;
import com.jero.meeting.service.IPayMeetingService;
import com.jero.meeting.service.IPayMeetingSituationService;
@@ -150,6 +151,17 @@ public class PayMeetingSituationController extends JeroController<PayMeetingSitu
return Result.OK("删除成功!");
}
/**
* 通过id删除
*/
@AutoLog(value = "企业人员-通过id删除参会信息")
@ApiOperation(value = "企业人员-通过id删除参会信息")
@GetMapping(value = "/contactsDelete")
public Result<?> contactsDelete(@RequestParam(name = "id") String id) {
payMeetingSituationService.deleteById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*/
@@ -162,6 +174,17 @@ public class PayMeetingSituationController extends JeroController<PayMeetingSitu
return Result.OK("批量删除成功!");
}
/**
* 编辑
*/
@AutoLog(value = "企业人员-编辑参会信息")
@ApiOperation(value = "企业人员-编辑参会信息", notes = "企业人员-编辑参会信息")
@PostMapping(value = "/contactsEdit")
public Result<?> contactsEdit(@RequestBody PayMeetingSituationVO payMeetingSituationVO) {
payMeetingSituationService.editById(payMeetingSituationVO,MEETING_TYPE);
return Result.OK("编辑成功!");
}
/**
* 通过id查询
*/
@@ -376,4 +399,39 @@ public class PayMeetingSituationController extends JeroController<PayMeetingSitu
Integer integer = payMeetingSituationService.validInvitationCode(payMeeting, randomCode, false);
return Result.OK("校验成功");
}
/**
* 嘉宾上传文件
*/
@AutoLog(value = "嘉宾上传文件")
@ApiOperation(value = "嘉宾上传文件", notes = "嘉宾上传文件")
@PostMapping(value = "/guestsUploadFile")
public Result<?> guestsUploadFile(@RequestBody GuestsUploadFileVO guestsUploadFileVO) {
ValidUtil.validate(guestsUploadFileVO);
payMeetingSituationService.guestsUploadFile(guestsUploadFileVO);
return Result.OK("上传文件成功!");
}
/**
* 嘉宾上传文件列表
*/
@AutoLog(value = "嘉宾上传文件列表")
@ApiOperation(value = "嘉宾上传文件", notes = "嘉宾上传文件")
@PostMapping(value = "/guestsUploadFileList")
public Result<List<PayMeetingGuestsFile>> guestsUploadFileList(@RequestBody GuestsUploadFileVO guestsUploadFileVO) {
List<PayMeetingGuestsFile> payMeetingGuestsFiles = payMeetingSituationService.guestsUploadFileList(guestsUploadFileVO);
return Result.OK(payMeetingGuestsFiles);
}
/**
* 嘉宾删除文件
*/
@AutoLog(value = "嘉宾删除文件")
@ApiOperation(value = "嘉宾删除文件", notes = "嘉宾删除文件")
@PostMapping(value = "/guestsDeleteFile")
public Result<?> guestsDeleteFile(@RequestBody GuestsUploadFileVO guestsUploadFileVO) {
ValidUtil.validate(guestsUploadFileVO);
payMeetingSituationService.guestsDeleteFile(guestsUploadFileVO);
return Result.OK("删除文件成功!");
}
}
@@ -1,25 +1,21 @@
package com.jero.meeting.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.enums.CompanyMessageEnums;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.AuthenticationUtils;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.ValidUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.data.service.IPayCaseCommitteeService;
import com.jero.meeting.common.MeetingCommon;
import com.jero.meeting.entity.PayMeeting;
import com.jero.meeting.entity.PayMeetingHotelContacts;
import com.jero.meeting.entity.PayMeetingStandard;
import com.jero.meeting.entity.Question;
import com.jero.meeting.service.IPayMeetingHotelContactsService;
import com.jero.meeting.service.IPayMeetingService;
import com.jero.meeting.service.IPayMeetingStandardService;
@@ -274,7 +270,7 @@ public class StandardsMeetingController extends JeroController<PayMeeting, IPayM
@ApiOperation(value = "上传资料", notes = "上传资料")
@PostMapping(value = "/uploadFile")
public Result<?> uploadFile(@RequestBody UploadFileVO uploadFileVO) {
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.STANDARD_MEETING_INT);
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.STANDARD_MEETING_INT, false);
return Result.OK("上传资料成功!",strings);
}
@@ -214,5 +214,16 @@ public class StandardsMeetingSituationController extends JeroController<PayMeeti
payMeetingSituationService.mergePayBill(mergePayBillVO);
return Result.OK("合并开票成功!");
}
/**
* 设置嘉宾上传文件
*/
@RequiresPermissions("standardsMeetingSituation:guestsUploadFileFlag")
@AutoLog(value = "设置嘉宾上传文件")
@ApiOperation(value = "设置嘉宾上传文件", notes = "设置嘉宾上传文件")
@PostMapping(value = "/setGuestsUploadFile")
public Result<?> setGuestsUploadFile(@RequestBody SetGuestsUploadFileVO setGuestsUploadFileVO) {
ValidUtil.validate(setGuestsUploadFileVO);
payMeetingSituationService.setGuestsUploadFile(setGuestsUploadFileVO,MEETING_TYPE);
return Result.OK("设置嘉宾上传文件成功!");
}
}
@@ -1,26 +1,17 @@
package com.jero.meeting.controller;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
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;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.enums.CompanyMessageEnums;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.AuthenticationUtils;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.ValidUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.data.entity.PayCaseCommittee;
import com.jero.data.service.IPayCaseCommitteeService;
import com.jero.meeting.common.MeetingCommon;
import com.jero.meeting.entity.PayMeeting;
@@ -30,20 +21,13 @@ import com.jero.meeting.service.IPayMeetingService;
import com.jero.meeting.vo.PayMeetingVO;
import com.jero.meeting.vo.PublishReminderVO;
import com.jero.meeting.vo.UploadFileVO;
import com.jero.meeting.vo.excel.*;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.system.volid.group.UpdateGroup;
import com.jero.project.entity.PayWorkingGroup;
import com.jero.project.service.IPayWorkingGroupService;
import com.jero.standards.xuanguan.stablecrosstraining.entity.StableCrossTraining;
import com.jero.util.QrcodeUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
@@ -52,7 +36,6 @@ import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -225,7 +208,7 @@ public class WorkGroupMeetingController extends JeroController<PayMeeting, IPayM
@ApiOperation(value = "上传资料", notes = "上传资料")
@PostMapping(value = "/uploadFile")
public Result<?> uploadFile(@RequestBody UploadFileVO uploadFileVO) {
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.WORKING_GROUP_MEETING_INT);
List<String> strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MeetingCommon.WORKING_GROUP_MEETING_INT, false);
return Result.OK("上传资料成功!",strings);
}
@@ -215,5 +215,16 @@ public class WorkGroupMeetingSituationController extends JeroController<PayMeeti
return Result.OK("合并开票成功!");
}
/**
* 设置嘉宾上传文件
*/
@RequiresPermissions("workGroupMeetingSituation:guestsUploadFileFlag")
@AutoLog(value = "设置嘉宾上传文件")
@ApiOperation(value = "设置嘉宾上传文件", notes = "设置嘉宾上传文件")
@PostMapping(value = "/setGuestsUploadFile")
public Result<?> setGuestsUploadFile(@RequestBody SetGuestsUploadFileVO setGuestsUploadFileVO) {
ValidUtil.validate(setGuestsUploadFileVO);
payMeetingSituationService.setGuestsUploadFile(setGuestsUploadFileVO,MEETING_TYPE);
return Result.OK("设置嘉宾上传文件成功!");
}
}
@@ -255,6 +255,10 @@ public class PayMeeting implements Serializable {
@ApiModelProperty(value = "会议通知文件")
private String meetingFiles;
/**会议通知文件*/
@ApiModelProperty(value = "会议文件")
private String fileIds;
/**会议资料*/
@ApiModelProperty(value = "会议资料")
private String meetingData;
@@ -0,0 +1,66 @@
package com.jero.meeting.entity;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.Data;
/**
*
*@author liJiaRao
*@date 2023-07-13 10:35
*/
/**
* 会议嘉宾文件表
*/
@ApiModel(description = "会议嘉宾文件表")
@Data
@TableName(value = "pay_meeting_guests_file")
public class PayMeetingGuestsFile {
/**
* id
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private String id;
/**
* 会议id
*/
@TableField(value = "meeting_id")
@ApiModelProperty(value = "会议id")
private String meetingId;
/**
* 联系人id
*/
@TableField(value = "contacts_id")
@ApiModelProperty(value = "联系人id")
private String contactsId;
/**
* 文件id
*/
@TableField(value = "file_id")
@ApiModelProperty(value = "文件id")
private String fileId;
/**
* 创建人
*/
@TableField(value = "create_by")
@ApiModelProperty(value = "创建人")
private String createBy;
/**
* 创建日期
*/
@TableField(value = "create_time")
@ApiModelProperty(value = "创建日期")
private Date createTime;
}
@@ -4,6 +4,7 @@ import java.io.Serializable;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import com.jero.company.vo.UpdateInvoicePram;
import com.jero.meeting.valid.group.CommonPeople;
import com.jero.meeting.valid.group.Guest;
import lombok.Data;
@@ -280,6 +281,7 @@ public class PayMeetingSituation implements Serializable {
/**缴费方式*/
@Excel(name = "缴费方式", width = 15,dicCode = "meeting_pay_type")
@TableField(updateStrategy = FieldStrategy.IGNORED)
@ApiModelProperty(value = "缴费方式")
@NotNull(message = "缴费方式不能为空",groups = CommonPeople.class)
@Dict(dicCode = "meeting_pay_type")
@@ -514,4 +516,51 @@ public class PayMeetingSituation implements Serializable {
@ApiModelProperty(value = "未税金额")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal noTaxAmount;
@ApiModelProperty(value = "嘉宾上传文件标识")
private Integer guestsUploadFileFlag;
/**信用代码*/
@ApiModelProperty(value = "信用代码")
@TableField(updateStrategy = FieldStrategy.IGNORED)
@NotEmpty(message = "信用代码不能为空",groups = {UpdateInvoicePram.needInvoice_1.class, UpdateInvoicePram.needInvoice_2.class})
@Size(max = 18, message = "信用代码长度不能大于18个字符",groups = {UpdateInvoicePram.needInvoice_1.class,UpdateInvoicePram.needInvoice_2.class})
@Pattern(regexp = "^([0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\\d{14})$",message = "信用代码格式错误",groups = {UpdateInvoicePram.needInvoice_1.class,UpdateInvoicePram.needInvoice_2.class})
private String dutyCode;
/**公司地址*/
@ApiModelProperty(value = "公司地址")
@TableField(updateStrategy = FieldStrategy.IGNORED)
@NotEmpty(message = "公司地址不能为空",groups = UpdateInvoicePram.needInvoice_2.class)
@Size(max = 50, message = "公司地址长度不能大于50个字符",groups = UpdateInvoicePram.needInvoice_2.class)
private String companyAddress;
/**公司电话*/
@ApiModelProperty(value = "公司电话")
@TableField(updateStrategy = FieldStrategy.IGNORED)
@Size(max = 15, message = "公司电话长度不能大于15个字符",groups = UpdateInvoicePram.needInvoice_2.class)
@Pattern(regexp = "^([0-9-]+)$",message = "公司电话格式错误",groups = UpdateInvoicePram.needInvoice_2.class)
private String companyPhone;
/**开户行*/
@ApiModelProperty(value = "开户行")
@TableField(updateStrategy = FieldStrategy.IGNORED)
@NotEmpty(message = "开户行不能为空",groups = UpdateInvoicePram.needInvoice_2.class)
@Size(max = 50, message = "开户行长度不能大于50个字符",groups = UpdateInvoicePram.needInvoice_2.class)
private String openingBank;
/**银行账号*/
@ApiModelProperty(value = "银行账号")
@TableField(updateStrategy = FieldStrategy.IGNORED)
@NotEmpty(message = "银行账号不能为空",groups = UpdateInvoicePram.needInvoice_2.class)
@Size(max = 50, message = "银行账号长度不能大于50个字符",groups = UpdateInvoicePram.needInvoice_2.class)
private String bankAccount;
/**联行号*/
@ApiModelProperty(value = "联行号")
@TableField(updateStrategy = FieldStrategy.IGNORED)
@NotEmpty(message = "联行号不能为空",groups = UpdateInvoicePram.needInvoice_2.class)
private String linkBankNumber;
/**发票项目*/
@Dict(dicCode = "invoice_project")
@TableField(updateStrategy = FieldStrategy.IGNORED)
@ApiModelProperty(value = "发票项目")
private Integer invoiceProject;
}
@@ -0,0 +1,11 @@
package com.jero.meeting.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.meeting.entity.PayMeetingGuestsFile;
/**
* @author liJiaRao
* @date 2023-07-13 10:35
*/
public interface PayMeetingGuestsFileMapper extends BaseMapper<PayMeetingGuestsFile> {
}
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.meeting.mapper.PayMeetingGuestsFileMapper">
<resultMap id="BaseResultMap" type="com.jero.meeting.entity.PayMeetingGuestsFile">
<!--@mbg.generated-->
<!--@Table pay_meeting_guests_file-->
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="meeting_id" jdbcType="VARCHAR" property="meetingId" />
<result column="contacts_id" jdbcType="VARCHAR" property="contactsId" />
<result column="file_id" jdbcType="VARCHAR" property="fileId" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, meeting_id, contacts_id, file_id, create_by, create_time
</sql>
</mapper>
@@ -73,7 +73,7 @@ public interface IPayMeetingService extends IService<PayMeeting> {
IPage<PayMeeting> queryMeetingSummary(MeetingSummary meetingSummary, Integer pageNo, Integer pageSize, HttpServletRequest req);
List<String> uploadFileSendMsg(UploadFileVO uploadFileVO, Integer meetingCommon);
List<String> uploadFileSendMsg(UploadFileVO uploadFileVO, Integer meetingCommon, Boolean isGuestsUpload);
/**
* 上传会议纪要
@@ -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.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.*;
@@ -93,4 +94,12 @@ public interface IPayMeetingSituationService extends IService<PayMeetingSituatio
Boolean checkMember(String meetingId, Integer meetingType);
void editGuestInfo(PayMeetingSituation payMeetingSituation);
void setGuestsUploadFile(SetGuestsUploadFileVO setGuestsUploadFileVO, Integer meetingType1);
void guestsUploadFile(GuestsUploadFileVO guestsUploadFileVO);
List<PayMeetingGuestsFile> guestsUploadFileList(GuestsUploadFileVO guestsUploadFileVO);
void guestsDeleteFile(GuestsUploadFileVO guestsUploadFileVO);
}
@@ -0,0 +1,17 @@
package com.jero.meeting.service;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.meeting.entity.PayMeetingGuestsFile;
import com.jero.meeting.mapper.PayMeetingGuestsFileMapper;
/**
*
*@author liJiaRao
*@date 2023-07-13 10:33
*/
@Service
public class PayMeetingGuestsFileService extends ServiceImpl<PayMeetingGuestsFileMapper, PayMeetingGuestsFile> {
}
@@ -9,6 +9,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.jero.common.constant.CommonConstant;
import com.jero.common.dto.SendMessageDTO;
import com.jero.common.enums.CompanyMessageEnums;
import com.jero.common.exception.JeroBootException;
@@ -36,6 +37,7 @@ import com.jero.meeting.common.MeetingCommon;
import com.jero.meeting.common.MeetingSubitemCommon;
import com.jero.meeting.entity.*;
import com.jero.meeting.mapper.PayMeetingContactsMapper;
import com.jero.meeting.mapper.PayMeetingGuestsFileMapper;
import com.jero.meeting.mapper.PayMeetingMapper;
import com.jero.meeting.service.*;
import com.jero.meeting.valid.group.CaseCommitteeMeeting;
@@ -131,6 +133,8 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
private IPayWorkingGroupSubItemContactsService workingGroupSubItemContactsService;
@Resource
private IPayMeetingStandardService payMeetingStandardService;
@Resource
private PayMeetingGuestsFileMapper meetingGuestsFileMapper;
/**
* 新增会议
@@ -154,11 +158,12 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
);
meetingHotelContactsService.saveBatch(hotelContactsList);
}
Integer meetingType = payMeeting.getMeetingType();
//会议联系人
List<PayMeetingContacts> meetingContactsList = payMeetingVO.getMeetingContactsList();
addMeetingContactsList(meetingContactsList, payMeeting.getId());
addMeetingContactsList(meetingContactsList, payMeeting.getId(),meetingType.equals(MeetingCommon.STANDARD_MEETING_INT));
//新增会员系统标协会议
if (payMeeting.getMeetingType().equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) {
if (meetingType.equals(MeetingCommon.STANDARD_MEETING_INT)) {
String directorId = payMeeting.getDirectorId();
LoginUser loginUser = sysBaseAPI.getUserById(directorId);
payMeeting.setDirectorName(loginUser.getRealname());
@@ -174,6 +179,12 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
if (StrUtil.isNotBlank(paymentQrCode)){
fileIdList.add(paymentQrCode);
}
String fileIds = payMeeting.getFileIds();
if (StrUtil.isNotBlank(fileIds)){
List<String> strings = Arrays.asList(fileIds.split(","));
List<String> arrayList = new ArrayList<>(strings);
fileIdList.addAll(arrayList);
}
pushStandardsFiles(fileIdList);
}
}
@@ -255,9 +266,10 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
);
meetingHotelContactsService.saveBatch(hotelContactsList);
}
Integer meetingType = payMeeting.getMeetingType();
//会议联系人
List<PayMeetingContacts> meetingContactsList = payMeeting.getMeetingContactsList();
addMeetingContactsList(meetingContactsList, payMeeting.getId());
addMeetingContactsList(meetingContactsList, payMeeting.getId(), MeetingCommon.STANDARD_MEETING_INT.equals(meetingType));
}
public void delWithStandardForUpdate(PayMeeting payMeeting){
@@ -313,11 +325,12 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
);
meetingHotelContactsService.saveBatch(hotelContactsList);
}
Integer meetingType = payMeeting.getMeetingType();
//会议联系人
List<PayMeetingContacts> meetingContactsList = payMeetingVO.getMeetingContactsList();
addMeetingContactsList(meetingContactsList, payMeeting.getId());
addMeetingContactsList(meetingContactsList, payMeeting.getId(), meetingType.equals(MeetingCommon.STANDARD_MEETING_INT));
//编辑标协会议
if (payMeeting.getMeetingType().equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) {
if (meetingType.equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) {
String directorId = payMeeting.getDirectorId();
LoginUser loginUser = sysBaseAPI.getUserById(directorId);
payMeeting.setDirectorName(loginUser.getRealname());
@@ -333,6 +346,12 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
if (StrUtil.isNotBlank(paymentQrCode)){
fileIdList.add(paymentQrCode);
}
String fileIds = payMeeting.getFileIds();
if (StrUtil.isNotBlank(fileIds)){
List<String> strings = Arrays.asList(fileIds.split(","));
List<String> arrayList = new ArrayList<>(strings);
fileIdList.addAll(arrayList);
}
pushStandardsFiles(fileIdList);
}
}
@@ -340,7 +359,7 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
/**
* 增加会议联系人
*/
private void addMeetingContactsList(List<PayMeetingContacts> meetingContactsList, String meetingId) {
private void addMeetingContactsList(List<PayMeetingContacts> meetingContactsList, String meetingId, boolean needPushStandard) {
if (meetingContactsList == null) {
return;
@@ -369,7 +388,9 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
meetingContacts.setMeetingId(meetingId)
);
meetingContactsService.saveBatch(addMeetingContactsList);
AuthenticationUtils.post("/stablecrosstraining/stableCrossTraining/addMeetingContactsList",null,addMeetingContactsList);
if (needPushStandard){
AuthenticationUtils.post("/stablecrosstraining/stableCrossTraining/addMeetingContactsList",null,addMeetingContactsList);
}
}
}
@@ -724,6 +745,8 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
map.put("meetingType", meetingType);
map.put("meetingName", payMeeting.getMeetingName());
map.put("busId", meetingId);
Integer sendEmailFlag = publishReminderVO.getSendEmailFlag();
sendMessageDTO.setSendEmailFlag(sendEmailFlag);
sendMessageDTO.setEmail(PasswordUtil.decrypt(email));
sendMessageDTO.setToUser(PasswordUtil.decrypt(phone));
sendMessageDTO.setPhone(PasswordUtil.decrypt(phone));
@@ -737,11 +760,13 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
sendMessageDTO.setBusId(jsonObject.toJSONString());
try {
sendMessageService.SendMessageService(sendMessageDTO);
PayMeetingRemindRecord meetingRemindRecord1 = new PayMeetingRemindRecord();
meetingRemindRecord1.setSubitemId(meetingRemindRecord.getSubitemId());
meetingRemindRecord1.setContactId(meetingRemindRecord.getContactId());
meetingRemindRecord1.setMeetingId(meetingId);
payMeetingRemindRecordService.save(meetingRemindRecord1);
if (!CommonConstant.DEL_FLAG_0.equals(sendEmailFlag)){
PayMeetingRemindRecord meetingRemindRecord1 = new PayMeetingRemindRecord();
meetingRemindRecord1.setSubitemId(meetingRemindRecord.getSubitemId());
meetingRemindRecord1.setContactId(meetingRemindRecord.getContactId());
meetingRemindRecord1.setMeetingId(meetingId);
payMeetingRemindRecordService.save(meetingRemindRecord1);
}
}catch (Exception e){
String name = payContactsManagement.getName();
if(e.getMessage().contains("邮件发送") && !listMsg.contains(name + "邮件发送失败")){
@@ -1000,6 +1025,18 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
}
}
});
//会议资料
List<String> meetingDataList = new ArrayList<>();
String meetingData = meeting.getMeetingData();
if (StringUtils.isNotBlank(meetingData)) {
meetingDataList.addAll(Arrays.asList(meetingData.split(",")));
}
//LambdaQueryWrapper<PayMeetingGuestsFile> wrapper1 = new LambdaQueryWrapper<>();
//wrapper1.eq(PayMeetingGuestsFile::getMeetingId,meetingId);
//List<PayMeetingGuestsFile> payMeetingGuestsFiles = meetingGuestsFileMapper.selectList(wrapper1);
//List<String> collect = payMeetingGuestsFiles.stream().map(PayMeetingGuestsFile::getFileId).collect(Collectors.toList());
//meetingDataList.addAll(collect);
//meeting.setMeetingData(String.join(",",meetingDataList));
}
return pageList;
}
@@ -1089,23 +1126,40 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
@Override
@Transactional
public List<String> uploadFileSendMsg(UploadFileVO uploadFileVO, Integer meetingCommon) {
public List<String> uploadFileSendMsg(UploadFileVO uploadFileVO, Integer meetingCommon, Boolean isGuestsUpload) {
List<String> listMsg = new ArrayList<>();
String id = uploadFileVO.getId();
PayMeeting payMeeting = getOne(
new LambdaQueryWrapper<PayMeeting>()
.eq(PayMeeting::getId, id)
.eq(PayMeeting::getMeetingType, meetingCommon)
);
LambdaQueryWrapper<PayMeeting> payMeetingLambdaQueryWrapper = new LambdaQueryWrapper<>();
payMeetingLambdaQueryWrapper.eq(PayMeeting::getId, id);
if (meetingCommon != null){
payMeetingLambdaQueryWrapper.eq(PayMeeting::getMeetingType, meetingCommon);
}
PayMeeting payMeeting = getOne(payMeetingLambdaQueryWrapper);
if (Objects.isNull(payMeeting)) {
throw new JeroBootException("会议不存在");
}
meetingCommon = payMeeting.getMeetingType();
String fileIds = uploadFileVO.getFileIds();
List<String> meetingFileIdList = new ArrayList<>(Arrays.asList(fileIds.split(",")));
if (isGuestsUpload){
String meetingData = payMeeting.getMeetingData();
if (StringUtils.isNotBlank(meetingData)) {
List<String> oldMeetingDataList = new ArrayList<>(Arrays.asList(meetingData.split(",")));
oldMeetingDataList.addAll(meetingFileIdList);
meetingFileIdList = oldMeetingDataList;
fileIds = String.join(",", meetingFileIdList);
}
}
//删除嘉宾文件
LambdaQueryWrapper<PayMeetingGuestsFile> deleteWrapper = new LambdaQueryWrapper<>();
deleteWrapper.eq(PayMeetingGuestsFile::getMeetingId,id);
deleteWrapper.notIn(PayMeetingGuestsFile::getFileId,meetingFileIdList);
meetingGuestsFileMapper.delete(deleteWrapper);
LambdaUpdateWrapper<PayMeeting> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(PayMeeting::getId, id);
wrapper.set(PayMeeting::getMeetingData, fileIds);
update(wrapper);
List<String> meetingFileIdList = Arrays.asList(fileIds.split(","));
//如果过滤后为空则不发邮件
if (meetingFileIdList.isEmpty()) {
return listMsg;
@@ -1132,7 +1186,7 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
new LambdaQueryWrapper<PayMeetingSituation>()
.select(PayMeetingSituation::getCompanyContactId)
.eq(PayMeetingSituation::getMeetingId, id)
.eq(PayMeetingSituation::getCheckResult, MeetingSubitemCommon.SIGNUP_STATUS_1)
.eq(PayMeetingSituation::getRegisterCheckResult, MeetingSubitemCommon.SIGNUP_STATUS_1)
);
if (payMeetingSituations.isEmpty()) {
return listMsg;
@@ -1,4 +1,6 @@
package com.jero.meeting.service.impl;
import java.io.File;
import java.util.Date;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
@@ -8,10 +10,12 @@ import cn.hutool.core.util.StrUtil;
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;
import com.jero.common.api.vo.Result;
import com.jero.common.common.ProjectCommon;
import com.jero.common.constant.CommonConstant;
import com.jero.common.dto.SendMessageDTO;
import com.jero.common.enums.CompanyMessageEnums;
import com.jero.common.enums.ManagementMessageEnums;
@@ -23,6 +27,7 @@ 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.AuthenticationUtils;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.ValidUtil;
import com.jero.common.util.oConvertUtils;
@@ -30,6 +35,7 @@ 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.company.vo.UpdateInvoicePram;
import com.jero.config.StaticConfig;
import com.jero.contract.common.PayIncomeContractCommon;
import com.jero.contract.entity.PayIncomeContract;
@@ -47,7 +53,9 @@ import com.jero.meeting.common.MeetingCommon;
import com.jero.meeting.common.MeetingSubitemCommon;
import com.jero.meeting.entity.PayMeeting;
import com.jero.meeting.entity.PayMeetingContacts;
import com.jero.meeting.entity.PayMeetingGuestsFile;
import com.jero.meeting.entity.PayMeetingSituation;
import com.jero.meeting.mapper.PayMeetingGuestsFileMapper;
import com.jero.meeting.mapper.PayMeetingSituationMapper;
import com.jero.meeting.service.IPayMeetingContactsService;
import com.jero.meeting.service.IPayMeetingService;
@@ -67,11 +75,13 @@ 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.standards.xuanguan.stablecrosstraining.entity.StableCrossTraining;
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.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.apache.shiro.SecurityUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.BeanUtils;
@@ -146,6 +156,8 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
private IPayWorkingGroupSubItemContactsService workingGroupSubItemContactsService;
@Resource
private PayRandomCodeService randomCodeService;
@Resource
private PayMeetingGuestsFileMapper meetingGuestsFileMapper;
private static final String[] CAN_MODIFY_LIST =
@@ -1076,6 +1088,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
//校验企业
String companyId = meetingEntity.getCompanyId();
PayCompanyManagement companyManagement = companyManagementService.getById(companyId);
payMeetingSituation.setCompanyName(companyManagement.getCompanyName());
//处理企业
canHuiRenCompany(payMeetingSituation1, companyManagement);
//校验企业联系人
@@ -1169,6 +1182,18 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
if (ProjectCommon.NEED_INVOICE1.equals(needInvoice)
||ProjectCommon.NEED_INVOICE2.equals(needInvoice)) {
ValidUtil.validate(commonPeopleVO, NotPack.class);
Integer invoiceProject = commonPeopleVO.getInvoiceProject();
payMeetingSituation1.setInvoiceProject(invoiceProject);
// 校验发票信息
UpdateInvoicePram updateInvoicePram = new UpdateInvoicePram();
BeanUtils.copyProperties(payMeetingSituation, updateInvoicePram);
if (Objects.equals(needInvoice, ProjectCommon.NEED_INVOICE1)) {
ValidUtil.validate(updateInvoicePram, UpdateInvoicePram.needInvoice_1.class);
} else {
ValidUtil.validate(updateInvoicePram, UpdateInvoicePram.needInvoice_2.class);
}
BeanUtils.copyProperties(updateInvoicePram, payMeetingSituation1);
}
String paymentRecord = payMeetingSituation.getPaymentRecord();
String orderCode = payMeetingSituation.getOrderCode();
@@ -1322,7 +1347,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
payMeetingSituation1.setPaidTax(BigDecimal.ZERO);
payMeetingSituation1.setPaidNoTaxAmount(BigDecimal.ZERO);
payMeetingSituation1.setPayMode(0);
payMeetingSituation1.setPayMode(null);
payMeetingSituation1.setTaxRate(StaticConfig.TAX_RATE);
payMeetingSituation1.setTax(BigDecimal.ZERO);
payMeetingSituation1.setNoTaxAmount(BigDecimal.ZERO);
@@ -1405,8 +1430,8 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
queryWrapper1.eq(PayMeetingContacts::getMeetingId, meetingId);
queryWrapper1.eq(PayMeetingContacts::getMeetingContactsId,sysUserId);
boolean b = meetingContactsService.count(queryWrapper1) > 0;
if (!b && !payMeeting.getDirectorId().equals(sysUserId)) {
throw new JeroBootException("只有会议负责人,会议联系人可以删除");
if (!b && !payMeeting.getDirectorId().equals(sysUserId)&& !payMeetingSituation.getCompanyContactId().equals(sysUserId)) {
throw new JeroBootException("只有会议负责人,会议联系人,参会人可以删除");
}
Integer inAccount = payMeetingSituation.getInAccount();
if (!inAccount.equals(PayProjectCommon.IN_ACCOUNT0)) {
@@ -1415,6 +1440,9 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
if (!payMeetingSituation.getMakeInvoice().equals(PayProjectCommon.MAKE_INVOICE0)) {
throw new JeroBootException(payMeetingSituation.getCompanyContactName() + " 该参会人已经有开票,无法删除");
}
if (!payMeetingSituation.getAffirmIncome().equals(PayProjectCommon.AFFIRM_INCOME0)) {
throw new JeroBootException(payMeetingSituation.getCompanyContactName() + " 该参会人已经有确认收入,无法删除");
}
LambdaQueryWrapper<PayIncomeContractAssociated> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(PayIncomeContractAssociated::getProjectId, id);
PayIncomeContractAssociated payIncomeContractAssociated = payIncomeContractAssociatedService.getOne(wrapper1);
@@ -1732,4 +1760,122 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
BeanUtils.copyProperties(internationalGuestVO, update);
updateById(update);
}
@Override
public void setGuestsUploadFile(SetGuestsUploadFileVO setGuestsUploadFileVO, Integer meetingType1) {
String meetingId = setGuestsUploadFileVO.getMeetingId();
PayMeeting payMeeting = meetingService.getById(meetingId);
String meetingType = payMeeting.getMeetingType().toString();
if (meetingType1 != null && !Objects.equals(payMeeting.getMeetingType(),meetingType1)) {
throw new JeroBootException("数据权限不足");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String sysUserId = sysUser.getId();
String directorId = payMeeting.getDirectorId();
//只有会议负责人可以修改
if (!directorId.equals(sysUserId)) {
throw new JeroBootException("只有会议负责人可以修改");
}
String meetingSituationIds = setGuestsUploadFileVO.getMeetingSituationIds();
List<String> meetingSituationIdList = Arrays.asList(meetingSituationIds.split(","));
List<PayMeetingSituation> payMeetingSituations = this.listByIds(meetingSituationIdList);
for (PayMeetingSituation meetingSituation : payMeetingSituations) {
String meetingId1 = meetingSituation.getMeetingId();
if (!meetingId.equals(meetingId1)){
throw new JeroBootException("参会人选择错误");
}
//只有嘉宾可以设置
Integer identity = meetingSituation.getIdentity();
Integer registerCheckResult = meetingSituation.getRegisterCheckResult();
if (!MeetingSubitemCommon.SIGNUP_STATUS_1.equals(registerCheckResult)
|| !identity.equals(MeetingSubitemCommon.JIA_BIN)){
throw new JeroBootException("只有审核通过的嘉宾才可以设置");
}
}
Integer guestsUploadFileFlag = setGuestsUploadFileVO.getGuestsUploadFileFlag();
LambdaUpdateWrapper<PayMeetingSituation> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(PayMeetingSituation::getGuestsUploadFileFlag, guestsUploadFileFlag);
updateWrapper.in(PayMeetingSituation::getId,meetingSituationIdList);
this.update(updateWrapper);
}
@Override
public void guestsUploadFile(GuestsUploadFileVO guestsUploadFileVO) {
String meetingId = guestsUploadFileVO.getMeetingId();
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String sysUserId = sysUser.getId();
LambdaQueryWrapper<PayMeetingSituation> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayMeetingSituation::getMeetingId,meetingId);
wrapper.eq(PayMeetingSituation::getCompanyContactId,sysUserId);
PayMeetingSituation meetingSituation = this.getOne(wrapper);
Integer identity = meetingSituation.getIdentity();
if (!identity.equals(MeetingSubitemCommon.JIA_BIN)){
throw new JeroBootException("只有嘉宾可以设置");
}
Integer guestsUploadFileFlag = meetingSituation.getGuestsUploadFileFlag();
if (!CommonConstant.DEL_FLAG_1.equals(guestsUploadFileFlag)){
throw new JeroBootException("没有权限");
}
String fileIds = guestsUploadFileVO.getFileIds();
String[] fileIdList = fileIds.split(",");
for (String fileId : fileIdList) {
PayMeetingGuestsFile payMeetingGuestsFile = new PayMeetingGuestsFile();
payMeetingGuestsFile.setMeetingId(meetingId);
payMeetingGuestsFile.setContactsId(sysUserId);
payMeetingGuestsFile.setFileId(fileId);
meetingGuestsFileMapper.insert(payMeetingGuestsFile);
}
UploadFileVO uploadFileVO = new UploadFileVO();
uploadFileVO.setId(meetingId);
uploadFileVO.setFileIds(fileIds);
meetingService.uploadFileSendMsg(uploadFileVO, null,true);
}
@Override
public List<PayMeetingGuestsFile> guestsUploadFileList(GuestsUploadFileVO guestsUploadFileVO) {
String meetingId = guestsUploadFileVO.getMeetingId();
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String sysUserId = sysUser.getId();
LambdaQueryWrapper<PayMeetingGuestsFile> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayMeetingGuestsFile::getMeetingId,meetingId);
wrapper.eq(PayMeetingGuestsFile::getContactsId,sysUserId);
wrapper.orderByDesc(PayMeetingGuestsFile::getCreateTime);
return meetingGuestsFileMapper.selectList(wrapper);
}
@Override
public void guestsDeleteFile(GuestsUploadFileVO guestsUploadFileVO) {
String meetingId = guestsUploadFileVO.getMeetingId();
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String sysUserId = sysUser.getId();
String fileIds = guestsUploadFileVO.getFileIds();
List<String> fileIdList = Arrays.asList(fileIds.split(","));
LambdaQueryWrapper<PayMeetingGuestsFile> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayMeetingGuestsFile::getMeetingId,meetingId);
wrapper.eq(PayMeetingGuestsFile::getContactsId,sysUserId);
wrapper.in(PayMeetingGuestsFile::getFileId,fileIdList);
meetingGuestsFileMapper.delete(wrapper);
PayMeeting meeting = meetingService.getById(meetingId);
String meetingData = meeting.getMeetingData();
List<String> meetingDataList = new ArrayList<>();
if (StringUtils.isNotBlank(meetingData)){
meetingDataList = Arrays.asList(meetingData.split(","));
meetingDataList.removeAll(fileIdList);
}
LambdaUpdateWrapper<PayMeeting> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(PayMeeting::getId, meetingId);
updateWrapper.set(PayMeeting::getMeetingData, String.join(",",meetingDataList));
meetingService.update(updateWrapper);
}
}
@@ -1,5 +1,6 @@
package com.jero.meeting.vo;
import com.jero.common.aspect.annotation.Dict;
import com.jero.meeting.valid.group.NotPack;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -55,4 +56,9 @@ public class CommonPeopleVO{
@ApiModelProperty(value = "缴费凭证")
private String paymentRecord;
/**发票项目*/
@Dict(dicCode = "invoice_project")
@ApiModelProperty(value = "发票项目")
private Integer invoiceProject;
}
@@ -0,0 +1,24 @@
package com.jero.meeting.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @author liJiaRao
* @date 2023-07-13 9:37
*/
@Data
public class GuestsUploadFileVO {
/**会议id*/
@ApiModelProperty(value = "会议id")
@NotBlank(message = "会议项目不能为空")
private String meetingId;
@ApiModelProperty(value = "文件ids")
@NotBlank(message = "文件不能为空")
private String fileIds;
}
@@ -156,9 +156,5 @@ public class InternationalGuestVO {
@Size(max = 50,message = "同行人最大为50字符")
private String peer;
/**备注*/
@Excel(name = "备注", width = 15)
@ApiModelProperty(value = "备注")
@Size(max = 200,message = "备注最大为200字符")
private String remark;
}
@@ -96,4 +96,10 @@ public class MeetingEntity implements Serializable {
@ApiModelProperty(value = "实收金额")
private BigDecimal paidAmount;
/**备注*/
@Excel(name = "备注", width = 15)
@ApiModelProperty(value = "备注")
@Size(max = 200,message = "备注最大为200字符")
private String remark;
}
@@ -5,6 +5,7 @@ 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;
import com.jero.company.vo.UpdateInvoicePram;
import com.jero.meeting.valid.group.CommonPeople;
import com.jero.meeting.valid.group.Guest;
import io.swagger.annotations.ApiModelProperty;
@@ -308,4 +309,40 @@ public class PayMeetingSituationVO {
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal noTaxAmount;
/**信用代码*/
@ApiModelProperty(value = "信用代码")
@NotEmpty(message = "信用代码不能为空",groups = {UpdateInvoicePram.needInvoice_1.class, UpdateInvoicePram.needInvoice_2.class})
@Size(max = 18, message = "信用代码长度不能大于18个字符",groups = {UpdateInvoicePram.needInvoice_1.class,UpdateInvoicePram.needInvoice_2.class})
@Pattern(regexp = "^([0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\\d{14})$",message = "信用代码格式错误",groups = {UpdateInvoicePram.needInvoice_1.class,UpdateInvoicePram.needInvoice_2.class})
private String dutyCode;
/**公司地址*/
@ApiModelProperty(value = "公司地址")
@NotEmpty(message = "公司地址不能为空",groups = UpdateInvoicePram.needInvoice_2.class)
@Size(max = 50, message = "公司地址长度不能大于50个字符",groups = UpdateInvoicePram.needInvoice_2.class)
private String companyAddress;
/**公司电话*/
@ApiModelProperty(value = "公司电话")
@Size(max = 15, message = "公司电话长度不能大于15个字符",groups = UpdateInvoicePram.needInvoice_2.class)
@Pattern(regexp = "^([0-9-]+)$",message = "公司电话格式错误",groups = UpdateInvoicePram.needInvoice_2.class)
private String companyPhone;
/**开户行*/
@ApiModelProperty(value = "开户行")
@NotEmpty(message = "开户行不能为空",groups = UpdateInvoicePram.needInvoice_2.class)
@Size(max = 50, message = "开户行长度不能大于50个字符",groups = UpdateInvoicePram.needInvoice_2.class)
private String openingBank;
/**银行账号*/
@ApiModelProperty(value = "银行账号")
@NotEmpty(message = "银行账号不能为空",groups = UpdateInvoicePram.needInvoice_2.class)
@Size(max = 50, message = "银行账号长度不能大于50个字符",groups = UpdateInvoicePram.needInvoice_2.class)
private String bankAccount;
/**联行号*/
@ApiModelProperty(value = "联行号")
@NotEmpty(message = "联行号不能为空",groups = UpdateInvoicePram.needInvoice_2.class)
private String linkBankNumber;
/**发票项目*/
@Dict(dicCode = "invoice_project")
@ApiModelProperty(value = "发票项目")
private Integer invoiceProject;
}
@@ -267,6 +267,11 @@ public class PayMeetingVO implements Serializable {
@Size(max = 1000, message = "会议通知文件数量超出最大限制")
private String meetingFiles;
/**会议通知文件*/
@ApiModelProperty(value = "会议文件")
@Size(max = 1000, message = "会议文件数量超出最大限制")
private String fileIds;
/**会议资料*/
@ApiModelProperty(value = "会议资料")
@Size(max = 1000, message = "会议资料数量超出最大限制")
@@ -21,4 +21,6 @@ public class PublishReminderVO {
private List<String> subitemIds;
@ApiModelProperty(value = "项目类型1:工作组,2:分标委")
private Integer projectType;
@ApiModelProperty(value = "是否发送邮件")
private Integer sendEmailFlag;
}
@@ -0,0 +1,27 @@
package com.jero.meeting.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author liJiaRao
* @date 2023-07-13 9:37
*/
@Data
public class SetGuestsUploadFileVO {
/**会议id*/
@ApiModelProperty(value = "会议id")
@NotBlank(message = "会议项目不能为空")
private String meetingId;
@ApiModelProperty(value = "参会人ids")
@NotBlank(message = "参会人不能为空")
private String meetingSituationIds;
@ApiModelProperty(value = "嘉宾上传文件标识")
@NotNull(message = "嘉宾上传文件标识不能为空")
private Integer guestsUploadFileFlag;
}
@@ -112,10 +112,6 @@ public class InternationalSituationExcel extends SituationBaseExcel {
@Excel(name = "同行人", width = 15)
private String peer;
/**备注*/
@Excel(name = "备注", width = 15)
private String remark;
/**邮寄联系人*/
@Excel(name = "邮寄联系人", width = 15, dictTable = "pay_contacts_management", dicText = "name", dicCode = "id")
private String postContactId;
@@ -12,4 +12,30 @@ public class SituationBaseExcel {
/**签到文件*/
@Excel(name = "手动签到", type = 2 ,width = 40 , height = 20,imageType = 3)
private String checkFile;
/**发票项目*/
@Excel(name = "发票项目", dicCode = "invoice_project", width = 15)
private Integer invoiceProject;
/**信用代码*/
@Excel(name = "信用代码", width = 15)
private String dutyCode;
/**公司地址*/
@Excel(name = "公司地址", width = 15)
private String companyAddress;
/**公司电话*/
@Excel(name = "公司电话", width = 15)
private String companyPhone;
/**开户行*/
@Excel(name = "开户行", width = 15)
private String openingBank;
/**银行账号*/
@Excel(name = "银行账号", width = 15)
private String bankAccount;
/**联行号*/
@Excel(name = "联行号", width = 15)
private String linkBankNumber;
/**备注*/
@Excel(name = "备注", width = 15)
private String remark;
}
@@ -25,6 +25,7 @@ import com.jero.pack.service.IPayPackCompanyProjectService;
import com.jero.pack.service.IPayPackCompanyService;
import com.jero.pack.vo.PayPackCompanyProjectInput;
import com.jero.pack.vo.PayProjectExcel;
import com.jero.project.common.PayProjectCommon;
import com.jero.project.entity.PayCommonProject;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -164,18 +165,36 @@ public class PayPackCompanyProjectServiceImpl extends ServiceImpl<PayPackCompany
@Override
@Transactional
public void removePayPackCompanyProject(PayPackCompanyProject payPackCompanyProject) {
String projectId = payPackCompanyProject.getId();
LambdaQueryWrapper<PayPackCompanyProject> query = new LambdaQueryWrapper<>();
query.eq(PayPackCompanyProject::getProjectId,payPackCompanyProject.getId());
query.eq(PayPackCompanyProject::getProjectId, projectId);
List<PayPackCompanyProject> listPayPackCompanyProject = payPackCompanyProjectService.list(query);
if(CollectionUtils.isEmpty(listPayPackCompanyProject)){
throw new JeroBootException("不存在打包项目!");
}
if(Objects.equals(listPayPackCompanyProject.get(0).getCome(),PackCommon.COME1)){
PayPackCompanyProject packCompanyProject = listPayPackCompanyProject.get(0);
Integer projectType = packCompanyProject.getProjectType();
if (Objects.equals(projectType, Integer.parseInt(PayProjectCommon.PROJECT_TYPE5))||
Objects.equals(projectType, Integer.parseInt(PayProjectCommon.PROJECT_TYPE6))){
PayCommonProject payCommonProject = projectDetailMapper.queryProject(projectId);
Integer chargeWay = payCommonProject.getChargeWay();
Integer affirmIncome = payCommonProject.getAffirmIncome();
Integer inAccount = payCommonProject.getInAccount();
if(Objects.equals(chargeWay,PayProjectCommon.CHARGE_WAY2)){
if (1 == affirmIncome || 2 == affirmIncome){
throw new JeroBootException("已经确认收入的打包标协会员项目不允许取消打包");
}
if (1 == inAccount || 2 == inAccount){
throw new JeroBootException("已经来款的打包标协会员项目不允许取消打包");
}
}
}
if(Objects.equals(packCompanyProject.getCome(),PackCommon.COME1)){
throw new JeroBootException("此项目已在合同处创建关联,请先从合同处取消关联!");
}
// 更新项目状态
projectPackService.updateProjectStatus(listPayPackCompanyProject.get(0).getProjectId(),String.valueOf(listPayPackCompanyProject.get(0).getProjectType()),String.valueOf(PackCommon.PACKAGING0),payPackCompanyProject.getPackId());
payPackCompanyProjectService.removeById(listPayPackCompanyProject.get(0).getId());
projectPackService.updateProjectStatus(packCompanyProject.getProjectId(),String.valueOf(projectType),String.valueOf(PackCommon.PACKAGING0),payPackCompanyProject.getPackId());
payPackCompanyProjectService.removeById(packCompanyProject.getId());
}
@Override
@@ -58,7 +58,7 @@ public class PayConfirmPaymentRecordController extends JeroController<PayConfir
/**
* 列表查询
*/
@RequiresPermissions("incomePaymentAndInvoiving:confirmPayment")
@RequiresPermissions({"incomePaymentAndInvoiving:confirmPayment","packProject:confirmPayment"})
@ApiOperation(value="确认来款-列表查询", notes="确认来款-列表查询")
@GetMapping(value = "/list")
public Result<List<PayConfirmPaymentRecord>> queryList(PayConfirmPaymentRecord payConfirmPaymentRecord,
@@ -71,7 +71,7 @@ public class PayConfirmPaymentRecordController extends JeroController<PayConfir
/**
* 添加
*/
@RequiresPermissions("incomePaymentAndInvoiving:confirmPayment")
@RequiresPermissions({"incomePaymentAndInvoiving:confirmPayment","packProject:confirmPayment"})
@AutoLog(value = "确认来款-添加")
@ApiOperation(value="确认来款-添加", notes="确认来款-添加")
@PostMapping(value = "/add")
@@ -83,7 +83,7 @@ public class PayConfirmPaymentRecordController extends JeroController<PayConfir
/**
* 编辑
*/
@RequiresPermissions("incomePaymentAndInvoiving:confirmPayment")
@RequiresPermissions({"incomePaymentAndInvoiving:confirmPayment","packProject:confirmPayment"})
@AutoLog(value = "确认来款-编辑")
@ApiOperation(value="确认来款-编辑", notes="确认来款-编辑")
@PostMapping(value = "/edit")
@@ -9,7 +9,7 @@ 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.PayMailBillVO;
import com.jero.mail.vo.PayMailBillVO;
import com.jero.mail.service.IPayMailBillService;
import com.jero.member.entity.TbCertificatePayment;
import com.jero.member.entity.TbMemberProjectSubitem;
@@ -190,7 +190,9 @@
</if>
<!-- 标协会员项目-->
UNION ALL
select tmsub.id,tmember.project_name,tmsub.charge_use,tmember.director_id,su.realname,tmsub.company_id,tmsub.company_name,tmsub.amount_receivable,tmsub.paid_amount,tmsub.invoice_requirements,tmsub.pack,tmsub.in_account,tmsub.make_invoice,tmsub.mail,tmsub.create_time,5,
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
from tb_member_project tmember
inner join tb_member_project_subitem tmsub on tmember.id=tmsub.project_id
@@ -202,10 +204,14 @@
AND 1=2
</if>
<if test="payCommonProject.chargeProject != null and payCommonProject.chargeProject != ''">
AND tmember.project_name like concat('%',concat(#{payCommonProject.chargeProject},'%'))
AND tmember.project_name like concat('%',#{payCommonProject.chargeProject},'%')
</if>
<if test="payCommonProject.chargeCompanyTemporaryName != null and payCommonProject.chargeCompanyTemporaryName != ''">
AND tmsub.company_name like concat('%',concat(#{payCommonProject.chargeCompanyTemporaryName},'%'))
AND (
tmsub.company_name like concat('%',#{payCommonProject.chargeCompanyTemporaryName},'%')
or
tmsub.header_name like concat('%',#{payCommonProject.chargeCompanyTemporaryName},'%')
)
</if>
<if test="payCommonProject.paymentStatus != null and payCommonProject.paymentStatus != ''">
AND tmsub.payment_status = #{payCommonProject.paymentStatus}
@@ -225,7 +231,9 @@
</if>
<!-- 标协证书项目-->
UNION ALL
select tcp.id,tmember.project_name,tcp.charge_use,tmember.director_id,su.realname,tcp.company_id,tcp.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,
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
from tb_member_project tmember
inner join tb_certificate_payment tcp on tmember.id=tcp.project_id
@@ -237,10 +245,14 @@
AND 1=2
</if>
<if test="payCommonProject.chargeProject != null and payCommonProject.chargeProject != ''">
AND tmember.project_name like concat('%',concat(#{payCommonProject.chargeProject},'%'))
AND tmember.project_name like concat('%',#{payCommonProject.chargeProject},'%')
</if>
<if test="payCommonProject.chargeCompanyTemporaryName != null and payCommonProject.chargeCompanyTemporaryName != ''">
AND tcp.company_name like concat('%',concat(#{payCommonProject.chargeCompanyTemporaryName},'%'))
AND (
tcp.company_name like concat('%',#{payCommonProject.chargeCompanyTemporaryName},'%')
or
tcp.header_name like concat('%',#{payCommonProject.chargeCompanyTemporaryName},'%')
)
</if>
<if test="payCommonProject.paymentStatus != null and payCommonProject.paymentStatus != ''">
AND tcp.payment_status = #{payCommonProject.paymentStatus}
@@ -262,14 +274,14 @@
LEFT JOIN pay_payment_record ppr ON ppr.project_id = p.id
where
1=1
<if test="param2.startAmount != null and param2.startAmount != '' and param2.endAmount != null and param2.endAmount != ''">
AND p.receivable_amount between #{param2.startAmount} and #{param2.endAmount}
<if test="payCommonProject.startAmount != null and payCommonProject.startAmount != '' and payCommonProject.endAmount != null and payCommonProject.endAmount != ''">
AND p.receivable_amount between #{payCommonProject.startAmount} and #{payCommonProject.endAmount}
</if>
<if test="param2.startAmount == null and param2.endAmount != null">
AND p.receivable_amount <![CDATA[<=]]> #{param2.endAmount}
<if test="payCommonProject.startAmount == null and payCommonProject.endAmount != null">
AND p.receivable_amount <![CDATA[<=]]> #{payCommonProject.endAmount}
</if>
<if test="param2.startAmount != null and param2.endAmount == null">
AND p.receivable_amount <![CDATA[>=]]> #{param2.startAmount}
<if test="payCommonProject.startAmount != null and payCommonProject.endAmount == null">
AND p.receivable_amount <![CDATA[>=]]> #{payCommonProject.startAmount}
</if>
<if test="projectType != null and projectType != ''">
AND p.projectType = #{projectType}
@@ -282,12 +294,12 @@
<!-- 到账开票导出-->
<select id="mainListExportXls" resultType="com.jero.project.vo.PayCommonProjectOutput">
select p.id,p.charge_project, p.charge_use, p.principal_id,p.principal_name,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.charge_company_temporary_id,
p.confirm_amount,p.contacts_temporary_name
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
from
(<!-- 普通项目-->
select c.id,c.charge_project, c.charge_use, c.principal_id,su.realname as principal_name,c.charge_company_temporary_name,c.receivable_amount,c.paid_amount,c.need_invoice,c.pack,c.in_account,c.make_invoice,c.mail,c.create_time,1 as projectType,c.charge_company_temporary_id
,c.confirm_amount,c.contacts_temporary_name
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
from pay_common_project c
left join sys_user su on c.principal_id = su.id
where
@@ -315,10 +327,13 @@
AND (c.paid_amount <![CDATA[<]]> c.invoice_amount or
(c.paid_amount is null and c.invoice_amount is not null and c.invoice_amount !=0))
</if>
<if test="payCommonProject.affirmIncome != null">
AND c.affirm_income = #{payCommonProject.affirmIncome}
</if>
<!--工作组项目-->
UNION ALL
select gsub.id,g.working_group_project, gsub.charge_use, g.principal_id_a,su.realname,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.charge_company_temporary_id,
gsub.confirm_amount,gsubc.contacts_temporary_name
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
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
@@ -348,13 +363,16 @@
AND (gsub.paid_amount <![CDATA[<]]> gsub.invoice_amount or
(gsub.paid_amount is null and gsub.invoice_amount is not null and gsub.invoice_amount !=0))
</if>
<if test="payCommonProject.affirmIncome != null">
AND gsub.affirm_income = #{payCommonProject.affirmIncome}
</if>
<!-- 会议项目-->
UNION ALL
select sit.id,meeting.meeting_name,sit.charge_use, meeting.director_id, su.realname,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.company_id,
sit.confirm_amount,sit.company_contact_name
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
from pay_meeting meeting
left join sys_user su on meeting.director_id = su.id
inner join pay_meeting_situation sit on meeting.id = sit.meeting_id
left join sys_user su on su.id = meeting.director_id
where
sit.amount_receivable <![CDATA[<>]]> 0
and sit.amount_receivable is not null
@@ -380,21 +398,24 @@
AND (sit.paid_amount <![CDATA[<]]> sit.invoice_amount or
(sit.paid_amount is null and sit.invoice_amount is not null and sit.invoice_amount !=0))
</if>
<if test="payCommonProject.affirmIncome != null">
AND sit.affirm_income = #{payCommonProject.affirmIncome}
</if>
<!-- 会员项目-->
UNION ALL
select msub.id,member.project_name,msub.charge_use,member.director_id,su.realname,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.company_temporary_id,
msub.confirm_amount,msub.company_contact_name
from pay_member_project member
left join sys_user su on member.director_id = su.id
inner join pay_member_project_subitem msub on member.id=msub.project_id
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
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
where
msub.amount_receivable <![CDATA[<>]]> 0
and msub.amount_receivable is not null
<if test="payCommonProject.principalId != null and payCommonProject.principalId != ''">
AND member.director_id = #{payCommonProject.principalId}
AND pmp.director_id = #{payCommonProject.principalId}
</if>
<if test="payCommonProject.chargeProject != null and payCommonProject.chargeProject != ''">
AND member.project_name like concat('%',concat(#{payCommonProject.chargeProject},'%'))
AND pmp.project_name like concat('%',concat(#{payCommonProject.chargeProject},'%'))
</if>
<if test="payCommonProject.chargeCompanyTemporaryName != null and payCommonProject.chargeCompanyTemporaryName != ''">
AND msub.company_name like concat('%',concat(#{payCommonProject.chargeCompanyTemporaryName},'%'))
@@ -412,13 +433,18 @@
AND (msub.paid_amount <![CDATA[<]]> msub.invoice_amount or
(msub.paid_amount is null and msub.invoice_amount is not null and msub.invoice_amount !=0))
</if>
<if test="payCommonProject.affirmIncome != null">
AND msub.affirm_income = #{payCommonProject.affirmIncome}
</if>
<!-- 标协会员项目-->
UNION ALL
select tmsub.id,tmember.project_name,tmsub.charge_use,tmember.director_id,su.realname,tmsub.company_name,tmsub.amount_receivable,tmsub.paid_amount,tmsub.invoice_requirements,tmsub.pack,tmsub.in_account,tmsub.make_invoice,tmsub.mail,tmsub.create_time,5,tmsub.company_id,
tmsub.confirm_amount,tmsub.liaison_man
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
from tb_member_project tmember
left join sys_user su on tmember.director_id = su.id
inner join tb_member_project_subitem tmsub on tmember.id=tmsub.project_id
left join sys_user su on su.id = tmember.director_id
where
tmsub.amount_receivable <![CDATA[<>]]> 0
and tmsub.amount_receivable is not null
@@ -426,10 +452,14 @@
AND 1=2
</if>
<if test="payCommonProject.chargeProject != null and payCommonProject.chargeProject != ''">
AND tmember.project_name like concat('%',concat(#{payCommonProject.chargeProject},'%'))
AND tmember.project_name like concat('%',#{payCommonProject.chargeProject},'%')
</if>
<if test="payCommonProject.chargeCompanyTemporaryName != null and payCommonProject.chargeCompanyTemporaryName != ''">
AND tmsub.company_name like concat('%',concat(#{payCommonProject.chargeCompanyTemporaryName},'%'))
AND (
tmsub.company_name like concat('%',#{payCommonProject.chargeCompanyTemporaryName},'%')
or
tmsub.header_name like concat('%',#{payCommonProject.chargeCompanyTemporaryName},'%')
)
</if>
<if test="payCommonProject.paymentStatus != null and payCommonProject.paymentStatus != ''">
AND tmsub.payment_status = #{payCommonProject.paymentStatus}
@@ -444,10 +474,15 @@
AND (tmsub.paid_amount <![CDATA[<]]> tmsub.invoice_amount or
(tmsub.paid_amount is null and tmsub.invoice_amount is not null and tmsub.invoice_amount !=0))
</if>
<if test="payCommonProject.affirmIncome != null">
AND tmsub.affirm_income = #{payCommonProject.affirmIncome}
</if>
<!-- 标协证书项目-->
UNION ALL
select tcp.id,tmember.project_name,tcp.charge_use,tmember.director_id,su.realname,tcp.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.company_id,
tcp.confirm_amount,tcp.liaison_man
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
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
@@ -458,10 +493,14 @@
AND 1=2
</if>
<if test="payCommonProject.chargeProject != null and payCommonProject.chargeProject != ''">
AND tmember.project_name like concat('%',concat(#{payCommonProject.chargeProject},'%'))
AND tmember.project_name like concat('%',#{payCommonProject.chargeProject},'%')
</if>
<if test="payCommonProject.chargeCompanyTemporaryName != null and payCommonProject.chargeCompanyTemporaryName != ''">
AND tcp.company_name like concat('%',concat(#{payCommonProject.chargeCompanyTemporaryName},'%'))
AND (
tcp.company_name like concat('%',#{payCommonProject.chargeCompanyTemporaryName},'%')
or
tcp.header_name like concat('%',#{payCommonProject.chargeCompanyTemporaryName},'%')
)
</if>
<if test="payCommonProject.paymentStatus != null and payCommonProject.paymentStatus != ''">
AND tcp.payment_status = #{payCommonProject.paymentStatus}
@@ -476,10 +515,22 @@
AND (tcp.paid_amount <![CDATA[<]]> tcp.invoice_amount or
(tcp.paid_amount is null and tcp.invoice_amount is not null and tcp.invoice_amount !=0))
</if>
<if test="payCommonProject.affirmIncome != null">
AND tcp.affirm_income = #{payCommonProject.affirmIncome}
</if>
)p
LEFT JOIN pay_payment_record ppr ON ppr.project_id = p.id
where
1=1
<if test="payCommonProject.startAmount != null and payCommonProject.startAmount != '' and payCommonProject.endAmount != null and payCommonProject.endAmount != ''">
AND p.receivable_amount between #{payCommonProject.startAmount} and #{payCommonProject.endAmount}
</if>
<if test="payCommonProject.startAmount == null and payCommonProject.endAmount != null">
AND p.receivable_amount <![CDATA[<=]]> #{payCommonProject.endAmount}
</if>
<if test="payCommonProject.startAmount != null and payCommonProject.endAmount == null">
AND p.receivable_amount <![CDATA[>=]]> #{payCommonProject.startAmount}
</if>
<if test="projectType != null and projectType != ''">
AND p.projectType = #{projectType}
</if>
@@ -79,6 +79,10 @@ public class PayProjectCommon {
* 项目类型1普通项目2工作组项目3会议项目4会员项目5标协会员项目
*/
public final static String PROJECT_TYPE5 = "5";
/**
* 项目类型1普通项目2工作组项目3会议项目4会员项目5标协会员项目6标协证书项目
*/
public final static String PROJECT_TYPE6 = "6";
/**
* 来款用途 1工作组是标准制定工作组经费
*/
@@ -5,6 +5,8 @@ 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.aspect.annotation.DictPoint;
import com.jero.common.constant.CommonConstant;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.vo.LoginUser;
@@ -12,6 +14,7 @@ import com.jero.common.util.oConvertUtils;
import com.jero.company.entity.PayContactsManagement;
import com.jero.data.entity.PayCaseCommitteeSubitem;
import com.jero.data.entity.PayCaseCouncilSubitem;
import com.jero.data.mapper.PayFileEmailRemindRecordMapper;
import com.jero.data.service.IPayCaseCommitteeSubitemService;
import com.jero.data.service.IPayCaseCouncilSubitemService;
import com.jero.modules.oss.entity.OSSFile;
@@ -71,6 +74,8 @@ public class PayWorkingGroupDistributionRecordController extends JeroController<
private IOSSFileService iossFileService;
@Value("${jero.path.upload}")
private String upLoadPath;
@Resource
private PayFileEmailRemindRecordMapper fileEmailRemindRecordMapper;
/**
@@ -194,9 +199,12 @@ public class PayWorkingGroupDistributionRecordController extends JeroController<
* @param projectType 项目类型
* @return
*/
@DictPoint
@ApiOperation(value="资料分发-分发成员列表", notes="资料分发-分发成员列表")
@GetMapping(value = "/list")
public Result<?> list(@RequestParam("projectId") String projectId,@RequestParam("projectType") Integer projectType) {
public Result<?> list(@RequestParam("projectId") String projectId,
@RequestParam("projectType") Integer projectType,
@RequestParam(value = "fileId",required = false) String fileId) {
if(StringUtils.isBlank(projectId)){
throw new JeroBootException("项目id不能为空!");
}
@@ -229,6 +237,7 @@ public class PayWorkingGroupDistributionRecordController extends JeroController<
PayContactsManagement payContactsManagement = new PayContactsManagement();
payContactsManagement.setId(p.getContactsId());
payContactsManagement.setName(p.getContactsName());
payContactsManagement.setCompanyName(p.getCompanyName());
listData.add(payContactsManagement);
});
}
@@ -241,6 +250,7 @@ public class PayWorkingGroupDistributionRecordController extends JeroController<
PayContactsManagement payContactsManagement = new PayContactsManagement();
payContactsManagement.setId(p.getContactsId());
payContactsManagement.setName(p.getContactsName());
payContactsManagement.setCompanyName(p.getCompanyName());
listData.add(payContactsManagement);
});
}
@@ -248,6 +258,18 @@ public class PayWorkingGroupDistributionRecordController extends JeroController<
}else {
throw new JeroBootException("项目状态不正确!");
}
if (StringUtils.isNotBlank(fileId)) {
List<String> contactIdByFileId = fileEmailRemindRecordMapper.selectContactIdByFileId(fileId);
for (PayContactsManagement payContactsManagement : listData) {
String id = payContactsManagement.getId();
if (contactIdByFileId.contains(id)) {
payContactsManagement.setRemind(CommonConstant.DEL_FLAG_1);
}else {
payContactsManagement.setRemind(CommonConstant.DEL_FLAG_0);
}
}
}
return Result.OK(listData);
}
@@ -43,6 +43,7 @@ import com.jero.project.service.IPayWorkingGroupService;
import com.jero.project.service.IPayWorkingGroupSubItemContactsService;
import com.jero.project.service.IPayWorkingGroupSubItemService;
import com.jero.project.vo.SetChargeInput;
import com.jero.project.vo.SetLabelVO;
import com.jero.project.vo.excel.PayWorkingGroupSubItemExcel;
import com.jero.temporary.entity.PayContactsManagementTemporary;
import com.jero.temporary.service.IPayContactsManagementTemporaryService;
@@ -731,5 +732,31 @@ public class PayWorkingGroupSubItemController extends JeroController<PayWorkingG
return Result.OK("文件导入成功!");
}
/**
* 设置标签
*
* @return
*/
@AutoLog(value = "设置标签",operateType = 2)
@RequiresPermissions("workingGroupMember:setLabel")
@PostMapping(value = "/setLabel")
@ApiOperation(value = "工作组成员-设置标签")
public Result<?> setLabel(@RequestBody SetLabelVO setLabelVO) {
payWorkingGroupSubItemService.setLabel(setLabelVO);
return Result.OK("设置标签成功!");
}
/**
* 删除标签
*
* @return
*/
@AutoLog(value = "删除标签",operateType = 2)
@RequiresPermissions("workingGroupMember:setLabel")
@PostMapping(value = "/deleteLabel")
@ApiOperation(value = "工作组成员-删除标签")
public Result<?> deleteLabel(@RequestBody SetLabelVO setLabelVO) {
payWorkingGroupSubItemService.deleteLabel(setLabelVO);
return Result.OK("设置标签成功!");
}
}
@@ -95,4 +95,11 @@ public class PayWorkingGroupDistributionRecord implements Serializable {
@TableField(exist = false)
@ApiModelProperty(value = "联系人临时id")
private String temporaryContactsId;
/**
* 是否发送邮件
*/
@TableField(exist = false)
@ApiModelProperty(value = "是否发送邮件")
private Integer sendEmailFlag;
}
@@ -575,4 +575,9 @@ public class PayWorkingGroupSubItem implements Serializable {
@ApiModelProperty(value = "未税金额")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal noTaxAmount;
@Excel(name = "标签名称", width = 15)
@ApiModelProperty(value = "标签")
@Size(max = 32,message = "标签名称长度不能大于50个字符")
private String label;
}
@@ -43,7 +43,8 @@
pwgs.update_by AS updateBy,
pwgs.tax,
pwgs.tax_rate,
pwgs.no_tax_amount
pwgs.no_tax_amount,
pwgs.label
FROM pay_working_group_subitem pwgs
LEFT JOIN pay_payment_record ppr ON ppr.project_id = pwgs.id
<where>
@@ -64,6 +65,9 @@
<if test="payWorkingGroupSubItem.pack != null">
and pack = #{payWorkingGroupSubItem.pack}
</if>
<if test="payWorkingGroupSubItem.label != null and payWorkingGroupSubItem.label != ''">
and label LIKE concat('%',#{payWorkingGroupSubItem.label},'%')
</if>
</where>
GROUP BY pwgs.id
ORDER BY pwgs.create_time desc
@@ -8,6 +8,7 @@ import com.jero.project.entity.PayWorkGroupSubletStatistics;
import com.jero.project.entity.PayWorkingGroupSubItem;
import com.jero.project.entity.PayWorkingGroupSubletSearch;
import com.jero.project.vo.SetChargeInput;
import com.jero.project.vo.SetLabelVO;
import com.jero.statistics.entity.AllMoney;
import javax.servlet.http.HttpServletRequest;
@@ -118,4 +119,8 @@ public interface IPayWorkingGroupSubItemService extends IService<PayWorkingGroup
IPage<PayWorkingGroupSubItem> publishReminderList(Page<PayWorkingGroupSubItem> page, PayWorkingGroupSubItem payWorkingGroupSubItem);
void setLabel(SetLabelVO setLabelVO);
void deleteLabel(SetLabelVO setLabelVO);
}
@@ -76,19 +76,24 @@ public class PayWorkingGroupDataFileServiceImpl extends ServiceImpl<PayWorkingGr
throw new JeroBootException("用户不存在!");
}
// 验证文件是否为会议
EmailSendMsgHandle emailHandle = null;
LambdaQueryWrapper<PayMeeting> queryPayMeeting = new LambdaQueryWrapper<>();
queryPayMeeting.like(PayMeeting::getMeetingData,fileId);
List<PayMeeting> listPayMeeting = payMeetingService.list(queryPayMeeting);
// 验证会议文件下载次数是否达到上线
if(!CollectionUtils.isEmpty(listPayMeeting)){
LambdaQueryWrapper<PayFileDownloadRecord> queryPayFileDownloadRecord = new LambdaQueryWrapper<>();
queryPayFileDownloadRecord.eq(PayFileDownloadRecord::getUserId,userId);
queryPayFileDownloadRecord.eq(PayFileDownloadRecord::getFileId,fileId);
int count = payFileDownloadRecordService.count(queryPayFileDownloadRecord);
if(count >= PayProjectCommon.DOWNLOAD_COUNT){
throw new JeroBootException("文件下载次数已达上线!");
String content = "";
for (PayMeeting meeting : listPayMeeting) {
String directorId = meeting.getDirectorId();
LoginUser loginUser = sysBaseAPI.getUserById(directorId);
String fromEmail = loginUser.getEmail();
String fromEmailPassword = loginUser.getEmailPassword();
if (StringUtils.isNotBlank(fromEmail) && StringUtils.isNotBlank(fromEmailPassword)){
String fromEmailNew = PasswordUtil.decrypt(fromEmail);
String fromEmailPasswordNew = PasswordUtil.decrypt(fromEmailPassword);
emailHandle = new EmailSendMsgHandle(fromEmailNew,fromEmailPasswordNew);
}
content = meeting.getMeetingName();
}
OSSFile byId = iossFileService.getById(fileId);
if(Objects.isNull(byId)){
throw new JeroBootException("没有找到文件!");
@@ -102,15 +107,17 @@ public class PayWorkingGroupDataFileServiceImpl extends ServiceImpl<PayWorkingGr
throw new JeroBootException("用户邮箱不能为空!");
}
try {
// 发送人为管理员
LoginUser loginUser = sysBaseAPI.getUserByName(env.getProperty("message.systemEmailUser"));
String fromEmail = loginUser.getEmail();
String fromEmailPassword = loginUser.getEmailPassword();
String fromEmailNew = PasswordUtil.decrypt(fromEmail);
String fromEmailPasswordNew = PasswordUtil.decrypt(fromEmailPassword);
EmailSendMsgHandle emailHandle = new EmailSendMsgHandle(fromEmailNew,fromEmailPasswordNew);
if (emailHandle == null){
// 发送人为管理员
LoginUser loginUser = sysBaseAPI.getUserByName(env.getProperty("message.systemEmailUser"));
String fromEmail = loginUser.getEmail();
String fromEmailPassword = loginUser.getEmailPassword();
String fromEmailNew = PasswordUtil.decrypt(fromEmail);
String fromEmailPasswordNew = PasswordUtil.decrypt(fromEmailPassword);
emailHandle = new EmailSendMsgHandle(fromEmailNew,fromEmailPasswordNew);
}
String email = PasswordUtil.decrypt(payContactsManagement.getEmail());
emailHandle.SendMsgAndFile(email,"资料","文件",listFile);
emailHandle.SendMsgAndFile(email,"会议资料",content+"文件",listFile);
}catch (Exception e){
log.error("邮件发送异常",e);
throw new JeroBootException("邮件发送失败!");
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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;
import com.jero.common.exception.JeroBootException;
@@ -16,14 +17,9 @@ import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.PasswordUtil;
import com.jero.company.entity.PayContactsManagement;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.data.entity.PayCaseCommittee;
import com.jero.data.entity.PayCaseCommitteeSubitem;
import com.jero.data.entity.PayCaseCouncil;
import com.jero.data.entity.PayCaseCouncilSubitem;
import com.jero.data.service.IPayCaseCommitteeService;
import com.jero.data.service.IPayCaseCommitteeSubitemService;
import com.jero.data.service.IPayCaseCouncilService;
import com.jero.data.service.IPayCaseCouncilSubitemService;
import com.jero.data.entity.*;
import com.jero.data.service.*;
import com.jero.data.service.impl.PayFileEmailRemindRecordService;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.project.common.PayProjectCommon;
@@ -84,14 +80,17 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl<Pa
private IPayCaseCouncilService payCaseCouncilService;
@Resource
private IPayWorkingGroupSubItemContactsService payWorkingGroupSubItemContactsService;
@Resource
private PayFileEmailRemindRecordService fileEmailRemindRecordService;
@Override
@Transactional
public List<String> add(PayWorkingGroupDistributionRecord payWorkingGroupDistributionRecord) {
if(StringUtils.isBlank(payWorkingGroupDistributionRecord.getContactsIds())){
String contactsIds = payWorkingGroupDistributionRecord.getContactsIds();
if(StringUtils.isBlank(contactsIds)){
throw new JeroBootException("成员id不能为空!");
}
String[] s = payWorkingGroupDistributionRecord.getContactsIds().split(",");
String[] s = contactsIds.split(",");
for (String s1 : s) {
if(StringUtils.isBlank(s1)){
throw new JeroBootException("成员id不能为空!");
@@ -137,7 +136,7 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl<Pa
msg = payWorkingGroup.getWorkingGroupProject();
}else if(payWorkingGroupDistributionRecord.getProjectType() == PayProjectCommon.PROJECT_TYPE_FILE2){
LambdaQueryWrapper<PayContactsManagement> queryPayContactsManagement = new LambdaQueryWrapper<>();
queryPayContactsManagement.in(PayContactsManagement::getId, Arrays.asList(payWorkingGroupDistributionRecord.getContactsIds().split(",")));
queryPayContactsManagement.in(PayContactsManagement::getId, Arrays.asList(contactsIds.split(",")));
List<PayContactsManagement> listContacts = payContactsManagementService.list(queryPayContactsManagement);
if(!CollectionUtils.isEmpty(listContacts)){
String str = JSON.toJSONString(listContacts);
@@ -169,7 +168,7 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl<Pa
msg = payCaseCommittee.getName();
}else if(payWorkingGroupDistributionRecord.getProjectType() == PayProjectCommon.PROJECT_TYPE_FILE3){
LambdaQueryWrapper<PayContactsManagement> queryPayContactsManagement = new LambdaQueryWrapper<>();
queryPayContactsManagement.in(PayContactsManagement::getId, Arrays.asList(payWorkingGroupDistributionRecord.getContactsIds().split(",")));
queryPayContactsManagement.in(PayContactsManagement::getId, Arrays.asList(contactsIds.split(",")));
List<PayContactsManagement> listContacts = payContactsManagementService.list(queryPayContactsManagement);
if(!CollectionUtils.isEmpty(listContacts)){
String str = JSON.toJSONString(listContacts);
@@ -206,21 +205,25 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl<Pa
throw new JeroBootException("分发失败!");
}
// 发送消息
int success = list.size();
int failed = 0;
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String finalMsg = msg;
List<String> listMsg = new ArrayList<>();
list.forEach(p->{
for (PayContactsManagementTemporary p : list) {
try {
List<PayWorkingGroupDistributionRecord> listStr = listPayWorkingGroupDistributionRecord.stream().filter(item->
(payWorkingGroupDistributionRecord.getProjectType() == PayProjectCommon.PROJECT_TYPE_FILE1) ?
Objects.equals(item.getTemporaryContactsId(),p.getId()) :
Objects.equals(item.getContactsId(),p.getId())).collect(Collectors.toList());
if(CollectionUtils.isEmpty(listStr)){
return;
continue;
}
// 发送消息
SendMessageDTO sendMessageDTO = new SendMessageDTO();
Integer sendEmailFlag = payWorkingGroupDistributionRecord.getSendEmailFlag();
sendMessageDTO.setSendEmailFlag(sendEmailFlag);
if(!StringUtils.isBlank(p.getEmail())){
sendMessageDTO.setEmail(PasswordUtil.decrypt(p.getEmail()));
}
@@ -243,36 +246,44 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl<Pa
}
sendMessageDTO.setBusId(json.toJSONString());
sendMessageService.SendMessageService(sendMessageDTO);
if (!CommonConstant.DEL_FLAG_0.equals(sendEmailFlag)) {
fileEmailRemindRecordService.insertByFileList(byId.getId(),p.getId());
}
}catch (Exception e){
if(e.getMessage().contains("邮件发送") && !listMsg.contains(p.getName() + "邮件发送失败")){
success--;
failed++;
listMsg.add(p.getCompanyName()+"-"+p.getName() + "邮件发送失败");
}
}
});
}
listMsg.add(0,"成功"+success+"条数据,失败"+failed+"条数据");
return listMsg;
}
@Override
public List<String> addBatch(PayWorkingGroupDistributionRecord payWorkingGroupDistributionRecord) {
if(StringUtils.isBlank(payWorkingGroupDistributionRecord.getContactsIds())){
String contactsIds = payWorkingGroupDistributionRecord.getContactsIds();
if(StringUtils.isBlank(contactsIds)){
throw new JeroBootException("成员id不能为空!");
}
String[] s = payWorkingGroupDistributionRecord.getContactsIds().split(",");
String[] s = contactsIds.split(",");
for (String s1 : s) {
if(StringUtils.isBlank(s1)){
throw new JeroBootException("成员id不能为空!");
}
}
if(StringUtils.isBlank(payWorkingGroupDistributionRecord.getDataIds())){
String dataIds = payWorkingGroupDistributionRecord.getDataIds();
if(StringUtils.isBlank(dataIds)){
throw new JeroBootException("资料id不能为空!");
}
String[] n = payWorkingGroupDistributionRecord.getDataIds().split(",");
String[] n = dataIds.split(",");
for (String s1 : n) {
if(StringUtils.isBlank(s1)){
throw new JeroBootException("资料id不能为空!");
}
}
List<PayWorkingGroupDataFile> listPayWorkingGroupDataFile = payWorkingGroupDataFileService.listByIds(Arrays.asList(payWorkingGroupDistributionRecord.getDataIds().split(",")));
List<PayWorkingGroupDataFile> listPayWorkingGroupDataFile = payWorkingGroupDataFileService.listByIds(Arrays.asList(dataIds.split(",")));
if(CollectionUtils.isEmpty(listPayWorkingGroupDataFile)){
throw new JeroBootException("没有找到文件!");
}
@@ -400,20 +411,24 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl<Pa
throw new JeroBootException("分发失败!");
}
// 发送消息
int success = list.size();
int failed = 0;
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String finalMsg = msg;
List<String> listMsg = new ArrayList<>();
list.forEach(p->{
for (PayContactsManagementTemporary p : list) {
try {
List<PayWorkingGroupDistributionRecord> listStr = listPayWorkingGroupDistributionRecord.stream().filter(item->
(payWorkingGroupDistributionRecord.getProjectType() == PayProjectCommon.PROJECT_TYPE_FILE1) ?
Objects.equals(item.getTemporaryContactsId(),p.getId()) :
Objects.equals(item.getContactsId(),p.getId())).collect(Collectors.toList());
if(CollectionUtils.isEmpty(listStr)){
return;
continue;
}
// 发送消息
SendMessageDTO sendMessageDTO = new SendMessageDTO();
Integer sendEmailFlag = payWorkingGroupDistributionRecord.getSendEmailFlag();
sendMessageDTO.setSendEmailFlag(sendEmailFlag);
if(!StringUtils.isBlank(p.getEmail())){
sendMessageDTO.setEmail(PasswordUtil.decrypt(p.getEmail()));
}
@@ -436,13 +451,18 @@ public class PayWorkingGroupDistributionRecordServiceImpl extends ServiceImpl<Pa
}
sendMessageDTO.setBusId(json.toJSONString());
sendMessageService.SendMessageService(sendMessageDTO);
if (!CommonConstant.DEL_FLAG_0.equals(sendEmailFlag)) {
fileEmailRemindRecordService.insertByFileList(dataIds,p.getId());
}
}catch (Exception e){
if(e.getMessage().contains("邮件发送") && !listMsg.contains(p.getName() + "邮件发送失败")){
success--;
failed++;
listMsg.add(p.getName() + "邮件发送失败");
}
}
});
listMsg.add(0,"成功");
}
listMsg.add(0,"成功"+success+"条数据,失败"+failed+"条数据");
return listMsg;
}
@@ -46,6 +46,7 @@ import com.jero.project.service.IPayWorkingGroupService;
import com.jero.project.service.IPayWorkingGroupSubItemContactsService;
import com.jero.project.service.IPayWorkingGroupSubItemService;
import com.jero.project.vo.SetChargeInput;
import com.jero.project.vo.SetLabelVO;
import com.jero.statistics.entity.AllMoney;
import com.jero.temporary.entity.PayCompanyManagementTemporary;
import com.jero.temporary.entity.PayContactsManagementTemporary;
@@ -1009,6 +1010,25 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
return payWorkingGroupSubItemIPage;
}
@Override
public void setLabel(SetLabelVO setLabelVO) {
String subIds = setLabelVO.getSubIds();
String label = setLabelVO.getLabel();
LambdaUpdateWrapper<PayWorkingGroupSubItem> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(PayWorkingGroupSubItem::getId,Arrays.asList(subIds.split(",")));
updateWrapper.set(PayWorkingGroupSubItem::getLabel,label);
payWorkingGroupSubItemMapper.update(null, updateWrapper);
}
@Override
public void deleteLabel(SetLabelVO setLabelVO) {
String subIds = setLabelVO.getSubIds();
LambdaUpdateWrapper<PayWorkingGroupSubItem> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(PayWorkingGroupSubItem::getId,Arrays.asList(subIds.split(",")));
updateWrapper.set(PayWorkingGroupSubItem::getLabel,null);
payWorkingGroupSubItemMapper.update(null, updateWrapper);
}
/**
* @Description 删除项目打包关联临时企业联系信息
* @Author lqt
@@ -0,0 +1,22 @@
package com.jero.project.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* @author liJiaRao
* @date 2023-07-12 15:16
*/
@Data
public class SetLabelVO {
@NotBlank(message = "至少选择一个成员")
@ApiModelProperty(value = "成员ids")
private String subIds;
@ApiModelProperty(value = "标签")
@Size(max = 32,message = "标签长度不能大于50个字符")
private String label;
}
@@ -291,4 +291,8 @@ public class PayWorkingGroupSubItemExcel implements Serializable {
@Excel(name = "联系人10备注", width = 15)
@ApiModelProperty(value = "联系人10备注")
private String remarksTen;
@Excel(name = "标签名称", width = 15)
@ApiModelProperty(value = "标签")
private String label;
}
@@ -94,6 +94,10 @@ public class MeetingNews extends JeroEntity {
@TableField("announcement")
private String announcement;
/**会议通知文件*/
@ApiModelProperty(value = "会议文件")
private String fileIds;
@Excel(name = "新闻报道", width = 15)
@ApiModelProperty(value = "新闻报道")
@TableField("news_report")
@@ -51,19 +51,21 @@ public class MemberInfoServiceImpl extends ServiceImpl<MemberInfoMapper, MemberI
LambdaQueryWrapper<MemberInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(MemberInfo::getId,company.getMemberId());
MemberInfo memberInfo = memberInfoMapper.selectOne(wrapper);
//解密
String memberMobile = PasswordUtil.decrypt(memberInfo.getMobile());
memberInfo.setMobile(memberMobile);
String memberEmail = PasswordUtil.decrypt(memberInfo.getEmail());
memberInfo.setEmail(memberEmail);
String memberInfoPhone = PasswordUtil.decrypt(memberInfo.getPhone());
memberInfo.setPhone(memberInfoPhone);
String standardMobile = PasswordUtil.decrypt(memberInfo.getStandardMobile());
memberInfo.setStandardMobile(standardMobile);
String standardPhone = PasswordUtil.decrypt(memberInfo.getStandardPhone());
memberInfo.setStandardPhone(standardPhone);
String standardEmail = PasswordUtil.decrypt(memberInfo.getStandardEmail());
memberInfo.setStandardEmail(standardEmail);
if (memberInfo != null){
//解密
String memberMobile = PasswordUtil.decrypt(memberInfo.getMobile());
memberInfo.setMobile(memberMobile);
String memberEmail = PasswordUtil.decrypt(memberInfo.getEmail());
memberInfo.setEmail(memberEmail);
String memberInfoPhone = PasswordUtil.decrypt(memberInfo.getPhone());
memberInfo.setPhone(memberInfoPhone);
String standardMobile = PasswordUtil.decrypt(memberInfo.getStandardMobile());
memberInfo.setStandardMobile(standardMobile);
String standardPhone = PasswordUtil.decrypt(memberInfo.getStandardPhone());
memberInfo.setStandardPhone(standardPhone);
String standardEmail = PasswordUtil.decrypt(memberInfo.getStandardEmail());
memberInfo.setStandardEmail(standardEmail);
}
//左侧秘书处信息
SysUser secretariat = memberInfoMapper.getBXGLZ();
@@ -148,6 +148,7 @@ public class StableCrossTrainingServiceImpl extends ServiceImpl<StableCrossTrain
meetingNews.setPlaceName(payMeeting.getVenue());
meetingNews.setIntroduction(payMeeting.getMeetingContent());
meetingNews.setAnnouncement(payMeeting.getMeetingFiles());
meetingNews.setFileIds(payMeeting.getFileIds());
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
meetingNews.setAdministrator(sysUser.getRealname());
meetingNews.setHotelName(payMeeting.getHotelName());
@@ -354,6 +355,7 @@ public class StableCrossTrainingServiceImpl extends ServiceImpl<StableCrossTrain
.set(StringUtils.isNotBlank(meetingNews.getDetails()), MeetingNews::getDetails, meetingNews.getDetails())//详情资讯
.set(StringUtils.isNotBlank(meetingNews.getSchedule()), MeetingNews::getSchedule, meetingNews.getSchedule())//会议日程
.set(StringUtils.isNotBlank(meetingNews.getAnnouncement()), MeetingNews::getAnnouncement, meetingNews.getAnnouncement())//会议通知
.set(StringUtils.isNotBlank(meetingNews.getFileIds()), MeetingNews::getFileIds, meetingNews.getFileIds())//会议文件
.set(StringUtils.isNotBlank(meetingNews.getNewsReport()), MeetingNews::getNewsReport, meetingNews.getNewsReport())//新闻报道
.set(StringUtils.isNotBlank(meetingNews.getConferenceRegistration()), MeetingNews::getConferenceRegistration, meetingNews.getConferenceRegistration())//报名链接
.set(StringUtils.isNotBlank(meetingNews.getConferenceRegistrationImg()), MeetingNews::getConferenceRegistrationImg, meetingNews.getConferenceRegistrationImg())//报名二维码
@@ -28,9 +28,11 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import net.sf.saxon.om.Item;
import org.apache.commons.collections.CollectionUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.core.env.Environment;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -80,19 +82,23 @@ public class SystemSendMessageController {
@GetMapping(value = "/sendAllUserMessage")
@RequiresPermissions("template:add:systemNotifications")
@Transactional
public Result<?> sendAllUserMessage(@RequestParam("content") String content) {
public Result<?> sendAllUserMessage(@RequestParam("content") String content,
@RequestParam("deadline") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date deadline) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<PayContactsManagement> listPayContactsManagement = payContactsManagementService.list();
if(!CollectionUtils.isEmpty(listPayContactsManagement)){
SysAnnouncement announcement = new SysAnnouncement();
announcement.setTitile(ProjectCommon.ALERT12);
announcement.setMsgContent(content);
announcement.setSender(env.getProperty("message.systemEmailUser"));
//announcement.setSender(env.getProperty("message.systemEmailUser"));
announcement.setSender(loginUser.getRealname());
announcement.setPriority(CommonConstant.PRIORITY_M);
announcement.setMsgType(CommonConstant.MSG_TYPE_UESR);
announcement.setSendStatus(CommonConstant.HAS_SEND);
announcement.setSendTime(new Date());
announcement.setMsgCategory(CommonConstant.MSG_CATEGORY_2);
announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0));
announcement.setDeadline(deadline); // 截止时间
sysAnnouncementService.save(announcement);
listPayContactsManagement.parallelStream().forEach(p->{
try {
@@ -144,6 +144,17 @@ public class SysMessageTemplateController extends JeroController<SysMessageTempl
return Result.OK(sysMessageTemplate);
}
/**
* 通过Code查询
*
* @return
*/
@GetMapping(value = "/queryByCode")
public Result<?> queryByCode(@RequestParam(name = "code", required = true) String code) {
SysMessageTemplate sysMessageTemplate = sysMessageTemplateService.queryByCode(code);
return Result.OK(sysMessageTemplate);
}
/**
* 导出excel
*
@@ -125,7 +125,7 @@ public class EmailSendMsgHandle implements ISendMsgHandle {
Properties javaMailProperties = mailSender.getJavaMailProperties();
javaMailProperties.setProperty("mail.smtp.auth", "true");
javaMailProperties.setProperty("mail.debug", "true");//启用调试
//javaMailProperties.setProperty("mail.debug", "true");//启用调试
javaMailProperties.setProperty("mail.smtp.timeout", "3000"); //设置超时时间3秒
javaMailProperties.setProperty("mail.smtp.starttls.enable", "true");
javaMailProperties.setProperty("mail.smtp.starttls.required", "true");
@@ -1,4 +1,5 @@
package com.jero.modules.message.mapper;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Select;
@@ -15,4 +16,8 @@ import java.util.List;
public interface SysMessageTemplateMapper extends BaseMapper<SysMessageTemplate> {
@Select("SELECT * FROM SYS_SMS_TEMPLATE WHERE TEMPLATE_CODE = #{code}")
List<SysMessageTemplate> selectByCode(String code);
SysMessageTemplate selectOneByTemplateCode(@Param("templateCode")String templateCode);
}
@@ -1,5 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.message.mapper.SysMessageTemplateMapper">
<sql id="Base_Column_List">
template_code,
template_name,
template_content,
template_test_json,
template_type,
recipient,
id,
create_by,
create_time,
update_by,
update_time
</sql>
<resultMap id="BaseResultMap" type="com.jero.modules.message.entity.SysMessageTemplate">
<result column="template_code" property="templateCode"/>
<result column="template_name" property="templateName"/>
<result column="template_content" property="templateContent"/>
<result column="template_test_json" property="templateTestJson"/>
<result column="template_type" property="templateType"/>
<result column="recipient" property="recipient"/>
<result column="id" property="id"/>
<result column="create_by" property="createBy"/>
<result column="create_time" property="createTime"/>
<result column="update_by" property="updateBy"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<!--auto generated by MybatisCodeHelper on 2023-07-13-->
<select id="selectOneByTemplateCode" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from sys_sms_template
where template_code=#{templateCode}
</select>
</mapper>
@@ -13,4 +13,6 @@ import com.jero.modules.message.entity.SysMessageTemplate;
*/
public interface ISysMessageTemplateService extends JeroService<SysMessageTemplate> {
List<SysMessageTemplate> selectByCode(String code);
SysMessageTemplate queryByCode(String code);
}
@@ -25,4 +25,9 @@ public class SysMessageTemplateServiceImpl extends JeroServiceImpl<SysMessageTem
public List<SysMessageTemplate> selectByCode(String code) {
return sysMessageTemplateMapper.selectByCode(code);
}
@Override
public SysMessageTemplate queryByCode(String code) {
return sysMessageTemplateMapper.selectOneByTemplateCode(code);
}
}
@@ -6,6 +6,8 @@ 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.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresRoles;
import com.jero.common.api.vo.Result;
@@ -27,6 +29,8 @@ public class OSSFileController {
@Autowired
private IOSSFileService ossFileService;
@Autowired
private ISysBaseAPI sysBaseAPI;
@ResponseBody
@GetMapping("/page")
@@ -87,6 +91,11 @@ public class OSSFileController {
result.error500("未找到对应实体");
}
else {
String createBy = file.getCreateBy();
LoginUser loginUser = sysBaseAPI.getUserByName(createBy);
if (loginUser != null){
file.setCreateBy(loginUser.getRealname());
}
result.setResult(file);
result.setSuccess(true);
}
@@ -103,6 +112,13 @@ public class OSSFileController {
LambdaQueryWrapper<OSSFile> wrapper = new LambdaQueryWrapper<>();
wrapper.in(OSSFile::getId ,Arrays.asList(ids.split(",")));
List<OSSFile> list = ossFileService.list(wrapper);
for (OSSFile file : list) {
String createBy = file.getCreateBy();
LoginUser loginUser = sysBaseAPI.getUserByName(createBy);
if (loginUser != null){
file.setCreateBy(loginUser.getRealname());
}
}
return Result.OK(list);
}
@@ -125,6 +125,56 @@ public class CommonController {
return result;
}
/**
* 文件上传统一方法
* @param request
* @param response
* @return
*/
@PostMapping(value = "/uploadByToken")
public Result<OSSFile> uploadByToken(HttpServletRequest request, HttpServletResponse response) {
Result<OSSFile> result = new Result<>();
String savePath = "";
String bizPath = request.getParameter("biz");
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获取上传文件对象
MultipartFile file = multipartRequest.getFile("file");
// 文件类型是否处于黑名单
if(CommonUtils.limitFileSuffix(file.getOriginalFilename(),fileSuffixLimits)){
result.setMessage("该文件类型不允许上传");
result.setSuccess(false);
result.setCode(0);
return result;
}
if(oConvertUtils.isEmpty(bizPath)){
bizPath = "";
}
if(CommonConstant.UPLOAD_TYPE_LOCAL.equals(uploadType)){
// 本地上传
savePath = CommonUtils.uploadLocal(file,bizPath,uploadpath);
}else{
// minio上传
savePath = CommonUtils.upload(file, bizPath, uploadType);
}
if(oConvertUtils.isNotEmpty(savePath)){
//上传成功 进行数据库存储
OSSFile ossFile = new OSSFile();
// 文件名
String fileName = file.getOriginalFilename();
fileName = CommonUtils.getFileName(fileName);
ossFile.setFileName(fileName);
ossFile.setUrl(savePath);
ossFileService.save(ossFile);
result.setMessage(savePath);
result.setResult(ossFile);
result.setSuccess(true);
}else {
result.setMessage("上传失败!");
result.setSuccess(false);
}
return result;
}
/**
* 预览图片&下载文件
*
@@ -273,12 +323,12 @@ public class CommonController {
ossFileService.updateById(ossFile);
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (loginUser.getIsCompanyUser()) {
Integer integer = ossFileService.searchDownloadTimes(ossFile.getId(), loginUser.getId());
if (integer >= 5) {
throw new JeroBootException("超出下载次数限制");
}
}
//if (loginUser.getIsCompanyUser()) {
// Integer integer = ossFileService.searchDownloadTimes(ossFile.getId(), loginUser.getId());
// if (integer >= 5) {
// throw new JeroBootException("超出下载次数限制");
// }
//}
ossFileService.saveDownloadTimes(ossFile.getId(), loginUser.getId());
response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("UTF-8"),"iso-8859-1"));
@@ -2,10 +2,12 @@ package com.jero.modules.system.controller;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.jero.common.aspect.annotation.AutoLog;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.SecurityUtils;
import com.jero.common.api.vo.Result;
import com.jero.common.constant.CommonConstant;
@@ -265,6 +267,39 @@ public class SysAnnouncementSendController {
return result;
}
/**
* @功能企业端获取我的消息(截止时间未读消息)
* @return
*/
@GetMapping(value = "/getDeadlineUnreadSend")
@ApiOperation(value="企业端获取我的消息(截止时间未读消息)", notes="企业端获取我的消息(截止时间未读消息)")
public Result<List<AnnouncementSendModel>> getDeadlineUnreadSend(AnnouncementSendModel announcementSendModel) {
LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
String userId = sysUser.getId();
announcementSendModel.setUserId(userId);
announcementSendModel.setDeadline(new Date());
announcementSendModel.setReadFlag(CommonConstant.NO_READ_FLAG);
List<AnnouncementSendModel> pageList = sysAnnouncementSendService.getDeadlineUnreadSend(announcementSendModel);
return Result.OK(pageList);
}
/**
* @Remarks: 一键已读(截止时间未读消息)
**/
@GetMapping(value = "/allReadDeadlineUnreadSend")
@ApiOperation(value="一键已读(截止时间未读消息)", notes="一键已读(截止时间未读消息)")
public Result<String> allReadDeadlineUnreadSend(@RequestParam("anntIds") String anntIds) {
LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
String userId = sysUser.getId();
LambdaUpdateWrapper<SysAnnouncementSend> updateWrapper = new UpdateWrapper().lambda();
updateWrapper.set(SysAnnouncementSend::getReadFlag, CommonConstant.HAS_READ_FLAG);
updateWrapper.set(SysAnnouncementSend::getReadTime, new Date());
updateWrapper.in(SysAnnouncementSend::getAnntId, Arrays.asList(anntIds.split(",")));
updateWrapper.eq(SysAnnouncementSend::getUserId, userId);
sysAnnouncementSendService.update(updateWrapper);
return Result.OK("操作成功");
}
/**
* @功能一键已读
* @return
@@ -0,0 +1,82 @@
package com.jero.modules.system.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.modules.system.entity.SysNotice;
import com.jero.modules.system.service.ISysNoticeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* @Author: liao
* @Date: 2023/7/14 15:42
* @remarks: 公告管理
*/
@RestController
@RequestMapping("/sysNotice")
@Api(tags = "公告管理")
public class SysNoticeController {
@Autowired
private ISysNoticeService sysNoticeService;
@ApiOperation(value = "公告管理-添加", notes = "公告管理-添加")
@PostMapping(value = "/add")
@RequiresPermissions("sysNotice:add")
public Result<String> add(@Validated @RequestBody SysNotice sysNotice) {
sysNoticeService.add(sysNotice);
return Result.OK(Result.OPERATING_SUCCESS);
}
@ApiOperation(value = "公告管理-根据id删除", notes = "公告管理-根据id删除")
@GetMapping(value = "/deleteById")
@RequiresPermissions("sysNotice:deleteById")
public Result<String> deleteById(@RequestParam(name = "id") String id) {
sysNoticeService.deleteById(id);
return Result.OK(Result.OPERATING_SUCCESS);
}
@ApiOperation(value = "公告管理-根据ids批量删除", notes = "公告管理-根据ids批量删除")
@GetMapping(value = "/deleteBatch")
@RequiresPermissions("sysNotice:deleteBatch")
public Result<String> deleteBatch(@RequestParam(name = "ids") String ids) {
sysNoticeService.deleteBatch(ids);
return Result.OK(Result.OPERATING_SUCCESS);
}
@ApiOperation(value = "公告管理-编辑", notes = "公告管理-编辑")
@PostMapping(value = "/edit")
@RequiresPermissions("sysNotice:edit")
public Result<String> edit(@Validated @RequestBody SysNotice sysNotice) {
sysNoticeService.edit(sysNotice);
return Result.OK(Result.OPERATING_SUCCESS);
}
@ApiOperation(value = "公告管理-分页查询", notes = "公告管理-分页查询")
@GetMapping(value = "/pageList")
@RequiresPermissions("sysNotice:pageList")
public Result<IPage<SysNotice>> pageList(SysNotice sysNotice,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
IPage<SysNotice> pageList = sysNoticeService.pageList(sysNotice, pageNo, pageSize, req);
return Result.OK(pageList);
}
@ApiOperation(value = "公告管理-企业端查询", notes = "公告管理-企业端查询")
@GetMapping(value = "/page")
public Result<IPage<SysNotice>> page(SysNotice sysNotice,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
IPage<SysNotice> pageList = sysNoticeService.pageList(sysNotice, pageNo, pageSize, req);
return Result.OK(pageList);
}
}
@@ -11,6 +11,7 @@ import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: 系统通告表
@@ -158,4 +159,9 @@ public class SysAnnouncement implements Serializable {
* 跳转参数
*/
private String jumpParameter;
/**截止时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private java.util.Date deadline;
}
@@ -0,0 +1,67 @@
package com.jero.modules.system.entity;
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 io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
/**
* @Author: liao
* @Date: 2023/7/14 14:31
* @remarks: 公告管理表
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SysNotice implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
private String id;
/**创建人*/
private String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**更新人*/
private String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@ApiModelProperty("公告名称")
private String noticeName;
@ApiModelProperty("公告内容")
private String noticeContent;
@ApiModelProperty("附件")
@Size(max = 300, message = "附件数量超出最大限制")
private String noticeFile;
@ApiModelProperty("状态(1-启用,0-禁用)")
@NotNull(message = "状态不能为空")
private Integer noticeStatus;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@TableField(exist = false)
private Date startTime;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@TableField(exist = false)
private Date endTime;
}
@@ -28,4 +28,9 @@ public interface SysAnnouncementSendMapper extends BaseMapper<SysAnnouncementSen
*/
public List<AnnouncementSendModel> getMyAnnouncementSendList(Page<AnnouncementSendModel> page,@Param("announcementSendModel") AnnouncementSendModel announcementSendModel);
/**
* @Remarks: 获取截止时间后未读的消息
**/
List<AnnouncementSendModel> getMyAnnouncementSendList(@Param("announcementSendModel") AnnouncementSendModel announcementSendModel);
}
@@ -0,0 +1,14 @@
package com.jero.modules.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.system.entity.SysNotice;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: liao
* @Date: 2023/7/14 14:49
* @remarks: 公告管理
*/
@Mapper
public interface SysNoticeMapper extends BaseMapper<SysNotice> {
}
@@ -24,53 +24,56 @@
</select>
<select id="getMyAnnouncementSendList" parameterType="Object" resultMap="AnnouncementSendModel">
select
sas.id,
sas.annt_id,
sas.user_id,
sas.read_flag,
sa.titile as titile,
sa.msg_content as msg_content,
sa.sender as sender,
sa.priority as priority,
sa.msg_category,
sa.send_time as send_time,
sa.bus_id as bus_id,
sa.open_type as open_type,
sa.open_page as open_page,
sa.msg_abstract,
sa.template_code,
sa.jump_parameter
from sys_announcement_send sas
left join sys_announcement sa ON sas.annt_id = sa.id
where sa.send_status = '1'
and sa.del_flag = '0'
and sas.user_id = #{announcementSendModel.userId}
<if test="announcementSendModel.titile !=null and announcementSendModel.titile != ''">
and sa.titile = #{announcementSendModel.titile}
</if>
<if test="announcementSendModel.sender !=null and announcementSendModel.sender != ''">
and sa.sender LIKE concat(concat('%',#{announcementSendModel.sender}),'%')
</if>
<if test="announcementSendModel.readFlag !=null and announcementSendModel.readFlag != ''">
and sas.read_flag = #{announcementSendModel.readFlag}
</if>
<if test="announcementSendModel.busType !=null and announcementSendModel.busType != ''">
and sa.bus_type = #{announcementSendModel.busType}
</if>
select
sas.id,
sas.annt_id,
sas.user_id,
sas.read_flag,
sa.titile as titile,
sa.msg_content as msg_content,
sa.sender as sender,
sa.priority as priority,
sa.msg_category,
sa.send_time as send_time,
sa.bus_id as bus_id,
sa.open_type as open_type,
sa.open_page as open_page,
sa.msg_abstract,
sa.template_code,
sa.jump_parameter
from sys_announcement_send sas
left join sys_announcement sa ON sas.annt_id = sa.id
where sa.send_status = '1'
and sa.del_flag = '0'
and sas.user_id = #{announcementSendModel.userId}
<if test="announcementSendModel.deadline != null">
and sa.deadline >= #{announcementSendModel.deadline}
</if>
<if test="announcementSendModel.titile !=null and announcementSendModel.titile != ''">
and sa.titile = #{announcementSendModel.titile}
</if>
<if test="announcementSendModel.sender !=null and announcementSendModel.sender != ''">
and sa.sender LIKE concat(concat('%',#{announcementSendModel.sender}),'%')
</if>
<if test="announcementSendModel.readFlag !=null and announcementSendModel.readFlag != ''">
and sas.read_flag = #{announcementSendModel.readFlag}
</if>
<if test="announcementSendModel.busType !=null and announcementSendModel.busType != ''">
and sa.bus_type = #{announcementSendModel.busType}
</if>
<if test="announcementSendModel.bizSource !=null and announcementSendModel.bizSource =='isNoBpm'">
and (sa.bus_type != 'bpm' or sa.bus_type is null)
</if>
<if test="announcementSendModel.msgCategory !=null and announcementSendModel.msgCategory != ''">
and sa.msg_category = #{announcementSendModel.msgCategory}
</if>
<if test="announcementSendModel.startTime != null and announcementSendModel.startTime != ''">
<if test="announcementSendModel.msgCategory !=null and announcementSendModel.msgCategory != ''">
and sa.msg_category = #{announcementSendModel.msgCategory}
</if>
<if test="announcementSendModel.startTime != null and announcementSendModel.startTime != ''">
and DATE_FORMAT(sa.create_time,'%Y-%m-%d') >= #{announcementSendModel.startTime}
</if>
<if test="announcementSendModel.endTime != null and announcementSendModel.endTime != ''">
and DATE_FORMAT(sa.create_time,'%Y-%m-%d') &lt;= #{announcementSendModel.endTime}
</if>
order by sas.read_flag,sa.send_time desc
order by sas.read_flag,sa.send_time desc
</select>
</mapper>
@@ -8,6 +8,7 @@ import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: 用户通告阅读标记表
@@ -92,4 +93,9 @@ public class AnnouncementSendModel implements Serializable {
* 跳转参数
*/
private String jumpParameter;
/**
* @Remarks: 截止时间
**/
private Date deadline;
}
@@ -25,4 +25,8 @@ public interface ISysAnnouncementSendService extends IService<SysAnnouncementSen
*/
public Page<AnnouncementSendModel> getMyAnnouncementSendPage(Page<AnnouncementSendModel> page,AnnouncementSendModel announcementSendModel);
/**
* @Remarks: 企业端获取我的消息(截止时间未读消息)
**/
List<AnnouncementSendModel> getDeadlineUnreadSend(AnnouncementSendModel announcementSendModel);
}
@@ -0,0 +1,24 @@
package com.jero.modules.system.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.system.entity.SysNotice;
import javax.servlet.http.HttpServletRequest;
/**
* @Author: liao
* @Date: 2023/7/14 15:25
* @remarks: 公告管理
*/
public interface ISysNoticeService extends IService<SysNotice> {
void add(SysNotice sysNotice);
void deleteById(String id);
void deleteBatch(String ids);
void edit(SysNotice sysNotice);
IPage<SysNotice> pageList(SysNotice sysNotice, Integer pageNo, Integer pageSize, HttpServletRequest req);
}
@@ -36,4 +36,12 @@ public class SysAnnouncementSendServiceImpl extends ServiceImpl<SysAnnouncementS
return page.setRecords(sysAnnouncementSendMapper.getMyAnnouncementSendList(page, announcementSendModel));
}
/**
* @Remarks: 企业端获取我的消息(截止时间未读消息)
**/
@Override
public List<AnnouncementSendModel> getDeadlineUnreadSend(AnnouncementSendModel announcementSendModel) {
return sysAnnouncementSendMapper.getMyAnnouncementSendList(announcementSendModel);
}
}
@@ -0,0 +1,64 @@
package com.jero.modules.system.service.impl;
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.impl.ServiceImpl;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.system.entity.SysNotice;
import com.jero.modules.system.mapper.SysNoticeMapper;
import com.jero.modules.system.service.ISysNoticeService;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.Arrays;
import java.util.Objects;
/**
* @Author: liao
* @Date: 2023/7/14 15:41
* @remarks: 公告管理
*/
@Service
public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice> implements ISysNoticeService {
@Override
public void add(SysNotice sysNotice) {
save(sysNotice);
}
@Override
public void deleteById(String id) {
removeById(id);
}
@Override
public void deleteBatch(String ids) {
removeByIds(Arrays.asList(ids.split(",")));
}
@Override
public void edit(SysNotice sysNotice) {
updateById(sysNotice);
}
@Override
public IPage<SysNotice> pageList(SysNotice sysNotice, Integer pageNo, Integer pageSize, HttpServletRequest req) {
Page<SysNotice> page = new Page<>(pageNo, pageSize);
QueryWrapper<SysNotice> queryWrapper = QueryGenerator.initQueryWrapper(sysNotice, req.getParameterMap());
if (!Objects.isNull(sysNotice.getStartTime())) {
queryWrapper.ge("create_time", sysNotice.getStartTime());
}
if (!Objects.isNull(sysNotice.getEndTime())) {
// 将Date类型转换为LocalDateTime类型
LocalDateTime endDateTime = sysNotice.getEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
// 获取当天最晚时间
LocalDateTime endOfDay = endDateTime.with(LocalTime.MAX);
queryWrapper.le("create_time", endOfDay);
}
queryWrapper.lambda().orderByDesc(SysNotice::getCreateTime);
return page(page, queryWrapper);
}
}