main #1
| @ -67,6 +67,12 @@ public interface SpringSecurityConstant { | ||||
|             "/captcha/**", | ||||
|             "/getCaptchaOpen", | ||||
| 
 | ||||
|             //大屏的 | ||||
|             "/scrProduction/driQuery", | ||||
|             "/scrSecurity/driQuery", | ||||
|             "/scrProduction/driQhQuery", | ||||
|             "/scrProduction/driMaterQuery" | ||||
| 
 | ||||
|     }; | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -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); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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> { | ||||
| } | ||||
| @ -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> | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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> { | ||||
| } | ||||
| @ -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> | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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> { | ||||
| } | ||||
| @ -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> | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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)); | ||||
|     } | ||||
| } | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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> { | ||||
| } | ||||
| @ -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> | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
| } | ||||
| @ -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; | ||||
| } | ||||
| @ -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); | ||||
| } | ||||
| @ -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()); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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> { | ||||
| } | ||||
| @ -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> | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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> { | ||||
| } | ||||
| @ -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> | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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)); | ||||
|     } | ||||
| } | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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> { | ||||
| } | ||||
| @ -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> | ||||
| @ -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; | ||||
| } | ||||
| @ -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); | ||||
| } | ||||
| @ -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); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -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> { | ||||
| } | ||||
| @ -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> | ||||
| @ -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; | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
| 
 | ||||
| } | ||||
| @ -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); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user