From 3944009ba57b35da9803828cba2851c26b5a858d Mon Sep 17 00:00:00 2001 From: lijiarao Date: Mon, 6 Sep 2021 20:24:21 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E5=A2=9E=E5=8A=A0=E6=A0=87=E5=8D=8F?= =?UTF-8?q?=E4=BC=9A=E8=AE=AE=E6=97=B6=EF=BC=8C=E5=90=8C=E6=AD=A5=E5=88=B0?= =?UTF-8?q?=E4=BC=9A=E5=91=98=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jero/common/system/api/ISysBaseAPI.java | 5 + .../java/com/jero/common/api/vo/Result.java | 27 ++ .../java/com/jero/common/util/Assert.java | 164 +++++++ .../java/com/jero/common/util/BaseUtil.java | 60 +++ .../common/util/FileNameSeparateUtil.java | 28 ++ .../java/com/jero/common/util/TokenUtils.java | 14 +- .../com/jero/common/util/charReplaceUtil.java | 20 + .../util/superSearch/ConstantUtils.java | 43 ++ .../service/impl/PayMeetingServiceImpl.java | 7 + .../controller/HotelManagementController.java | 36 ++ .../entity/HotelManagement.java | 118 +++++ .../mapper/HotelManagementMapper.java | 33 ++ .../mapper/xml/HotelManagementMapper.xml | 69 +++ .../service/IHotelManagementService.java | 38 ++ .../impl/HotelManagementServiceImpl.java | 182 ++++++++ .../controller/HotelContactController.java | 30 ++ .../hotelcontact/entity/HotelContact.java | 47 ++ .../mapper/HotelContactMapper.java | 18 + .../mapper/xml/HotelContactMapper.xml | 8 + .../service/IHotelContactService.java | 19 + .../service/impl/HotelContactServiceImpl.java | 57 +++ .../controller/AttendMeetingsController.java | 23 + .../attendmeetings/entity/AttendMeetings.java | 81 ++++ .../mapper/AttendMeetingsMapper.java | 43 ++ .../mapper/xml/AttendMeetingsMapper.xml | 95 ++++ .../service/IAttendMeetingsService.java | 45 ++ .../impl/AttendMeetingsServiceImpl.java | 196 +++++++++ .../StableCrossTrainingController.java | 36 ++ .../stablecrosstraining/entity/OSSFileVO.java | 35 ++ .../entity/StableCrossTraining.java | 236 ++++++++++ .../entity/StableCrossTrainingVO.java | 43 ++ .../mapper/StableCrossTrainingMapper.java | 61 +++ .../mapper/xml/StableCrossTrainingMapper.xml | 301 +++++++++++++ .../service/IStableCrossTrainingService.java | 50 +++ .../impl/StableCrossTrainingServiceImpl.java | 414 ++++++++++++++++++ .../modules/oss/mapper/OSSFileMapper.java | 6 +- .../modules/oss/mapper/xml/OSSFileMapper.xml | 15 + .../system/service/impl/SysBaseApiImpl.java | 9 +- .../src/main/resources/application-dev.yml | 13 +- 39 files changed, 2715 insertions(+), 10 deletions(-) create mode 100644 jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/Assert.java create mode 100644 jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/BaseUtil.java create mode 100644 jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/FileNameSeparateUtil.java create mode 100644 jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/charReplaceUtil.java create mode 100644 jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/superSearch/ConstantUtils.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/controller/HotelManagementController.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/entity/HotelManagement.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/mapper/HotelManagementMapper.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/mapper/xml/HotelManagementMapper.xml create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/service/IHotelManagementService.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/service/impl/HotelManagementServiceImpl.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/controller/HotelContactController.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/entity/HotelContact.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/mapper/HotelContactMapper.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/mapper/xml/HotelContactMapper.xml create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/service/IHotelContactService.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/service/impl/HotelContactServiceImpl.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/controller/AttendMeetingsController.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/entity/AttendMeetings.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/mapper/AttendMeetingsMapper.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/mapper/xml/AttendMeetingsMapper.xml create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/service/IAttendMeetingsService.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/service/impl/AttendMeetingsServiceImpl.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/controller/StableCrossTrainingController.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/entity/OSSFileVO.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/entity/StableCrossTraining.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/entity/StableCrossTrainingVO.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/mapper/StableCrossTrainingMapper.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/mapper/xml/StableCrossTrainingMapper.xml create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/service/IStableCrossTrainingService.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/service/impl/StableCrossTrainingServiceImpl.java create mode 100644 jero-boot-module-system/src/main/java/com/jero/modules/oss/mapper/xml/OSSFileMapper.xml diff --git a/jero-boot-base/jero-boot-base-api/src/main/java/com/jero/common/system/api/ISysBaseAPI.java b/jero-boot-base/jero-boot-base-api/src/main/java/com/jero/common/system/api/ISysBaseAPI.java index cd6aa1ee..14268c05 100644 --- a/jero-boot-base/jero-boot-base-api/src/main/java/com/jero/common/system/api/ISysBaseAPI.java +++ b/jero-boot-base/jero-boot-base-api/src/main/java/com/jero/common/system/api/ISysBaseAPI.java @@ -299,4 +299,9 @@ public interface ISysBaseAPI extends CommonAPI { */ List listSonDepartsByDepId(String departId); + /** + * 根据文件id获取文件名称 + */ + String findFileNameByFileId(String fileId); + } diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/api/vo/Result.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/api/vo/Result.java index 2bb004d0..f65216da 100644 --- a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/api/vo/Result.java +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/api/vo/Result.java @@ -140,4 +140,31 @@ public class Result implements Serializable { @JsonIgnore private String onlTable; + public static final String OPERATING_SUCCESS = "操作成功!"; + + public static final String SELECT_SUCCESS = "查询成功!"; + + public static final String ADD_SUCCESS = "新增成功!"; + + public static final String EDIT_SUCCESS = "编辑成功!"; + + public static final String DELETE_SUCCESS = "删除成功!"; + + public static final String UPLOAD_SUCCESS = "上传成功!"; + + public static final String EXPORT_SUCCESS = "导出成功!"; + + public static final String IMPORT_SUCCESS = "导入成功!"; + + public static final String DOWNLOAD_SUCCESS = "下载成功!"; + + public static final String SYSTEM_IS_BUSY = "系统繁忙!"; + + public static final String OPERATING_ERROR = "操作失败!"; + + public static final String NULL_ID = "请核实主键是否存在!"; + + public static final String NULL_NAME = "请核实名称是否存在!"; + + public static final String NULL_DATA = "请核实数据是否存在!"; } \ No newline at end of file diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/Assert.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/Assert.java new file mode 100644 index 00000000..9d9a1c16 --- /dev/null +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/Assert.java @@ -0,0 +1,164 @@ +package com.jero.common.util; + +import com.jero.common.util.superSearch.ConstantUtils; +import lombok.extern.slf4j.Slf4j; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * 断言工具类 + * + * @author 张星星 + * @date 2021-01-09 + */ +@Slf4j +public class Assert { + + private Assert() { + + } + + /** + * 正数11位,小数2位,长度14位 11111111111.22 + * + * @param s 待检查金额 + */ + public static boolean checkMoney(String s) { + + Pattern pattern = Pattern.compile(ConstantUtils.MONEY); + Matcher matcher = pattern.matcher(s); + if (!matcher.find()) { + return false; + } + return true; + } + + /** + * 15位、18位、20位数字和大写英文字母 + * + * @param s 待检查税号 + */ + public static boolean checkTax(String s) { + + Pattern pattern = Pattern.compile(ConstantUtils.TAX); + Matcher matcher = pattern.matcher(s); + if (!matcher.find()) { + return false; + } + return true; + } + + /** + * @param s 待检查邮编 + */ + public static boolean checkPostCode(String s) { + Pattern pattern = Pattern.compile(ConstantUtils.POSTCODE); + Matcher matcher = pattern.matcher(s); + if (!matcher.find()) { + return false; + } + return true; + } + + /** + * 检查邮箱 + * + * @param s 待检查邮箱 + */ + public static boolean isEmail(String s) { + + Pattern pattern = Pattern.compile(ConstantUtils.EMAIL_REGEX); + Matcher matcher = pattern.matcher(s); + if (!matcher.find()) { + return false; + } + return true; + } + + /** + * 口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类 + * + * @param s 密码 + */ + public static boolean checkPassword(String s) { + + Pattern pattern = Pattern.compile(ConstantUtils.PASSWORD); + Matcher matcher = pattern.matcher(s); + if (!matcher.find()) { + return false; + } + return true; + } + + /** + * 检查网址 + * + * @param s 待检查网址 + */ + public static boolean iswebsit(String s) { + + Pattern pattern = Pattern.compile(ConstantUtils.WEBSITE); + Matcher matcher = pattern.matcher(s); + if (!matcher.find()) { + return false; + } + return true; + } + + /** + * 检查字符串是手机号 + * + * @param s 待检查手机号 + */ + public static boolean isTel(String s) { + + Pattern pattern = Pattern.compile(ConstantUtils.TEL_PHONE); + Matcher matcher = pattern.matcher(s); + if (!matcher.find()) { + return false; + } + return true; + } + + /** + * 例:022-12354678 + * + * @param s 座机 + */ + public static boolean checkZUOJI(String s) { + + Pattern pattern = Pattern.compile(ConstantUtils.ZUOJI); + Matcher matcher = pattern.matcher(s); + if (!matcher.find()) { + return false; + } + return true; + } + + /** + * 该方法有问题_暂时先不要使用 + * @param strParameter 字符串 + * @param limitLength 限制长度 + * @return + */ +// public static boolean valiDataStrByLength(String strParameter, int limitLength) { +// int temp_int = 0; +// byte[] b = strParameter.getBytes(); +// for (int i = 0; i < b.length; i++) { +// if (b[i] >= 0) { +// temp_int = temp_int + 1; +// } else { +// temp_int = temp_int + 2; +// i++; +// } +// } +// if (temp_int > limitLength) { +// return false; +// } else { +// return true; +// } +// } + + +} diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/BaseUtil.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/BaseUtil.java new file mode 100644 index 00000000..39909977 --- /dev/null +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/BaseUtil.java @@ -0,0 +1,60 @@ +package com.jero.common.util; + + +import com.jero.common.system.base.entity.JeroEntity; + +import java.util.Date; + +/** + * @Author: WangHK + * @ClassName:BaseUtil + * @Company: 天津柒柒普惠服务外包有限公司 + * @Date: 2019-12-21 11:17 + * @Description: + */ +public class BaseUtil { + /** + * 新增封装 + * @param object 任意继承JeroEntity的对象 + * @param userId token解析得到的id + */ + public static void create(Object object, String userId){ + //要被封装的对象 + JeroEntity jeroEntity = (JeroEntity) object; + //封装创建人 + jeroEntity.setCreateBy(userId); + //封装创建时间 + jeroEntity.setCreateTime(new Date()); + //封装修改人 + jeroEntity.setUpdateBy(userId); + //封装修改时间 + jeroEntity.setUpdateTime(new Date()); + } + + + /** + * 修改封装 + * @param db 查询数据库得到的对象 + * @param object 任意继承JeroEntity的对象 + * @param userId token解析得到的id + */ + public static void update(Object db,Object object, String userId){ + JeroEntity baseDb = (JeroEntity) db;//查询数据库得到的对象 + JeroEntity jeroEntity = (JeroEntity) object;//要被封装的对象 + jeroEntity.setCreateBy(baseDb.getCreateBy());//封装创建人 + jeroEntity.setCreateTime(baseDb.getCreateTime());//封装创建时间 + jeroEntity.setUpdateBy(userId);//封装修改人 + jeroEntity.setUpdateTime(new Date());//封装修改时间 + } + + /** + * 删除封装 + * @param object 任意继承JeroEntity的对象 + * @param userId token解析得到的id + */ + public static void delete(Object object, String userId) { + JeroEntity jeroEntity = (JeroEntity) object;//要被封装的对象 + jeroEntity.setUpdateBy(userId);//封装修改人 + jeroEntity.setUpdateTime(new Date());//封装修改时间 + } +} diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/FileNameSeparateUtil.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/FileNameSeparateUtil.java new file mode 100644 index 00000000..6c1c51d2 --- /dev/null +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/FileNameSeparateUtil.java @@ -0,0 +1,28 @@ +package com.jero.common.util; + +import org.apache.commons.lang3.StringUtils; + +/** + * 去除文件名结尾时间戳工具类 + * + * @author liJiaRao + * @date 2021-06-17 10:32 + */ +public class FileNameSeparateUtil { + /** + * 除文件名结尾时间戳 + * + * @param fileName 带时间戳的文件名 + * @return 文件名 + */ + public static String removeTimeStamp(String fileName) { + String str = fileName; + if (StringUtils.isNotBlank(fileName) && fileName.contains("_")) { + int lastIndexOf = fileName.lastIndexOf("_"); + if (lastIndexOf != -1) { + str = fileName.substring(0, fileName.lastIndexOf("_")) + fileName.substring(fileName.lastIndexOf(".")); + } + } + return str; + } +} diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/TokenUtils.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/TokenUtils.java index 810f8e95..6b2eb6f4 100644 --- a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/TokenUtils.java +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/TokenUtils.java @@ -1,7 +1,9 @@ package com.jero.common.util; +import com.jero.common.exception.JeroBootException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import com.jero.common.api.CommonAPI; import com.jero.common.constant.CommonConstant; @@ -124,5 +126,15 @@ public class TokenUtils { } return true; } - + /** + * 通过token获取User + */ + public static LoginUser getUserByToken() { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + //判断Entity是否存在 + if (user == null) { + throw new JeroBootException("登录超时,请重新登录!"); + } + return user; + } } diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/charReplaceUtil.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/charReplaceUtil.java new file mode 100644 index 00000000..253f8520 --- /dev/null +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/charReplaceUtil.java @@ -0,0 +1,20 @@ +package com.jero.common.util; + +import org.apache.commons.lang.StringUtils; + +/** + * 特殊符号替换 + */ +public class charReplaceUtil { + + public static String charReplace(String character) { + if (StringUtils.isNotBlank(character)){ + character=character.replace("*", "\\*") + .replace("%", "\\%") + .replaceAll("_", "\\\\_"); + + } + return character; + } + +} diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/superSearch/ConstantUtils.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/superSearch/ConstantUtils.java new file mode 100644 index 00000000..48189c74 --- /dev/null +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/superSearch/ConstantUtils.java @@ -0,0 +1,43 @@ +package com.jero.common.util.superSearch; + +/** + * 常量 + * + * @author 张星星 + * @date 2021-01-09 + */ +public class ConstantUtils { + + private ConstantUtils() { + + } + + //检查金额 + public static final String EMAIL_REGEX = "^[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w]" + + "(?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?$"; + + //金额 + public static final String MONEY = "^[1-9](\\d{1,10})?(\\.\\d{1,2})$|^0\\.([1-9](\\d{0,1})|\\d[1-9])$|^[1-9]\\d{0,10}$|^0$"; + + //税号 + public static final String TAX = "^[A-Z0-9]{15}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$"; + + //邮编 + public static final String POSTCODE = "^[0-9]\\d{5}$"; + + //密码 口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类 + public static final String PASSWORD = "^(?=.*[a-zA-Z])(?=.*\\d)(?=.*[~!@#$%^&*()_+`\\-={}:\";'<>?,./]).{8,30}$"; + + //网址 + public static final String WEBSITE = "^((https|http|ftp|rtsp|mms)?:\\/\\/)[^\\s]+"; +// public static final String WEBSITE = "^([hH][tT]{2}[pP]:/*|[hH][tT]{2}[pP][sS]:/*|[fF][tT][pP]:/*)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\\\\/])+(\\\\?{0,1}(([A-Za-z0-9-~]+\\\\={0,1})([A-Za-z0-9-~]*)\\\\&{0,1})*)$"; + + //检查字符串是手机号 + public static final String TEL_PHONE = "^[1][3,4,5,6,7,8,9][0-9]{9}$"; +// public static final String TEL_PHONE = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9])|(16[6]))\\d{8}$"; + + //座机号 + public static final String ZUOJI = "^0\\d{2,3}-?\\d{7,8}$"; +// public static final String ZUOJI = "^\\d{3}-\\d{7,8}|\\d{4}-\\d{7,8}$"; + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java index c2b7618c..61d2d0b0 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java @@ -18,6 +18,7 @@ import com.jero.meeting.valid.group.WorkingGroupMeeting; import com.jero.meeting.vo.PayMeetingVO; import com.jero.project.entity.PayWorkingGroup; import com.jero.project.service.IPayWorkingGroupService; +import com.jero.standards.xuanguan.stablecrosstraining.service.IStableCrossTrainingService; import org.apache.shiro.util.CollectionUtils; import org.jetbrains.annotations.NotNull; import org.springframework.beans.BeanUtils; @@ -47,6 +48,8 @@ public class PayMeetingServiceImpl extends ServiceImpl { + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/entity/HotelManagement.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/entity/HotelManagement.java new file mode 100644 index 00000000..324c3110 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/entity/HotelManagement.java @@ -0,0 +1,118 @@ +package com.jero.standards.jiudian.hotelManagement.entity; + + +import java.util.Date; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.jero.common.system.base.entity.JeroEntity; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.hibernate.validator.constraints.Length; +import com.jero.standards.jiudian.hotelcontact.entity.HotelContact; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 酒店信息管理 + * @Author: jeecg-boot + * @Date: 2021-05-10 + * @Version: V1.0 + */ +@Data +@TableName("web_hotel_management") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="web_hotel_management对象", description="酒店信息管理") +public class HotelManagement extends JeroEntity { + private static final long serialVersionUID = 1L; + + @Excel(name = "会议主题", width = 15) + @ApiModelProperty(value = "会议主题") + @TableField("conference_theme") + private String conferenceTheme; + + @Excel(name = "召开时间", width = 20) + @ApiModelProperty(value = "召开时间") + @TableField("hold_time") + private String holdTime; + + @Excel(name = "召开地点", width = 15) + @ApiModelProperty(value = "召开地点名称") + @TableField("place_name") + private String placeName; + + @ApiModelProperty(value = "召开地点码") + @TableField("place") + private String place; + + @Excel(name = "酒店名称", width = 15) + @ApiModelProperty(value = "酒店名称") + @TableField("hotel_name") + private String hotelName; + + @Excel(name = "酒店地址", width = 15) + @ApiModelProperty(value = "地址") + @TableField("address") + private String address; + + @Excel(name = "联系人", width = 15) + @ApiModelProperty(value = "联系人") +// @TableField("contact_person") + @TableField(exist = false) + private String contactPerson; + + @Excel(name = "联系电话", width = 15) + @ApiModelProperty(value = "联系电话") +// @TableField("telephone_number") + @TableField(exist = false) + private String telephoneNumber; + + // @Excel(name = "召开开始时间", width = 15, format = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "召开开始时间") + @TableField("convoke_start_time") + private Date convokeStartTime; + + // @Excel(name = "召开结束时间", width = 15, format = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "召开结束时间") + @TableField("convoke_end_time") + private Date convokeEndTime; + + @ApiModelProperty("宣贯培训外键") + @Length(max = 50) + @TableField("training_id") + private String trainingId; + + @ApiModelProperty("1.宣贯, 2.年会") + @Length(max = 50) + @TableField("meeting_type") + private Integer meetingType; + + @Excel(name = "管理员", width = 15) + @ApiModelProperty(value = "管理员") + @TableField(exist = false) + private String administrator; + + @ApiModelProperty("培训类型名称") + @TableField(exist = false) + private String meetingTypeName; + + @Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date updateTimes; + + @ApiModelProperty(value = "酒店联系人集合") + @TableField(exist = false) + private List hotelList; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/mapper/HotelManagementMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/mapper/HotelManagementMapper.java new file mode 100644 index 00000000..de8abd9c --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/mapper/HotelManagementMapper.java @@ -0,0 +1,33 @@ +package com.jero.standards.jiudian.hotelManagement.mapper; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import com.jero.standards.jiudian.hotelManagement.entity.HotelManagement; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + * @Description: 酒店信息管理 + * @Author: jeecg-boot + * @Date: 2021-05-10 + * @Version: V1.0 + */ +@Repository +public interface HotelManagementMapper extends BaseMapper { + + /** + * 分页列表查询 + */ + Page queryPageList(@Param("page") Page page, + @Param("hotelManagement") HotelManagement hotelManagement, + @Param("column") String column, + @Param("order") String order) throws Exception; + + + /** + * 根据会议id查询酒店 + */ + HotelManagement getHotelInfoByMeetingId(@Param("id") String id); + + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/mapper/xml/HotelManagementMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/mapper/xml/HotelManagementMapper.xml new file mode 100644 index 00000000..c9fb095d --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/mapper/xml/HotelManagementMapper.xml @@ -0,0 +1,69 @@ + + + + + + ${alias}.id AS id , + ${alias}.conference_theme AS conferenceTheme , + ${alias}.place AS place , + ${alias}.place_name AS placeName , + ${alias}.hold_time AS holdTime , + ${alias}.convoke_start_time AS convokeStartTime , + ${alias}.convoke_end_time AS convokeEndTime , + ${alias}.hotel_name AS hotelName , + ${alias}.address AS address , + ${alias}.contact_person AS contactPerson , + ${alias}.telephone_number AS telephoneNumber , + ${alias}.training_id AS trainingId , + ${alias}.meeting_type AS meetingType , + ${alias}.create_by AS createBy , + ${alias}.create_time AS createTime , + ${alias}.update_by AS updateBy , + ${alias}.update_time AS updateTime, + ${alias}.update_time AS updateTimes + + + + + + + + + + diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/service/IHotelManagementService.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/service/IHotelManagementService.java new file mode 100644 index 00000000..ece25dbf --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/service/IHotelManagementService.java @@ -0,0 +1,38 @@ +package com.jero.standards.jiudian.hotelManagement.service; + +import com.jero.standards.jiudian.hotelManagement.entity.HotelManagement; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * @Description: 酒店信息管理 + * @Author: jeecg-boot + * @Date: 2021-05-10 + * @Version: V1.0 + */ +public interface IHotelManagementService extends IService { + + /** + * 添加 + */ + Boolean add(HotelManagement hotelManagement); + + /** + * 编辑 + */ + Boolean edit(HotelManagement hotelManagement) throws Exception; + + /** + * 根据会议id查询酒店 + */ + HotelManagement getHotelInfoByMeetingId(String id); + + + /** + * 导出酒店信息Excel + */ + ModelAndView export(List exportList, Class exportClass, String title, HttpServletResponse response); +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/service/impl/HotelManagementServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/service/impl/HotelManagementServiceImpl.java new file mode 100644 index 00000000..93379485 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelManagement/service/impl/HotelManagementServiceImpl.java @@ -0,0 +1,182 @@ +package com.jero.standards.jiudian.hotelManagement.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.util.BaseUtil; +import com.jero.common.util.TokenUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import com.jero.common.api.vo.Result; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.api.ISysBaseAPI; +import com.jero.common.system.vo.LoginUser; +import com.jero.standards.jiudian.hotelManagement.entity.HotelManagement; +import com.jero.standards.jiudian.hotelManagement.mapper.HotelManagementMapper; +import com.jero.standards.jiudian.hotelManagement.service.IHotelManagementService; +import com.jero.standards.jiudian.hotelcontact.service.IHotelContactService; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletResponse; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.List; + +/** + * @Description: 酒店信息管理 + * @Author: jeecg-boot + * @Date: 2021-05-10 + * @Version: V1.0 + */ +@Service +@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) +@DS(value = "multi-datasource1") +public class HotelManagementServiceImpl extends ServiceImpl implements IHotelManagementService { + + @Autowired + private ISysBaseAPI sysBaseAPI; + @Autowired + private IHotelManagementService hotelManagementService; + @Autowired + private HotelManagementMapper hotelManagementMapper; + @Autowired + private IHotelContactService hotelContactService; + + + /** + * 添加 + */ + @Override + public Boolean add(HotelManagement hotelManagement) { + if (hotelManagement == null) { + throw new JeroBootException(Result.NULL_DATA); + } + Boolean resFlag = Boolean.TRUE; + this.ifEntityIsEmpty(hotelManagement); + try { + //获取召开时间 + this.isZhi(hotelManagement); + LoginUser user = TokenUtils.getUserByToken(); + //创建时间/创建人/修改时间/修改人 + BaseUtil.create(hotelManagement, user.getId()); + }catch (Exception e){ + throw new JeroBootException(e); + } + resFlag = hotelManagementService.save(hotelManagement); + if (!resFlag) { + throw new JeroBootException(Result.OPERATING_ERROR); + } + return hotelContactService.edit(hotelManagement); + } + + + /** + * 编辑 + */ + @Override + public Boolean edit(HotelManagement hotelManagement) throws Exception { + //判断主键是否存在 + if (StringUtils.isBlank(hotelManagement.getId())) { + throw new JeroBootException(Result.NULL_ID); + } + //判断Entity是否存在 + if (hotelManagement == null) { + throw new JeroBootException(Result.NULL_DATA); + } + HotelManagement hotelManagementDB = hotelManagementService.getById(hotelManagement.getId()); + + //获取召开时间 + this.isZhi(hotelManagement); + Boolean resFlag = Boolean.TRUE; + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper(); + updateWrapper.eq(HotelManagement::getId, hotelManagement.getId()) + .set(StringUtils.isNotBlank(hotelManagement.getConferenceTheme()), HotelManagement::getConferenceTheme, hotelManagement.getConferenceTheme()) + .set(StringUtils.isNotBlank(hotelManagement.getHoldTime()), HotelManagement::getHoldTime, hotelManagement.getHoldTime()) + .set(StringUtils.isNotBlank(hotelManagement.getPlace()), HotelManagement::getPlace, hotelManagement.getPlace()) + .set(StringUtils.isNotBlank(hotelManagement.getPlaceName()), HotelManagement::getPlaceName, hotelManagement.getPlaceName()) + .set(StringUtils.isNotBlank(hotelManagement.getHotelName()), HotelManagement::getHotelName, hotelManagement.getHotelName()) + .set(StringUtils.isNotBlank(hotelManagement.getAddress()), HotelManagement::getAddress, hotelManagement.getAddress()) +// .set(StringUtils.isNotBlank(hotelManagement.getContactPerson()), HotelManagement::getContactPerson, hotelManagement.getContactPerson()) +// .set(StringUtils.isNotBlank(hotelManagement.getTelephoneNumber()), HotelManagement::getTelephoneNumber, hotelManagement.getTelephoneNumber()) + .set(null != hotelManagement.getMeetingType(), HotelManagement::getMeetingType, hotelManagement.getMeetingType()) + .set(HotelManagement::getUpdateBy, hotelManagement.getUpdateBy())//修改人 + .set(HotelManagement::getUpdateTime, hotelManagement.getUpdateTime());//修改时间 + resFlag = hotelManagementService.update(updateWrapper); + if (!resFlag) { + throw new JeroBootException(Result.OPERATING_ERROR); + } + return hotelContactService.edit(hotelManagement); + } + + public void ifEntityIsEmpty(HotelManagement hotelManagement) { + if (StringUtils.isBlank(hotelManagement.getHotelName())) { + throw new JeroBootException("请核实酒店名称是否存在!"); + } else { + if (hotelManagement.getHotelName().length()>50) { + throw new JeroBootException("酒店名称输入超过限定长度!"); + } + } + if (StringUtils.isBlank(hotelManagement.getAddress())) { + throw new JeroBootException("请核实酒店地址是否存在!"); + } else { + if (hotelManagement.getAddress().length()>50) { + throw new JeroBootException("酒店地址输入超过限定长度!"); + } + } + if (hotelManagement.getHotelList().isEmpty()) { + throw new JeroBootException("请核实酒店联系人/电话是否存在!"); + } +/* if (hotelManagement.getHotelList().isEmpty()) { + throw new JeroBootException("请核实酒店联系人/电话是否存在!"); + } + if (hotelManagement.getHotelList().isEmpty()) { + throw new JeroBootException("请核实酒店联系人是否存在"); + }*/ + } + + /** + * 根据会议id查询酒店 + */ + @Override + public HotelManagement getHotelInfoByMeetingId(String id) { + return hotelManagementMapper.getHotelInfoByMeetingId(id); + } + + + public void isZhi(HotelManagement hotelManagement) throws Exception { + if (hotelManagement.getHoldTime().contains("至")) { + List time = Arrays.asList(hotelManagement.getHoldTime().split("至")); + if (time.size() == 2) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + hotelManagement.setConvokeStartTime(simpleDateFormat.parse(time.get(0))); + hotelManagement.setConvokeEndTime(simpleDateFormat.parse(time.get(1))); + return; + } + throw new JeroBootException("请核实召开时间格式是否正确"); + } + throw new JeroBootException("召开时间没有【至】字"); + } + + /** + * 导出酒店信息Excel + */ + @Override + public ModelAndView export(List exportList, Class exportClass, String title, HttpServletResponse response) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + // AutoPoi 导出Excel + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + //此处设置的filename无效 ,前端会重更新设置一下 + mv.addObject(NormalExcelConstants.FILE_NAME, title); + mv.addObject(NormalExcelConstants.CLASS, exportClass); + mv.addObject(NormalExcelConstants.PARAMS, new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title)); + mv.addObject(NormalExcelConstants.DATA_LIST, exportList); + return mv; + } +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/controller/HotelContactController.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/controller/HotelContactController.java new file mode 100644 index 00000000..e2346b1c --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/controller/HotelContactController.java @@ -0,0 +1,30 @@ +package com.jero.standards.jiudian.hotelcontact.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.base.controller.JeroController; +import com.jero.standards.jiudian.hotelManagement.entity.HotelManagement; +import com.jero.standards.jiudian.hotelcontact.entity.HotelContact; +import com.jero.standards.jiudian.hotelcontact.service.IHotelContactService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; + + /** + * @Description: 酒店联系人 + * @Author: jeecg-boot + * @Date: 2021-06-10 + * @Version: V1.0 + */ +@Api(tags="酒店联系人") +@RestController +@RequestMapping("/hotelcontact/hotelContact") +@Slf4j +public class HotelContactController extends JeroController { + + } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/entity/HotelContact.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/entity/HotelContact.java new file mode 100644 index 00000000..16cd8251 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/entity/HotelContact.java @@ -0,0 +1,47 @@ +package com.jero.standards.jiudian.hotelcontact.entity; + +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.jero.common.system.base.entity.JeroEntity; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 酒店联系人 + * @Author: jeecg-boot + * @Date: 2021-06-10 + * @Version: V1.0 + */ +@Data +@TableName("web_hotel_contact") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="web_hotel_contact对象", description="酒店联系人") +public class HotelContact extends JeroEntity { + private static final long serialVersionUID = 1L; + + @Excel(name = "联系人", width = 15) + @ApiModelProperty(value = "联系人") + @TableField("contact_person") + private String contactPerson; + + @Excel(name = "联系电话", width = 15) + @ApiModelProperty(value = "联系电话") + @TableField("telephone_number") + private String telephoneNumber; + + @ApiModelProperty("酒店Id") + @TableField("hotel_id") + private String hotelId; + + @ApiModelProperty("酒店联系人集合") + @TableField(exist = false) + private List hotelContacts; + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/mapper/HotelContactMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/mapper/HotelContactMapper.java new file mode 100644 index 00000000..0eed00cf --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/mapper/HotelContactMapper.java @@ -0,0 +1,18 @@ +package com.jero.standards.jiudian.hotelcontact.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import com.jero.standards.jiudian.hotelcontact.entity.HotelContact; +import org.springframework.stereotype.Repository; + +/** + * @Description: 酒店联系人 + * @Author: jeecg-boot + * @Date: 2021-06-10 + * @Version: V1.0 + */ +@Repository +public interface HotelContactMapper extends BaseMapper { + + Long removeByHotelId(@Param("hotelId") String hotelId); +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/mapper/xml/HotelContactMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/mapper/xml/HotelContactMapper.xml new file mode 100644 index 00000000..8d5ad33f --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/mapper/xml/HotelContactMapper.xml @@ -0,0 +1,8 @@ + + + + + + DELETE FROM web_hotel_contact WHERE hotel_id = #{hotelId} + + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/service/IHotelContactService.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/service/IHotelContactService.java new file mode 100644 index 00000000..9ca16c25 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/service/IHotelContactService.java @@ -0,0 +1,19 @@ +package com.jero.standards.jiudian.hotelcontact.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.standards.jiudian.hotelManagement.entity.HotelManagement; +import com.jero.standards.jiudian.hotelcontact.entity.HotelContact; + +/** + * @Description: 酒店联系人 + * @Author: jeecg-boot + * @Date: 2021-06-10 + * @Version: V1.0 + */ +public interface IHotelContactService extends IService { + + /** + * 编辑 + */ + Boolean edit(HotelManagement hotelManagement); +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/service/impl/HotelContactServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/service/impl/HotelContactServiceImpl.java new file mode 100644 index 00000000..0e519ca8 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/jiudian/hotelcontact/service/impl/HotelContactServiceImpl.java @@ -0,0 +1,57 @@ +package com.jero.standards.jiudian.hotelcontact.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.BaseUtil; +import com.jero.common.util.TokenUtils; +import com.jero.standards.jiudian.hotelManagement.entity.HotelManagement; +import com.jero.standards.jiudian.hotelcontact.entity.HotelContact; +import com.jero.standards.jiudian.hotelcontact.mapper.HotelContactMapper; +import com.jero.standards.jiudian.hotelcontact.service.IHotelContactService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 酒店联系人 + * @Author: jeecg-boot + * @Date: 2021-06-10 + * @Version: V1.0 + */ +@Service +@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) +@DS(value = "multi-datasource1") +public class HotelContactServiceImpl extends ServiceImpl implements IHotelContactService { + @Autowired + private IHotelContactService hotelContactService; + @Autowired + private HotelContactMapper hotelContactMapper; + + /** + * 编辑 + */ + @Override + public Boolean edit(HotelManagement hotelManagement) { + if (hotelManagement.getHotelList().isEmpty()) { + throw new JeroBootException("请核实酒店联系人是否存在"); + } + LoginUser user = TokenUtils.getUserByToken(); + hotelContactMapper.removeByHotelId(hotelManagement.getId()); + List list = hotelManagement.getHotelList(); + List resList = new ArrayList<>(); + for (HotelContact entity : list) { + entity.setHotelId(hotelManagement.getId()); + BaseUtil.create(entity, user.getId()); + resList.add(entity); + } + return hotelContactService.saveBatch(resList); + } + +} \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/controller/AttendMeetingsController.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/controller/AttendMeetingsController.java new file mode 100644 index 00000000..38392f06 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/controller/AttendMeetingsController.java @@ -0,0 +1,23 @@ +package com.jero.standards.xuanguan.attendmeetings.controller; + +import com.jero.common.system.base.controller.JeroController; +import com.jero.standards.xuanguan.attendmeetings.entity.AttendMeetings; +import com.jero.standards.xuanguan.attendmeetings.service.IAttendMeetingsService; +import lombok.extern.slf4j.Slf4j; + +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; + +/** + * @Description: 宣贯参会人员 + * @Author: jeecg-boot + * @Date: 2021-05-13 + * @Version: V1.0 + */ +@Api(tags = "宣贯参会人员") +@RestController +@RequestMapping("/attendmeetings/attendMeetings") +@Slf4j +public class AttendMeetingsController extends JeroController { + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/entity/AttendMeetings.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/entity/AttendMeetings.java new file mode 100644 index 00000000..6589cf43 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/entity/AttendMeetings.java @@ -0,0 +1,81 @@ +package com.jero.standards.xuanguan.attendmeetings.entity; + +import java.io.Serializable; +import java.util.Date; + +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 lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.jeecgframework.poi.excel.annotation.ExcelIgnore; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 宣贯参会人员 + * @Author: jeecg-boot + * @Date: 2021-05-13 + * @Version: V1.0 + */ +@Data +@TableName("web_attend_meetings") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="web_attend_meetings对象", description="宣贯参会人员") +public class AttendMeetings implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @ExcelIgnore + @TableId(type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "姓名") + @Excel(name = "姓名", width = 15) + private String name; + + @ApiModelProperty(value = "手机号") + @Excel(name = "手机号", width = 15) + private String phone; + + @ApiModelProperty(value = "宣贯培训外键") + @ExcelIgnore +// @Excel(name = "宣贯培训外键", width = 15) + @TableField("training_id") + private String trainingId; + + + @ApiModelProperty(value = "创建人") + @ExcelIgnore + private String createBy; + + @ApiModelProperty(value = "创建日期") + @ExcelIgnore + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "更新人") + @ExcelIgnore + private String updateBy; + + @ApiModelProperty(value = "更新日期") + @ExcelIgnore + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("文件类别") + @TableField(exist = false) + private String moduleName; + + @ApiModelProperty("文件名称") + @TableField(exist = false) + private String fileName; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/mapper/AttendMeetingsMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/mapper/AttendMeetingsMapper.java new file mode 100644 index 00000000..2450775b --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/mapper/AttendMeetingsMapper.java @@ -0,0 +1,43 @@ +package com.jero.standards.xuanguan.attendmeetings.mapper; + +import java.util.List; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.standards.xuanguan.attendmeetings.entity.AttendMeetings; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + * @Description: 宣贯参会人员 + * @Author: jeecg-boot + * @Date: 2021-05-13 + * @Version: V1.0 + */ +@Repository +public interface AttendMeetingsMapper extends BaseMapper { + + /** + * 分页列表查询 + */ + Page queryPageList(@Param("page") Page page, + @Param("attendMeetings") AttendMeetings attendMeetings, + @Param("column") String column, + @Param("order") String order) throws Exception; + + /** + * 根据手机号查询参会人 + */ + List findAttendMeetingsByPhone(@Param("phone") String phone, + @Param("trainingId") String trainingId) throws Exception; + + /** + * 校验-参会人员手机号 + */ + List addOrEditCheckPhone(@Param("id") String id, @Param("phone") String phone, @Param("trainingId") String trainingId); + + /** + * 资源下载记录 + */ + Page dataDownloadRecord(@Param("page") Page page, @Param("userId") String userId); +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/mapper/xml/AttendMeetingsMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/mapper/xml/AttendMeetingsMapper.xml new file mode 100644 index 00000000..7539d575 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/mapper/xml/AttendMeetingsMapper.xml @@ -0,0 +1,95 @@ + + + + + + ${alias}.id AS id , + ${alias}.name AS name , + ${alias}.phone AS phone , + ${alias}.training_id AS trainingId , + ${alias}.create_by AS createBy , + ${alias}.create_time AS createTime , + ${alias}.update_by AS updateBy , + ${alias}.update_time AS updateTime + + + + + + + + + + + + + + diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/service/IAttendMeetingsService.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/service/IAttendMeetingsService.java new file mode 100644 index 00000000..c1b56e57 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/service/IAttendMeetingsService.java @@ -0,0 +1,45 @@ +package com.jero.standards.xuanguan.attendmeetings.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.standards.xuanguan.attendmeetings.entity.AttendMeetings; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * @Description: 宣贯参会人员 + * @Author: jeecg-boot + * @Date: 2021-05-13 + * @Version: V1.0 + */ +public interface IAttendMeetingsService extends IService { + + /** + * 添加 + */ + Boolean add(AttendMeetings attendMeetings) throws Exception; + + /** + * 校验-参会人员手机号 + */ + Boolean addOrEditCheckPhone(AttendMeetings attendMeetings) throws Exception; + + Boolean edit(AttendMeetings attendMeetings) throws Exception; + + /** + * 通过id删除 + */ + Boolean delete(String id) throws Exception; + + /** + * 批量删除 + */ + Boolean deleteBatch(String ids) throws Exception; + + + /** + * 手机号是否为参会人 + */ + Boolean findAttendMeetingsByPhone(String phone); +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/service/impl/AttendMeetingsServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/service/impl/AttendMeetingsServiceImpl.java new file mode 100644 index 00000000..5f5c55ec --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/attendmeetings/service/impl/AttendMeetingsServiceImpl.java @@ -0,0 +1,196 @@ +package com.jero.standards.xuanguan.attendmeetings.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.api.vo.Result; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.api.ISysBaseAPI; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.FileNameSeparateUtil; +import com.jero.common.util.PasswordUtil; +import com.jero.standards.xuanguan.attendmeetings.entity.AttendMeetings; +import com.jero.standards.xuanguan.attendmeetings.mapper.AttendMeetingsMapper; +import com.jero.standards.xuanguan.attendmeetings.service.IAttendMeetingsService; +import com.jero.standards.xuanguan.stablecrosstraining.entity.StableCrossTraining; +import com.jero.standards.xuanguan.stablecrosstraining.service.IStableCrossTrainingService; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.client.RestTemplate; + +import java.util.*; + +/** + * @Description: 宣贯参会人员 + * @Author: jeecg-boot + * @Date: 2021-05-13 + * @Version: V1.0 + */ +@Service +@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) +@DS(value = "multi-datasource1") +public class AttendMeetingsServiceImpl extends ServiceImpl implements IAttendMeetingsService { + @Autowired + private ISysBaseAPI sysBaseAPI; + @Autowired + private IAttendMeetingsService attendMeetingsService; + @Autowired + private AttendMeetingsMapper attendMeetingsMapper; + @Autowired + private IStableCrossTrainingService stableCrossTrainingService; + + private static Long BIG_SIZE = 1024L * 1024L * 50L; + + + /** + * 新增 + */ + @Override + public Boolean add(AttendMeetings attendMeetings) throws Exception { + //判断是否为管理员 +// this.isAuthentication(); + //判断宣贯培训参会人是否存在 + if (attendMeetings == null) { + throw new JeroBootException("请核实参会人员是否存在"); + } + //判断主键是否存在 + if (StringUtils.isBlank(attendMeetings.getTrainingId())) { + throw new JeroBootException(Result.NULL_ID); + } + String phone = PasswordUtil.encrypt(attendMeetings.getPhone()); + attendMeetings.setPhone(phone); + //判断该宣贯培训会议下_姓名_&&_电话_是否有重复参会人 +// this.ifRepeat(attendMeetings); + return attendMeetingsService.save(attendMeetings); + } + + @Override + public Boolean addOrEditCheckPhone(AttendMeetings attendMeetings) throws Exception { + String phone = attendMeetings.getPhone(); + String trainingId = attendMeetings.getTrainingId(); + //新增 + if (StringUtils.isBlank(attendMeetings.getId())) { + List attendMeetingsByPhone = attendMeetingsMapper.addOrEditCheckPhone("", phone, trainingId); + if (attendMeetingsByPhone.size() > 0) { + throw new JeroBootException("该手机号已报名,无需重复报名!"); + } + //编辑 + } else { + AttendMeetings attendMeetingsDB = this.getById(attendMeetings.getId()); + if (!attendMeetingsDB.getPhone().equals(phone)) { + List attendMeetingsByPhone = attendMeetingsMapper.addOrEditCheckPhone("", phone, trainingId); + if (attendMeetingsByPhone.size() > 0) { + throw new JeroBootException("该手机号已报名,无需重复报名!"); + } + } + } + return Boolean.TRUE; + } + + /** + * 编辑 + */ + @Override + public Boolean edit(AttendMeetings attendMeetings) throws Exception { + //判断是否为管理员 +// this.isAuthentication(); + //判断主键是否存在 + if (StringUtils.isBlank(attendMeetings.getId())) { + throw new JeroBootException(Result.NULL_ID); + } + if (StringUtils.isBlank(attendMeetings.getTrainingId())) { + throw new JeroBootException(Result.NULL_ID); + } + //判断该宣贯培训会议下_姓名_&&_电话_是否有重复参会人 +// this.ifRepeat(attendMeetings); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(AttendMeetings::getId, attendMeetings.getId()) + .set(StringUtils.isNotBlank(attendMeetings.getName()), AttendMeetings::getName, attendMeetings.getName()) + .set(StringUtils.isNotBlank(attendMeetings.getPhone()), AttendMeetings::getPhone, PasswordUtil.encrypt(attendMeetings.getPhone())) + .set(AttendMeetings::getUpdateBy, attendMeetings.getUpdateBy()) + .set(AttendMeetings::getUpdateTime, attendMeetings.getUpdateTime()); +// .set(StringUtils.isNotBlank(attendMeetings.getTrainingId()),AttendMeetings::getTrainingId,attendMeetings.getTrainingId()); + return attendMeetingsService.update(updateWrapper); + } + + //判断该宣贯培训会议下_姓名_&&_电话_是否有重复参会人 + public void ifRepeat(AttendMeetings attendMeetings) throws Exception { + //判断宣贯培训是否存在 + StableCrossTraining stableCrossTrainingDB = stableCrossTrainingService.queryById(attendMeetings.getTrainingId()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(AttendMeetings::getTrainingId, attendMeetings.getTrainingId()) + .eq(AttendMeetings::getName, attendMeetings.getName()) + .eq(AttendMeetings::getPhone, PasswordUtil.encrypt(attendMeetings.getPhone())); + if (attendMeetingsService.list(queryWrapper).size() > 0) { + throw new JeroBootException("'" + attendMeetings.getName() + "'已报名【" + stableCrossTrainingDB.getName() + "】,无需重复报名!"); + } + } + + /** + * 通过id删除 + */ + @Override + public Boolean delete(String id) throws Exception { + //判断是否为管理员 +// this.isAuthentication(); + //判断主键是否存在 + this.getById(id); + //删除宣贯参会人员 + return attendMeetingsService.removeById(id); + } + + /** + * 批量删除 + */ + @Override + public Boolean deleteBatch(String ids) throws Exception { + //水平越权 +// this.isAuthentication(); + //判断主键是否存在 + if (StringUtils.isBlank(ids)) { + throw new JeroBootException(Result.NULL_ID); + } + List list = Arrays.asList(ids.split(",")); + if (list.size() <= 0) { + return Boolean.FALSE; + } + //批量删除宣贯参会人员 + return attendMeetingsService.removeByIds(Arrays.asList(ids.split(","))); + } + + //判断是否为管理员 + public void isAuthentication() { + //非系统人员只能查看本人的信息 + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + List roles = sysBaseAPI.getRolesByUsername(user.getUsername()); + if (CollectionUtils.isEmpty(roles)) { + throw new JeroBootException("此用户无此权限,请与管理员联系!"); + } + if (!roles.contains("admin")) { + throw new JeroBootException("您无此权限,请与管理员联系!"); + } + } + + /** + * 手机号是否为参会人 + */ + @Override + public Boolean findAttendMeetingsByPhone(String phone) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(AttendMeetings::getPhone, phone); + List list = attendMeetingsService.list(queryWrapper); + if (list.isEmpty()) { + throw new JeroBootException("该手机号不是参会人"); + } + return Boolean.TRUE; + } +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/controller/StableCrossTrainingController.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/controller/StableCrossTrainingController.java new file mode 100644 index 00000000..bea3a179 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/controller/StableCrossTrainingController.java @@ -0,0 +1,36 @@ +package com.jero.standards.xuanguan.stablecrosstraining.controller; + +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.exception.JeroBootException; +import com.jero.common.system.base.controller.JeroController; +import com.jero.standards.xuanguan.stablecrosstraining.entity.StableCrossTraining; +import com.jero.standards.xuanguan.stablecrosstraining.service.IStableCrossTrainingService; +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.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 宣贯培训 + * @Author: jeecg-boot + * @Date: 2021-05-10 + * @Version: V1.0 + */ +@Slf4j +@RestController +@Api(tags = "宣贯培训") +@RequestMapping("/stablecrosstraining/stableCrossTraining") +public class StableCrossTrainingController extends JeroController { + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/entity/OSSFileVO.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/entity/OSSFileVO.java new file mode 100644 index 00000000..23951700 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/entity/OSSFileVO.java @@ -0,0 +1,35 @@ +package com.jero.standards.xuanguan.stablecrosstraining.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; + +/** + * @作者:WangHK + * @类名:UserEntity + * @功能:TODO_用户_实体 + * @日期:2021年5月20日, 0020 + * @公司:天津合众未来科技有限公司 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class OSSFileVO { + private static final long serialVersionUID = 1L; + + private String id; + + @Excel(name = "文件名称") + private String fileName; + + @Excel(name = "文件地址") + private String url; + + @Excel(name = "浏览数量") + private Integer viewNumber; + + @Excel(name = "下载数量") + private Integer downloadNumber; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/entity/StableCrossTraining.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/entity/StableCrossTraining.java new file mode 100644 index 00000000..27e0a694 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/entity/StableCrossTraining.java @@ -0,0 +1,236 @@ +package com.jero.standards.xuanguan.stablecrosstraining.entity; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.jero.common.aspect.annotation.Dict; +import com.jero.common.system.base.entity.JeroEntity; +import com.jero.standards.jiudian.hotelcontact.entity.HotelContact; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Size; + +/** + * @Description: 宣贯培训 + * @Author: jeecg-boot + * @Date: 2021-05-10 + * @Version: V1.0 + */ +@Data +@TableName("web_stable_cross_training") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="web_stable_cross_training对象", description="宣贯培训") +public class StableCrossTraining extends JeroEntity { + private static final long serialVersionUID = 1L; + +// @ApiModelProperty(value = "主键") +// @TableId(type = IdType.ID_WORKER_STR) +// private String id; + + @Excel(name = "会议名称", width = 15) + @ApiModelProperty(value = "会议名称_必填,校验协会动态的唯一性,重复进行提示") + private String name; + + @Excel(name = "培训类型", width = 15) + @ApiModelProperty(value = "培训类型:1.标准宣贯, 2.学习培训") + @TableField("meeting_type") + @Dict(dicCode = "stable_cross_type") + private Integer meetingType; + + @Excel(name = "会议状态", width = 15) + @ApiModelProperty(value = "会议状态: 1.可报名, 2.已结束") + @TableField("meeting_state") + @Dict(dicCode = "stable_cross_state") + private Integer meetingState; + + @Excel(name = "年份", width = 15) + @ApiModelProperty(value = "年份") + private String year; + + @Excel(name = "召开开始时间", width = 15, format = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "召开开始时间") + @TableField("convoke_start_time") + private Date convokeStartTime; + + @Excel(name = "召开结束时间", width = 15, format = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "召开结束时间") + @TableField("convoke_end_time") + private Date convokeEndTime; + + @Excel(name = "召开地点对照码", width = 15) + @ApiModelProperty(value = "召开地点对照码") + @TableField("convoke_locale") + private String convokeLocale; + + @Excel(name = "召开省市地点名称", width = 15) + @ApiModelProperty(value = "召开省市地点名称") + @TableField("place_name") + private String placeName; + + @Excel(name = "会议报名", width = 15) + @ApiModelProperty(value = "会议报名_必填:校验网址格式") + @TableField("meeting_apply") + private String meetingApply; + +// @Excel(name = "会议文件", width = 15) + // @ExcelIgnore + @ApiModelProperty(value = "会议文件") + @TableField("meeting_files") + private String meetingFiles; + +// @Excel(name = "会议通知文件", width = 15) + // @ExcelIgnore + @ApiModelProperty(value = "会议通知文件") + @TableField("meeting_notify_files") + private String meetingNotifyFiles; + + @Excel(name = "会议简介", width = 15) + @ApiModelProperty(value = "会议简介") + @TableField("meeting_description") + private String meetingDescription; + + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "备注") + @Size(max = 500) + private String remark; + + @ApiModelProperty(value = "注册签到") + @TableField("sign_in_time") + private String signInTime; + + @ApiModelProperty(value = "注册签到开始时间") + @TableField("sign_in_start") + private Date signInStart; + + @ApiModelProperty(value = "注册签到结束时间") + @TableField("sign_in_end") + private Date signInEnd; + +// @Excel(name = "二维码", width = 15) +// @ExcelIgnore + @ApiModelProperty(value = "二维码") + @TableField("qr_code") + private String qrCode; + + +// @ApiModelProperty(value = "创建人") +// @TableField("create_by") +// private String createBy; +// +// @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") +// @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") +// @ApiModelProperty(value = "创建日期") +// @TableField("create_time") +// private Date createTime; +// +// @ApiModelProperty(value = "更新人") +// @TableField("update_by") +// private String updateBy; +// +// @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") +// @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") +// @ApiModelProperty(value = "更新日期") +// @TableField("update_time") +// private Date updateTime; + + + /** + * ---------- 以下为外键关联字段 ---------- + */ + +// @ApiModelProperty(value = "酒店外键") +// @ExcelIgnore +// @TableField("hotel_id") +// private String hotelId; + + + /** + * ---------- 以上为外键关联字段 ---------- + */ + + /** + * ---------- 以下为非持久化字段 ---------- + */ + + @ApiModelProperty("用户真实姓名") + @TableField(exist = false) + private String realName; + + @ApiModelProperty("培训外键") + @TableField(exist = false) + private String trainingId; + + @ApiModelProperty("酒店名称") + @TableField(exist = false) + private String hotelName; + + @ApiModelProperty("地址") + @TableField(exist = false) + private String address; + + @ApiModelProperty("联系人") + @TableField(exist = false) + private String contactPerson; + + @ApiModelProperty("电话") +// @TableField("telephone_number") + @TableField(exist = false) + private String telephoneNumber; + + @ApiModelProperty("召开时间") + @TableField(exist = false) + private String convokeTime; + + @ApiModelProperty("培训类型名称") + @TableField(exist = false) + private String meetingTypeName; + + @ApiModelProperty("培训类型状态") + @TableField(exist = false) + private String meetingStateName; + + @ApiModelProperty("查询状态: 0.初始化查询, 1.只显示有文件的会议") + @TableField(exist = false) + private String findType; + + @ApiModelProperty("查询状态: 1.无文件会议, 2.无文件会议+本身会议") + @TableField(exist = false) + private String type; + + @ApiModelProperty("ids") + @TableField(exist = false) + private List ids; + + @ApiModelProperty("fileKeyValue") + @TableField(exist = false) + private List> fileKeyValue; + + @ApiModelProperty("酒店联系人集合") + @TableField(exist = false) + private List hotelList; + + @ApiModelProperty("排序字段") + @TableField(exist = false) + private String column; + + @ApiModelProperty("排序规则") + @TableField(exist = false) + private String order; + + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/entity/StableCrossTrainingVO.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/entity/StableCrossTrainingVO.java new file mode 100644 index 00000000..50f9ed32 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/entity/StableCrossTrainingVO.java @@ -0,0 +1,43 @@ +package com.jero.standards.xuanguan.stablecrosstraining.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * @作者:WangHK + * @类名:StableCrossTraining_Entity + * @功能:TODO_宣贯_实体 + * @日期:2021年5月26日 + * @公司:天津合众未来科技有限公司 + */ +@Data +@ApiModel(value="web_stable_cross_training对象VO", description="宣贯培训VO") +public class StableCrossTrainingVO { + + @ApiModelProperty("会议名称") + private String name; + + @ApiModelProperty("召开时间") + private String convokeTime; + + @ApiModelProperty("召开地点") + private String placeName; + + @ApiModelProperty("会议状态") + private String meetingState; + + @ApiModelProperty("类型") + private String meetingStateName; + + @ApiModelProperty("年份") + private String year; + + @ApiModelProperty("更新时间") + private String updateTime; + + @ApiModelProperty("管理员") + private String realName; + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/mapper/StableCrossTrainingMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/mapper/StableCrossTrainingMapper.java new file mode 100644 index 00000000..52222383 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/mapper/StableCrossTrainingMapper.java @@ -0,0 +1,61 @@ +package com.jero.standards.xuanguan.stablecrosstraining.mapper; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import com.jero.standards.xuanguan.stablecrosstraining.entity.OSSFileVO; +import com.jero.standards.xuanguan.stablecrosstraining.entity.StableCrossTraining; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @Description: 宣贯培训 + * @Author: jeecg-boot + * @Date: 2021-05-10 + * @Version: V1.0 + */ +@Repository +public interface StableCrossTrainingMapper extends BaseMapper { + + /** + * 分页列表查询 + */ + Page queryPageList(@Param("page") Page page, + @Param("stableCrossTraining") StableCrossTraining stableCrossTraining, + @Param("column") String column, + @Param("order") String order) throws Exception; + + /** + * 通过id查询 + */ + StableCrossTraining getStableCrossTraining(@Param("id") String id) throws Exception; + + /** + * 根据fileIds获取files + */ + List getFilesByFileIds(@Param("fileIds") List fileIds) throws Exception; + + /** + * 根据开始结束时间查询全部宣贯 + */ + List findAllProvinciaXuanGuanByYear(@Param("beginYear") String beginYear, @Param("endYear") String endYear) throws Exception; + + List findAllProvinciaXuanGuanByNowYear(@Param("year") String year) throws Exception; + + /** + * 根据省code获取该剩下会议数 + */ + List findAllProvincialXuanGuanByPlace(@Param("place") String place, @Param("beginYear") String beginYear, @Param("endYear") String endYear); + + List findAllProvincialXuanGuanByPlaceByNowYear(@Param("place") String place, @Param("year") String year); + + /** + * 根据开始结束时间查询全部宣贯城市 + */ + List findAllCityXuanGuanByYear(@Param("code") String code, + @Param("beginYear") String beginYear, + @Param("endYear") String endYear); + + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/mapper/xml/StableCrossTrainingMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/mapper/xml/StableCrossTrainingMapper.xml new file mode 100644 index 00000000..9717f735 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/mapper/xml/StableCrossTrainingMapper.xml @@ -0,0 +1,301 @@ + + + + + + ${alias}.id AS id , + ${alias}.name AS name , + ${alias}.meeting_type AS meetingType , + ${alias}.meeting_state AS meetingState , + ${alias}.year AS year , + ${alias}.convoke_start_time AS convokeStartTime , + ${alias}.convoke_end_time AS convokeEndTime , + ${alias}.sign_in_start AS signInStart , + ${alias}.sign_in_end AS signInEnd , + ${alias}.convoke_locale AS convokeLocale , + ${alias}.meeting_apply AS meetingApply , + ${alias}.meeting_files AS meetingFiles , + ${alias}.meeting_notify_files AS meetingNotifyFiles , + ${alias}.meeting_description AS meetingDescription , + ${alias}.remark AS remark , + ${alias}.qr_code AS qrCode , + ${alias}.place_name AS placeName , + ${alias}.create_by AS createBy , + ${alias}.create_time AS createTime , + ${alias}.update_by AS updateBy , + ${alias}.update_time AS updateTime + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/service/IStableCrossTrainingService.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/service/IStableCrossTrainingService.java new file mode 100644 index 00000000..0e027df7 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/service/IStableCrossTrainingService.java @@ -0,0 +1,50 @@ +package com.jero.standards.xuanguan.stablecrosstraining.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.meeting.entity.PayMeeting; +import com.jero.meeting.entity.PayMeetingHotelContacts; +import com.jero.standards.xuanguan.stablecrosstraining.entity.StableCrossTraining; + +import java.util.List; + +/** + * @Description: 宣贯培训 + * @Author: jeecg-boot + * @Date: 2021-05-10 + * @Version: V1.0 + */ +public interface IStableCrossTrainingService extends IService { + + /** + * 添加 + */ + Boolean add(StableCrossTraining stableCrossTraining); + + /** + * 编辑 + */ + Boolean edit(StableCrossTraining stableCrossTraining) throws Exception; + + /** + * 通过id删除 + */ + Boolean delete(String id) throws Exception; + + /** + * 批量删除 + */ + Boolean deleteBatch(String ids) throws Exception; + + /** + * 通过id查询 + */ + StableCrossTraining queryById(String id) throws Exception; + + /** + * 宣贯培训-下拉列表 + */ + List queryList(StableCrossTraining stableCrossTraining) throws Exception; + + void push(PayMeeting payMeeting, List hotelContactsList); +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/service/impl/StableCrossTrainingServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/service/impl/StableCrossTrainingServiceImpl.java new file mode 100644 index 00000000..8562bb45 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/standards/xuanguan/stablecrosstraining/service/impl/StableCrossTrainingServiceImpl.java @@ -0,0 +1,414 @@ +package com.jero.standards.xuanguan.stablecrosstraining.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.api.vo.Result; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.api.ISysBaseAPI; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.*; +import com.jero.meeting.entity.PayMeeting; +import com.jero.meeting.entity.PayMeetingHotelContacts; +import com.jero.standards.jiudian.hotelManagement.entity.HotelManagement; +import com.jero.standards.jiudian.hotelManagement.service.IHotelManagementService; +import com.jero.standards.jiudian.hotelcontact.entity.HotelContact; +import com.jero.standards.jiudian.hotelcontact.mapper.HotelContactMapper; +import com.jero.standards.jiudian.hotelcontact.service.IHotelContactService; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.hssf.usermodel.*; +import com.jero.standards.xuanguan.attendmeetings.entity.AttendMeetings; +import com.jero.standards.xuanguan.attendmeetings.service.IAttendMeetingsService; +import com.jero.standards.xuanguan.stablecrosstraining.entity.OSSFileVO; +import com.jero.standards.xuanguan.stablecrosstraining.entity.StableCrossTraining; +import com.jero.standards.xuanguan.stablecrosstraining.mapper.StableCrossTrainingMapper; +import com.jero.standards.xuanguan.stablecrosstraining.service.IStableCrossTrainingService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +/** + * @Description: 宣贯培训 + * @Author: jeecg-boot + * @Date: 2021-05-10 + * @Version: V1.0 + */ +@Service +@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) +@DS(value = "multi-datasource1") +public class StableCrossTrainingServiceImpl extends ServiceImpl implements IStableCrossTrainingService { + @Autowired + private ISysBaseAPI sysBaseAPI; + @Autowired + private HotelContactMapper hotelContactMapper; + @Autowired + private IHotelContactService hotelContactService; + @Autowired + private IAttendMeetingsService attendMeetingsService; + @Autowired + private IHotelManagementService hotelManagementService; + @Autowired + private StableCrossTrainingMapper stableCrossTrainingMapper; + @Autowired + private IStableCrossTrainingService stableCrossTrainingService; + + @Override + public void push(PayMeeting payMeeting, List hotelContactsList) { + StableCrossTraining stableCrossTraining = new StableCrossTraining(); + stableCrossTraining.setName(payMeeting.getMeetingName()); + stableCrossTraining.setMeetingType(payMeeting.getMeetingType()); + stableCrossTraining.setYear(payMeeting.getParticularYear()); + Date startTime = payMeeting.getStartTime(); + Date endTime = payMeeting.getEndTime(); + stableCrossTraining.setConvokeTime(DateUtil.formatDateTime(startTime)+"至"+DateUtil.formatDateTime(endTime)); + stableCrossTraining.setConvokeStartTime(startTime); + stableCrossTraining.setConvokeEndTime(endTime); + stableCrossTraining.setConvokeLocale(payMeeting.getConvokeLocale()); + stableCrossTraining.setPlaceName(payMeeting.getVenue()); + stableCrossTraining.setMeetingFiles(payMeeting.getMeetingFiles()); + stableCrossTraining.setMeetingDescription(payMeeting.getMeetingContent()); + stableCrossTraining.setRemark(payMeeting.getRemark()); + Date startSignInTime = payMeeting.getStartSignInTime(); + Date endSignInTime = payMeeting.getEndSignInTime(); + stableCrossTraining.setSignInTime(DateUtil.formatDateTime(startSignInTime)+"至"+DateUtil.formatDateTime(endSignInTime)); + stableCrossTraining.setSignInStart(startSignInTime); + stableCrossTraining.setSignInEnd(endSignInTime); + stableCrossTraining.setHotelName(payMeeting.getHotelName()); + stableCrossTraining.setAddress(payMeeting.getHotelAddress()); + stableCrossTraining.setMeetingApply(""); + List hotelList = new ArrayList<>(); + List hotelContactsList1 = payMeeting.getHotelContactsList(); + for (PayMeetingHotelContacts meetingHotelContacts : hotelContactsList1) { + HotelContact hotelContact = new HotelContact(); + hotelContact.setContactPerson(meetingHotelContacts.getHotelContacts()); + hotelContact.setTelephoneNumber(meetingHotelContacts.getHotelContactsPhone()); + hotelList.add(hotelContact); + } + stableCrossTraining.setHotelList(hotelList); + add(stableCrossTraining); + } + + /** + * 添加 + */ + @Override + public Boolean add(StableCrossTraining stableCrossTraining) { + + //配置培训状态 + this.isTrainingState(stableCrossTraining); + Boolean resFlag = stableCrossTrainingService.save(stableCrossTraining); + //创建时间/创建人/修改时间/修改人 + LoginUser user = TokenUtils.getUserByToken(); + BaseUtil.create(stableCrossTraining, user.getId()); + //添加酒店信息 + HotelManagement hotelManagement = new HotelManagement(); + hotelManagement.setHotelList(stableCrossTraining.getHotelList()); + hotelManagement.setTrainingId(stableCrossTraining.getId()) + .setConferenceTheme(stableCrossTraining.getName()).setHoldTime(stableCrossTraining.getConvokeTime()) + .setPlace(stableCrossTraining.getConvokeLocale()).setPlaceName(stableCrossTraining.getPlaceName()) + .setHotelName(stableCrossTraining.getHotelName()).setAddress(stableCrossTraining.getAddress()) + .setMeetingType(1); + hotelManagementService.add(hotelManagement); + return resFlag; + } + + //判空 + public void ifEntityIsEmpty(StableCrossTraining stableCrossTraining) { + if (StringUtils.isBlank(stableCrossTraining.getName())) { + throw new JeroBootException(Result.NULL_NAME); + } else { + if (stableCrossTraining.getName().length() > 50) { + throw new JeroBootException("会议名称输入超过限定长度!"); + } + } + if (StringUtils.isBlank(stableCrossTraining.getMeetingApply())) { + throw new JeroBootException("请核实会议报名是否存在!"); + } else { + if (stableCrossTraining.getMeetingApply().length() > 500) { + throw new JeroBootException("会议报名输入超过限定长度!"); + } + if (!Assert.iswebsit(stableCrossTraining.getMeetingApply())) { + throw new JeroBootException("报名链接请输入网址格式"); + } + } + if (null == stableCrossTraining.getMeetingType()) { + throw new JeroBootException("请核实培训类型是否存在!"); + } + if (StringUtils.isBlank(stableCrossTraining.getYear())) { + throw new JeroBootException("请核实年份是否存在!"); + } + if (StringUtils.isBlank(stableCrossTraining.getConvokeTime())) { + throw new JeroBootException("请核实培训召开时间是否存在!"); + } + if (StringUtils.isBlank(stableCrossTraining.getConvokeLocale())) { + throw new JeroBootException("请核实培训召开地点是否存在!"); + } + if (StringUtils.isBlank(stableCrossTraining.getPlaceName())) { + throw new JeroBootException("请核实省市名称是否存在!"); + } + if (StringUtils.isNotBlank(stableCrossTraining.getRemark())) { + if (stableCrossTraining.getRemark().length() > 500) { + throw new JeroBootException("备注输入超过限定长度!"); + } + } + if (StringUtils.isBlank(stableCrossTraining.getSignInTime())) { + throw new JeroBootException("请核实注册签到是否存在!"); + } else { + if (stableCrossTraining.getSignInTime().length() > 50) { + throw new JeroBootException("注册签到输入超过限定长度!"); + } + } + if (StringUtils.isNotBlank(stableCrossTraining.getMeetingFiles())) { + List newsReportList = Arrays.asList(stableCrossTraining.getMeetingFiles().split(",")); + if (newsReportList.size() > 10) { + throw new JeroBootException("会议文件最多为10个"); + } + } + if (StringUtils.isNotBlank(stableCrossTraining.getMeetingNotifyFiles())) { + List newsReportList = Arrays.asList(stableCrossTraining.getMeetingNotifyFiles().split(",")); + if (newsReportList.size() > 10) { + throw new JeroBootException("会议通知文件最多为10个"); + } + } + } + + + //判断培训状态 + public StableCrossTraining isTrainingState(StableCrossTraining stableCrossTraining) { + stableCrossTraining.setMeetingState(0); + Date startTime = stableCrossTraining.getConvokeStartTime(); + Date endTime = stableCrossTraining.getConvokeEndTime(); + Date now = new Date(); + Calendar startCalendar = Calendar.getInstance(); + startCalendar.setTime(startTime); + //会议开始之前两天 + startCalendar.add(Calendar.DATE, -2); + Calendar endCalendar = Calendar.getInstance(); + endCalendar.setTime(endTime); +// endCalendar.add(Calendar.HOUR, 1);//会议结束延后一小时 + //会议结束延后一天 + endCalendar.add(Calendar.DATE, 1); + + //开始时间前+48_早于_当前时间_||_结束时间+24_早于_当前时间 + if (endCalendar.getTime().after(now)) { + stableCrossTraining.setMeetingState(1);//可报名 + stableCrossTraining.setMeetingStateName("可报名"); + } + //结束时间+24_晚于_当前时间 + if (endCalendar.getTime().before(now)) { + stableCrossTraining.setMeetingState(2);//已结束 + stableCrossTraining.setMeetingStateName("已结束"); + } + return stableCrossTraining; + } + + + /** + * 编辑 + */ + @Override + public Boolean edit(StableCrossTraining stableCrossTraining) throws Exception { + //判断是否为管理员 +// sysBaseAPI.isAuthentication(); + //判断主键是否存在 + if (StringUtils.isBlank(stableCrossTraining.getId())) { + throw new JeroBootException(Result.NULL_ID); + } + StableCrossTraining stableCrossTrainingDB = this.queryById(stableCrossTraining.getId()); + //判空 + this.ifEntityIsEmpty(stableCrossTraining); + //TODO 会议名称唯一校验 + //sysBaseAPI.checkValue("1", "web_stable_cross_training", "name", + // stableCrossTraining.getName(), stableCrossTraining.getId()); + //配置培训状态 + this.isTrainingState(stableCrossTraining); + //修改时间/修改人 +// this.update(stableCrossTraining); + //添加宣贯培训 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(StableCrossTraining::getId, stableCrossTraining.getId()) + .set(StringUtils.isNotBlank(stableCrossTraining.getName()), StableCrossTraining::getName, stableCrossTraining.getName())//会议名称 + .set(stableCrossTraining.getMeetingType() != null, StableCrossTraining::getMeetingType, stableCrossTraining.getMeetingType())//培训类型:1.标准宣贯, 2.学习培训 + .set(stableCrossTraining.getMeetingState() != null, StableCrossTraining::getMeetingState, stableCrossTraining.getMeetingState())//会议状态: 1.可报名, 2.已结束 + .set(StringUtils.isNotBlank(stableCrossTraining.getYear()), StableCrossTraining::getYear, stableCrossTraining.getYear())//年份 + .set(stableCrossTraining.getConvokeStartTime() != null, StableCrossTraining::getConvokeStartTime, stableCrossTraining.getConvokeStartTime())//召开开始时间 + .set(stableCrossTraining.getConvokeEndTime() != null, StableCrossTraining::getConvokeEndTime, stableCrossTraining.getConvokeEndTime())//召开结束时间 + .set(StringUtils.isNotBlank(stableCrossTraining.getConvokeLocale()), StableCrossTraining::getConvokeLocale, stableCrossTraining.getConvokeLocale())//召开地点 + .set(StringUtils.isNotBlank(stableCrossTraining.getMeetingApply()), StableCrossTraining::getMeetingApply, stableCrossTraining.getMeetingApply())//会议报名:校验网址格式 + .set(StableCrossTraining::getMeetingFiles, stableCrossTraining.getMeetingFiles())//会议文件 + .set(StableCrossTraining::getMeetingNotifyFiles, stableCrossTraining.getMeetingNotifyFiles())//会议通知文件 + .set(StringUtils.isNotBlank(stableCrossTraining.getMeetingDescription()), StableCrossTraining::getMeetingDescription, stableCrossTraining.getMeetingDescription())//会议简介 + .set(StringUtils.isNotBlank(stableCrossTraining.getRemark()), StableCrossTraining::getRemark, stableCrossTraining.getRemark())//备注 + .set(StringUtils.isNotBlank(stableCrossTraining.getQrCode()), StableCrossTraining::getQrCode, stableCrossTraining.getQrCode())//二维码 + .set(StringUtils.isNotBlank(stableCrossTraining.getPlaceName()), StableCrossTraining::getPlaceName, stableCrossTraining.getPlaceName())//召开省市地点名称 + .set(StringUtils.isNotBlank(stableCrossTraining.getSignInTime()), StableCrossTraining::getSignInTime, stableCrossTraining.getSignInTime())//召开省市地点名称 + .set(stableCrossTraining.getSignInStart() != null, StableCrossTraining::getSignInStart, stableCrossTraining.getSignInStart())//召开省市地点名称 + .set(stableCrossTraining.getSignInEnd() != null, StableCrossTraining::getSignInEnd, stableCrossTraining.getSignInEnd())//召开省市地点名称 + .set(StableCrossTraining::getUpdateBy, stableCrossTraining.getUpdateBy())//修改人 + .set(StableCrossTraining::getUpdateTime, stableCrossTraining.getUpdateTime());//修改时间 + //TODO 酒店信息 +// stableCrossTraining.getId() + //添加酒店信息 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HotelManagement::getTrainingId, stableCrossTraining.getId()); + List hotelManagements = hotelManagementService.list(queryWrapper); + HotelManagement hotelManagement = new HotelManagement(); + hotelManagement.setHotelList(stableCrossTraining.getHotelList()); + hotelManagement.setTrainingId(stableCrossTraining.getId()) + .setConferenceTheme(stableCrossTraining.getName()).setHoldTime(stableCrossTraining.getConvokeTime()) + .setPlace(stableCrossTraining.getConvokeLocale()).setPlaceName(stableCrossTraining.getPlaceName()) + .setHotelName(stableCrossTraining.getHotelName()).setAddress(stableCrossTraining.getAddress()) +// .setContactPerson(stableCrossTraining.getContactPerson()).setContactNumber(stableCrossTraining.getContactNumber()) + .setMeetingType(1).setId(hotelManagements.get(0).getId()); + hotelManagementService.edit(hotelManagement); + //编辑宣贯信息 + return stableCrossTrainingService.update(updateWrapper); + } + + + /** + * 通过id删除 + */ + @Override + public Boolean delete(String id) throws Exception { + //判断主键是否存在 + if (StringUtils.isBlank(id)) { + throw new JeroBootException(Result.NULL_ID); + } + LambdaQueryWrapper queryAttendMeetingsWrapper = new LambdaQueryWrapper<>(); + queryAttendMeetingsWrapper.eq(AttendMeetings::getTrainingId, id); + //根据宣贯培训删除参会人员 + attendMeetingsService.remove(queryAttendMeetingsWrapper); + LambdaQueryWrapper queryHotelManagementWrapper = new LambdaQueryWrapper<>(); + queryHotelManagementWrapper.eq(HotelManagement::getTrainingId, id); + List hotelManagements = hotelManagementService.list(queryHotelManagementWrapper); + + if (!hotelManagements.isEmpty()) { + LambdaQueryWrapper queryHotelContactWrapper = new LambdaQueryWrapper<>(); + queryHotelContactWrapper.eq(HotelContact::getHotelId, hotelManagements.get(0).getId()); + List hotelContacts = hotelContactService.list(queryHotelContactWrapper); + //根据宣贯培训删除酒店信息 + if (!hotelContacts.isEmpty()) { + hotelContactMapper.removeByHotelId(hotelContacts.get(0).getHotelId()); + } + } + hotelManagementService.remove(queryHotelManagementWrapper); + return stableCrossTrainingService.removeById(id); + } + + /** + * 批量删除 + */ + @Override + public Boolean deleteBatch(String ids) throws Exception { + //判断是否为管理员 +// sysBaseAPI.isAuthentication(); + //判断主键是否存在 + if (StringUtils.isBlank(ids)) { + throw new JeroBootException(Result.NULL_ID); + } + List list = new ArrayList<>(); + if (ids.contains(",")) { + list = Arrays.asList(ids.split(",")); + + } else { + list.add(ids); + } + LambdaQueryWrapper queryAttendMeetingsWrapper = new LambdaQueryWrapper<>(); + queryAttendMeetingsWrapper.in(AttendMeetings::getTrainingId, list); + //根据宣贯培训删除参会人员 + attendMeetingsService.remove(queryAttendMeetingsWrapper); + LambdaQueryWrapper queryHotelWrapper = new LambdaQueryWrapper<>(); + queryHotelWrapper.in(HotelManagement::getTrainingId, list); + //根据宣贯培训删除酒店信息 + for (String id : list) { + LambdaQueryWrapper queryHotelManagementWrapper = new LambdaQueryWrapper<>(); + queryHotelManagementWrapper.eq(HotelManagement::getTrainingId, id); + List hotelManagements = hotelManagementService.list(queryHotelManagementWrapper); + + if (!hotelManagements.isEmpty()) { + LambdaQueryWrapper queryHotelContactWrapper = new LambdaQueryWrapper<>(); + queryHotelContactWrapper.eq(HotelContact::getHotelId, hotelManagements.get(0).getId()); + List hotelContacts = hotelContactService.list(queryHotelContactWrapper); + //根据宣贯培训删除酒店信息 + if (!hotelContacts.isEmpty()) { + hotelContactMapper.removeByHotelId(hotelContacts.get(0).getHotelId()); + } + } + } + hotelManagementService.remove(queryHotelWrapper); + //批量删除宣贯 + return this.stableCrossTrainingService.removeByIds(Arrays.asList(ids.split(","))); + } + + /** + * 通过id查询 + */ + @Override + public StableCrossTraining queryById(String id) throws Exception { + //判断主键是否存在 + if (StringUtils.isBlank(id)) { + throw new JeroBootException(Result.NULL_ID); + } + StableCrossTraining entityDB = stableCrossTrainingMapper.getStableCrossTraining(id); + //判断Entity是否存在 + if (entityDB == null) { + throw new JeroBootException(Result.NULL_DATA); + } + //配置培训状态 + this.isTrainingState(entityDB); + LambdaQueryWrapper queryHotelManagementWrapper = new LambdaQueryWrapper<>(); + queryHotelManagementWrapper.eq(HotelManagement::getTrainingId, id); + List hotelManagements = hotelManagementService.list(queryHotelManagementWrapper); + LambdaQueryWrapper queryHotelContactWrapper = new LambdaQueryWrapper<>(); + queryHotelContactWrapper.eq(HotelContact::getHotelId, hotelManagements.get(0).getId()); + List hotelContacts = hotelContactService.list(queryHotelContactWrapper); + entityDB.setHotelList(hotelContacts); + return entityDB; + } + + + /** + * 宣贯培训-下拉列表 + */ + @Override + public List queryList(StableCrossTraining stableCrossTraining) throws Exception { + List list = stableCrossTrainingService.lambdaQuery() + .eq(null != stableCrossTraining.getMeetingType(), StableCrossTraining::getMeetingType, stableCrossTraining.getMeetingType()) + .list(); + List resList = new ArrayList<>(); + List ids = new ArrayList<>(); + //只显示没有文件的数据 + for (StableCrossTraining crossTraining : list) { + if (crossTraining.getMeetingFiles() == null || StringUtils.isBlank(crossTraining.getMeetingFiles())) { + ids.add(crossTraining.getId()); + resList.add(crossTraining); + } + } + //判断_如果是资料修改的时候需要下拉到会议本身 + if ("2".equals(stableCrossTraining.getType())) { + StableCrossTraining stableCrossTrainingDB = this.queryById(stableCrossTraining.getId()); + if (!ids.contains(stableCrossTrainingDB.getId())) { + resList.add(stableCrossTrainingDB); + } + } + return resList; + } + + + +} diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/oss/mapper/OSSFileMapper.java b/jero-boot-module-system/src/main/java/com/jero/modules/oss/mapper/OSSFileMapper.java index 688bd518..c4f84697 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/oss/mapper/OSSFileMapper.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/oss/mapper/OSSFileMapper.java @@ -2,7 +2,11 @@ package com.jero.modules.oss.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jero.modules.oss.entity.OSSFile; +import org.apache.ibatis.annotations.Param; public interface OSSFileMapper extends BaseMapper { - + /** + * 根据文件id获取文件名称 + */ + String findFileNameByFileId(@Param("fileId")String fileId); } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/oss/mapper/xml/OSSFileMapper.xml b/jero-boot-module-system/src/main/java/com/jero/modules/oss/mapper/xml/OSSFileMapper.xml new file mode 100644 index 00000000..c2663f90 --- /dev/null +++ b/jero-boot-module-system/src/main/java/com/jero/modules/oss/mapper/xml/OSSFileMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java index 608a8e44..e0054525 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.base.Joiner; +import com.jero.modules.oss.mapper.OSSFileMapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; @@ -84,7 +85,8 @@ public class SysBaseApiImpl implements ISysBaseAPI { private SysDepartMapper departMapper; @Resource private SysCategoryMapper categoryMapper; - + @Resource + private OSSFileMapper ossFileMapper; @Autowired private ISysDataSourceService dataSourceService; @Autowired @@ -1023,4 +1025,9 @@ public class SysBaseApiImpl implements ISysBaseAPI { public List listSonDepartsByDepId(String departId) { return sysDepartService.listSonDepartsByDepId(departId); } + + @Override + public String findFileNameByFileId(String fileId) { + return ossFileMapper.findFileNameByFileId(fileId); + } } \ No newline at end of file diff --git a/jero-boot-single-startup/src/main/resources/application-dev.yml b/jero-boot-single-startup/src/main/resources/application-dev.yml index 5462cf6b..6b0564a5 100644 --- a/jero-boot-single-startup/src/main/resources/application-dev.yml +++ b/jero-boot-single-startup/src/main/resources/application-dev.yml @@ -135,13 +135,12 @@ spring: username: root password: 123456 driver-class-name: com.p6spy.engine.spy.P6SpyDriver - # 多数据源配置 - #multi-datasource1: -# url: jdbc:mysql://localhost:3306/jero-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai -# username: root -# password: root -# driver-class-name: com.mysql.cj.jdbc.Driver - #redis 配置 + # 多数据源配置 + multi-datasource1: + url: jdbc:p6spy:mysql://192.168.18.254:3306/standards_association?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&serverTimezone=Asia/Shanghai + username: root + password: 123456 + driver-class-name: com.p6spy.engine.spy.P6SpyDriver redis: database: 14 host: 121.36.69.172