diff --git a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/SpringSecurityConstant.java b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/SpringSecurityConstant.java index 8c07723..1fcef8a 100644 --- a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/SpringSecurityConstant.java +++ b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/SpringSecurityConstant.java @@ -75,7 +75,9 @@ public interface SpringSecurityConstant { "/scrHideData/list", "/scrMeterData/list", "/scrRiskData/list", - "/scrWorkTask/list" + "/scrWorkTask/list", + "/scrTrainData/list", + "/scrTrainSche/list" }; diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/controller/ScrTrainDataController.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/controller/ScrTrainDataController.java new file mode 100644 index 0000000..4bcbc22 --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/controller/ScrTrainDataController.java @@ -0,0 +1,141 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtraindata.controller; + +import vip.xiaonuo.core.annotion.BusinessLog; +import vip.xiaonuo.core.annotion.Permission; +import vip.xiaonuo.core.enums.LogAnnotionOpTypeEnum; +import vip.xiaonuo.core.pojo.response.ResponseData; +import vip.xiaonuo.core.pojo.response.SuccessResponseData; +import vip.xiaonuo.modular.scrtraindata.param.ScrTrainDataParam; +import vip.xiaonuo.modular.scrtraindata.service.ScrTrainDataService; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import javax.annotation.Resource; +import java.util.List; + +/** + * 培训控制器 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ +@RestController +public class ScrTrainDataController { + + @Resource + private ScrTrainDataService scrTrainDataService; + + /** + * 查询培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + @GetMapping("/scrTrainData/page") + @BusinessLog(title = "培训_查询", opType = LogAnnotionOpTypeEnum.QUERY) + public ResponseData page(ScrTrainDataParam scrTrainDataParam) { + return new SuccessResponseData(scrTrainDataService.page(scrTrainDataParam)); + } + + /** + * 添加培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + @PostMapping("/scrTrainData/add") + @BusinessLog(title = "培训_增加", opType = LogAnnotionOpTypeEnum.ADD) + public ResponseData add(@RequestBody @Validated(ScrTrainDataParam.add.class) ScrTrainDataParam scrTrainDataParam) { + scrTrainDataService.add(scrTrainDataParam); + return new SuccessResponseData(); + } + + /** + * 删除培训,可批量删除 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + @PostMapping("/scrTrainData/delete") + @BusinessLog(title = "培训_删除", opType = LogAnnotionOpTypeEnum.DELETE) + public ResponseData delete(@RequestBody @Validated(ScrTrainDataParam.delete.class) List scrTrainDataParamList) { + scrTrainDataService.delete(scrTrainDataParamList); + return new SuccessResponseData(); + } + + /** + * 编辑培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + @PostMapping("/scrTrainData/edit") + @BusinessLog(title = "培训_编辑", opType = LogAnnotionOpTypeEnum.EDIT) + public ResponseData edit(@RequestBody @Validated(ScrTrainDataParam.edit.class) ScrTrainDataParam scrTrainDataParam) { + scrTrainDataService.edit(scrTrainDataParam); + return new SuccessResponseData(); + } + + /** + * 查看培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + @GetMapping("/scrTrainData/detail") + @BusinessLog(title = "培训_查看", opType = LogAnnotionOpTypeEnum.DETAIL) + public ResponseData detail(@Validated(ScrTrainDataParam.detail.class) ScrTrainDataParam scrTrainDataParam) { + return new SuccessResponseData(scrTrainDataService.detail(scrTrainDataParam)); + } + + /** + * 培训列表 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + @GetMapping("/scrTrainData/list") + @BusinessLog(title = "培训_列表", opType = LogAnnotionOpTypeEnum.QUERY) + public ResponseData list(ScrTrainDataParam scrTrainDataParam) { + return new SuccessResponseData(scrTrainDataService.list(scrTrainDataParam)); + } + + /** + * 导出系统用户 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + @GetMapping("/scrTrainData/export") + @BusinessLog(title = "培训_导出", opType = LogAnnotionOpTypeEnum.EXPORT) + public void export(ScrTrainDataParam scrTrainDataParam) { + scrTrainDataService.export(scrTrainDataParam); + } + +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/entity/ScrTrainData.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/entity/ScrTrainData.java new file mode 100644 index 0000000..3a7c795 --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/entity/ScrTrainData.java @@ -0,0 +1,81 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtraindata.entity; + +import com.baomidou.mybatisplus.annotation.*; +import vip.xiaonuo.core.pojo.base.entity.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.*; +import cn.afterturn.easypoi.excel.annotation.Excel; + +/** + * 培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@TableName("scr_train_data") +public class ScrTrainData extends BaseEntity { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 培训类型 + */ + @Excel(name = "培训类型") + private String type; + + /** + * 数量 + */ + @Excel(name = "数量") + private Integer num; + + /** + * 内部还是外部 + */ + @Excel(name = "内部还是外部") + private Integer nborwb; + + /** + * 日期 + */ + @Excel(name = "日期", databaseFormat = "yyyy-MM-dd HH:mm:ss", format = "yyyy-MM-dd", width = 20) + private Date happenTime; + + /** + * 部门 + */ + @Excel(name = "部门") + private String workPlace; + +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/enums/ScrTrainDataExceptionEnum.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/enums/ScrTrainDataExceptionEnum.java new file mode 100644 index 0000000..faf84a3 --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/enums/ScrTrainDataExceptionEnum.java @@ -0,0 +1,64 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtraindata.enums; + +import vip.xiaonuo.core.annotion.ExpEnumType; +import vip.xiaonuo.core.exception.enums.abs.AbstractBaseExceptionEnum; +import vip.xiaonuo.core.factory.ExpEnumCodeFactory; +import vip.xiaonuo.sys.core.consts.SysExpEnumConstant; + +/** + * 培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ +@ExpEnumType(module = SysExpEnumConstant.SNOWY_SYS_MODULE_EXP_CODE) +public enum ScrTrainDataExceptionEnum implements AbstractBaseExceptionEnum { + + /** + * 数据不存在 + */ + NOT_EXIST(1, "此数据不存在"); + + private final Integer code; + + private final String message; + ScrTrainDataExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + @Override + public Integer getCode() { + return ExpEnumCodeFactory.getExpEnumCode(this.getClass(), code); + } + + @Override + public String getMessage() { + return message; + } + +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/mapper/ScrTrainDataMapper.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/mapper/ScrTrainDataMapper.java new file mode 100644 index 0000000..a84eb45 --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/mapper/ScrTrainDataMapper.java @@ -0,0 +1,37 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtraindata.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import vip.xiaonuo.modular.scrtraindata.entity.ScrTrainData; + +/** + * 培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ +public interface ScrTrainDataMapper extends BaseMapper { +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/mapper/mapping/ScrTrainDataMapper.xml b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/mapper/mapping/ScrTrainDataMapper.xml new file mode 100644 index 0000000..42aec71 --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/mapper/mapping/ScrTrainDataMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/param/ScrTrainDataParam.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/param/ScrTrainDataParam.java new file mode 100644 index 0000000..6133171 --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/param/ScrTrainDataParam.java @@ -0,0 +1,80 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtraindata.param; + +import vip.xiaonuo.core.pojo.base.param.BaseParam; +import lombok.Data; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; +import java.util.*; + +/** +* 培训参数类 + * + * @author 1 + * @date 2025-10-17 19:55:20 +*/ +@Data +public class ScrTrainDataParam extends BaseParam { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空,请检查id参数", groups = {edit.class, delete.class, detail.class}) + private Long id; + + /** + * 培训类型 + */ + @NotBlank(message = "培训类型不能为空,请检查type参数", groups = {add.class, edit.class}) + private String type; + + /** + * 数量 + */ + @NotNull(message = "数量不能为空,请检查num参数", groups = {add.class, edit.class}) + private Integer num; + + /** + * 内部还是外部 + */ + @NotNull(message = "内部还是外部不能为空,请检查nborwb参数", groups = {add.class, edit.class}) + private Integer nborwb; + + /** + * 日期 + */ + @NotNull(message = "日期不能为空,请检查happenTime参数", groups = {add.class, edit.class}) + private String happenTime; + + /** + * 部门 + */ + @NotBlank(message = "部门不能为空,请检查workPlace参数", groups = {add.class, edit.class}) + private String workPlace; + + private Integer year; + private Integer month; +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/service/ScrTrainDataService.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/service/ScrTrainDataService.java new file mode 100644 index 0000000..fe0543d --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/service/ScrTrainDataService.java @@ -0,0 +1,97 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtraindata.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import vip.xiaonuo.core.pojo.page.PageResult; +import vip.xiaonuo.modular.scrtraindata.entity.ScrTrainData; +import vip.xiaonuo.modular.scrtraindata.param.ScrTrainDataParam; +import java.util.List; + +/** + * 培训service接口 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ +public interface ScrTrainDataService extends IService { + + /** + * 查询培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + PageResult page(ScrTrainDataParam scrTrainDataParam); + + /** + * 培训列表 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + List list(ScrTrainDataParam scrTrainDataParam); + + /** + * 添加培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + void add(ScrTrainDataParam scrTrainDataParam); + + /** + * 删除培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + void delete(List scrTrainDataParamList); + + /** + * 编辑培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + void edit(ScrTrainDataParam scrTrainDataParam); + + /** + * 查看培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + ScrTrainData detail(ScrTrainDataParam scrTrainDataParam); + + /** + * 导出培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + void export(ScrTrainDataParam scrTrainDataParam); + +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/service/impl/ScrTrainDataServiceImpl.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/service/impl/ScrTrainDataServiceImpl.java new file mode 100644 index 0000000..10c3fe6 --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtraindata/service/impl/ScrTrainDataServiceImpl.java @@ -0,0 +1,155 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtraindata.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import vip.xiaonuo.core.consts.CommonConstant; +import vip.xiaonuo.core.enums.CommonStatusEnum; +import vip.xiaonuo.core.exception.ServiceException; +import vip.xiaonuo.core.factory.PageFactory; +import vip.xiaonuo.core.pojo.page.PageResult; +import vip.xiaonuo.core.util.PoiUtil; +import vip.xiaonuo.modular.scrhidedata.entity.ScrHideData; +import vip.xiaonuo.modular.scrtraindata.entity.ScrTrainData; +import vip.xiaonuo.modular.scrtraindata.enums.ScrTrainDataExceptionEnum; +import vip.xiaonuo.modular.scrtraindata.mapper.ScrTrainDataMapper; +import vip.xiaonuo.modular.scrtraindata.param.ScrTrainDataParam; +import vip.xiaonuo.modular.scrtraindata.service.ScrTrainDataService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.time.LocalDate; +import java.util.List; + +/** + * 培训service接口实现类 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ +@Service +public class ScrTrainDataServiceImpl extends ServiceImpl implements ScrTrainDataService { + + @Override + public PageResult page(ScrTrainDataParam scrTrainDataParam) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (ObjectUtil.isNotNull(scrTrainDataParam)) { + + // 根据培训类型 查询 + if (ObjectUtil.isNotEmpty(scrTrainDataParam.getType())) { + queryWrapper.lambda().like(ScrTrainData::getType, scrTrainDataParam.getType()); + } + // 根据数量 查询 + if (ObjectUtil.isNotEmpty(scrTrainDataParam.getNum())) { + queryWrapper.lambda().eq(ScrTrainData::getNum, scrTrainDataParam.getNum()); + } + // 根据日期 查询 + if (ObjectUtil.isNotEmpty(scrTrainDataParam.getHappenTime())) { + LocalDate happenTime = LocalDate.parse(scrTrainDataParam.getHappenTime()); + queryWrapper.apply("YEAR(happen_time) = {0}", happenTime.getYear()); + queryWrapper.apply("MONTH(happen_time) = {0}", happenTime.getMonthValue()); + } + // 根据部门 查询 + if (ObjectUtil.isNotEmpty(scrTrainDataParam.getWorkPlace())) { + queryWrapper.lambda().like(ScrTrainData::getWorkPlace, scrTrainDataParam.getWorkPlace()); + } + } + return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper)); + } + + @Override + public List list(ScrTrainDataParam scrTrainDataParam) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (ObjectUtil.isNotNull(scrTrainDataParam)) { + if (ObjectUtil.isNotEmpty(scrTrainDataParam.getType())) { + queryWrapper.lambda().eq(ScrTrainData::getType, scrTrainDataParam.getType()); + } + if (ObjectUtil.isNotEmpty(scrTrainDataParam.getWorkPlace())) { + queryWrapper.lambda().eq(ScrTrainData::getWorkPlace, scrTrainDataParam.getWorkPlace()); + } + if (ObjectUtil.isNotEmpty(scrTrainDataParam.getYear()) && ObjectUtil.isNotEmpty(scrTrainDataParam.getMonth())) { + queryWrapper.apply("YEAR(happen_time) = {0}", scrTrainDataParam.getYear()); + queryWrapper.apply("Month(happen_time) = {0}", scrTrainDataParam.getMonth()); + } else if (ObjectUtil.isNotEmpty(scrTrainDataParam.getYear())) { + queryWrapper.apply("YEAR(happen_time) = {0}", scrTrainDataParam.getYear()); + } + } + return this.list(queryWrapper); + } + + @Override + public void add(ScrTrainDataParam scrTrainDataParam) { + ScrTrainData scrTrainData = new ScrTrainData(); + BeanUtil.copyProperties(scrTrainDataParam, scrTrainData); + this.save(scrTrainData); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void delete(List scrTrainDataParamList) { + scrTrainDataParamList.forEach(scrTrainDataParam -> { + this.removeById(scrTrainDataParam.getId()); + }); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void edit(ScrTrainDataParam scrTrainDataParam) { + ScrTrainData scrTrainData = this.queryScrTrainData(scrTrainDataParam); + BeanUtil.copyProperties(scrTrainDataParam, scrTrainData); + this.updateById(scrTrainData); + } + + @Override + public ScrTrainData detail(ScrTrainDataParam scrTrainDataParam) { + return this.queryScrTrainData(scrTrainDataParam); + } + + /** + * 获取培训 + * + * @author 1 + * @date 2025-10-17 19:55:20 + */ + private ScrTrainData queryScrTrainData(ScrTrainDataParam scrTrainDataParam) { + ScrTrainData scrTrainData = this.getById(scrTrainDataParam.getId()); + if (ObjectUtil.isNull(scrTrainData)) { + throw new ServiceException(ScrTrainDataExceptionEnum.NOT_EXIST); + } + return scrTrainData; + } + + @Override + public void export(ScrTrainDataParam scrTrainDataParam) { + List list = this.list(scrTrainDataParam); + PoiUtil.exportExcelWithStream("SnowyScrTrainData.xls", ScrTrainData.class, list); + } + +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/controller/ScrTrainScheController.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/controller/ScrTrainScheController.java new file mode 100644 index 0000000..9130c2a --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/controller/ScrTrainScheController.java @@ -0,0 +1,141 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtrainsche.controller; + +import vip.xiaonuo.core.annotion.BusinessLog; +import vip.xiaonuo.core.annotion.Permission; +import vip.xiaonuo.core.enums.LogAnnotionOpTypeEnum; +import vip.xiaonuo.core.pojo.response.ResponseData; +import vip.xiaonuo.core.pojo.response.SuccessResponseData; +import vip.xiaonuo.modular.scrtrainsche.param.ScrTrainScheParam; +import vip.xiaonuo.modular.scrtrainsche.service.ScrTrainScheService; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import javax.annotation.Resource; +import java.util.List; + +/** + * 培训安排控制器 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ +@RestController +public class ScrTrainScheController { + + @Resource + private ScrTrainScheService scrTrainScheService; + + /** + * 查询培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + @GetMapping("/scrTrainSche/page") + @BusinessLog(title = "培训安排_查询", opType = LogAnnotionOpTypeEnum.QUERY) + public ResponseData page(ScrTrainScheParam scrTrainScheParam) { + return new SuccessResponseData(scrTrainScheService.page(scrTrainScheParam)); + } + + /** + * 添加培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + @PostMapping("/scrTrainSche/add") + @BusinessLog(title = "培训安排_增加", opType = LogAnnotionOpTypeEnum.ADD) + public ResponseData add(@RequestBody @Validated(ScrTrainScheParam.add.class) ScrTrainScheParam scrTrainScheParam) { + scrTrainScheService.add(scrTrainScheParam); + return new SuccessResponseData(); + } + + /** + * 删除培训安排,可批量删除 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + @PostMapping("/scrTrainSche/delete") + @BusinessLog(title = "培训安排_删除", opType = LogAnnotionOpTypeEnum.DELETE) + public ResponseData delete(@RequestBody @Validated(ScrTrainScheParam.delete.class) List scrTrainScheParamList) { + scrTrainScheService.delete(scrTrainScheParamList); + return new SuccessResponseData(); + } + + /** + * 编辑培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + @PostMapping("/scrTrainSche/edit") + @BusinessLog(title = "培训安排_编辑", opType = LogAnnotionOpTypeEnum.EDIT) + public ResponseData edit(@RequestBody @Validated(ScrTrainScheParam.edit.class) ScrTrainScheParam scrTrainScheParam) { + scrTrainScheService.edit(scrTrainScheParam); + return new SuccessResponseData(); + } + + /** + * 查看培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + @GetMapping("/scrTrainSche/detail") + @BusinessLog(title = "培训安排_查看", opType = LogAnnotionOpTypeEnum.DETAIL) + public ResponseData detail(@Validated(ScrTrainScheParam.detail.class) ScrTrainScheParam scrTrainScheParam) { + return new SuccessResponseData(scrTrainScheService.detail(scrTrainScheParam)); + } + + /** + * 培训安排列表 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + @GetMapping("/scrTrainSche/list") + @BusinessLog(title = "培训安排_列表", opType = LogAnnotionOpTypeEnum.QUERY) + public ResponseData list(ScrTrainScheParam scrTrainScheParam) { + return new SuccessResponseData(scrTrainScheService.list(scrTrainScheParam)); + } + + /** + * 导出系统用户 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + @GetMapping("/scrTrainSche/export") + @BusinessLog(title = "培训安排_导出", opType = LogAnnotionOpTypeEnum.EXPORT) + public void export(ScrTrainScheParam scrTrainScheParam) { + scrTrainScheService.export(scrTrainScheParam); + } + +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/entity/ScrTrainSche.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/entity/ScrTrainSche.java new file mode 100644 index 0000000..810dfbd --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/entity/ScrTrainSche.java @@ -0,0 +1,81 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtrainsche.entity; + +import com.baomidou.mybatisplus.annotation.*; +import vip.xiaonuo.core.pojo.base.entity.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.*; +import cn.afterturn.easypoi.excel.annotation.Excel; + +/** + * 培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@TableName("scr_train_sche") +public class ScrTrainSche extends BaseEntity { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 培训计划 + */ + @Excel(name = "培训计划") + private String name; + + /** + * 线上培训 + */ + @Excel(name = "线上培训") + private String uppx; + + /** + * 线下培训 + */ + @Excel(name = "线下培训") + private String downpx; + + /** + * 日期 + */ + @Excel(name = "日期", databaseFormat = "yyyy-MM-dd HH:mm:ss", format = "yyyy-MM-dd", width = 20) + private Date happenTime; + + /** + * 在线考试 + */ + @Excel(name = "在线考试") + private String workPlace; + +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/enums/ScrTrainScheExceptionEnum.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/enums/ScrTrainScheExceptionEnum.java new file mode 100644 index 0000000..a6bfd8a --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/enums/ScrTrainScheExceptionEnum.java @@ -0,0 +1,64 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtrainsche.enums; + +import vip.xiaonuo.core.annotion.ExpEnumType; +import vip.xiaonuo.core.exception.enums.abs.AbstractBaseExceptionEnum; +import vip.xiaonuo.core.factory.ExpEnumCodeFactory; +import vip.xiaonuo.sys.core.consts.SysExpEnumConstant; + +/** + * 培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ +@ExpEnumType(module = SysExpEnumConstant.SNOWY_SYS_MODULE_EXP_CODE) +public enum ScrTrainScheExceptionEnum implements AbstractBaseExceptionEnum { + + /** + * 数据不存在 + */ + NOT_EXIST(1, "此数据不存在"); + + private final Integer code; + + private final String message; + ScrTrainScheExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + @Override + public Integer getCode() { + return ExpEnumCodeFactory.getExpEnumCode(this.getClass(), code); + } + + @Override + public String getMessage() { + return message; + } + +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/mapper/ScrTrainScheMapper.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/mapper/ScrTrainScheMapper.java new file mode 100644 index 0000000..1352fec --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/mapper/ScrTrainScheMapper.java @@ -0,0 +1,37 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtrainsche.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import vip.xiaonuo.modular.scrtrainsche.entity.ScrTrainSche; + +/** + * 培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ +public interface ScrTrainScheMapper extends BaseMapper { +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/mapper/mapping/ScrTrainScheMapper.xml b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/mapper/mapping/ScrTrainScheMapper.xml new file mode 100644 index 0000000..9c09ede --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/mapper/mapping/ScrTrainScheMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/param/ScrTrainScheParam.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/param/ScrTrainScheParam.java new file mode 100644 index 0000000..93fa0b2 --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/param/ScrTrainScheParam.java @@ -0,0 +1,80 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtrainsche.param; + +import vip.xiaonuo.core.pojo.base.param.BaseParam; +import lombok.Data; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; +import java.util.*; + +/** +* 培训安排参数类 + * + * @author 1 + * @date 2025-10-17 20:13:05 +*/ +@Data +public class ScrTrainScheParam extends BaseParam { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空,请检查id参数", groups = {edit.class, delete.class, detail.class}) + private Long id; + + /** + * 培训计划 + */ + @NotBlank(message = "培训计划不能为空,请检查name参数", groups = {add.class, edit.class}) + private String name; + + /** + * 线上培训 + */ + @NotBlank(message = "线上培训不能为空,请检查uppx参数", groups = {add.class, edit.class}) + private String uppx; + + /** + * 线下培训 + */ + @NotBlank(message = "线下培训不能为空,请检查downpx参数", groups = {add.class, edit.class}) + private String downpx; + + /** + * 日期 + */ + @NotNull(message = "日期不能为空,请检查happenTime参数", groups = {add.class, edit.class}) + private String happenTime; + + /** + * 在线考试 + */ + @NotBlank(message = "在线考试不能为空,请检查workPlace参数", groups = {add.class, edit.class}) + private String workPlace; + + private Integer year; + private Integer month; +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/service/ScrTrainScheService.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/service/ScrTrainScheService.java new file mode 100644 index 0000000..b65b544 --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/service/ScrTrainScheService.java @@ -0,0 +1,97 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtrainsche.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import vip.xiaonuo.core.pojo.page.PageResult; +import vip.xiaonuo.modular.scrtrainsche.entity.ScrTrainSche; +import vip.xiaonuo.modular.scrtrainsche.param.ScrTrainScheParam; +import java.util.List; + +/** + * 培训安排service接口 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ +public interface ScrTrainScheService extends IService { + + /** + * 查询培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + PageResult page(ScrTrainScheParam scrTrainScheParam); + + /** + * 培训安排列表 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + List list(ScrTrainScheParam scrTrainScheParam); + + /** + * 添加培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + void add(ScrTrainScheParam scrTrainScheParam); + + /** + * 删除培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + void delete(List scrTrainScheParamList); + + /** + * 编辑培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + void edit(ScrTrainScheParam scrTrainScheParam); + + /** + * 查看培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + ScrTrainSche detail(ScrTrainScheParam scrTrainScheParam); + + /** + * 导出培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + void export(ScrTrainScheParam scrTrainScheParam); + +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/service/impl/ScrTrainScheServiceImpl.java b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/service/impl/ScrTrainScheServiceImpl.java new file mode 100644 index 0000000..9b9e31f --- /dev/null +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/scrtrainsche/service/impl/ScrTrainScheServiceImpl.java @@ -0,0 +1,141 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.modular.scrtrainsche.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import vip.xiaonuo.core.consts.CommonConstant; +import vip.xiaonuo.core.enums.CommonStatusEnum; +import vip.xiaonuo.core.exception.ServiceException; +import vip.xiaonuo.core.factory.PageFactory; +import vip.xiaonuo.core.pojo.page.PageResult; +import vip.xiaonuo.core.util.PoiUtil; +import vip.xiaonuo.modular.scrhidedata.entity.ScrHideData; +import vip.xiaonuo.modular.scrtrainsche.entity.ScrTrainSche; +import vip.xiaonuo.modular.scrtrainsche.enums.ScrTrainScheExceptionEnum; +import vip.xiaonuo.modular.scrtrainsche.mapper.ScrTrainScheMapper; +import vip.xiaonuo.modular.scrtrainsche.param.ScrTrainScheParam; +import vip.xiaonuo.modular.scrtrainsche.service.ScrTrainScheService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.time.LocalDate; +import java.util.List; + +/** + * 培训安排service接口实现类 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ +@Service +public class ScrTrainScheServiceImpl extends ServiceImpl implements ScrTrainScheService { + + @Override + public PageResult page(ScrTrainScheParam scrTrainScheParam) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (ObjectUtil.isNotNull(scrTrainScheParam)) { + + // 根据培训计划 查询 + if (ObjectUtil.isNotEmpty(scrTrainScheParam.getName())) { + queryWrapper.lambda().like(ScrTrainSche::getName, scrTrainScheParam.getName()); + } + // 根据日期 查询 + if (ObjectUtil.isNotEmpty(scrTrainScheParam.getHappenTime())) { + LocalDate happenTime = LocalDate.parse(scrTrainScheParam.getHappenTime()); + queryWrapper.apply("YEAR(happen_time) = {0}", happenTime.getYear()); + queryWrapper.apply("MONTH(happen_time) = {0}", happenTime.getMonthValue()); + } + } + return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper)); + } + + @Override + public List list(ScrTrainScheParam scrTrainScheParam) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (ObjectUtil.isNotNull(scrTrainScheParam)) { + if (ObjectUtil.isNotEmpty(scrTrainScheParam.getYear()) && ObjectUtil.isNotEmpty(scrTrainScheParam.getMonth())) { + queryWrapper.apply("YEAR(happen_time) = {0}", scrTrainScheParam.getYear()); + queryWrapper.apply("Month(happen_time) = {0}", scrTrainScheParam.getMonth()); + } else if (ObjectUtil.isNotEmpty(scrTrainScheParam.getYear())) { + queryWrapper.apply("YEAR(happen_time) = {0}", scrTrainScheParam.getYear()); + } + } + return this.list(queryWrapper); + } + + @Override + public void add(ScrTrainScheParam scrTrainScheParam) { + ScrTrainSche scrTrainSche = new ScrTrainSche(); + BeanUtil.copyProperties(scrTrainScheParam, scrTrainSche); + this.save(scrTrainSche); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void delete(List scrTrainScheParamList) { + scrTrainScheParamList.forEach(scrTrainScheParam -> { + this.removeById(scrTrainScheParam.getId()); + }); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void edit(ScrTrainScheParam scrTrainScheParam) { + ScrTrainSche scrTrainSche = this.queryScrTrainSche(scrTrainScheParam); + BeanUtil.copyProperties(scrTrainScheParam, scrTrainSche); + this.updateById(scrTrainSche); + } + + @Override + public ScrTrainSche detail(ScrTrainScheParam scrTrainScheParam) { + return this.queryScrTrainSche(scrTrainScheParam); + } + + /** + * 获取培训安排 + * + * @author 1 + * @date 2025-10-17 20:13:05 + */ + private ScrTrainSche queryScrTrainSche(ScrTrainScheParam scrTrainScheParam) { + ScrTrainSche scrTrainSche = this.getById(scrTrainScheParam.getId()); + if (ObjectUtil.isNull(scrTrainSche)) { + throw new ServiceException(ScrTrainScheExceptionEnum.NOT_EXIST); + } + return scrTrainSche; + } + + @Override + public void export(ScrTrainScheParam scrTrainScheParam) { + List list = this.list(scrTrainScheParam); + PoiUtil.exportExcelWithStream("SnowyScrTrainSche.xls", ScrTrainSche.class, list); + } + +}