main #1

Merged
root merged 5 commits from main into dev 2025-10-13 18:20:56 +08:00
67 changed files with 5622 additions and 0 deletions

View File

@ -67,6 +67,12 @@ public interface SpringSecurityConstant {
"/captcha/**",
"/getCaptchaOpen",
//大屏的
"/scrProduction/driQuery",
"/scrSecurity/driQuery",
"/scrProduction/driQhQuery",
"/scrProduction/driMaterQuery"
};
}

View File

@ -0,0 +1,148 @@
/*
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.scrfactoryheat.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.scrfactoryheat.param.ScrFactoryHeatParam;
import vip.xiaonuo.modular.scrfactoryheat.service.ScrFactoryHeatService;
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 zhangyn
* @date 2025-09-10 10:02:57
*/
@RestController
public class ScrFactoryHeatController {
@Resource
private ScrFactoryHeatService scrFactoryHeatService;
/**
* 查询分厂炉号对应关系
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
@Permission
@GetMapping("/scrFactoryHeat/page")
@BusinessLog(title = "分厂炉号对应关系_查询", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData page(ScrFactoryHeatParam scrFactoryHeatParam) {
return new SuccessResponseData(scrFactoryHeatService.page(scrFactoryHeatParam));
}
/**
* 添加分厂炉号对应关系
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
@Permission
@PostMapping("/scrFactoryHeat/add")
@BusinessLog(title = "分厂炉号对应关系_增加", opType = LogAnnotionOpTypeEnum.ADD)
public ResponseData add(@RequestBody @Validated(ScrFactoryHeatParam.add.class) ScrFactoryHeatParam scrFactoryHeatParam) {
scrFactoryHeatService.add(scrFactoryHeatParam);
return new SuccessResponseData();
}
/**
* 删除分厂炉号对应关系可批量删除
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
@Permission
@PostMapping("/scrFactoryHeat/delete")
@BusinessLog(title = "分厂炉号对应关系_删除", opType = LogAnnotionOpTypeEnum.DELETE)
public ResponseData delete(@RequestBody @Validated(ScrFactoryHeatParam.delete.class) List<ScrFactoryHeatParam> scrFactoryHeatParamList) {
scrFactoryHeatService.delete(scrFactoryHeatParamList);
return new SuccessResponseData();
}
/**
* 编辑分厂炉号对应关系
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
@Permission
@PostMapping("/scrFactoryHeat/edit")
@BusinessLog(title = "分厂炉号对应关系_编辑", opType = LogAnnotionOpTypeEnum.EDIT)
public ResponseData edit(@RequestBody @Validated(ScrFactoryHeatParam.edit.class) ScrFactoryHeatParam scrFactoryHeatParam) {
scrFactoryHeatService.edit(scrFactoryHeatParam);
return new SuccessResponseData();
}
/**
* 查看分厂炉号对应关系
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
@Permission
@GetMapping("/scrFactoryHeat/detail")
@BusinessLog(title = "分厂炉号对应关系_查看", opType = LogAnnotionOpTypeEnum.DETAIL)
public ResponseData detail(@Validated(ScrFactoryHeatParam.detail.class) ScrFactoryHeatParam scrFactoryHeatParam) {
return new SuccessResponseData(scrFactoryHeatService.detail(scrFactoryHeatParam));
}
/**
* 分厂炉号对应关系列表
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
@Permission
@GetMapping("/scrFactoryHeat/list")
@BusinessLog(title = "分厂炉号对应关系_列表", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData list(ScrFactoryHeatParam scrFactoryHeatParam) {
return new SuccessResponseData(scrFactoryHeatService.list(scrFactoryHeatParam));
}
/**
* 导出系统用户
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
@Permission
@GetMapping("/scrFactoryHeat/export")
@BusinessLog(title = "分厂炉号对应关系_导出", opType = LogAnnotionOpTypeEnum.EXPORT)
public void export(ScrFactoryHeatParam scrFactoryHeatParam) {
scrFactoryHeatService.export(scrFactoryHeatParam);
}
}

View File

@ -0,0 +1,63 @@
/*
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.scrfactoryheat.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 zhangyn
* @date 2025-09-10 10:02:57
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("scr_factory_heat")
public class ScrFactoryHeat extends BaseEntity {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* 分厂
*/
@Excel(name = "分厂")
private String branchPlant;
/**
* 炉号
*/
@Excel(name = "炉号")
private String furnaceNumber;
}

View File

@ -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.scrfactoryheat.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 zhangyn
* @date 2025-09-10 10:02:57
*/
@ExpEnumType(module = SysExpEnumConstant.SNOWY_SYS_MODULE_EXP_CODE)
public enum ScrFactoryHeatExceptionEnum implements AbstractBaseExceptionEnum {
/**
* 数据不存在
*/
NOT_EXIST(1, "此数据不存在");
private final Integer code;
private final String message;
ScrFactoryHeatExceptionEnum(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;
}
}

View File

@ -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.scrfactoryheat.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import vip.xiaonuo.modular.scrfactoryheat.entity.ScrFactoryHeat;
/**
* 分厂炉号对应关系
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
public interface ScrFactoryHeatMapper extends BaseMapper<ScrFactoryHeat> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="vip.xiaonuo.modular.scrfactoryheat.mapper.ScrFactoryHeatMapper">
</mapper>

View File

@ -0,0 +1,60 @@
/*
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.scrfactoryheat.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 zhangyn
* @date 2025-09-10 10:02:57
*/
@Data
public class ScrFactoryHeatParam extends BaseParam {
/**
* 主键
*/
@NotNull(message = "主键不能为空请检查id参数", groups = {edit.class, delete.class, detail.class})
private Long id;
/**
* 分厂
*/
@NotBlank(message = "分厂不能为空请检查branchPlant参数", groups = {add.class, edit.class})
private String branchPlant;
/**
* 炉号
*/
@NotBlank(message = "炉号不能为空请检查furnaceNumber参数", groups = {add.class, edit.class})
private String furnaceNumber;
}

View File

@ -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.scrfactoryheat.service;
import com.baomidou.mybatisplus.extension.service.IService;
import vip.xiaonuo.core.pojo.page.PageResult;
import vip.xiaonuo.modular.scrfactoryheat.entity.ScrFactoryHeat;
import vip.xiaonuo.modular.scrfactoryheat.param.ScrFactoryHeatParam;
import java.util.List;
/**
* 分厂炉号对应关系service接口
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
public interface ScrFactoryHeatService extends IService<ScrFactoryHeat> {
/**
* 查询分厂炉号对应关系
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
PageResult<ScrFactoryHeat> page(ScrFactoryHeatParam scrFactoryHeatParam);
/**
* 分厂炉号对应关系列表
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
List<ScrFactoryHeat> list(ScrFactoryHeatParam scrFactoryHeatParam);
/**
* 添加分厂炉号对应关系
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
void add(ScrFactoryHeatParam scrFactoryHeatParam);
/**
* 删除分厂炉号对应关系
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
void delete(List<ScrFactoryHeatParam> scrFactoryHeatParamList);
/**
* 编辑分厂炉号对应关系
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
void edit(ScrFactoryHeatParam scrFactoryHeatParam);
/**
* 查看分厂炉号对应关系
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
ScrFactoryHeat detail(ScrFactoryHeatParam scrFactoryHeatParam);
/**
* 导出分厂炉号对应关系
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
void export(ScrFactoryHeatParam scrFactoryHeatParam);
}

View File

@ -0,0 +1,128 @@
/*
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.scrfactoryheat.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.scrfactoryheat.entity.ScrFactoryHeat;
import vip.xiaonuo.modular.scrfactoryheat.enums.ScrFactoryHeatExceptionEnum;
import vip.xiaonuo.modular.scrfactoryheat.mapper.ScrFactoryHeatMapper;
import vip.xiaonuo.modular.scrfactoryheat.param.ScrFactoryHeatParam;
import vip.xiaonuo.modular.scrfactoryheat.service.ScrFactoryHeatService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* 分厂炉号对应关系service接口实现类
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
@Service
public class ScrFactoryHeatServiceImpl extends ServiceImpl<ScrFactoryHeatMapper, ScrFactoryHeat> implements ScrFactoryHeatService {
@Override
public PageResult<ScrFactoryHeat> page(ScrFactoryHeatParam scrFactoryHeatParam) {
QueryWrapper<ScrFactoryHeat> queryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotNull(scrFactoryHeatParam)) {
// 根据分厂 查询
if (ObjectUtil.isNotEmpty(scrFactoryHeatParam.getBranchPlant())) {
queryWrapper.lambda().eq(ScrFactoryHeat::getBranchPlant, scrFactoryHeatParam.getBranchPlant());
}
// 根据炉号 查询
if (ObjectUtil.isNotEmpty(scrFactoryHeatParam.getFurnaceNumber())) {
queryWrapper.lambda().eq(ScrFactoryHeat::getFurnaceNumber, scrFactoryHeatParam.getFurnaceNumber());
}
}
return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
}
@Override
public List<ScrFactoryHeat> list(ScrFactoryHeatParam scrFactoryHeatParam) {
return this.list();
}
@Override
public void add(ScrFactoryHeatParam scrFactoryHeatParam) {
ScrFactoryHeat scrFactoryHeat = new ScrFactoryHeat();
BeanUtil.copyProperties(scrFactoryHeatParam, scrFactoryHeat);
this.save(scrFactoryHeat);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void delete(List<ScrFactoryHeatParam> scrFactoryHeatParamList) {
scrFactoryHeatParamList.forEach(scrFactoryHeatParam -> {
this.removeById(scrFactoryHeatParam.getId());
});
}
@Transactional(rollbackFor = Exception.class)
@Override
public void edit(ScrFactoryHeatParam scrFactoryHeatParam) {
ScrFactoryHeat scrFactoryHeat = this.queryScrFactoryHeat(scrFactoryHeatParam);
BeanUtil.copyProperties(scrFactoryHeatParam, scrFactoryHeat);
this.updateById(scrFactoryHeat);
}
@Override
public ScrFactoryHeat detail(ScrFactoryHeatParam scrFactoryHeatParam) {
return this.queryScrFactoryHeat(scrFactoryHeatParam);
}
/**
* 获取分厂炉号对应关系
*
* @author zhangyn
* @date 2025-09-10 10:02:57
*/
private ScrFactoryHeat queryScrFactoryHeat(ScrFactoryHeatParam scrFactoryHeatParam) {
ScrFactoryHeat scrFactoryHeat = this.getById(scrFactoryHeatParam.getId());
if (ObjectUtil.isNull(scrFactoryHeat)) {
throw new ServiceException(ScrFactoryHeatExceptionEnum.NOT_EXIST);
}
return scrFactoryHeat;
}
@Override
public void export(ScrFactoryHeatParam scrFactoryHeatParam) {
List<ScrFactoryHeat> list = this.list(scrFactoryHeatParam);
PoiUtil.exportExcelWithStream("SnowyScrFactoryHeat.xls", ScrFactoryHeat.class, list);
}
}

View File

@ -0,0 +1,148 @@
/*
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.scrhidedata.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.scrhidedata.param.ScrHideDataParam;
import vip.xiaonuo.modular.scrhidedata.service.ScrHideDataService;
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-13 17:15:20
*/
@RestController
public class ScrHideDataController {
@Resource
private ScrHideDataService scrHideDataService;
/**
* 查询隐患整改
*
* @author 1
* @date 2025-10-13 17:15:20
*/
@Permission
@GetMapping("/scrHideData/page")
@BusinessLog(title = "隐患整改_查询", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData page(ScrHideDataParam scrHideDataParam) {
return new SuccessResponseData(scrHideDataService.page(scrHideDataParam));
}
/**
* 添加隐患整改
*
* @author 1
* @date 2025-10-13 17:15:20
*/
@Permission
@PostMapping("/scrHideData/add")
@BusinessLog(title = "隐患整改_增加", opType = LogAnnotionOpTypeEnum.ADD)
public ResponseData add(@RequestBody @Validated(ScrHideDataParam.add.class) ScrHideDataParam scrHideDataParam) {
scrHideDataService.add(scrHideDataParam);
return new SuccessResponseData();
}
/**
* 删除隐患整改可批量删除
*
* @author 1
* @date 2025-10-13 17:15:20
*/
@Permission
@PostMapping("/scrHideData/delete")
@BusinessLog(title = "隐患整改_删除", opType = LogAnnotionOpTypeEnum.DELETE)
public ResponseData delete(@RequestBody @Validated(ScrHideDataParam.delete.class) List<ScrHideDataParam> scrHideDataParamList) {
scrHideDataService.delete(scrHideDataParamList);
return new SuccessResponseData();
}
/**
* 编辑隐患整改
*
* @author 1
* @date 2025-10-13 17:15:20
*/
@Permission
@PostMapping("/scrHideData/edit")
@BusinessLog(title = "隐患整改_编辑", opType = LogAnnotionOpTypeEnum.EDIT)
public ResponseData edit(@RequestBody @Validated(ScrHideDataParam.edit.class) ScrHideDataParam scrHideDataParam) {
scrHideDataService.edit(scrHideDataParam);
return new SuccessResponseData();
}
/**
* 查看隐患整改
*
* @author 1
* @date 2025-10-13 17:15:20
*/
@Permission
@GetMapping("/scrHideData/detail")
@BusinessLog(title = "隐患整改_查看", opType = LogAnnotionOpTypeEnum.DETAIL)
public ResponseData detail(@Validated(ScrHideDataParam.detail.class) ScrHideDataParam scrHideDataParam) {
return new SuccessResponseData(scrHideDataService.detail(scrHideDataParam));
}
/**
* 隐患整改列表
*
* @author 1
* @date 2025-10-13 17:15:20
*/
@Permission
@GetMapping("/scrHideData/list")
@BusinessLog(title = "隐患整改_列表", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData list(ScrHideDataParam scrHideDataParam) {
return new SuccessResponseData(scrHideDataService.list(scrHideDataParam));
}
/**
* 导出系统用户
*
* @author 1
* @date 2025-10-13 17:15:20
*/
@Permission
@GetMapping("/scrHideData/export")
@BusinessLog(title = "隐患整改_导出", opType = LogAnnotionOpTypeEnum.EXPORT)
public void export(ScrHideDataParam scrHideDataParam) {
scrHideDataService.export(scrHideDataParam);
}
}

View File

@ -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.scrhidedata.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-13 17:15:20
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("scr_hide_data")
public class ScrHideData extends BaseEntity {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* 年份
*/
@Excel(name = "年份")
private Integer year;
/**
* 月份
*/
@Excel(name = "月份")
private Integer month;
/**
* 隐患数量
*/
@Excel(name = "隐患数量")
private Integer yhsl;
/**
* 已整改
*/
@Excel(name = "已整改")
private Integer yzg;
/**
* 未整改
*/
@Excel(name = "未整改")
private Integer wzg;
}

View File

@ -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.scrhidedata.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-13 17:15:20
*/
@ExpEnumType(module = SysExpEnumConstant.SNOWY_SYS_MODULE_EXP_CODE)
public enum ScrHideDataExceptionEnum implements AbstractBaseExceptionEnum {
/**
* 数据不存在
*/
NOT_EXIST(1, "此数据不存在");
private final Integer code;
private final String message;
ScrHideDataExceptionEnum(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;
}
}

View File

@ -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.scrhidedata.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import vip.xiaonuo.modular.scrhidedata.entity.ScrHideData;
/**
* 隐患整改
*
* @author 1
* @date 2025-10-13 17:15:20
*/
public interface ScrHideDataMapper extends BaseMapper<ScrHideData> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="vip.xiaonuo.modular.scrhidedata.mapper.ScrHideDataMapper">
</mapper>

View File

@ -0,0 +1,78 @@
/*
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.scrhidedata.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-13 17:15:20
*/
@Data
public class ScrHideDataParam extends BaseParam {
/**
* 主键
*/
@NotNull(message = "主键不能为空请检查id参数", groups = {edit.class, delete.class, detail.class})
private Long id;
/**
* 年份
*/
@NotNull(message = "年份不能为空请检查year参数", groups = {add.class, edit.class})
private Integer year;
/**
* 月份
*/
@NotNull(message = "月份不能为空请检查month参数", groups = {add.class, edit.class})
private Integer month;
/**
* 隐患数量
*/
@NotNull(message = "隐患数量不能为空请检查yhsl参数", groups = {add.class, edit.class})
private Integer yhsl;
/**
* 已整改
*/
@NotNull(message = "已整改不能为空请检查yzg参数", groups = {add.class, edit.class})
private Integer yzg;
/**
* 未整改
*/
@NotNull(message = "未整改不能为空请检查wzg参数", groups = {add.class, edit.class})
private Integer wzg;
}

View File

@ -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.scrhidedata.service;
import com.baomidou.mybatisplus.extension.service.IService;
import vip.xiaonuo.core.pojo.page.PageResult;
import vip.xiaonuo.modular.scrhidedata.entity.ScrHideData;
import vip.xiaonuo.modular.scrhidedata.param.ScrHideDataParam;
import java.util.List;
/**
* 隐患整改service接口
*
* @author 1
* @date 2025-10-13 17:15:20
*/
public interface ScrHideDataService extends IService<ScrHideData> {
/**
* 查询隐患整改
*
* @author 1
* @date 2025-10-13 17:15:20
*/
PageResult<ScrHideData> page(ScrHideDataParam scrHideDataParam);
/**
* 隐患整改列表
*
* @author 1
* @date 2025-10-13 17:15:20
*/
List<ScrHideData> list(ScrHideDataParam scrHideDataParam);
/**
* 添加隐患整改
*
* @author 1
* @date 2025-10-13 17:15:20
*/
void add(ScrHideDataParam scrHideDataParam);
/**
* 删除隐患整改
*
* @author 1
* @date 2025-10-13 17:15:20
*/
void delete(List<ScrHideDataParam> scrHideDataParamList);
/**
* 编辑隐患整改
*
* @author 1
* @date 2025-10-13 17:15:20
*/
void edit(ScrHideDataParam scrHideDataParam);
/**
* 查看隐患整改
*
* @author 1
* @date 2025-10-13 17:15:20
*/
ScrHideData detail(ScrHideDataParam scrHideDataParam);
/**
* 导出隐患整改
*
* @author 1
* @date 2025-10-13 17:15:20
*/
void export(ScrHideDataParam scrHideDataParam);
}

View File

@ -0,0 +1,128 @@
/*
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.scrhidedata.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.scrhidedata.enums.ScrHideDataExceptionEnum;
import vip.xiaonuo.modular.scrhidedata.mapper.ScrHideDataMapper;
import vip.xiaonuo.modular.scrhidedata.param.ScrHideDataParam;
import vip.xiaonuo.modular.scrhidedata.service.ScrHideDataService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* 隐患整改service接口实现类
*
* @author 1
* @date 2025-10-13 17:15:20
*/
@Service
public class ScrHideDataServiceImpl extends ServiceImpl<ScrHideDataMapper, ScrHideData> implements ScrHideDataService {
@Override
public PageResult<ScrHideData> page(ScrHideDataParam scrHideDataParam) {
QueryWrapper<ScrHideData> queryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotNull(scrHideDataParam)) {
// 根据年份 查询
if (ObjectUtil.isNotEmpty(scrHideDataParam.getYear())) {
queryWrapper.lambda().eq(ScrHideData::getYear, scrHideDataParam.getYear());
}
// 根据月份 查询
if (ObjectUtil.isNotEmpty(scrHideDataParam.getMonth())) {
queryWrapper.lambda().eq(ScrHideData::getMonth, scrHideDataParam.getMonth());
}
}
return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
}
@Override
public List<ScrHideData> list(ScrHideDataParam scrHideDataParam) {
return this.list();
}
@Override
public void add(ScrHideDataParam scrHideDataParam) {
ScrHideData scrHideData = new ScrHideData();
BeanUtil.copyProperties(scrHideDataParam, scrHideData);
this.save(scrHideData);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void delete(List<ScrHideDataParam> scrHideDataParamList) {
scrHideDataParamList.forEach(scrHideDataParam -> {
this.removeById(scrHideDataParam.getId());
});
}
@Transactional(rollbackFor = Exception.class)
@Override
public void edit(ScrHideDataParam scrHideDataParam) {
ScrHideData scrHideData = this.queryScrHideData(scrHideDataParam);
BeanUtil.copyProperties(scrHideDataParam, scrHideData);
this.updateById(scrHideData);
}
@Override
public ScrHideData detail(ScrHideDataParam scrHideDataParam) {
return this.queryScrHideData(scrHideDataParam);
}
/**
* 获取隐患整改
*
* @author 1
* @date 2025-10-13 17:15:20
*/
private ScrHideData queryScrHideData(ScrHideDataParam scrHideDataParam) {
ScrHideData scrHideData = this.getById(scrHideDataParam.getId());
if (ObjectUtil.isNull(scrHideData)) {
throw new ServiceException(ScrHideDataExceptionEnum.NOT_EXIST);
}
return scrHideData;
}
@Override
public void export(ScrHideDataParam scrHideDataParam) {
List<ScrHideData> list = this.list(scrHideDataParam);
PoiUtil.exportExcelWithStream("SnowyScrHideData.xls", ScrHideData.class, list);
}
}

View File

@ -0,0 +1,148 @@
/*
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.scrmeterdata.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.scrmeterdata.param.ScrMeterDataParam;
import vip.xiaonuo.modular.scrmeterdata.service.ScrMeterDataService;
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 2
* @date 2025-10-13 17:55:42
*/
@RestController
public class ScrMeterDataController {
@Resource
private ScrMeterDataService scrMeterDataService;
/**
* 查询电表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
@Permission
@GetMapping("/scrMeterData/page")
@BusinessLog(title = "电表_查询", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData page(ScrMeterDataParam scrMeterDataParam) {
return new SuccessResponseData(scrMeterDataService.page(scrMeterDataParam));
}
/**
* 添加电表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
@Permission
@PostMapping("/scrMeterData/add")
@BusinessLog(title = "电表_增加", opType = LogAnnotionOpTypeEnum.ADD)
public ResponseData add(@RequestBody @Validated(ScrMeterDataParam.add.class) ScrMeterDataParam scrMeterDataParam) {
scrMeterDataService.add(scrMeterDataParam);
return new SuccessResponseData();
}
/**
* 删除电表可批量删除
*
* @author 2
* @date 2025-10-13 17:55:42
*/
@Permission
@PostMapping("/scrMeterData/delete")
@BusinessLog(title = "电表_删除", opType = LogAnnotionOpTypeEnum.DELETE)
public ResponseData delete(@RequestBody @Validated(ScrMeterDataParam.delete.class) List<ScrMeterDataParam> scrMeterDataParamList) {
scrMeterDataService.delete(scrMeterDataParamList);
return new SuccessResponseData();
}
/**
* 编辑电表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
@Permission
@PostMapping("/scrMeterData/edit")
@BusinessLog(title = "电表_编辑", opType = LogAnnotionOpTypeEnum.EDIT)
public ResponseData edit(@RequestBody @Validated(ScrMeterDataParam.edit.class) ScrMeterDataParam scrMeterDataParam) {
scrMeterDataService.edit(scrMeterDataParam);
return new SuccessResponseData();
}
/**
* 查看电表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
@Permission
@GetMapping("/scrMeterData/detail")
@BusinessLog(title = "电表_查看", opType = LogAnnotionOpTypeEnum.DETAIL)
public ResponseData detail(@Validated(ScrMeterDataParam.detail.class) ScrMeterDataParam scrMeterDataParam) {
return new SuccessResponseData(scrMeterDataService.detail(scrMeterDataParam));
}
/**
* 电表列表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
@Permission
@GetMapping("/scrMeterData/list")
@BusinessLog(title = "电表_列表", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData list(ScrMeterDataParam scrMeterDataParam) {
return new SuccessResponseData(scrMeterDataService.list(scrMeterDataParam));
}
/**
* 导出系统用户
*
* @author 2
* @date 2025-10-13 17:55:42
*/
@Permission
@GetMapping("/scrMeterData/export")
@BusinessLog(title = "电表_导出", opType = LogAnnotionOpTypeEnum.EXPORT)
public void export(ScrMeterDataParam scrMeterDataParam) {
scrMeterDataService.export(scrMeterDataParam);
}
}

View File

@ -0,0 +1,83 @@
/*
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.scrmeterdata.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;
import java.math.BigDecimal;
import java.math.BigDecimal;
/**
* 电表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("scr_meter_data")
public class ScrMeterData extends BaseEntity {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* 电表
*/
@Excel(name = "电表")
private String name;
/**
* 年份
*/
@Excel(name = "年份")
private Integer year;
/**
* 月份
*/
@Excel(name = "月份")
private Integer month;
/**
* 累计电量
*/
@Excel(name = "累计电量")
private BigDecimal totalEcnum;
/**
* 平均功率
*/
@Excel(name = "平均功率")
private BigDecimal avgPower;
}

View File

@ -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.scrmeterdata.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 2
* @date 2025-10-13 17:55:42
*/
@ExpEnumType(module = SysExpEnumConstant.SNOWY_SYS_MODULE_EXP_CODE)
public enum ScrMeterDataExceptionEnum implements AbstractBaseExceptionEnum {
/**
* 数据不存在
*/
NOT_EXIST(1, "此数据不存在");
private final Integer code;
private final String message;
ScrMeterDataExceptionEnum(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;
}
}

View File

@ -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.scrmeterdata.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import vip.xiaonuo.modular.scrmeterdata.entity.ScrMeterData;
/**
* 电表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
public interface ScrMeterDataMapper extends BaseMapper<ScrMeterData> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="vip.xiaonuo.modular.scrmeterdata.mapper.ScrMeterDataMapper">
</mapper>

View File

@ -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.scrmeterdata.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.*;
import java.math.BigDecimal;
import java.math.BigDecimal;
/**
* 电表参数类
*
* @author 2
* @date 2025-10-13 17:55:42
*/
@Data
public class ScrMeterDataParam 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;
/**
* 年份
*/
@NotNull(message = "年份不能为空请检查year参数", groups = {add.class, edit.class})
private Integer year;
/**
* 月份
*/
@NotNull(message = "月份不能为空请检查month参数", groups = {add.class, edit.class})
private Integer month;
/**
* 累计电量
*/
@NotNull(message = "累计电量不能为空请检查totalEcnum参数", groups = {add.class, edit.class})
private BigDecimal totalEcnum;
/**
* 平均功率
*/
@NotNull(message = "平均功率不能为空请检查avgPower参数", groups = {add.class, edit.class})
private BigDecimal avgPower;
}

View File

@ -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.scrmeterdata.service;
import com.baomidou.mybatisplus.extension.service.IService;
import vip.xiaonuo.core.pojo.page.PageResult;
import vip.xiaonuo.modular.scrmeterdata.entity.ScrMeterData;
import vip.xiaonuo.modular.scrmeterdata.param.ScrMeterDataParam;
import java.util.List;
/**
* 电表service接口
*
* @author 2
* @date 2025-10-13 17:55:42
*/
public interface ScrMeterDataService extends IService<ScrMeterData> {
/**
* 查询电表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
PageResult<ScrMeterData> page(ScrMeterDataParam scrMeterDataParam);
/**
* 电表列表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
List<ScrMeterData> list(ScrMeterDataParam scrMeterDataParam);
/**
* 添加电表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
void add(ScrMeterDataParam scrMeterDataParam);
/**
* 删除电表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
void delete(List<ScrMeterDataParam> scrMeterDataParamList);
/**
* 编辑电表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
void edit(ScrMeterDataParam scrMeterDataParam);
/**
* 查看电表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
ScrMeterData detail(ScrMeterDataParam scrMeterDataParam);
/**
* 导出电表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
void export(ScrMeterDataParam scrMeterDataParam);
}

View File

@ -0,0 +1,132 @@
/*
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.scrmeterdata.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.scrmeterdata.entity.ScrMeterData;
import vip.xiaonuo.modular.scrmeterdata.enums.ScrMeterDataExceptionEnum;
import vip.xiaonuo.modular.scrmeterdata.mapper.ScrMeterDataMapper;
import vip.xiaonuo.modular.scrmeterdata.param.ScrMeterDataParam;
import vip.xiaonuo.modular.scrmeterdata.service.ScrMeterDataService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* 电表service接口实现类
*
* @author 2
* @date 2025-10-13 17:55:42
*/
@Service
public class ScrMeterDataServiceImpl extends ServiceImpl<ScrMeterDataMapper, ScrMeterData> implements ScrMeterDataService {
@Override
public PageResult<ScrMeterData> page(ScrMeterDataParam scrMeterDataParam) {
QueryWrapper<ScrMeterData> queryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotNull(scrMeterDataParam)) {
// 根据电表 查询
if (ObjectUtil.isNotEmpty(scrMeterDataParam.getName())) {
queryWrapper.lambda().like(ScrMeterData::getName, scrMeterDataParam.getName());
}
// 根据年份 查询
if (ObjectUtil.isNotEmpty(scrMeterDataParam.getYear())) {
queryWrapper.lambda().eq(ScrMeterData::getYear, scrMeterDataParam.getYear());
}
// 根据月份 查询
if (ObjectUtil.isNotEmpty(scrMeterDataParam.getMonth())) {
queryWrapper.lambda().eq(ScrMeterData::getMonth, scrMeterDataParam.getMonth());
}
}
return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
}
@Override
public List<ScrMeterData> list(ScrMeterDataParam scrMeterDataParam) {
return this.list();
}
@Override
public void add(ScrMeterDataParam scrMeterDataParam) {
ScrMeterData scrMeterData = new ScrMeterData();
BeanUtil.copyProperties(scrMeterDataParam, scrMeterData);
this.save(scrMeterData);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void delete(List<ScrMeterDataParam> scrMeterDataParamList) {
scrMeterDataParamList.forEach(scrMeterDataParam -> {
this.removeById(scrMeterDataParam.getId());
});
}
@Transactional(rollbackFor = Exception.class)
@Override
public void edit(ScrMeterDataParam scrMeterDataParam) {
ScrMeterData scrMeterData = this.queryScrMeterData(scrMeterDataParam);
BeanUtil.copyProperties(scrMeterDataParam, scrMeterData);
this.updateById(scrMeterData);
}
@Override
public ScrMeterData detail(ScrMeterDataParam scrMeterDataParam) {
return this.queryScrMeterData(scrMeterDataParam);
}
/**
* 获取电表
*
* @author 2
* @date 2025-10-13 17:55:42
*/
private ScrMeterData queryScrMeterData(ScrMeterDataParam scrMeterDataParam) {
ScrMeterData scrMeterData = this.getById(scrMeterDataParam.getId());
if (ObjectUtil.isNull(scrMeterData)) {
throw new ServiceException(ScrMeterDataExceptionEnum.NOT_EXIST);
}
return scrMeterData;
}
@Override
public void export(ScrMeterDataParam scrMeterDataParam) {
List<ScrMeterData> list = this.list(scrMeterDataParam);
PoiUtil.exportExcelWithStream("SnowyScrMeterData.xls", ScrMeterData.class, list);
}
}

View File

@ -0,0 +1,163 @@
/*
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.scrproduction.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.scrproduction.param.ScrProductionParam;
import vip.xiaonuo.modular.scrproduction.service.ScrProductionService;
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 zyn
* @date 2025-09-10 10:03:01
*/
@RestController
public class ScrProductionController {
@Resource
private ScrProductionService scrProductionService;
/**
* 查询产量
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
@Permission
@GetMapping("/scrProduction/page")
@BusinessLog(title = "产量_查询", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData page(ScrProductionParam scrProductionParam) {
return new SuccessResponseData(scrProductionService.page(scrProductionParam));
}
/**
* 添加产量
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
@Permission
@PostMapping("/scrProduction/add")
@BusinessLog(title = "产量_增加", opType = LogAnnotionOpTypeEnum.ADD)
public ResponseData add(@RequestBody @Validated(ScrProductionParam.add.class) ScrProductionParam scrProductionParam) {
scrProductionService.add(scrProductionParam);
return new SuccessResponseData();
}
/**
* 删除产量可批量删除
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
@Permission
@PostMapping("/scrProduction/delete")
@BusinessLog(title = "产量_删除", opType = LogAnnotionOpTypeEnum.DELETE)
public ResponseData delete(@RequestBody @Validated(ScrProductionParam.delete.class) List<ScrProductionParam> scrProductionParamList) {
scrProductionService.delete(scrProductionParamList);
return new SuccessResponseData();
}
/**
* 编辑产量
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
@Permission
@PostMapping("/scrProduction/edit")
@BusinessLog(title = "产量_编辑", opType = LogAnnotionOpTypeEnum.EDIT)
public ResponseData edit(@RequestBody @Validated(ScrProductionParam.edit.class) ScrProductionParam scrProductionParam) {
scrProductionService.edit(scrProductionParam);
return new SuccessResponseData();
}
/**
* 查看产量
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
@Permission
@GetMapping("/scrProduction/detail")
@BusinessLog(title = "产量_查看", opType = LogAnnotionOpTypeEnum.DETAIL)
public ResponseData detail(@Validated(ScrProductionParam.detail.class) ScrProductionParam scrProductionParam) {
return new SuccessResponseData(scrProductionService.detail(scrProductionParam));
}
/**
* 产量列表
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
@Permission
@GetMapping("/scrProduction/list")
@BusinessLog(title = "产量_列表", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData list(ScrProductionParam scrProductionParam) {
return new SuccessResponseData(scrProductionService.list(scrProductionParam));
}
/**
* 导出系统用户
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
@Permission
@GetMapping("/scrProduction/export")
@BusinessLog(title = "产量_导出", opType = LogAnnotionOpTypeEnum.EXPORT)
public void export(ScrProductionParam scrProductionParam) {
scrProductionService.export(scrProductionParam);
}
@GetMapping("/scrProduction/driQuery")
@BusinessLog(title = "产量_大屏查询", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData driQuery(ScrProductionParam scrProductionParam) {
return new SuccessResponseData(scrProductionService.driQuery(scrProductionParam));
}
@GetMapping("/scrProduction/driMaterQuery")
@BusinessLog(title = "原材料产量和耗电量_大屏查询", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData driMaterQuery(ScrProductionParam scrProductionParam) {
return new SuccessResponseData(scrProductionService.driMaterQuery(scrProductionParam));
}
@GetMapping("/scrProduction/driQhQuery")
@BusinessLog(title = "各炉号产量_大屏查询", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData driQhQuery(ScrProductionParam scrProductionParam) {
return new SuccessResponseData(scrProductionService.driQhQuery(scrProductionParam));
}
}

View File

@ -0,0 +1,111 @@
/*
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.scrproduction.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;
import vip.xiaonuo.core.pojo.base.param.BaseParam;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.math.BigDecimal;
/**
* 产量
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("scr_production")
public class ScrProduction extends BaseEntity {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* 日期
*/
@Excel(name = "日期", databaseFormat = "yyyy-MM-dd HH:mm:ss", format = "yyyy-MM-dd", width = 20)
private Date productionDay;
/**
* 炉号
*/
@Excel(name = "炉号")
private String furnaceNumber;
/**
* 产品
*/
@Excel(name = "产品")
private String product;
/**
* 产量
*/
@Excel(name = "产量")
private BigDecimal production;
/**
* 回收率
*/
@Excel(name = "回收率")
private BigDecimal passRate;
/**
* 扣铁粉渣用量
*/
@Excel(name = "扣铁粉渣用量")
private BigDecimal conts;
/**
* 耗电量
*/
@Excel(name = "耗电量")
private BigDecimal power;
/**
* 渣Mn
*/
@Excel(name = "渣Mn")
private BigDecimal slagMn;
/**
* 炉编号
*/
@Excel(name = "炉编号")
private String furnaceCode;
/**
* 单耗
*/
@Excel(name = "单耗")
private BigDecimal units;
}

View File

@ -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.scrproduction.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 zyn
* @date 2025-09-10 10:03:01
*/
@ExpEnumType(module = SysExpEnumConstant.SNOWY_SYS_MODULE_EXP_CODE)
public enum ScrProductionExceptionEnum implements AbstractBaseExceptionEnum {
/**
* 数据不存在
*/
NOT_EXIST(1, "此数据不存在");
private final Integer code;
private final String message;
ScrProductionExceptionEnum(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;
}
}

View File

@ -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.scrproduction.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import vip.xiaonuo.modular.scrproduction.entity.ScrProduction;
/**
* 产量
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
public interface ScrProductionMapper extends BaseMapper<ScrProduction> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="vip.xiaonuo.modular.scrproduction.mapper.ScrProductionMapper">
</mapper>

View File

@ -0,0 +1,59 @@
/*
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.scrproduction.param;
import lombok.Data;
import vip.xiaonuo.core.pojo.base.param.BaseParam;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
/**
* 产量参数类
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
@Data
public class ScrProductionDriParam {
/**
* 累计产量
*/
private BigDecimal production;
/**
* 回收率
*/
private BigDecimal passRate;
/**
* 单耗
*/
private BigDecimal units;
}

View File

@ -0,0 +1,59 @@
/*
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.scrproduction.param;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 产量参数类
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
@Data
public class ScrProductionMaterParam {
/**
* 名称
*/
private String title;
/**
* 用量
*/
private BigDecimal consumption;
/**
* 耗电量
*/
private BigDecimal power;
/**
* 各原料
*/
private List<ScrProductionMaterParam> list;
}

View File

@ -0,0 +1,111 @@
/*
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.scrproduction.param;
import cn.afterturn.easypoi.excel.annotation.Excel;
import vip.xiaonuo.core.pojo.base.param.BaseParam;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigDecimal;
/**
* 产量参数类
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
@Data
public class ScrProductionParam extends BaseParam {
/**
* 主键
*/
@NotNull(message = "主键不能为空请检查id参数", groups = {edit.class, delete.class, detail.class})
private Long id;
/**
* 日期
*/
@NotNull(message = "日期不能为空请检查productionDay参数", groups = {add.class, edit.class})
private String productionDay;
/**
* 炉号
*/
@NotBlank(message = "炉号不能为空请检查furnaceNumber参数", groups = {add.class, edit.class})
private String furnaceNumber;
/**
* 产品
*/
@NotBlank(message = "产品不能为空请检查product参数", groups = {add.class, edit.class})
private String product;
/**
* 产量
*/
@NotNull(message = "产量不能为空请检查production参数", groups = {add.class, edit.class})
private BigDecimal production;
/**
* 回收率
*/
@NotNull(message = "合格率不能为空请检查passRate参数", groups = {add.class, edit.class})
private BigDecimal passRate;
/**
* 回收率
*/
@NotNull(message = "扣铁粉渣用量不能为空请检查conts参数", groups = {add.class, edit.class})
private BigDecimal conts;
/**
* 耗电量
*/
@NotNull(message = "耗电量不能为空请检查power参数", groups = {add.class, edit.class})
private BigDecimal power;
/**
* 渣Mn
*/
@NotNull(message = "渣Mn不能为空请检查slagMn参数", groups = {add.class, edit.class})
private BigDecimal slagMn;
/**
* 炉编号
*/
@NotNull(message = "炉编号不能为空请检查furnaceCode参数", groups = {add.class, edit.class})
private String furnaceCode;
/**
* 单耗
*/
@NotNull(message = "单耗不能为空请检查units参数", groups = {add.class, edit.class})
private BigDecimal units;
private Integer year;
private Integer month;
private Date startDate;
private Date endDate;
}

View File

@ -0,0 +1,104 @@
/*
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.scrproduction.service;
import com.baomidou.mybatisplus.extension.service.IService;
import vip.xiaonuo.core.pojo.page.PageResult;
import vip.xiaonuo.modular.scrproduction.entity.ScrProduction;
import vip.xiaonuo.modular.scrproduction.param.ScrProductionParam;
import vip.xiaonuo.modular.scrproduction.param.ScrProductionDriParam;
import vip.xiaonuo.modular.scrproduction.param.ScrProductionMaterParam;
import java.util.List;
/**
* 产量service接口
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
public interface ScrProductionService extends IService<ScrProduction> {
/**
* 查询产量
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
PageResult<ScrProduction> page(ScrProductionParam scrProductionParam);
/**
* 产量列表
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
List<ScrProduction> list(ScrProductionParam scrProductionParam);
/**
* 添加产量
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
void add(ScrProductionParam scrProductionParam);
/**
* 删除产量
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
void delete(List<ScrProductionParam> scrProductionParamList);
/**
* 编辑产量
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
void edit(ScrProductionParam scrProductionParam);
/**
* 查看产量
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
ScrProduction detail(ScrProductionParam scrProductionParam);
/**
* 导出产量
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
void export(ScrProductionParam scrProductionParam);
ScrProductionDriParam driQuery(ScrProductionParam scrProductionParam);
List<ScrProduction> driQhQuery(ScrProductionParam scrProductionParam);
List<ScrProductionMaterParam> driMaterQuery(ScrProductionParam scrProductionParam);
}

View File

@ -0,0 +1,396 @@
/*
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.scrproduction.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.scrproduction.entity.ScrProduction;
import vip.xiaonuo.modular.scrproduction.enums.ScrProductionExceptionEnum;
import vip.xiaonuo.modular.scrproduction.mapper.ScrProductionMapper;
import vip.xiaonuo.modular.scrproduction.param.ScrProductionDriParam;
import vip.xiaonuo.modular.scrproduction.param.ScrProductionMaterParam;
import vip.xiaonuo.modular.scrproduction.param.ScrProductionParam;
import vip.xiaonuo.modular.scrproduction.service.ScrProductionService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import vip.xiaonuo.modular.scrrawmaterials.entity.ScrRawMaterials;
import vip.xiaonuo.modular.scrrawmaterials.service.ScrRawMaterialsService;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* 产量service接口实现类
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
@Service
public class ScrProductionServiceImpl extends ServiceImpl<ScrProductionMapper, ScrProduction> implements ScrProductionService {
@Resource
private ScrRawMaterialsService scrRawMaterialsService;
@Override
public PageResult<ScrProduction> page(ScrProductionParam scrProductionParam) {
QueryWrapper<ScrProduction> queryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotNull(scrProductionParam)) {
// 根据日期 查询
if (ObjectUtil.isNotEmpty(scrProductionParam.getProductionDay())) {
queryWrapper.lambda().eq(ScrProduction::getProductionDay, scrProductionParam.getProductionDay());
}
// 根据炉号 查询
if (ObjectUtil.isNotEmpty(scrProductionParam.getFurnaceNumber())) {
queryWrapper.lambda().eq(ScrProduction::getFurnaceNumber, scrProductionParam.getFurnaceNumber());
}
// 根据产品 查询
if (ObjectUtil.isNotEmpty(scrProductionParam.getProduct())) {
queryWrapper.lambda().eq(ScrProduction::getProduct, scrProductionParam.getProduct());
}
// 根据产量 查询
if (ObjectUtil.isNotEmpty(scrProductionParam.getProduction())) {
queryWrapper.lambda().eq(ScrProduction::getProduction, scrProductionParam.getProduction());
}
// 根据合格率 查询
if (ObjectUtil.isNotEmpty(scrProductionParam.getPassRate())) {
queryWrapper.lambda().eq(ScrProduction::getPassRate, scrProductionParam.getPassRate());
}
}
return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
}
@Override
public List<ScrProduction> list(ScrProductionParam scrProductionParam) {
return this.list();
}
@Override
public void add(ScrProductionParam scrProductionParam) {
ScrProduction scrProduction = new ScrProduction();
BeanUtil.copyProperties(scrProductionParam, scrProduction);
this.save(scrProduction);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void delete(List<ScrProductionParam> scrProductionParamList) {
scrProductionParamList.forEach(scrProductionParam -> {
this.removeById(scrProductionParam.getId());
});
}
@Transactional(rollbackFor = Exception.class)
@Override
public void edit(ScrProductionParam scrProductionParam) {
ScrProduction scrProduction = this.queryScrProduction(scrProductionParam);
BeanUtil.copyProperties(scrProductionParam, scrProduction);
this.updateById(scrProduction);
}
@Override
public ScrProduction detail(ScrProductionParam scrProductionParam) {
return this.queryScrProduction(scrProductionParam);
}
/**
* 获取产量
*
* @author zyn
* @date 2025-09-10 10:03:01
*/
private ScrProduction queryScrProduction(ScrProductionParam scrProductionParam) {
ScrProduction scrProduction = this.getById(scrProductionParam.getId());
if (ObjectUtil.isNull(scrProduction)) {
throw new ServiceException(ScrProductionExceptionEnum.NOT_EXIST);
}
return scrProduction;
}
@Override
public void export(ScrProductionParam scrProductionParam) {
List<ScrProduction> list = this.list(scrProductionParam);
PoiUtil.exportExcelWithStream("SnowyScrProduction.xls", ScrProduction.class, list);
}
@Override
public ScrProductionDriParam driQuery(ScrProductionParam scrProductionParam) {
QueryWrapper<ScrProduction> queryWrapper = new QueryWrapper<>();
buildDateQueryConditions(queryWrapper, scrProductionParam);
// 查询符合条件的所有产量记录
List<ScrProduction> productions = this.list(queryWrapper);
// 计算单耗
BigDecimal units = productions.stream()
.map(ScrProduction::getUnits)
.filter(ObjectUtil::isNotEmpty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
// 计算总产量
BigDecimal totalProduction = productions.stream()
.map(ScrProduction::getProduction)
.filter(ObjectUtil::isNotEmpty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
// 计算平均合格率
BigDecimal avgPassRate = BigDecimal.valueOf(0);
if (!productions.isEmpty()) {
List<BigDecimal> validPassRates = productions.stream()
.map(ScrProduction::getPassRate)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toList());
if (!validPassRates.isEmpty()) {
BigDecimal sumPassRate = validPassRates.stream()
.reduce(BigDecimal.ZERO, BigDecimal::add);
avgPassRate = sumPassRate.divide(BigDecimal.valueOf(validPassRates.size()), 4, RoundingMode.HALF_UP);
}
}
// 创建返回对象
ScrProductionDriParam result = new ScrProductionDriParam();
result.setProduction(totalProduction);
result.setPassRate(avgPassRate);
result.setUnits(units);
return result;
}
@Override
public List<ScrProduction> driQhQuery(ScrProductionParam scrProductionParam) {
QueryWrapper<ScrProduction> queryWrapper = new QueryWrapper<>();
buildDateQueryConditions(queryWrapper, scrProductionParam);
// 查询原始数据
List<ScrProduction> productions = this.list(queryWrapper);
// 按炉号分组并聚合产量
return productions.stream()
.collect(Collectors.groupingBy(ScrProduction::getFurnaceNumber))
.entrySet()
.stream()
.map(entry -> {
String furnaceNumber = entry.getKey();
List<ScrProduction> furnaceProductions = entry.getValue();
// 创建聚合记录
ScrProduction aggregated = new ScrProduction();
aggregated.setFurnaceNumber(furnaceNumber);
// 聚合产量只聚合产量
BigDecimal totalProduction = furnaceProductions.stream()
.map(ScrProduction::getProduction)
.filter(ObjectUtil::isNotEmpty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
aggregated.setProduction(totalProduction);
return aggregated;
})
.collect(Collectors.toList());
}
@Override
public List<ScrProductionMaterParam> driMaterQuery(ScrProductionParam scrProductionParam) {
QueryWrapper<ScrProduction> queryWrapper = new QueryWrapper<>();
buildDateQueryConditions(queryWrapper, scrProductionParam);
// 添加产品过滤条件只查询硅锰铬铁硅铁
queryWrapper.lambda().in(ScrProduction::getProduct, "硅锰", "铬铁", "硅铁");
// 查询产量数据
List<ScrProduction> productions = this.list(queryWrapper);
// 获取涉及的炉号列表
List<String> furnaceNumbers = productions.stream()
.map(ScrProduction::getFurnaceNumber)
.distinct()
.collect(Collectors.toList());
// 如果没有炉号数据直接返回空列表
if (furnaceNumbers.isEmpty()) {
return Collections.emptyList();
}
// 查询原材料用量数据
QueryWrapper<ScrRawMaterials> rawMaterialsQueryWrapper = new QueryWrapper<>();
rawMaterialsQueryWrapper.lambda().in(ScrRawMaterials::getFurnaceNumber, furnaceNumbers);
// 添加时间条件到原材料查询
if (ObjectUtil.isNotNull(scrProductionParam)) {
// 按指定日期查询
if (ObjectUtil.isNotEmpty(scrProductionParam.getProductionDay())) {
rawMaterialsQueryWrapper.lambda().eq(ScrRawMaterials::getConsumptionDay, scrProductionParam.getProductionDay());
}
// 按年月查询
if (ObjectUtil.isNotEmpty(scrProductionParam.getYear()) && ObjectUtil.isNotEmpty(scrProductionParam.getMonth())) {
Integer year = scrProductionParam.getYear();
Integer month = scrProductionParam.getMonth();
LocalDate startDate = LocalDate.of(year, month, 1);
LocalDate endDate = startDate.withDayOfMonth(startDate.lengthOfMonth());
rawMaterialsQueryWrapper.lambda()
.ge(ScrRawMaterials::getConsumptionDay, startDate)
.le(ScrRawMaterials::getConsumptionDay, endDate);
}
// 按年度查询
else if (ObjectUtil.isNotEmpty(scrProductionParam.getYear())) {
Integer year = scrProductionParam.getYear();
LocalDate startDate = LocalDate.of(year, 1, 1);
LocalDate endDate = LocalDate.of(year, 12, 31);
rawMaterialsQueryWrapper.lambda()
.ge(ScrRawMaterials::getConsumptionDay, startDate)
.le(ScrRawMaterials::getConsumptionDay, endDate);
}
// 按日期范围查询
if (ObjectUtil.isNotEmpty(scrProductionParam.getStartDate()) && ObjectUtil.isNotEmpty(scrProductionParam.getEndDate())) {
rawMaterialsQueryWrapper.lambda()
.ge(ScrRawMaterials::getConsumptionDay, scrProductionParam.getStartDate())
.le(ScrRawMaterials::getConsumptionDay, scrProductionParam.getEndDate());
}
}
List<ScrRawMaterials> rawMaterialsList = scrRawMaterialsService.list(rawMaterialsQueryWrapper);
// 按产品分组并聚合数据保持炉号对应关系
return productions.stream()
.collect(Collectors.groupingBy(ScrProduction::getProduct))
.entrySet()
.stream()
.map(entry -> {
String product = entry.getKey();
List<ScrProduction> productProductions = entry.getValue();
// 创建产品参数对象
ScrProductionMaterParam productParam = new ScrProductionMaterParam();
productParam.setTitle(product);
// 聚合该产品的总产量
BigDecimal totalProduction = productProductions.stream()
.map(ScrProduction::getPower)
.filter(ObjectUtil::isNotEmpty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
productParam.setPower(totalProduction); // 使用power字段存储总产量
// 获取该产品涉及的炉号
List<String> productFurnaceNumbers = productProductions.stream()
.map(ScrProduction::getFurnaceNumber)
.distinct()
.collect(Collectors.toList());
// 筛选出该产品涉及的原材料数据
List<ScrRawMaterials> productRawMaterials = rawMaterialsList.stream()
.filter(material -> productFurnaceNumbers.contains(material.getFurnaceNumber()))
.collect(Collectors.toList());
// 计算该产品涉及炉号的原材料总用量
BigDecimal totalConsumption = productRawMaterials.stream()
.map(ScrRawMaterials::getConsumption)
.filter(ObjectUtil::isNotEmpty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
productParam.setConsumption(totalConsumption);
// 按原材料名称分组并聚合用量确保只包含该产品的炉号数据
List<ScrProductionMaterParam> materialList = productRawMaterials.stream()
.collect(Collectors.groupingBy(ScrRawMaterials::getRawMaterials))
.entrySet()
.stream()
.map(materialEntry -> {
String rawMaterialName = materialEntry.getKey();
List<ScrRawMaterials> materials = materialEntry.getValue();
ScrProductionMaterParam materialParam = new ScrProductionMaterParam();
materialParam.setTitle(rawMaterialName);
// 计算该原材料的总用量仅该产品的炉号
BigDecimal materialConsumption = materials.stream()
.map(ScrRawMaterials::getConsumption)
.filter(ObjectUtil::isNotEmpty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
materialParam.setConsumption(materialConsumption);
return materialParam;
})
.collect(Collectors.toList());
productParam.setList(materialList);
return productParam;
})
.collect(Collectors.toList());
}
/**
* 构建产量查询的通用日期条件
*
* @param queryWrapper 查询构造器
* @param scrProductionParam 查询参数
*/
private void buildDateQueryConditions(QueryWrapper<ScrProduction> queryWrapper, ScrProductionParam scrProductionParam) {
if (ObjectUtil.isNotEmpty(scrProductionParam.getProductionDay())) {
queryWrapper.lambda().eq(ScrProduction::getProductionDay, scrProductionParam.getProductionDay());
}
if (ObjectUtil.isNotEmpty(scrProductionParam.getYear()) && ObjectUtil.isNotEmpty(scrProductionParam.getMonth())) {
Integer year = scrProductionParam.getYear();
Integer month = scrProductionParam.getMonth();
LocalDate startDate = LocalDate.of(year, month, 1);
LocalDate endDate = startDate.withDayOfMonth(startDate.lengthOfMonth());
queryWrapper.lambda()
.ge(ScrProduction::getProductionDay, startDate)
.le(ScrProduction::getProductionDay, endDate);
} else if (ObjectUtil.isNotEmpty(scrProductionParam.getYear())) {
Integer year = scrProductionParam.getYear();
LocalDate startDate = LocalDate.of(year, 1, 1);
LocalDate endDate = LocalDate.of(year, 12, 31);
queryWrapper.lambda()
.ge(ScrProduction::getProductionDay, startDate)
.le(ScrProduction::getProductionDay, endDate);
}
if (ObjectUtil.isNotEmpty(scrProductionParam.getStartDate()) && ObjectUtil.isNotEmpty(scrProductionParam.getEndDate())) {
queryWrapper.lambda()
.ge(ScrProduction::getProductionDay, scrProductionParam.getStartDate())
.le(ScrProduction::getProductionDay, scrProductionParam.getEndDate());
}
}
}

View File

@ -0,0 +1,148 @@
/*
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.scrrawmaterials.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.scrrawmaterials.param.ScrRawMaterialsParam;
import vip.xiaonuo.modular.scrrawmaterials.service.ScrRawMaterialsService;
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 zyn
* @date 2025-09-10 10:03:02
*/
@RestController
public class ScrRawMaterialsController {
@Resource
private ScrRawMaterialsService scrRawMaterialsService;
/**
* 查询原材料
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
@Permission
@GetMapping("/scrRawMaterials/page")
@BusinessLog(title = "原材料_查询", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData page(ScrRawMaterialsParam scrRawMaterialsParam) {
return new SuccessResponseData(scrRawMaterialsService.page(scrRawMaterialsParam));
}
/**
* 添加原材料
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
@Permission
@PostMapping("/scrRawMaterials/add")
@BusinessLog(title = "原材料_增加", opType = LogAnnotionOpTypeEnum.ADD)
public ResponseData add(@RequestBody @Validated(ScrRawMaterialsParam.add.class) ScrRawMaterialsParam scrRawMaterialsParam) {
scrRawMaterialsService.add(scrRawMaterialsParam);
return new SuccessResponseData();
}
/**
* 删除原材料可批量删除
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
@Permission
@PostMapping("/scrRawMaterials/delete")
@BusinessLog(title = "原材料_删除", opType = LogAnnotionOpTypeEnum.DELETE)
public ResponseData delete(@RequestBody @Validated(ScrRawMaterialsParam.delete.class) List<ScrRawMaterialsParam> scrRawMaterialsParamList) {
scrRawMaterialsService.delete(scrRawMaterialsParamList);
return new SuccessResponseData();
}
/**
* 编辑原材料
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
@Permission
@PostMapping("/scrRawMaterials/edit")
@BusinessLog(title = "原材料_编辑", opType = LogAnnotionOpTypeEnum.EDIT)
public ResponseData edit(@RequestBody @Validated(ScrRawMaterialsParam.edit.class) ScrRawMaterialsParam scrRawMaterialsParam) {
scrRawMaterialsService.edit(scrRawMaterialsParam);
return new SuccessResponseData();
}
/**
* 查看原材料
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
@Permission
@GetMapping("/scrRawMaterials/detail")
@BusinessLog(title = "原材料_查看", opType = LogAnnotionOpTypeEnum.DETAIL)
public ResponseData detail(@Validated(ScrRawMaterialsParam.detail.class) ScrRawMaterialsParam scrRawMaterialsParam) {
return new SuccessResponseData(scrRawMaterialsService.detail(scrRawMaterialsParam));
}
/**
* 原材料列表
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
@Permission
@GetMapping("/scrRawMaterials/list")
@BusinessLog(title = "原材料_列表", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData list(ScrRawMaterialsParam scrRawMaterialsParam) {
return new SuccessResponseData(scrRawMaterialsService.list(scrRawMaterialsParam));
}
/**
* 导出系统用户
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
@Permission
@GetMapping("/scrRawMaterials/export")
@BusinessLog(title = "原材料_导出", opType = LogAnnotionOpTypeEnum.EXPORT)
public void export(ScrRawMaterialsParam scrRawMaterialsParam) {
scrRawMaterialsService.export(scrRawMaterialsParam);
}
}

View File

@ -0,0 +1,76 @@
/*
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.scrrawmaterials.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;
import java.math.BigDecimal;
/**
* 原材料
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("scr_raw_materials")
public class ScrRawMaterials extends BaseEntity {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* 日期
*/
@Excel(name = "日期", databaseFormat = "yyyy-MM-dd HH:mm:ss", format = "yyyy-MM-dd", width = 20)
private Date consumptionDay;
/**
* 炉号
*/
@Excel(name = "炉号")
private String furnaceNumber;
/**
* 原材料
*/
@Excel(name = "原材料")
private String rawMaterials;
/**
* 用量
*/
@Excel(name = "用量")
private BigDecimal consumption;
}

View File

@ -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.scrrawmaterials.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 zyn
* @date 2025-09-10 10:03:02
*/
@ExpEnumType(module = SysExpEnumConstant.SNOWY_SYS_MODULE_EXP_CODE)
public enum ScrRawMaterialsExceptionEnum implements AbstractBaseExceptionEnum {
/**
* 数据不存在
*/
NOT_EXIST(1, "此数据不存在");
private final Integer code;
private final String message;
ScrRawMaterialsExceptionEnum(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;
}
}

View File

@ -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.scrrawmaterials.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import vip.xiaonuo.modular.scrrawmaterials.entity.ScrRawMaterials;
/**
* 原材料
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
public interface ScrRawMaterialsMapper extends BaseMapper<ScrRawMaterials> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="vip.xiaonuo.modular.scrrawmaterials.mapper.ScrRawMaterialsMapper">
</mapper>

View File

@ -0,0 +1,73 @@
/*
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.scrrawmaterials.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.*;
import java.math.BigDecimal;
/**
* 原材料参数类
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
@Data
public class ScrRawMaterialsParam extends BaseParam {
/**
* 主键
*/
@NotNull(message = "主键不能为空请检查id参数", groups = {edit.class, delete.class, detail.class})
private Long id;
/**
* 日期
*/
@NotNull(message = "日期不能为空请检查consumptionDay参数", groups = {add.class, edit.class})
private String consumptionDay;
/**
* 炉号
*/
@NotBlank(message = "炉号不能为空请检查furnaceNumber参数", groups = {add.class, edit.class})
private String furnaceNumber;
/**
* 原材料
*/
@NotBlank(message = "原材料不能为空请检查rawMaterials参数", groups = {add.class, edit.class})
private String rawMaterials;
/**
* 用量
*/
@NotNull(message = "用量不能为空请检查consumption参数", groups = {add.class, edit.class})
private BigDecimal consumption;
}

View File

@ -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.scrrawmaterials.service;
import com.baomidou.mybatisplus.extension.service.IService;
import vip.xiaonuo.core.pojo.page.PageResult;
import vip.xiaonuo.modular.scrrawmaterials.entity.ScrRawMaterials;
import vip.xiaonuo.modular.scrrawmaterials.param.ScrRawMaterialsParam;
import java.util.List;
/**
* 原材料service接口
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
public interface ScrRawMaterialsService extends IService<ScrRawMaterials> {
/**
* 查询原材料
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
PageResult<ScrRawMaterials> page(ScrRawMaterialsParam scrRawMaterialsParam);
/**
* 原材料列表
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
List<ScrRawMaterials> list(ScrRawMaterialsParam scrRawMaterialsParam);
/**
* 添加原材料
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
void add(ScrRawMaterialsParam scrRawMaterialsParam);
/**
* 删除原材料
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
void delete(List<ScrRawMaterialsParam> scrRawMaterialsParamList);
/**
* 编辑原材料
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
void edit(ScrRawMaterialsParam scrRawMaterialsParam);
/**
* 查看原材料
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
ScrRawMaterials detail(ScrRawMaterialsParam scrRawMaterialsParam);
/**
* 导出原材料
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
void export(ScrRawMaterialsParam scrRawMaterialsParam);
}

View File

@ -0,0 +1,136 @@
/*
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.scrrawmaterials.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.scrrawmaterials.entity.ScrRawMaterials;
import vip.xiaonuo.modular.scrrawmaterials.enums.ScrRawMaterialsExceptionEnum;
import vip.xiaonuo.modular.scrrawmaterials.mapper.ScrRawMaterialsMapper;
import vip.xiaonuo.modular.scrrawmaterials.param.ScrRawMaterialsParam;
import vip.xiaonuo.modular.scrrawmaterials.service.ScrRawMaterialsService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* 原材料service接口实现类
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
@Service
public class ScrRawMaterialsServiceImpl extends ServiceImpl<ScrRawMaterialsMapper, ScrRawMaterials> implements ScrRawMaterialsService {
@Override
public PageResult<ScrRawMaterials> page(ScrRawMaterialsParam scrRawMaterialsParam) {
QueryWrapper<ScrRawMaterials> queryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotNull(scrRawMaterialsParam)) {
// 根据日期 查询
if (ObjectUtil.isNotEmpty(scrRawMaterialsParam.getConsumptionDay())) {
queryWrapper.lambda().eq(ScrRawMaterials::getConsumptionDay, scrRawMaterialsParam.getConsumptionDay());
}
// 根据炉号 查询
if (ObjectUtil.isNotEmpty(scrRawMaterialsParam.getFurnaceNumber())) {
queryWrapper.lambda().eq(ScrRawMaterials::getFurnaceNumber, scrRawMaterialsParam.getFurnaceNumber());
}
// 根据原材料 查询
if (ObjectUtil.isNotEmpty(scrRawMaterialsParam.getRawMaterials())) {
queryWrapper.lambda().eq(ScrRawMaterials::getRawMaterials, scrRawMaterialsParam.getRawMaterials());
}
// 根据用量 查询
if (ObjectUtil.isNotEmpty(scrRawMaterialsParam.getConsumption())) {
queryWrapper.lambda().eq(ScrRawMaterials::getConsumption, scrRawMaterialsParam.getConsumption());
}
}
return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
}
@Override
public List<ScrRawMaterials> list(ScrRawMaterialsParam scrRawMaterialsParam) {
return this.list();
}
@Override
public void add(ScrRawMaterialsParam scrRawMaterialsParam) {
ScrRawMaterials scrRawMaterials = new ScrRawMaterials();
BeanUtil.copyProperties(scrRawMaterialsParam, scrRawMaterials);
this.save(scrRawMaterials);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void delete(List<ScrRawMaterialsParam> scrRawMaterialsParamList) {
scrRawMaterialsParamList.forEach(scrRawMaterialsParam -> {
this.removeById(scrRawMaterialsParam.getId());
});
}
@Transactional(rollbackFor = Exception.class)
@Override
public void edit(ScrRawMaterialsParam scrRawMaterialsParam) {
ScrRawMaterials scrRawMaterials = this.queryScrRawMaterials(scrRawMaterialsParam);
BeanUtil.copyProperties(scrRawMaterialsParam, scrRawMaterials);
this.updateById(scrRawMaterials);
}
@Override
public ScrRawMaterials detail(ScrRawMaterialsParam scrRawMaterialsParam) {
return this.queryScrRawMaterials(scrRawMaterialsParam);
}
/**
* 获取原材料
*
* @author zyn
* @date 2025-09-10 10:03:02
*/
private ScrRawMaterials queryScrRawMaterials(ScrRawMaterialsParam scrRawMaterialsParam) {
ScrRawMaterials scrRawMaterials = this.getById(scrRawMaterialsParam.getId());
if (ObjectUtil.isNull(scrRawMaterials)) {
throw new ServiceException(ScrRawMaterialsExceptionEnum.NOT_EXIST);
}
return scrRawMaterials;
}
@Override
public void export(ScrRawMaterialsParam scrRawMaterialsParam) {
List<ScrRawMaterials> list = this.list(scrRawMaterialsParam);
PoiUtil.exportExcelWithStream("SnowyScrRawMaterials.xls", ScrRawMaterials.class, list);
}
}

View File

@ -0,0 +1,148 @@
/*
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.scrriskdata.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.scrriskdata.param.ScrRiskDataParam;
import vip.xiaonuo.modular.scrriskdata.service.ScrRiskDataService;
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-13 17:08:52
*/
@RestController
public class ScrRiskDataController {
@Resource
private ScrRiskDataService scrRiskDataService;
/**
* 查询风险排查
*
* @author 1
* @date 2025-10-13 17:08:52
*/
@Permission
@GetMapping("/scrRiskData/page")
@BusinessLog(title = "风险排查_查询", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData page(ScrRiskDataParam scrRiskDataParam) {
return new SuccessResponseData(scrRiskDataService.page(scrRiskDataParam));
}
/**
* 添加风险排查
*
* @author 1
* @date 2025-10-13 17:08:52
*/
@Permission
@PostMapping("/scrRiskData/add")
@BusinessLog(title = "风险排查_增加", opType = LogAnnotionOpTypeEnum.ADD)
public ResponseData add(@RequestBody @Validated(ScrRiskDataParam.add.class) ScrRiskDataParam scrRiskDataParam) {
scrRiskDataService.add(scrRiskDataParam);
return new SuccessResponseData();
}
/**
* 删除风险排查可批量删除
*
* @author 1
* @date 2025-10-13 17:08:52
*/
@Permission
@PostMapping("/scrRiskData/delete")
@BusinessLog(title = "风险排查_删除", opType = LogAnnotionOpTypeEnum.DELETE)
public ResponseData delete(@RequestBody @Validated(ScrRiskDataParam.delete.class) List<ScrRiskDataParam> scrRiskDataParamList) {
scrRiskDataService.delete(scrRiskDataParamList);
return new SuccessResponseData();
}
/**
* 编辑风险排查
*
* @author 1
* @date 2025-10-13 17:08:52
*/
@Permission
@PostMapping("/scrRiskData/edit")
@BusinessLog(title = "风险排查_编辑", opType = LogAnnotionOpTypeEnum.EDIT)
public ResponseData edit(@RequestBody @Validated(ScrRiskDataParam.edit.class) ScrRiskDataParam scrRiskDataParam) {
scrRiskDataService.edit(scrRiskDataParam);
return new SuccessResponseData();
}
/**
* 查看风险排查
*
* @author 1
* @date 2025-10-13 17:08:52
*/
@Permission
@GetMapping("/scrRiskData/detail")
@BusinessLog(title = "风险排查_查看", opType = LogAnnotionOpTypeEnum.DETAIL)
public ResponseData detail(@Validated(ScrRiskDataParam.detail.class) ScrRiskDataParam scrRiskDataParam) {
return new SuccessResponseData(scrRiskDataService.detail(scrRiskDataParam));
}
/**
* 风险排查列表
*
* @author 1
* @date 2025-10-13 17:08:52
*/
@Permission
@GetMapping("/scrRiskData/list")
@BusinessLog(title = "风险排查_列表", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData list(ScrRiskDataParam scrRiskDataParam) {
return new SuccessResponseData(scrRiskDataService.list(scrRiskDataParam));
}
/**
* 导出系统用户
*
* @author 1
* @date 2025-10-13 17:08:52
*/
@Permission
@GetMapping("/scrRiskData/export")
@BusinessLog(title = "风险排查_导出", opType = LogAnnotionOpTypeEnum.EXPORT)
public void export(ScrRiskDataParam scrRiskDataParam) {
scrRiskDataService.export(scrRiskDataParam);
}
}

View File

@ -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.scrriskdata.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-13 17:08:52
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("scr_risk_data")
public class ScrRiskData extends BaseEntity {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* 年份
*/
@Excel(name = "年份")
private Integer year;
/**
* 月份
*/
@Excel(name = "月份")
private Integer month;
/**
* 已排查
*/
@Excel(name = "已排查")
private Integer ypc;
/**
* 未排查
*/
@Excel(name = "未排查")
private Integer wpc;
/**
* 超期未排查
*/
@Excel(name = "超期未排查")
private Integer cqwpc;
}

View File

@ -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.scrriskdata.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-13 17:08:52
*/
@ExpEnumType(module = SysExpEnumConstant.SNOWY_SYS_MODULE_EXP_CODE)
public enum ScrRiskDataExceptionEnum implements AbstractBaseExceptionEnum {
/**
* 数据不存在
*/
NOT_EXIST(1, "此数据不存在");
private final Integer code;
private final String message;
ScrRiskDataExceptionEnum(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;
}
}

View File

@ -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.scrriskdata.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import vip.xiaonuo.modular.scrriskdata.entity.ScrRiskData;
/**
* 风险排查
*
* @author 1
* @date 2025-10-13 17:08:52
*/
public interface ScrRiskDataMapper extends BaseMapper<ScrRiskData> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="vip.xiaonuo.modular.scrriskdata.mapper.ScrRiskDataMapper">
</mapper>

View File

@ -0,0 +1,78 @@
/*
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.scrriskdata.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-13 17:08:52
*/
@Data
public class ScrRiskDataParam extends BaseParam {
/**
* 主键
*/
@NotNull(message = "主键不能为空请检查id参数", groups = {edit.class, delete.class, detail.class})
private Long id;
/**
* 年份
*/
@NotNull(message = "年份不能为空请检查year参数", groups = {add.class, edit.class})
private Integer year;
/**
* 月份
*/
@NotNull(message = "月份不能为空请检查month参数", groups = {add.class, edit.class})
private Integer month;
/**
* 已排查
*/
@NotNull(message = "已排查不能为空请检查ypc参数", groups = {add.class, edit.class})
private Integer ypc;
/**
* 未排查
*/
@NotNull(message = "未排查不能为空请检查wpc参数", groups = {add.class, edit.class})
private Integer wpc;
/**
* 超期未排查
*/
@NotNull(message = "超期未排查不能为空请检查cqwpc参数", groups = {add.class, edit.class})
private Integer cqwpc;
}

View File

@ -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.scrriskdata.service;
import com.baomidou.mybatisplus.extension.service.IService;
import vip.xiaonuo.core.pojo.page.PageResult;
import vip.xiaonuo.modular.scrriskdata.entity.ScrRiskData;
import vip.xiaonuo.modular.scrriskdata.param.ScrRiskDataParam;
import java.util.List;
/**
* 风险排查service接口
*
* @author 1
* @date 2025-10-13 17:08:52
*/
public interface ScrRiskDataService extends IService<ScrRiskData> {
/**
* 查询风险排查
*
* @author 1
* @date 2025-10-13 17:08:52
*/
PageResult<ScrRiskData> page(ScrRiskDataParam scrRiskDataParam);
/**
* 风险排查列表
*
* @author 1
* @date 2025-10-13 17:08:52
*/
List<ScrRiskData> list(ScrRiskDataParam scrRiskDataParam);
/**
* 添加风险排查
*
* @author 1
* @date 2025-10-13 17:08:52
*/
void add(ScrRiskDataParam scrRiskDataParam);
/**
* 删除风险排查
*
* @author 1
* @date 2025-10-13 17:08:52
*/
void delete(List<ScrRiskDataParam> scrRiskDataParamList);
/**
* 编辑风险排查
*
* @author 1
* @date 2025-10-13 17:08:52
*/
void edit(ScrRiskDataParam scrRiskDataParam);
/**
* 查看风险排查
*
* @author 1
* @date 2025-10-13 17:08:52
*/
ScrRiskData detail(ScrRiskDataParam scrRiskDataParam);
/**
* 导出风险排查
*
* @author 1
* @date 2025-10-13 17:08:52
*/
void export(ScrRiskDataParam scrRiskDataParam);
}

View File

@ -0,0 +1,128 @@
/*
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.scrriskdata.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.scrriskdata.entity.ScrRiskData;
import vip.xiaonuo.modular.scrriskdata.enums.ScrRiskDataExceptionEnum;
import vip.xiaonuo.modular.scrriskdata.mapper.ScrRiskDataMapper;
import vip.xiaonuo.modular.scrriskdata.param.ScrRiskDataParam;
import vip.xiaonuo.modular.scrriskdata.service.ScrRiskDataService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* 风险排查service接口实现类
*
* @author 1
* @date 2025-10-13 17:08:52
*/
@Service
public class ScrRiskDataServiceImpl extends ServiceImpl<ScrRiskDataMapper, ScrRiskData> implements ScrRiskDataService {
@Override
public PageResult<ScrRiskData> page(ScrRiskDataParam scrRiskDataParam) {
QueryWrapper<ScrRiskData> queryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotNull(scrRiskDataParam)) {
// 根据年份 查询
if (ObjectUtil.isNotEmpty(scrRiskDataParam.getYear())) {
queryWrapper.lambda().eq(ScrRiskData::getYear, scrRiskDataParam.getYear());
}
// 根据月份 查询
if (ObjectUtil.isNotEmpty(scrRiskDataParam.getMonth())) {
queryWrapper.lambda().eq(ScrRiskData::getMonth, scrRiskDataParam.getMonth());
}
}
return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
}
@Override
public List<ScrRiskData> list(ScrRiskDataParam scrRiskDataParam) {
return this.list();
}
@Override
public void add(ScrRiskDataParam scrRiskDataParam) {
ScrRiskData scrRiskData = new ScrRiskData();
BeanUtil.copyProperties(scrRiskDataParam, scrRiskData);
this.save(scrRiskData);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void delete(List<ScrRiskDataParam> scrRiskDataParamList) {
scrRiskDataParamList.forEach(scrRiskDataParam -> {
this.removeById(scrRiskDataParam.getId());
});
}
@Transactional(rollbackFor = Exception.class)
@Override
public void edit(ScrRiskDataParam scrRiskDataParam) {
ScrRiskData scrRiskData = this.queryScrRiskData(scrRiskDataParam);
BeanUtil.copyProperties(scrRiskDataParam, scrRiskData);
this.updateById(scrRiskData);
}
@Override
public ScrRiskData detail(ScrRiskDataParam scrRiskDataParam) {
return this.queryScrRiskData(scrRiskDataParam);
}
/**
* 获取风险排查
*
* @author 1
* @date 2025-10-13 17:08:52
*/
private ScrRiskData queryScrRiskData(ScrRiskDataParam scrRiskDataParam) {
ScrRiskData scrRiskData = this.getById(scrRiskDataParam.getId());
if (ObjectUtil.isNull(scrRiskData)) {
throw new ServiceException(ScrRiskDataExceptionEnum.NOT_EXIST);
}
return scrRiskData;
}
@Override
public void export(ScrRiskDataParam scrRiskDataParam) {
List<ScrRiskData> list = this.list(scrRiskDataParam);
PoiUtil.exportExcelWithStream("SnowyScrRiskData.xls", ScrRiskData.class, list);
}
}

View File

@ -0,0 +1,154 @@
/*
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.scrsecurity.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.scrproduction.param.ScrProductionParam;
import vip.xiaonuo.modular.scrsecurity.param.ScrSecurityParam;
import vip.xiaonuo.modular.scrsecurity.service.ScrSecurityService;
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 zyn
* @date 2025-09-10 10:03:04
*/
@RestController
public class ScrSecurityController {
@Resource
private ScrSecurityService scrSecurityService;
/**
* 查询安全异常事件
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
@Permission
@GetMapping("/scrSecurity/page")
@BusinessLog(title = "安全异常事件_查询", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData page(ScrSecurityParam scrSecurityParam) {
return new SuccessResponseData(scrSecurityService.page(scrSecurityParam));
}
/**
* 添加安全异常事件
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
@Permission
@PostMapping("/scrSecurity/add")
@BusinessLog(title = "安全异常事件_增加", opType = LogAnnotionOpTypeEnum.ADD)
public ResponseData add(@RequestBody @Validated(ScrSecurityParam.add.class) ScrSecurityParam scrSecurityParam) {
scrSecurityService.add(scrSecurityParam);
return new SuccessResponseData();
}
/**
* 删除安全异常事件可批量删除
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
@Permission
@PostMapping("/scrSecurity/delete")
@BusinessLog(title = "安全异常事件_删除", opType = LogAnnotionOpTypeEnum.DELETE)
public ResponseData delete(@RequestBody @Validated(ScrSecurityParam.delete.class) List<ScrSecurityParam> scrSecurityParamList) {
scrSecurityService.delete(scrSecurityParamList);
return new SuccessResponseData();
}
/**
* 编辑安全异常事件
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
@Permission
@PostMapping("/scrSecurity/edit")
@BusinessLog(title = "安全异常事件_编辑", opType = LogAnnotionOpTypeEnum.EDIT)
public ResponseData edit(@RequestBody @Validated(ScrSecurityParam.edit.class) ScrSecurityParam scrSecurityParam) {
scrSecurityService.edit(scrSecurityParam);
return new SuccessResponseData();
}
/**
* 查看安全异常事件
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
@Permission
@GetMapping("/scrSecurity/detail")
@BusinessLog(title = "安全异常事件_查看", opType = LogAnnotionOpTypeEnum.DETAIL)
public ResponseData detail(@Validated(ScrSecurityParam.detail.class) ScrSecurityParam scrSecurityParam) {
return new SuccessResponseData(scrSecurityService.detail(scrSecurityParam));
}
/**
* 安全异常事件列表
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
@Permission
@GetMapping("/scrSecurity/list")
@BusinessLog(title = "安全异常事件_列表", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData list(ScrSecurityParam scrSecurityParam) {
return new SuccessResponseData(scrSecurityService.list(scrSecurityParam));
}
/**
* 导出系统用户
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
@Permission
@GetMapping("/scrSecurity/export")
@BusinessLog(title = "安全异常事件_导出", opType = LogAnnotionOpTypeEnum.EXPORT)
public void export(ScrSecurityParam scrSecurityParam) {
scrSecurityService.export(scrSecurityParam);
}
@GetMapping("/scrSecurity/driQuery")
@BusinessLog(title = "安全异常事件_大屏查询", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData driQuery(ScrSecurityParam scrSecurityParam) {
return new SuccessResponseData(scrSecurityService.driQuery(scrSecurityParam));
}
}

View File

@ -0,0 +1,87 @@
/*
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.scrsecurity.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 zyn
* @date 2025-09-10 10:03:04
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("scr_security")
public class ScrSecurity extends BaseEntity {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* 发生时间
*/
@Excel(name = "发生时间", databaseFormat = "yyyy-MM-dd HH:mm:ss", format = "yyyy-MM-dd", width = 20)
private Date happenTime;
/**
* 事件类型
*/
@Excel(name = "事件类型")
private String eventType;
/**
* 标题
*/
@Excel(name = "标题")
private String title;
/**
* 内容
*/
@Excel(name = "内容")
private String content;
/**
* 应对处理
*/
@Excel(name = "应对处理")
private String cope;
/**
* 责任主体
*/
@Excel(name = "责任主体")
private String responsible;
}

View File

@ -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.scrsecurity.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 zyn
* @date 2025-09-10 10:03:04
*/
@ExpEnumType(module = SysExpEnumConstant.SNOWY_SYS_MODULE_EXP_CODE)
public enum ScrSecurityExceptionEnum implements AbstractBaseExceptionEnum {
/**
* 数据不存在
*/
NOT_EXIST(1, "此数据不存在");
private final Integer code;
private final String message;
ScrSecurityExceptionEnum(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;
}
}

View File

@ -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.scrsecurity.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import vip.xiaonuo.modular.scrsecurity.entity.ScrSecurity;
/**
* 安全异常事件
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
public interface ScrSecurityMapper extends BaseMapper<ScrSecurity> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="vip.xiaonuo.modular.scrsecurity.mapper.ScrSecurityMapper">
</mapper>

View File

@ -0,0 +1,87 @@
/*
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.scrsecurity.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 zyn
* @date 2025-09-10 10:03:04
*/
@Data
public class ScrSecurityParam extends BaseParam {
/**
* 主键
*/
@NotNull(message = "主键不能为空请检查id参数", groups = {edit.class, delete.class, detail.class})
private Long id;
/**
* 发生时间
*/
@NotNull(message = "发生时间不能为空请检查happenTime参数", groups = {add.class, edit.class})
private String happenTime;
/**
* 事件类型
*/
@NotBlank(message = "事件类型不能为空请检查eventType参数", groups = {add.class, edit.class})
private String eventType;
/**
* 标题
*/
@NotBlank(message = "标题不能为空请检查title参数", groups = {add.class, edit.class})
private String title;
/**
* 内容
*/
@NotBlank(message = "内容不能为空请检查content参数", groups = {add.class, edit.class})
private String content;
/**
* 应对处理
*/
@NotBlank(message = "应对处理不能为空请检查cope参数", groups = {add.class, edit.class})
private String cope;
/**
* 责任主体
*/
@NotBlank(message = "责任主体不能为空请检查responsible参数", groups = {add.class, edit.class})
private String responsible;
private Integer year;
private Integer month;
private Date startDate;
private Date endDate;
}

View File

@ -0,0 +1,98 @@
/*
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.scrsecurity.service;
import com.baomidou.mybatisplus.extension.service.IService;
import vip.xiaonuo.core.pojo.page.PageResult;
import vip.xiaonuo.modular.scrsecurity.entity.ScrSecurity;
import vip.xiaonuo.modular.scrsecurity.param.ScrSecurityParam;
import java.util.List;
/**
* 安全异常事件service接口
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
public interface ScrSecurityService extends IService<ScrSecurity> {
/**
* 查询安全异常事件
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
PageResult<ScrSecurity> page(ScrSecurityParam scrSecurityParam);
/**
* 安全异常事件列表
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
List<ScrSecurity> list(ScrSecurityParam scrSecurityParam);
/**
* 添加安全异常事件
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
void add(ScrSecurityParam scrSecurityParam);
/**
* 删除安全异常事件
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
void delete(List<ScrSecurityParam> scrSecurityParamList);
/**
* 编辑安全异常事件
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
void edit(ScrSecurityParam scrSecurityParam);
/**
* 查看安全异常事件
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
ScrSecurity detail(ScrSecurityParam scrSecurityParam);
/**
* 导出安全异常事件
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
void export(ScrSecurityParam scrSecurityParam);
List<ScrSecurity> driQuery(ScrSecurityParam scrSecurityParam);
}

View File

@ -0,0 +1,185 @@
/*
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.scrsecurity.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.scrsecurity.entity.ScrSecurity;
import vip.xiaonuo.modular.scrsecurity.enums.ScrSecurityExceptionEnum;
import vip.xiaonuo.modular.scrsecurity.mapper.ScrSecurityMapper;
import vip.xiaonuo.modular.scrsecurity.param.ScrSecurityParam;
import vip.xiaonuo.modular.scrsecurity.service.ScrSecurityService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
/**
* 安全异常事件service接口实现类
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
@Service
public class ScrSecurityServiceImpl extends ServiceImpl<ScrSecurityMapper, ScrSecurity> implements ScrSecurityService {
@Override
public PageResult<ScrSecurity> page(ScrSecurityParam scrSecurityParam) {
QueryWrapper<ScrSecurity> queryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotNull(scrSecurityParam)) {
// 根据发生时间 查询
if (ObjectUtil.isNotEmpty(scrSecurityParam.getHappenTime())) {
queryWrapper.lambda().eq(ScrSecurity::getHappenTime, scrSecurityParam.getHappenTime());
}
// 根据事件类型 查询
if (ObjectUtil.isNotEmpty(scrSecurityParam.getEventType())) {
queryWrapper.lambda().eq(ScrSecurity::getEventType, scrSecurityParam.getEventType());
}
// 根据标题 查询
if (ObjectUtil.isNotEmpty(scrSecurityParam.getTitle())) {
queryWrapper.lambda().eq(ScrSecurity::getTitle, scrSecurityParam.getTitle());
}
// 根据内容 查询
if (ObjectUtil.isNotEmpty(scrSecurityParam.getContent())) {
queryWrapper.lambda().eq(ScrSecurity::getContent, scrSecurityParam.getContent());
}
// 根据应对处理 查询
if (ObjectUtil.isNotEmpty(scrSecurityParam.getCope())) {
queryWrapper.lambda().eq(ScrSecurity::getCope, scrSecurityParam.getCope());
}
// 根据责任主体 查询
if (ObjectUtil.isNotEmpty(scrSecurityParam.getResponsible())) {
queryWrapper.lambda().eq(ScrSecurity::getResponsible, scrSecurityParam.getResponsible());
}
}
return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
}
@Override
public List<ScrSecurity> list(ScrSecurityParam scrSecurityParam) {
return this.list();
}
@Override
public void add(ScrSecurityParam scrSecurityParam) {
ScrSecurity scrSecurity = new ScrSecurity();
BeanUtil.copyProperties(scrSecurityParam, scrSecurity);
this.save(scrSecurity);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void delete(List<ScrSecurityParam> scrSecurityParamList) {
scrSecurityParamList.forEach(scrSecurityParam -> {
this.removeById(scrSecurityParam.getId());
});
}
@Transactional(rollbackFor = Exception.class)
@Override
public void edit(ScrSecurityParam scrSecurityParam) {
ScrSecurity scrSecurity = this.queryScrSecurity(scrSecurityParam);
BeanUtil.copyProperties(scrSecurityParam, scrSecurity);
this.updateById(scrSecurity);
}
@Override
public ScrSecurity detail(ScrSecurityParam scrSecurityParam) {
return this.queryScrSecurity(scrSecurityParam);
}
/**
* 获取安全异常事件
*
* @author zyn
* @date 2025-09-10 10:03:04
*/
private ScrSecurity queryScrSecurity(ScrSecurityParam scrSecurityParam) {
ScrSecurity scrSecurity = this.getById(scrSecurityParam.getId());
if (ObjectUtil.isNull(scrSecurity)) {
throw new ServiceException(ScrSecurityExceptionEnum.NOT_EXIST);
}
return scrSecurity;
}
@Override
public void export(ScrSecurityParam scrSecurityParam) {
List<ScrSecurity> list = this.list(scrSecurityParam);
PoiUtil.exportExcelWithStream("SnowyScrSecurity.xls", ScrSecurity.class, list);
}
@Override
public List<ScrSecurity> driQuery(ScrSecurityParam scrSecurityParam) {
LambdaQueryWrapper<ScrSecurity> queryWrapper = new LambdaQueryWrapper<>();
if (ObjectUtil.isNotNull(scrSecurityParam)) {
// 根据发生时间精确查询
if (ObjectUtil.isNotEmpty(scrSecurityParam.getHappenTime())) {
queryWrapper.apply("DATE(happen_time) = {0}", scrSecurityParam.getHappenTime());
}
// 根据年份查询
if (ObjectUtil.isNotEmpty(scrSecurityParam.getYear())) {
// 使用数据库函数提取年份进行比较
queryWrapper.apply("YEAR(happen_time) = {0}", scrSecurityParam.getYear());
}
// 根据年月查询
if (ObjectUtil.isNotEmpty(scrSecurityParam.getYear()) &&
ObjectUtil.isNotEmpty(scrSecurityParam.getMonth())) {
queryWrapper.apply("YEAR(happen_time) = {0} AND MONTH(happen_time) = {1}",
scrSecurityParam.getYear(), scrSecurityParam.getMonth());
}
// 根据日期范围查询
if (ObjectUtil.isNotEmpty(scrSecurityParam.getStartDate()) &&
ObjectUtil.isNotEmpty(scrSecurityParam.getEndDate())) {
queryWrapper.between(ScrSecurity::getHappenTime,
scrSecurityParam.getStartDate(), scrSecurityParam.getEndDate());
}
// 其他查询条件保持不变
if (ObjectUtil.isNotEmpty(scrSecurityParam.getEventType())) {
queryWrapper.eq(ScrSecurity::getEventType, scrSecurityParam.getEventType());
}
}
queryWrapper.orderByDesc(ScrSecurity::getHappenTime);
return this.list(queryWrapper);
}
}

View File

@ -0,0 +1,148 @@
/*
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.scrworktask.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.scrworktask.param.ScrWorkTaskParam;
import vip.xiaonuo.modular.scrworktask.service.ScrWorkTaskService;
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-13 17:49:44
*/
@RestController
public class ScrWorkTaskController {
@Resource
private ScrWorkTaskService scrWorkTaskService;
/**
* 查询作业票
*
* @author 1
* @date 2025-10-13 17:49:44
*/
@Permission
@GetMapping("/scrWorkTask/page")
@BusinessLog(title = "作业票_查询", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData page(ScrWorkTaskParam scrWorkTaskParam) {
return new SuccessResponseData(scrWorkTaskService.page(scrWorkTaskParam));
}
/**
* 添加作业票
*
* @author 1
* @date 2025-10-13 17:49:44
*/
@Permission
@PostMapping("/scrWorkTask/add")
@BusinessLog(title = "作业票_增加", opType = LogAnnotionOpTypeEnum.ADD)
public ResponseData add(@RequestBody @Validated(ScrWorkTaskParam.add.class) ScrWorkTaskParam scrWorkTaskParam) {
scrWorkTaskService.add(scrWorkTaskParam);
return new SuccessResponseData();
}
/**
* 删除作业票可批量删除
*
* @author 1
* @date 2025-10-13 17:49:44
*/
@Permission
@PostMapping("/scrWorkTask/delete")
@BusinessLog(title = "作业票_删除", opType = LogAnnotionOpTypeEnum.DELETE)
public ResponseData delete(@RequestBody @Validated(ScrWorkTaskParam.delete.class) List<ScrWorkTaskParam> scrWorkTaskParamList) {
scrWorkTaskService.delete(scrWorkTaskParamList);
return new SuccessResponseData();
}
/**
* 编辑作业票
*
* @author 1
* @date 2025-10-13 17:49:44
*/
@Permission
@PostMapping("/scrWorkTask/edit")
@BusinessLog(title = "作业票_编辑", opType = LogAnnotionOpTypeEnum.EDIT)
public ResponseData edit(@RequestBody @Validated(ScrWorkTaskParam.edit.class) ScrWorkTaskParam scrWorkTaskParam) {
scrWorkTaskService.edit(scrWorkTaskParam);
return new SuccessResponseData();
}
/**
* 查看作业票
*
* @author 1
* @date 2025-10-13 17:49:44
*/
@Permission
@GetMapping("/scrWorkTask/detail")
@BusinessLog(title = "作业票_查看", opType = LogAnnotionOpTypeEnum.DETAIL)
public ResponseData detail(@Validated(ScrWorkTaskParam.detail.class) ScrWorkTaskParam scrWorkTaskParam) {
return new SuccessResponseData(scrWorkTaskService.detail(scrWorkTaskParam));
}
/**
* 作业票列表
*
* @author 1
* @date 2025-10-13 17:49:44
*/
@Permission
@GetMapping("/scrWorkTask/list")
@BusinessLog(title = "作业票_列表", opType = LogAnnotionOpTypeEnum.QUERY)
public ResponseData list(ScrWorkTaskParam scrWorkTaskParam) {
return new SuccessResponseData(scrWorkTaskService.list(scrWorkTaskParam));
}
/**
* 导出系统用户
*
* @author 1
* @date 2025-10-13 17:49:44
*/
@Permission
@GetMapping("/scrWorkTask/export")
@BusinessLog(title = "作业票_导出", opType = LogAnnotionOpTypeEnum.EXPORT)
public void export(ScrWorkTaskParam scrWorkTaskParam) {
scrWorkTaskService.export(scrWorkTaskParam);
}
}

View File

@ -0,0 +1,75 @@
/*
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.scrworktask.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-13 17:49:44
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("scr_work_task")
public class ScrWorkTask extends BaseEntity {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* 8大作业票
*/
@Excel(name = "8大作业票")
private String name;
/**
*
*/
@Excel(name = "")
private Integer year;
/**
* 月份
*/
@Excel(name = "月份")
private Integer month;
/**
* 数量
*/
@Excel(name = "数量")
private Integer totalNum;
}

View File

@ -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.scrworktask.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-13 17:49:44
*/
@ExpEnumType(module = SysExpEnumConstant.SNOWY_SYS_MODULE_EXP_CODE)
public enum ScrWorkTaskExceptionEnum implements AbstractBaseExceptionEnum {
/**
* 数据不存在
*/
NOT_EXIST(1, "此数据不存在");
private final Integer code;
private final String message;
ScrWorkTaskExceptionEnum(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;
}
}

View File

@ -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.scrworktask.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import vip.xiaonuo.modular.scrworktask.entity.ScrWorkTask;
/**
* 作业票
*
* @author 1
* @date 2025-10-13 17:49:44
*/
public interface ScrWorkTaskMapper extends BaseMapper<ScrWorkTask> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="vip.xiaonuo.modular.scrworktask.mapper.ScrWorkTaskMapper">
</mapper>

View File

@ -0,0 +1,72 @@
/*
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.scrworktask.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-13 17:49:44
*/
@Data
public class ScrWorkTaskParam extends BaseParam {
/**
* 主键
*/
@NotNull(message = "主键不能为空请检查id参数", groups = {edit.class, delete.class, detail.class})
private Long id;
/**
* 8大作业票
*/
@NotBlank(message = "8大作业票不能为空请检查name参数", groups = {add.class, edit.class})
private String name;
/**
*
*/
@NotNull(message = "年不能为空请检查year参数", groups = {add.class, edit.class})
private Integer year;
/**
* 月份
*/
@NotNull(message = "月份不能为空请检查month参数", groups = {add.class, edit.class})
private Integer month;
/**
* 数量
*/
@NotNull(message = "数量不能为空请检查totalNum参数", groups = {add.class, edit.class})
private Integer totalNum;
}

View File

@ -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.scrworktask.service;
import com.baomidou.mybatisplus.extension.service.IService;
import vip.xiaonuo.core.pojo.page.PageResult;
import vip.xiaonuo.modular.scrworktask.entity.ScrWorkTask;
import vip.xiaonuo.modular.scrworktask.param.ScrWorkTaskParam;
import java.util.List;
/**
* 作业票service接口
*
* @author 1
* @date 2025-10-13 17:49:44
*/
public interface ScrWorkTaskService extends IService<ScrWorkTask> {
/**
* 查询作业票
*
* @author 1
* @date 2025-10-13 17:49:44
*/
PageResult<ScrWorkTask> page(ScrWorkTaskParam scrWorkTaskParam);
/**
* 作业票列表
*
* @author 1
* @date 2025-10-13 17:49:44
*/
List<ScrWorkTask> list(ScrWorkTaskParam scrWorkTaskParam);
/**
* 添加作业票
*
* @author 1
* @date 2025-10-13 17:49:44
*/
void add(ScrWorkTaskParam scrWorkTaskParam);
/**
* 删除作业票
*
* @author 1
* @date 2025-10-13 17:49:44
*/
void delete(List<ScrWorkTaskParam> scrWorkTaskParamList);
/**
* 编辑作业票
*
* @author 1
* @date 2025-10-13 17:49:44
*/
void edit(ScrWorkTaskParam scrWorkTaskParam);
/**
* 查看作业票
*
* @author 1
* @date 2025-10-13 17:49:44
*/
ScrWorkTask detail(ScrWorkTaskParam scrWorkTaskParam);
/**
* 导出作业票
*
* @author 1
* @date 2025-10-13 17:49:44
*/
void export(ScrWorkTaskParam scrWorkTaskParam);
}

View File

@ -0,0 +1,132 @@
/*
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.scrworktask.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.scrworktask.entity.ScrWorkTask;
import vip.xiaonuo.modular.scrworktask.enums.ScrWorkTaskExceptionEnum;
import vip.xiaonuo.modular.scrworktask.mapper.ScrWorkTaskMapper;
import vip.xiaonuo.modular.scrworktask.param.ScrWorkTaskParam;
import vip.xiaonuo.modular.scrworktask.service.ScrWorkTaskService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* 作业票service接口实现类
*
* @author 1
* @date 2025-10-13 17:49:44
*/
@Service
public class ScrWorkTaskServiceImpl extends ServiceImpl<ScrWorkTaskMapper, ScrWorkTask> implements ScrWorkTaskService {
@Override
public PageResult<ScrWorkTask> page(ScrWorkTaskParam scrWorkTaskParam) {
QueryWrapper<ScrWorkTask> queryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotNull(scrWorkTaskParam)) {
// 根据8大作业票 查询
if (ObjectUtil.isNotEmpty(scrWorkTaskParam.getName())) {
queryWrapper.lambda().eq(ScrWorkTask::getName, scrWorkTaskParam.getName());
}
// 根据年 查询
if (ObjectUtil.isNotEmpty(scrWorkTaskParam.getYear())) {
queryWrapper.lambda().eq(ScrWorkTask::getYear, scrWorkTaskParam.getYear());
}
// 根据月份 查询
if (ObjectUtil.isNotEmpty(scrWorkTaskParam.getMonth())) {
queryWrapper.lambda().eq(ScrWorkTask::getMonth, scrWorkTaskParam.getMonth());
}
}
return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
}
@Override
public List<ScrWorkTask> list(ScrWorkTaskParam scrWorkTaskParam) {
return this.list();
}
@Override
public void add(ScrWorkTaskParam scrWorkTaskParam) {
ScrWorkTask scrWorkTask = new ScrWorkTask();
BeanUtil.copyProperties(scrWorkTaskParam, scrWorkTask);
this.save(scrWorkTask);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void delete(List<ScrWorkTaskParam> scrWorkTaskParamList) {
scrWorkTaskParamList.forEach(scrWorkTaskParam -> {
this.removeById(scrWorkTaskParam.getId());
});
}
@Transactional(rollbackFor = Exception.class)
@Override
public void edit(ScrWorkTaskParam scrWorkTaskParam) {
ScrWorkTask scrWorkTask = this.queryScrWorkTask(scrWorkTaskParam);
BeanUtil.copyProperties(scrWorkTaskParam, scrWorkTask);
this.updateById(scrWorkTask);
}
@Override
public ScrWorkTask detail(ScrWorkTaskParam scrWorkTaskParam) {
return this.queryScrWorkTask(scrWorkTaskParam);
}
/**
* 获取作业票
*
* @author 1
* @date 2025-10-13 17:49:44
*/
private ScrWorkTask queryScrWorkTask(ScrWorkTaskParam scrWorkTaskParam) {
ScrWorkTask scrWorkTask = this.getById(scrWorkTaskParam.getId());
if (ObjectUtil.isNull(scrWorkTask)) {
throw new ServiceException(ScrWorkTaskExceptionEnum.NOT_EXIST);
}
return scrWorkTask;
}
@Override
public void export(ScrWorkTaskParam scrWorkTaskParam) {
List<ScrWorkTask> list = this.list(scrWorkTaskParam);
PoiUtil.exportExcelWithStream("SnowyScrWorkTask.xls", ScrWorkTask.class, list);
}
}