Merge remote-tracking branch 'origin/24年二季度其他' into 24年二季度其他

This commit is contained in:
lijiarao
2024-07-11 14:23:21 +08:00
18 changed files with 602 additions and 25 deletions
+23 -2
View File
@@ -115,7 +115,7 @@ INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `com
INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1807708679419334658', '1438394322899558402', '会员信息统计', '/incomePayments/memberManage/MemberStatisticList', 'incomePayments/memberManage/MemberStatisticList', NULL, NULL, 1, NULL, '1', 8.11, 0, NULL, 1, 0, 0, 0, NULL, 'LKGLZ', '2024-07-01 17:31:49', NULL, NULL, 0, 0, '1', 0, 1);
-- 20240703 工作组-成员单位维护-确认凭证 工作组-全部文件导出
INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808440661174550530', '1431167539278086146', '确认凭证', NULL, NULL, NULL, NULL, 2, 'workingGroupMember:confirmVoucher', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-03 18:00:27', NULL, NULL, 0, 0, '1', 0, 1);
INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808439808279609346', '1430718058514440194', '全部文件导出', NULL, NULL, NULL, NULL, 2, 'workingGroupMember:exportAllFile', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-03 17:57:04', NULL, NULL, 0, 0, '1', 0, 1);
INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808439808279609346', '1430718058514440194', '全部文件导出', NULL, NULL, NULL, NULL, 2, 'workingGroupProject:exportAllFile', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-03 17:57:04', NULL, NULL, 0, 0, '1', 0, 1);
-- 20240703 工作组、起草组-会议参会情况-批量审核报名信息
INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808458564737335298', '1742070808427126785', '批量审核报名信息', '', NULL, NULL, NULL, 2, 'draftGroupMeetingSituation:batchAuditSignUp', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-03 19:11:36', NULL, NULL, 0, 0, '1', 0, 1);
INSERT INTO `sys_permission`(`id`, `parent_id`, `name`, `url`, `component`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_route`, `is_leaf`, `keep_alive`, `hidden`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`, `external_terminal_show`) VALUES ('1808458432167968769', '1443462660843458561', '批量审核报名信息', NULL, NULL, NULL, NULL, 2, 'workGroupMeetingSituation:batchAuditSignUp', '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'LKGLZ', '2024-07-03 19:11:04', NULL, NULL, 0, 0, '1', 0, 1);
@@ -162,4 +162,25 @@ ALTER TABLE `tb_member_project_subitem`
-- 20240708 工作组表新增自定义排序字段
ALTER TABLE `pay_working_group`
add column sort_no int comment '自定义排序顺序'
add column sort_no int comment '自定义排序顺序';
-- 20240710 新增会议酒店推荐表
DROP TABLE IF EXISTS `pay_meeting_hotel_recommend`;
CREATE TABLE `pay_meeting_hotel_recommend` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`recommend_people` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '推荐人',
`hotel_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '酒店名称',
`hotel_province` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所在省份',
`hotel_city` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所在城市',
`is_hold` tinyint(1) NULL DEFAULT NULL COMMENT '是否举办过标准院会议 1-是 0-否',
`meeting_type` tinyint(1) NULL DEFAULT NULL COMMENT '曾举办的会议类型',
`contact` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '酒店联系方式',
`remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会议酒店推荐表' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
@@ -0,0 +1,85 @@
package com.jero.meeting.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.base.controller.JeroController;
import com.jero.drafting.entity.PayDraftingGroup;
import com.jero.meeting.entity.PayMeeting;
import com.jero.meeting.entity.PayMeetingHotelRecommend;
import com.jero.meeting.service.IPayMeetingHotelRecommendService;
import com.jero.meeting.vo.excel.PayMeetingHotelRecommendExcel;
import com.jero.member.entity.TbMemberProjectSubitem;
import com.jero.member.service.ITbMemberProjectSubitemService;
import com.jero.member.vo.TbMemberProjectSubitemExcel;
import com.jero.member.vo.TbMemberProjectSubitemExcelImport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* <p>
* 会议酒店推荐表 前端控制器
* </p>
*
* @author sz
* @since 2024-07-10
*/
@Api(tags = "会议酒店推荐")
@RestController
@RequestMapping("/meeting/payMeetingHotelRecommend")
@Slf4j
public class PayMeetingHotelRecommendController extends JeroController<PayMeetingHotelRecommend, IPayMeetingHotelRecommendService> {
@Resource
private IPayMeetingHotelRecommendService payMeetingHotelRecommendService;
/**
* 分页列表查询
*
* @param meetingHotelRecommend 会议酒店推荐
* @param pageNo 页数
* @param pageSize 条数
*/
// @RequiresPermissions("")
@ApiOperation(value = "会议酒店推荐-分页列表查询", notes = "会议酒店推荐-分页列表查询")
@GetMapping(value = "/page")
public Result<?> queryPageList(PayMeetingHotelRecommend meetingHotelRecommend,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
IPage<PayMeetingHotelRecommend> pageList = payMeetingHotelRecommendService.queryHotelRecommendS(meetingHotelRecommend, pageNo, pageSize, req);
return Result.OK(pageList);
}
/**
* 导出excel模板
*/
// @RequiresPermissions("")
@ApiOperation(value = "导出模板")
@GetMapping(value = "/exportTemplate")
public ModelAndView exportTemplate() {
return super.exportTemplate(PayMeetingHotelRecommendExcel.class, "会议酒店推荐表");
}
/**
* 导入excel
*/
// @RequiresPermissions("")
@ApiOperation(value = "导入")
@PostMapping(value = "/importXls")
public Result<Object> importXls(HttpServletRequest request) {
List<Object> excelData = super.getExcelData(request, PayMeetingHotelRecommendExcel.class);
payMeetingHotelRecommendService.addExcel(excelData);
return Result.OK("文件导入成功!");
}
}
@@ -0,0 +1,75 @@
package com.jero.meeting.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.Date;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 会议酒店推荐表
* </p>
*
* @author sz
* @since 2024-07-10
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("pay_meeting_hotel_recommend")
@ApiModel(value="PayMeetingHotelRecommend对象", description="会议酒店推荐表")
public class PayMeetingHotelRecommend implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
@ApiModelProperty(value = "推荐人")
private String recommendPeople;
@ApiModelProperty(value = "酒店名称")
private String hotelName;
@ApiModelProperty(value = "所在省份")
private String hotelProvince;
@ApiModelProperty(value = "所在城市")
private String hotelCity;
@ApiModelProperty(value = "是否举办过标准院会议 1-是 0-否")
@Dict(dicCode = "yn")
private Integer isHold;
@ApiModelProperty(value = "曾举办的会议类型")
@Dict(dicCode = "meeting_type")
private Integer meetingType;
@ApiModelProperty(value = "酒店联系方式")
private String contact;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "创建人")
private String createBy;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "更新人")
private String updateBy;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
@@ -0,0 +1,20 @@
package com.jero.meeting.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.meeting.entity.PayMeetingHotelRecommend;
import org.apache.ibatis.annotations.Update;
/**
* <p>
* 会议酒店推荐表 Mapper 接口
* </p>
*
* @author sz
* @since 2024-07-10
*/
public interface PayMeetingHotelRecommendMapper extends BaseMapper<PayMeetingHotelRecommend> {
@Update("TRUNCATE TABLE pay_meeting_hotel_recommend")
void truncateTable();
}
@@ -0,0 +1,5 @@
<?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.PayMeetingHotelRecommendMapper">
</mapper>
@@ -0,0 +1,32 @@
package com.jero.meeting.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.meeting.entity.PayMeetingHotelRecommend;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* <p>
* 会议酒店推荐表 服务类
* </p>
*
* @author sz
* @since 2024-07-10
*/
public interface IPayMeetingHotelRecommendService extends IService<PayMeetingHotelRecommend> {
/**
* 分页列表查询
* @param meetingHotelRecommend
* @param pageNo
* @param pageSize
* @param req
* @return
*/
IPage<PayMeetingHotelRecommend> queryHotelRecommendS(PayMeetingHotelRecommend meetingHotelRecommend, Integer pageNo, Integer pageSize, HttpServletRequest req);
void addExcel(List<Object> excelData);
}
@@ -0,0 +1,167 @@
package com.jero.meeting.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.exception.JeroBootException;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.util.ValidUtil;
import com.jero.meeting.entity.PayMeetingHotelRecommend;
import com.jero.meeting.mapper.PayMeetingHotelRecommendMapper;
import com.jero.meeting.service.IPayMeetingHotelRecommendService;
import com.jero.meeting.vo.excel.PayMeetingHotelRecommendExcel;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* <p>
* 会议酒店推荐表 服务实现类
* </p>
*
* @author sz
* @since 2024-07-10
*/
@Service
public class PayMeetingHotelRecommendServiceImpl extends ServiceImpl<PayMeetingHotelRecommendMapper, PayMeetingHotelRecommend> implements IPayMeetingHotelRecommendService {
@Resource
private ISysBaseAPI sysBaseAPI;
@Resource
private PayMeetingHotelRecommendMapper payMeetingHotelRecommendMapper;
/**
* 分页列表查询
*
* @param meetingHotelRecommend
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@Override
public IPage<PayMeetingHotelRecommend> queryHotelRecommendS(PayMeetingHotelRecommend meetingHotelRecommend, Integer pageNo, Integer pageSize, HttpServletRequest req) {
QueryWrapper<PayMeetingHotelRecommend> queryWrapper = QueryGenerator.initQueryWrapper(meetingHotelRecommend, req.getParameterMap());
String recommendPeople = req.getParameter("recommendPeople");
String hotelName = req.getParameter("hotelName");
String hotelProvince = req.getParameter("hotelProvince");
String hotelCity = req.getParameter("hotelCity");
String isHold = req.getParameter("isHold");
String meetingType = req.getParameter("meetingType");
String contact = req.getParameter("contact");
String remark = req.getParameter("remark");
if (StringUtils.isNotBlank(recommendPeople)) {
queryWrapper.lambda().like(PayMeetingHotelRecommend::getRecommendPeople,recommendPeople);
}
if (StringUtils.isNotBlank(hotelName)) {
queryWrapper.lambda().like(PayMeetingHotelRecommend::getHotelName,hotelName);
}
if (StringUtils.isNotBlank(hotelProvince)) {
queryWrapper.lambda().like(PayMeetingHotelRecommend::getHotelProvince,hotelProvince);
}
if (StringUtils.isNotBlank(hotelCity)) {
queryWrapper.lambda().like(PayMeetingHotelRecommend::getHotelCity,hotelCity);
}
if (StringUtils.isNotBlank(isHold)) {
queryWrapper.lambda().eq(PayMeetingHotelRecommend::getIsHold,isHold);
}
if (StringUtils.isNotBlank(meetingType)) {
queryWrapper.lambda().eq(PayMeetingHotelRecommend::getMeetingType,meetingType);
}
if (StringUtils.isNotBlank(contact)) {
queryWrapper.lambda().like(PayMeetingHotelRecommend::getContact,contact);
}
if (StringUtils.isNotBlank(remark)) {
queryWrapper.lambda().like(PayMeetingHotelRecommend::getRemark,remark);
}
Page<PayMeetingHotelRecommend> page = new Page(pageNo, pageSize);
return page(page,queryWrapper);
}
@Override
public void addExcel(List<Object> excelData) {
if (excelData.isEmpty()) {
throw new JeroBootException("导入数据为空,请填写数据之后重新导入!");
}
// 是或否
Map<String, String> ynMap = sysBaseAPI.queryDictItemsMapByCode("yn");
// 会议类型
Map<String, String> meetingTypeMap = sysBaseAPI.queryDictItemsMapByCode("meeting_type");
int errorRowNum = 2;
List<String> errorMessage = new ArrayList<>();
List<PayMeetingHotelRecommend> insertList = new ArrayList<>();
for (Object obj : excelData) {
errorRowNum += 1;
PayMeetingHotelRecommendExcel submitExcel = (PayMeetingHotelRecommendExcel) obj;
PayMeetingHotelRecommend payMeetingHotelRecommend = new PayMeetingHotelRecommend();
List<String> errorList = ValidUtil.validateReturnListWithNum(submitExcel, errorRowNum);
errorMessage.addAll(errorList);
// 是否举办过标院会议
String isHold = submitExcel.getIsHold();
if (StringUtils.isBlank(isHold)){
}else if (!ynMap.containsKey(isHold)){
errorMessage.add("第" + errorRowNum + "行:" + "是否举办过标院会议请填写是或否");
}else {
int isHoldInt = Integer.parseInt(ynMap.get(isHold));
payMeetingHotelRecommend.setIsHold(isHoldInt);
}
// 曾举办会议类型
String meetingType = submitExcel.getMeetingType();
if (StringUtils.isBlank(meetingType)){
}else if (!meetingTypeMap.containsKey(meetingType)){
errorMessage.add("第" + errorRowNum + "行:" + "会议类型不存在");
}else {
int meetingTypeInt = Integer.parseInt(meetingTypeMap.get(meetingType));
payMeetingHotelRecommend.setMeetingType(meetingTypeInt);
}
// 推荐人
if (ValidUtil.checkErrorList(errorList,"推荐人")) {
String amountReceivable = submitExcel.getRecommendPeople();
payMeetingHotelRecommend.setRecommendPeople(amountReceivable);
}
// 酒店名称
if (ValidUtil.checkErrorList(errorList,"酒店名称")) {
String hotelName = submitExcel.getHotelName();
payMeetingHotelRecommend.setHotelName(hotelName);
}
// 所在省份
if (ValidUtil.checkErrorList(errorList,"所在省份")) {
String hotelProvince = submitExcel.getHotelProvince();
payMeetingHotelRecommend.setHotelProvince(hotelProvince);
}
// 所在省份
if (ValidUtil.checkErrorList(errorList,"所在城市")) {
String hotelCity = submitExcel.getHotelCity();
payMeetingHotelRecommend.setHotelCity(hotelCity);
}
// 所在省份
if (ValidUtil.checkErrorList(errorList,"酒店联系方式")) {
String contact = submitExcel.getContact();
payMeetingHotelRecommend.setContact(contact);
}
// 备注
String remark = submitExcel.getRemark();
payMeetingHotelRecommend.setRemark(remark);
insertList.add(payMeetingHotelRecommend);
}
if (!errorMessage.isEmpty()) {
StringBuilder msg = new StringBuilder();
for (String s : errorMessage) {
msg.append(s).append(",请修改!<br/>");
}
throw new JeroBootException(msg.toString());
}
// 先将酒店推荐表清空
payMeetingHotelRecommendMapper.truncateTable();
// 全量导入
this.saveBatch(insertList);
}
}
@@ -0,0 +1,69 @@
package com.jero.meeting.vo.excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;
/**
* <p>
* 会议酒店推荐表
* </p>
*
* @author sz
* @since 2024-07-10
*/
@Data
public class PayMeetingHotelRecommendExcel implements Serializable {
@ApiModelProperty(value = "推荐人")
@Excel(name = "推荐人", width = 15)
@NotBlank(message = "推荐人不能为空")
@Size(max = 50, message = "推荐人最大为50字符")
private String recommendPeople;
@ApiModelProperty(value = "酒店名称")
@Excel(name = "酒店名称", width = 20)
@NotBlank(message = "酒店名称不能为空")
@Size(max = 50, message = "酒店名称最大为50字符")
private String hotelName;
@ApiModelProperty(value = "所在省份")
@Excel(name = "所在省份", width = 15)
@NotBlank(message = "所在省份不能为空")
@Size(max = 50, message = "所在省份最大为50字符")
private String hotelProvince;
@ApiModelProperty(value = "所在城市")
@Excel(name = "所在城市", width = 15)
@NotBlank(message = "所在城市不能为空")
@Size(max = 50, message = "所在城市最大为50字符")
private String hotelCity;
@ApiModelProperty(value = "是否举办过标准院会议 1-是 0-否")
@Excel(name = "是否举办过标准院会议", width = 25)
@NotBlank(message = "是否举办过标准院会议不能为空")
private String isHold;
@ApiModelProperty(value = "曾举办的会议类型")
@Excel(name = "曾举办的会议类型", width = 25)
@NotBlank(message = "曾举办的会议类型不能为空")
private String meetingType;
@ApiModelProperty(value = "酒店联系方式")
@Excel(name = "酒店联系方式", width = 15)
@NotBlank(message = "酒店联系方式不能为空")
@Size(max = 50, message = "酒店联系方式最大为50字符")
@Pattern(regexp = "^(1[3-9]\\d{9})$|^(0\\d{2,3}-\\d{7,8})$", message = "酒店联系方式格式错误")
private String contact;
@ApiModelProperty(value = "备注")
@Excel(name = "备注", width = 15)
@Size(max = 200, message = "备注最大为50字符")
private String remark;
}
@@ -39,7 +39,7 @@ public class AnnualMemberProjectController extends JeroController<TbMemberProjec
/**
* 分页列表查询
*/
// @RequiresPermissions("safeguardStardsMember:search")
@RequiresPermissions("memberStatistic:search")
@ApiOperation(value="年度会员维护-分页列表查询", notes="年度会员维护-分页列表查询")
@GetMapping(value = "/page")
public Result<IPage<TbMemberProjectSubitem>> queryPageList(TbMemberProjectSubitem tbMemberProjectSubitem,
@@ -55,7 +55,7 @@ public class AnnualMemberProjectController extends JeroController<TbMemberProjec
* 导出excel
*/
@ApiOperation(value = "导出")
// @RequiresPermissions("safeguardStardsMember:export")
@RequiresPermissions("memberStatistic:export")
@GetMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest req, TbMemberProjectSubitem tbMemberProjectSubitem) {
List<TbMemberProjectSubitem> pageList = annualMemberProjectService.pageList(req, tbMemberProjectSubitem);
@@ -275,6 +275,32 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
if (!rolePermissionService.getRolePermission("safeguardMember:export")) {
queryWrapper.eq("pmp.director_id",sysUser.getId());
}
// 处理预计到账开始日期,拼接 -01
if (StringUtils.isNotBlank(payMemberProjectSubitem.getEstimatedArrivalStartDate())) {
String startDate = payMemberProjectSubitem.getEstimatedArrivalStartDate() + "-01";
payMemberProjectSubitem.setEstimatedArrivalStartDate(startDate);
}
// 处理预计到账结束日期,计算该月最后一天
if (StringUtils.isNotBlank(payMemberProjectSubitem.getEstimatedArrivalEndDate())) {
YearMonth yearMonth = YearMonth.parse(payMemberProjectSubitem.getEstimatedArrivalEndDate(), DateTimeFormatter.ofPattern("yyyy-MM"));
LocalDate endDate = yearMonth.atEndOfMonth();
payMemberProjectSubitem.setEstimatedArrivalEndDate(endDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
}
// 预计到账开始日期
String estimatedArrivalStartDate = payMemberProjectSubitem.getEstimatedArrivalStartDate();
// 预计到账结束日期
String estimatedArrivalEndDate = payMemberProjectSubitem.getEstimatedArrivalEndDate();
if (ObjectUtil.isNotEmpty(estimatedArrivalStartDate) && ObjectUtil.isNotEmpty(estimatedArrivalEndDate)) {
queryWrapper.lambda().ge(PayMemberProjectSubitem::getEstimatedArrivalDate,estimatedArrivalStartDate);
queryWrapper.lambda().le(PayMemberProjectSubitem::getEstimatedArrivalDate,estimatedArrivalEndDate);
}
if (ObjectUtil.isNotEmpty(estimatedArrivalStartDate) && ObjectUtil.isEmpty(estimatedArrivalEndDate)) {
queryWrapper.lambda().ge(PayMemberProjectSubitem::getEstimatedArrivalDate,estimatedArrivalStartDate);
}
if (ObjectUtil.isEmpty(estimatedArrivalEndDate) && ObjectUtil.isNotEmpty(estimatedArrivalEndDate)) {
queryWrapper.lambda().le(PayMemberProjectSubitem::getEstimatedArrivalDate,estimatedArrivalEndDate);
}
Page<PayMemberProjectSubitem> page = new Page<>(-1, -1);
IPage<PayMemberProjectSubitem> getPage = memberProjectSubitemService.getPage(page, queryWrapper);
List<PayMemberProjectSubitem> pageList = getPage.getRecords();
@@ -7,6 +7,8 @@ import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.api.ISysBaseAPI;
@@ -15,7 +17,9 @@ import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.oConvertUtils;
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.member.entity.TbMemberProjectSubitem;
import com.jero.member.service.ITbMemberProjectSubitemService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -53,6 +57,8 @@ public class TbMemberProjectSubitemController extends JeroController<TbMemberPro
private ISysBaseAPI sysBaseAPI;
@Resource
private IPayCompanyManagementService payCompanyManagementService;
@Resource
private IPayContactsManagementService payContactsManagementService;
/**
* 分页列表查询
*/
@@ -268,6 +274,17 @@ public class TbMemberProjectSubitemController extends JeroController<TbMemberPro
@RequiresPermissions("safeguardStardsMember:export")
@GetMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, TbMemberProjectSubitem tbMemberProjectSubitem) {
// 处理预计到账开始日期,拼接 -01
if (StringUtils.isNotBlank(tbMemberProjectSubitem.getEstimatedArrivalDate_begin())) {
String startDate = tbMemberProjectSubitem.getEstimatedArrivalDate_begin() + "-01";
tbMemberProjectSubitem.setEstimatedArrivalDate_begin(startDate);
}
// 处理预计到账结束日期,计算该月最后一天
if (StringUtils.isNotBlank(tbMemberProjectSubitem.getEstimatedArrivalDate_end())) {
YearMonth yearMonth = YearMonth.parse(tbMemberProjectSubitem.getEstimatedArrivalDate_end(), DateTimeFormatter.ofPattern("yyyy-MM"));
LocalDate endDate = yearMonth.atEndOfMonth();
tbMemberProjectSubitem.setEstimatedArrivalDate_end(endDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
}
List<TbMemberProjectSubitem> pageList = tbMemberProjectSubitemService.pageList(request,tbMemberProjectSubitem);
List<TbMemberProjectSubitem> exportList;
// 过滤选中数据
@@ -280,12 +297,19 @@ public class TbMemberProjectSubitemController extends JeroController<TbMemberPro
}
for (TbMemberProjectSubitem memberProjectSubitem : exportList) {
String companyId = memberProjectSubitem.getCompanyId();
String liaisonManId = memberProjectSubitem.getLiaisonManId();
if (StringUtils.isNotBlank(companyId)) {
PayCompanyManagement payCompanyManagement = payCompanyManagementService.getById(companyId);
if (!Objects.isNull(payCompanyManagement)) {
memberProjectSubitem.setDutyCode(payCompanyManagement.getDutyCode());
}
}
if (StringUtils.isNotBlank(liaisonManId)) {
PayContactsManagement payContactsManagement = payContactsManagementService.getById(liaisonManId);
if (!Objects.isNull(payContactsManagement)) {
memberProjectSubitem.setEmail(payContactsManagement.getEmail());
}
}
}
return super.exportListXls(exportList, TbMemberProjectSubitem.class, "标协会员项目成员表");
}
@@ -209,7 +209,7 @@ public class TbMemberProjectSubitem implements Serializable {
/**开票*/
@ApiModelProperty(value = "开票")
@Excel(name = "收否开票", width = 15, dicCode = "make_invoice_type")
@Excel(name = "是否开票", width = 15, dicCode = "make_invoice_type")
private Integer makeInvoice;
@ApiModelProperty(value = "确认收入((1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志)))")
@@ -56,10 +56,10 @@ public class IAnnualMemberProjectService {
queryWrapper.eq("year(effective_date)",effectiveDate.year());
queryWrapper.eq("month(effective_date)",effectiveDate.month()+1);
}
// LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// if (!rolePermissionService.getRolePermission("safeguardStardsMember:search")) {
// queryWrapper.eq("tmp.director_id",sysUser.getId());
// }
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (!rolePermissionService.getRolePermission("memberStatistic:search")) {
queryWrapper.eq("tmp.director_id",sysUser.getId());
}
return queryWrapper;
}
@@ -2,6 +2,7 @@ package com.jero.pack.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.dto.SendMessageDTO;
import com.jero.common.enums.ManagementMessageEnums;
@@ -18,6 +19,7 @@ import com.jero.meeting.mapper.PayMeetingSituationMapper;
import com.jero.member.entity.PayMemberProjectSubitem;
import com.jero.member.entity.TbCertificatePayment;
import com.jero.member.entity.TbMemberProjectSubitem;
import com.jero.member.enums.MemberStatusEnum;
import com.jero.member.mapper.PayMemberProjectSubitemMapper;
import com.jero.member.mapper.TbCertificatePaymentMapper;
import com.jero.member.mapper.TbMemberProjectSubitemMapper;
@@ -308,6 +310,17 @@ public class PayPackCompanyProjectServiceImpl extends ServiceImpl<PayPackCompany
if(Objects.equals(packCompanyProject.getCome(),PackCommon.COME1)){
throw new JeroBootException("此项目已在合同处创建关联,请先从合同处取消关联!");
}
// 删除会员有效期
TbMemberProjectSubitem tbMemberProjectSubitem = tbMemberProjectSubitemService.getById(projectId);
if (!Objects.isNull(tbMemberProjectSubitem)) {
LambdaUpdateWrapper<TbMemberProjectSubitem> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(TbMemberProjectSubitem::getId,projectId);
lambdaUpdateWrapper.set(TbMemberProjectSubitem::getEffectiveDate, null);
lambdaUpdateWrapper.set(TbMemberProjectSubitem::getInvalidationDate, null);
lambdaUpdateWrapper.set(TbMemberProjectSubitem::getMemberNo, null);
lambdaUpdateWrapper.set(TbMemberProjectSubitem::getMemberStatus, MemberStatusEnum.UNPAID_FEES.getValue());
tbMemberProjectSubitemService.update(lambdaUpdateWrapper);
}
// 更新项目状态
projectPackService.updateProjectStatus(packCompanyProject.getProjectId(),String.valueOf(projectType),String.valueOf(PackCommon.PACKAGING0),payPackCompanyProject.getPackId());
payPackCompanyProjectService.removeById(packCompanyProject.getId());
@@ -466,11 +466,11 @@ public class PayWorkingGroupController extends JeroController<PayWorkingGroup, I
* @param request
* @param response
*/
// @RequiresPermissions("workingGroupProject:exportAllFile")
@RequiresPermissions("workingGroupProject:exportAllFile")
@ApiOperation(value="全部文件导出", notes="全部文件导出")
@GetMapping(value = "/exportAllFile")
public void exportAllFile(HttpServletRequest request, HttpServletResponse response) {
payWorkingGroupService.exportAllFile(request, response);
public void exportAllFile(HttpServletRequest request, HttpServletResponse response, PayWorkingGroup payWorkingGroup) {
payWorkingGroupService.exportAllFile(request, response, payWorkingGroup);
}
}
@@ -752,6 +752,17 @@ public class PayWorkingGroupSubItemController extends JeroController<PayWorkingG
&& !Objects.equals(payWorkingGroup.getPrincipalIdB(),sysUser.getId())){
throw new JeroBootException("数据权限不足!");
}
// 处理预计到账开始日期,拼接 -01
if (StringUtils.isNotBlank(payWorkingGroupSubItem.getEstimatedArrivalStartDate())) {
String startDate = payWorkingGroupSubItem.getEstimatedArrivalStartDate() + "-01";
payWorkingGroupSubItem.setEstimatedArrivalStartDate(startDate);
}
// 处理预计到账结束日期,计算该月最后一天
if (StringUtils.isNotBlank(payWorkingGroupSubItem.getEstimatedArrivalEndDate())) {
YearMonth yearMonth = YearMonth.parse(payWorkingGroupSubItem.getEstimatedArrivalEndDate(), DateTimeFormatter.ofPattern("yyyy-MM"));
LocalDate endDate = yearMonth.atEndOfMonth();
payWorkingGroupSubItem.setEstimatedArrivalEndDate(endDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
}
// Step.1 组装查询条件
//QueryWrapper<PayWorkingGroupSubItem> queryWrapper = QueryGenerator.initQueryWrapper(payWorkingGroupSubItem, request.getParameterMap());
@@ -949,7 +960,7 @@ public class PayWorkingGroupSubItemController extends JeroController<PayWorkingG
* @return
*/
@AutoLog(value = "确认凭证",operateType = 2)
// @RequiresPermissions("workingGroupMember:confirmVoucher")
@RequiresPermissions("workingGroupMember:confirmVoucher")
@GetMapping(value = "/confirmVoucher")
@ApiOperation(value = "工作组成员-确认凭证")
public Result<?> confirmVoucher(@RequestParam(name = "id") String id) {
@@ -255,5 +255,5 @@ public interface IPayWorkingGroupService extends IService<PayWorkingGroup> {
* @param request
* @param response
*/
void exportAllFile(HttpServletRequest request, HttpServletResponse response);
void exportAllFile(HttpServletRequest request, HttpServletResponse response, PayWorkingGroup payWorkingGroup);
}
@@ -15,11 +15,13 @@ import com.jero.common.exception.JeroBootException;
import com.jero.common.service.ContractCreateProjectSendMessageService;
import com.jero.common.service.RolePermissionService;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.oConvertUtils;
import com.jero.company.entity.PayContactsManagement;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.config.StaticConfig;
import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.service.IPayIncomeContractAssociatedService;
import com.jero.mail.commont.constant;
import com.jero.meeting.common.MeetingCommon;
import com.jero.meeting.entity.PayMeeting;
import com.jero.meeting.service.IPayMeetingService;
@@ -826,14 +828,41 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
* @param response
*/
@Override
public void exportAllFile(HttpServletRequest request, HttpServletResponse response) {
String selections = request.getParameter("selections");
if (StringUtils.isEmpty(selections)) {
throw new JeroBootException("至少选择一个工作组项目");
public void exportAllFile(HttpServletRequest request, HttpServletResponse response, PayWorkingGroup payWorkingGroup) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (StringUtils.isNotBlank(sysUser.getRoleCode())){
List<String> roleCodes = new ArrayList<>(Arrays.asList(sysUser.getRoleCode().split(",")));
//管理员和财务查询全部,其余角色查询自己的
if(!roleCodes.contains(constant.ADMIN)&&!roleCodes.contains(constant.CWRY)){
payWorkingGroup.setPrincipalA(sysUser.getId());
payWorkingGroup.setPrincipalB(sysUser.getId());
}
} else {
throw new JeroBootException("登录用户角色为空!");
}
List<String> selectionList = Arrays.asList(selections.split(","));
Set<String> addedEntries = new HashSet<>(); // 用于记录已添加的条目路径
// 创建一个不分页的 Page 对象
Page<PayWorkingGroupVO> page = new Page<>(-1, -1);
// 处理 workingGroupProject 字段
String workingGroupProject = payWorkingGroup.getWorkingGroupProject();
if (StringUtils.isNotBlank(workingGroupProject)) {
payWorkingGroup.setWorkingGroupProject(oConvertUtils.replaceAllPercent(workingGroupProject));
}
// 查询分页列表
List<PayWorkingGroupVO> pageList = payWorkingGroupService.queryPageList(page, payWorkingGroup).getRecords();
// 获取前端传递的 selections 参数
String selections = request.getParameter("selections");
List<String> ids = pageList.stream()
.map(PayWorkingGroupVO::getId)
.collect(Collectors.toList());
if (oConvertUtils.isNotEmpty(selections)) {
List<String> selectionList = Arrays.asList(selections.split(","));
ids.retainAll(selectionList); // 仅保留在 selections 中的 id
}
if (oConvertUtils.isEmpty(ids)) {
throw new JeroBootException("没有工作组文件可以导出!");
}
Set<String> addedEntries = new HashSet<>(); // 用于记录已添加的条目路径
try (ZipOutputStream zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()))) {
response.reset();
response.setCharacterEncoding("utf-8");
@@ -853,16 +882,16 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
response.setHeader("Content-Disposition", "attachment;fileName=\"" + downloadName + "\"");
// 处理工作组资料
for (String projectId : selectionList) {
for (String projectId : ids) {
PayWorkingGroupDataFile payWorkingGroupDataFile = new PayWorkingGroupDataFile();
payWorkingGroupDataFile.setProjectId(projectId);
payWorkingGroupDataFile.setProjectType(PayProjectCommon.PROJECT_TYPE_FILE1);
List<PayWorkingGroupDataFile> fileList = payWorkingGroupDataFileService.queryListExport(payWorkingGroupDataFile);
PayWorkingGroup payWorkingGroup = payWorkingGroupService.getById(projectId);
if (payWorkingGroup == null) {
PayWorkingGroup payWorkingGroupDB = payWorkingGroupService.getById(projectId);
if (payWorkingGroupDB == null) {
throw new JeroBootException("工作组不存在!");
}
String groupName = payWorkingGroup.getWorkingGroupProject(); // 获取工作组名称
String groupName = payWorkingGroupDB.getWorkingGroupProject(); // 获取工作组名称
String groupFolderPath = "工作组资料/" + groupName + "/";
String researchProjectFolderPath = groupFolderPath + "在研项目/";
String otherFilesFolderPath = groupFolderPath + "其他分发资料/";
@@ -959,7 +988,7 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
}
// 处理工作组会议资料
for (String projectId : selectionList) {
for (String projectId : ids) {
LambdaQueryWrapper<PayMeeting> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(PayMeeting::getWorkingGroupId, projectId);
lambdaQueryWrapper.eq(PayMeeting::getMeetingType, MeetingCommon.WORKING_GROUP_MEETING_INT);