523096025 6 kuukautta sitten
vanhempi
commit
e5444d7150
45 muutettua tiedostoa jossa 1948 lisäystä ja 54 poistoa
  1. 28 0
      get-data/src/main/java/com/huimv/getdata/configuration/SqlServerDialect.java
  2. 22 0
      get-data/src/main/java/com/huimv/getdata/configuration/UpperTableStrategy.java
  3. 30 0
      get-data/src/main/java/com/huimv/getdata/controller/DemoController.java
  4. 27 0
      get-data/src/main/java/com/huimv/getdata/dao/entity/WeightInformationEntity.java
  5. 10 0
      get-data/src/main/java/com/huimv/getdata/dao/repo/WeightInformationRepo.java
  6. 10 0
      get-data/src/main/java/com/huimv/getdata/service/IEggService.java
  7. 29 0
      get-data/src/main/java/com/huimv/getdata/service/impl/EggServiceImpl.java
  8. 36 0
      get-data/src/main/resources/application-prod.yml
  9. 2 0
      get-data/src/main/resources/application.properties
  10. 20 0
      huimv-farm/src/main/java/vip/xiaonuo/core/config/BaseConfigure.java
  11. 128 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/controller/HrBaseDepartmentController.java
  12. 70 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/entity/HrBaseDepartment.java
  13. 34 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/enums/HrBaseDepartmentEnum.java
  14. 26 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/mapper/HrBaseDepartmentMapper.java
  15. 5 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/mapper/mapping/HrBaseDepartmentMapper.xml
  16. 42 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/param/HrBaseDepartmentAddParam.java
  17. 47 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/param/HrBaseDepartmentEditParam.java
  18. 35 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/param/HrBaseDepartmentIdParam.java
  19. 51 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/param/HrBaseDepartmentPageParam.java
  20. 80 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/service/HrBaseDepartmentService.java
  21. 95 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/service/impl/HrBaseDepartmentServiceImpl.java
  22. 150 41
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/controller/HrBaseEmployeeInfoController.java
  23. 5 5
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/HrBaseEmployeeInfo.java
  24. 16 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/vo/CountNum.java
  25. 31 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/vo/CountPerson.java
  26. 30 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/vo/EoucationVo.java
  27. 14 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/vo/PerNum.java
  28. 19 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/mapper/HrBaseEmployeeInfoMapper.java
  29. 96 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/mapper/mapping/HrBaseEmployeeInfoMapper.xml
  30. 21 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/param/EmployeeInfoEoucation.java
  31. 4 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/param/HrBaseEmployeeInfoEditParam.java
  32. 21 4
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/service/HrBaseEmployeeInfoService.java
  33. 107 4
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/service/impl/HrBaseEmployeeInfoServiceImpl.java
  34. 96 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/controller/HrCountController.java
  35. 79 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/entity/HrCount.java
  36. 34 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/enums/HrCountEnum.java
  37. 25 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/mapper/HrCountMapper.java
  38. 5 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/mapper/mapping/HrCountMapper.xml
  39. 50 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/param/HrCountAddParam.java
  40. 55 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/param/HrCountEditParam.java
  41. 35 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/param/HrCountIdParam.java
  42. 51 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/param/HrCountPageParam.java
  43. 80 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/service/HrCountService.java
  44. 94 0
      huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/service/impl/HrCountServiceImpl.java
  45. 3 0
      pom.xml

+ 28 - 0
get-data/src/main/java/com/huimv/getdata/configuration/SqlServerDialect.java

@@ -0,0 +1,28 @@
+package com.huimv.getdata.configuration;
+
+import org.hibernate.dialect.SQLServer2012Dialect;
+import org.hibernate.type.StandardBasicTypes;
+
+import java.sql.Types;
+
+/**
+ * @Project : huimv
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+public class SqlServerDialect extends SQLServer2012Dialect {
+    /**
+     * 设置sql server 数据库方言转换
+     */
+    public SqlServerDialect() {
+        registerHibernateType(Types.NCHAR, StandardBasicTypes.CHARACTER.getName());
+        registerHibernateType(Types.NCHAR, 1, StandardBasicTypes.CHARACTER.getName());
+        registerHibernateType(Types.NCHAR, 255, StandardBasicTypes.STRING.getName());
+        registerHibernateType(Types.NVARCHAR, StandardBasicTypes.STRING.getName());
+        registerHibernateType(Types.LONGNVARCHAR, StandardBasicTypes.TEXT.getName());
+        registerHibernateType(Types.NCLOB, StandardBasicTypes.CLOB.getName());
+    }
+}

+ 22 - 0
get-data/src/main/java/com/huimv/getdata/configuration/UpperTableStrategy.java

@@ -0,0 +1,22 @@
+package com.huimv.getdata.configuration;
+
+import org.hibernate.boot.model.naming.Identifier;
+import org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl;
+import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+public class UpperTableStrategy extends PhysicalNamingStrategyStandardImpl {
+    @Override
+    public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
+        // 将表名全部转换成大写
+        String tableName = name.getText().toUpperCase();
+        return Identifier.toIdentifier(tableName);
+    }
+}

+ 30 - 0
get-data/src/main/java/com/huimv/getdata/controller/DemoController.java

@@ -0,0 +1,30 @@
+package com.huimv.getdata.controller;
+
+import com.huimv.getdata.dao.entity.WeightInformationEntity;
+import com.huimv.getdata.dao.repo.WeightInformationRepo;
+import com.huimv.getdata.service.IEggService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@CrossOrigin
+@RequestMapping(value = "/test")
+public class DemoController {
+    @Autowired
+    private IEggService iEggService;
+
+    @RequestMapping(value = "/test",method = RequestMethod.GET)
+    public List<WeightInformationEntity> saveDemo(){
+       return iEggService.findAll();
+    }
+}

+ 27 - 0
get-data/src/main/java/com/huimv/getdata/dao/entity/WeightInformationEntity.java

@@ -0,0 +1,27 @@
+package com.huimv.getdata.dao.entity;
+
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+@Entity
+@Table(name = "zc_jh_VisitRecord")
+@Data
+@Accessors(chain = true)
+public class WeightInformationEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @Column(name = "FID", nullable = false)
+    private Long fid;
+
+
+
+}

+ 10 - 0
get-data/src/main/java/com/huimv/getdata/dao/repo/WeightInformationRepo.java

@@ -0,0 +1,10 @@
+package com.huimv.getdata.dao.repo;
+
+
+import com.huimv.getdata.dao.entity.WeightInformationEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+public interface WeightInformationRepo extends JpaRepository<WeightInformationEntity, String>, JpaSpecificationExecutor<WeightInformationEntity> {
+
+}

+ 10 - 0
get-data/src/main/java/com/huimv/getdata/service/IEggService.java

@@ -0,0 +1,10 @@
+package com.huimv.getdata.service;
+
+import com.huimv.getdata.dao.entity.WeightInformationEntity;
+
+import java.util.List;
+
+public interface IEggService {
+
+    List<WeightInformationEntity> findAll();
+}

+ 29 - 0
get-data/src/main/java/com/huimv/getdata/service/impl/EggServiceImpl.java

@@ -0,0 +1,29 @@
+package com.huimv.getdata.service.impl;
+
+import com.huimv.getdata.dao.entity.WeightInformationEntity;
+import com.huimv.getdata.dao.repo.WeightInformationRepo;
+import com.huimv.getdata.service.IEggService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Service
+public class EggServiceImpl implements IEggService  {
+    @Autowired
+    private WeightInformationRepo weightInformationRepo;
+
+    @Override
+    public List<WeightInformationEntity> findAll() {
+       return weightInformationRepo.findAll();
+    }
+}

+ 36 - 0
get-data/src/main/resources/application-prod.yml

@@ -0,0 +1,36 @@
+server:
+  port: 9200
+spring:
+  application:
+    name: huimv-getdata
+  datasource:
+#    url: jdbc:sqlserver://localhost:1433;DatabaseName=master
+    url: jdbc:sqlserver://localhost:1433;DatabaseName=AIS20211202120009
+    username: garden
+    password: Hy@2024!
+    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+    maxActive: 20
+    initialSize: 1
+    maxWait: 60000
+    minIdle: 1
+    timeBetweenEvictionRunsMillis: 60000
+    minEvictableIdleTimeMillis: 300000
+    validationQuery: select 1
+    testWhileIdle: true
+    testOnBorrow: true
+    testOnReturn: true
+    poolPreparedStatements: true
+    maxOpenPreparedStatements: 20
+    hikari:
+      maximum-pool-size: 10
+      minimum-idle: 6
+
+  jpa:
+    show-sql: true
+    properties:
+      hibernate:
+        dialect: org.hibernate.dialect.SQLServerDialect
+        default_schema: dbo
+    hibernate:
+      naming:
+        physical-strategy: com.huimv.getdata.configuration.UpperTableStrategy

+ 2 - 0
get-data/src/main/resources/application.properties

@@ -0,0 +1,2 @@
+#spring.profiles.active=test
+spring.profiles.active=prod

+ 20 - 0
huimv-farm/src/main/java/vip/xiaonuo/core/config/BaseConfigure.java

@@ -87,6 +87,26 @@ public class BaseConfigure {
     }
 
 
+    @Bean(value = "hrDocApi")
+    public Docket hrDocApi() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(new ApiInfoBuilder()
+                        .title("人员模块H")
+                        .description("人员模块")
+                        .termsOfServiceUrl("https://www.baiduc.com")
+                        .contact(new Contact("SNOWY_TEAM","https://www.baiduc.com", "xuyuxiang29@foxmail.com"))
+                        .version("2.0.0")
+                        .build())
+                .globalResponseMessage(RequestMethod.GET, CommonResult.responseList())
+                .globalResponseMessage(RequestMethod.POST, CommonResult.responseList())
+                .groupName("人员模块")
+                .select()
+                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+                .apis(RequestHandlerSelectors.basePackage("vip.xiaonuo.hr"))
+                .paths(PathSelectors.any())
+                .build().extensions(openApiExtensionResolver.buildExtensions("人员模块"));
+    }
+
 
 
 }

+ 128 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/controller/HrBaseDepartmentController.java

@@ -0,0 +1,128 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.basedepartment.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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 org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.hr.modular.basedepartment.entity.HrBaseDepartment;
+import vip.xiaonuo.hr.modular.basedepartment.param.HrBaseDepartmentAddParam;
+import vip.xiaonuo.hr.modular.basedepartment.param.HrBaseDepartmentEditParam;
+import vip.xiaonuo.hr.modular.basedepartment.param.HrBaseDepartmentIdParam;
+import vip.xiaonuo.hr.modular.basedepartment.param.HrBaseDepartmentPageParam;
+import vip.xiaonuo.hr.modular.basedepartment.service.HrBaseDepartmentService;
+
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * 人员部门控制器
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ */
+@Api(tags = "人员部门控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class HrBaseDepartmentController {
+
+    @Resource
+    private HrBaseDepartmentService hrBaseDepartmentService;
+
+    /**
+     * 获取人员部门分页
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取人员部门分页")
+    @GetMapping("/biz/basedepartment/page")
+    public CommonResult<Page<HrBaseDepartment>> page(HrBaseDepartmentPageParam hrBaseDepartmentPageParam) {
+        return CommonResult.data(hrBaseDepartmentService.page(hrBaseDepartmentPageParam));
+    }
+
+    /**
+     * 添加人员部门
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加人员部门")
+    @CommonLog("添加人员部门")
+    @PostMapping("/biz/basedepartment/add")
+    public CommonResult<String> add(@RequestBody @Valid HrBaseDepartmentAddParam hrBaseDepartmentAddParam) {
+        hrBaseDepartmentService.add(hrBaseDepartmentAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑人员部门
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑人员部门")
+    @CommonLog("编辑人员部门")
+    @PostMapping("/biz/basedepartment/edit")
+    public CommonResult<String> edit(@RequestBody @Valid HrBaseDepartmentEditParam hrBaseDepartmentEditParam) {
+        hrBaseDepartmentService.edit(hrBaseDepartmentEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除人员部门
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除人员部门")
+    @CommonLog("删除人员部门")
+    @PostMapping("/biz/basedepartment/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                               CommonValidList<HrBaseDepartmentIdParam> hrBaseDepartmentIdParamList) {
+        hrBaseDepartmentService.delete(hrBaseDepartmentIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取人员部门详情
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取人员部门详情")
+    @GetMapping("/biz/basedepartment/detail")
+    public CommonResult<HrBaseDepartment> detail(@Valid HrBaseDepartmentIdParam hrBaseDepartmentIdParam) {
+        return CommonResult.data(hrBaseDepartmentService.detail(hrBaseDepartmentIdParam));
+    }
+}

+ 70 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/entity/HrBaseDepartment.java

@@ -0,0 +1,70 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.basedepartment.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.util.Date;
+
+/**
+ * 人员部门实体
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Getter
+@Setter
+@TableName("hr_base_department")
+public class HrBaseDepartment {
+
+    /** ID */
+    @TableId
+    @ApiModelProperty(value = "ID", position = 1)
+    private String id;
+
+    /** 父id */
+    @ApiModelProperty(value = "父id", position = 2)
+    private String orgId;
+
+    /** 名称 */
+    @ApiModelProperty(value = "名称", position = 3)
+    private String name;
+
+    /** 删除标志 */
+    @ApiModelProperty(value = "删除标志", position = 4)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 5)
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 创建用户 */
+    @ApiModelProperty(value = "创建用户", position = 6)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 7)
+    @TableField(fill = FieldFill.UPDATE)
+    private Date updateTime;
+
+    /** 修改用户 */
+    @ApiModelProperty(value = "修改用户", position = 8)
+    @TableField(fill = FieldFill.UPDATE)
+    private String updateUser;
+}

+ 34 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/enums/HrBaseDepartmentEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.basedepartment.enums;
+
+import lombok.Getter;
+
+/**
+ * 人员部门枚举
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Getter
+public enum HrBaseDepartmentEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    HrBaseDepartmentEnum(String value) {
+        this.value = value;
+    }
+}

+ 26 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/mapper/HrBaseDepartmentMapper.java

@@ -0,0 +1,26 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.basedepartment.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.hr.modular.basedepartment.entity.HrBaseDepartment;
+
+
+/**
+ * 人员部门Mapper接口
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+public interface HrBaseDepartmentMapper extends BaseMapper<HrBaseDepartment> {
+}

+ 5 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/mapper/mapping/HrBaseDepartmentMapper.xml

@@ -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.hr.modular.basedepartment.mapper.HrBaseDepartmentMapper">
+
+</mapper>

+ 42 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/param/HrBaseDepartmentAddParam.java

@@ -0,0 +1,42 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.basedepartment.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 人员部门添加参数
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Getter
+@Setter
+public class HrBaseDepartmentAddParam {
+
+    /** 父id */
+    @ApiModelProperty(value = "父id", position = 2)
+    private String orgId;
+
+    /** 名称 */
+    @ApiModelProperty(value = "名称", position = 3)
+    private String name;
+
+}

+ 47 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/param/HrBaseDepartmentEditParam.java

@@ -0,0 +1,47 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.basedepartment.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 人员部门编辑参数
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Getter
+@Setter
+public class HrBaseDepartmentEditParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true, position = 1)
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /** 父id */
+    @ApiModelProperty(value = "父id", position = 2)
+    private String orgId;
+
+    /** 名称 */
+    @ApiModelProperty(value = "名称", position = 3)
+    private String name;
+
+}

+ 35 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/param/HrBaseDepartmentIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.basedepartment.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 人员部门Id参数
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Getter
+@Setter
+public class HrBaseDepartmentIdParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true)
+    @NotBlank(message = "id不能为空")
+    private String id;
+}

+ 51 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/param/HrBaseDepartmentPageParam.java

@@ -0,0 +1,51 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.basedepartment.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 人员部门查询参数
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Getter
+@Setter
+public class HrBaseDepartmentPageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+}

+ 80 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/service/HrBaseDepartmentService.java

@@ -0,0 +1,80 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.basedepartment.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.hr.modular.basedepartment.entity.HrBaseDepartment;
+import vip.xiaonuo.hr.modular.basedepartment.param.HrBaseDepartmentAddParam;
+import vip.xiaonuo.hr.modular.basedepartment.param.HrBaseDepartmentEditParam;
+import vip.xiaonuo.hr.modular.basedepartment.param.HrBaseDepartmentIdParam;
+import vip.xiaonuo.hr.modular.basedepartment.param.HrBaseDepartmentPageParam;
+
+import java.util.List;
+
+/**
+ * 人员部门Service接口
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+public interface HrBaseDepartmentService extends IService<HrBaseDepartment> {
+
+    /**
+     * 获取人员部门分页
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    Page<HrBaseDepartment> page(HrBaseDepartmentPageParam hrBaseDepartmentPageParam);
+
+    /**
+     * 添加人员部门
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    void add(HrBaseDepartmentAddParam hrBaseDepartmentAddParam);
+
+    /**
+     * 编辑人员部门
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    void edit(HrBaseDepartmentEditParam hrBaseDepartmentEditParam);
+
+    /**
+     * 删除人员部门
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    void delete(List<HrBaseDepartmentIdParam> hrBaseDepartmentIdParamList);
+
+    /**
+     * 获取人员部门详情
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    HrBaseDepartment detail(HrBaseDepartmentIdParam hrBaseDepartmentIdParam);
+
+    /**
+     * 获取人员部门详情
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     **/
+    HrBaseDepartment queryEntity(String id);
+}

+ 95 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/basedepartment/service/impl/HrBaseDepartmentServiceImpl.java

@@ -0,0 +1,95 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.basedepartment.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.hr.modular.basedepartment.entity.HrBaseDepartment;
+import vip.xiaonuo.hr.modular.basedepartment.mapper.HrBaseDepartmentMapper;
+import vip.xiaonuo.hr.modular.basedepartment.param.HrBaseDepartmentAddParam;
+import vip.xiaonuo.hr.modular.basedepartment.param.HrBaseDepartmentEditParam;
+import vip.xiaonuo.hr.modular.basedepartment.param.HrBaseDepartmentIdParam;
+import vip.xiaonuo.hr.modular.basedepartment.param.HrBaseDepartmentPageParam;
+import vip.xiaonuo.hr.modular.basedepartment.service.HrBaseDepartmentService;
+
+
+import java.util.List;
+
+/**
+ * 人员部门Service接口实现类
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Service
+public class HrBaseDepartmentServiceImpl extends ServiceImpl<HrBaseDepartmentMapper, HrBaseDepartment> implements HrBaseDepartmentService {
+
+    @Override
+    public Page<HrBaseDepartment> page(HrBaseDepartmentPageParam hrBaseDepartmentPageParam) {
+        QueryWrapper<HrBaseDepartment> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isAllNotEmpty(hrBaseDepartmentPageParam.getSortField(), hrBaseDepartmentPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(hrBaseDepartmentPageParam.getSortOrder());
+            queryWrapper.orderBy(true, hrBaseDepartmentPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(hrBaseDepartmentPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(HrBaseDepartment::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(HrBaseDepartmentAddParam hrBaseDepartmentAddParam) {
+        HrBaseDepartment hrBaseDepartment = BeanUtil.toBean(hrBaseDepartmentAddParam, HrBaseDepartment.class);
+        this.save(hrBaseDepartment);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(HrBaseDepartmentEditParam hrBaseDepartmentEditParam) {
+        HrBaseDepartment hrBaseDepartment = this.queryEntity(hrBaseDepartmentEditParam.getId());
+        BeanUtil.copyProperties(hrBaseDepartmentEditParam, hrBaseDepartment);
+        this.updateById(hrBaseDepartment);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<HrBaseDepartmentIdParam> hrBaseDepartmentIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(hrBaseDepartmentIdParamList, HrBaseDepartmentIdParam::getId));
+    }
+
+    @Override
+    public HrBaseDepartment detail(HrBaseDepartmentIdParam hrBaseDepartmentIdParam) {
+        return this.queryEntity(hrBaseDepartmentIdParam.getId());
+    }
+
+    @Override
+    public HrBaseDepartment queryEntity(String id) {
+        HrBaseDepartment hrBaseDepartment = this.getById(id);
+        if(ObjectUtil.isEmpty(hrBaseDepartment)) {
+            throw new CommonException("人员部门不存在,id值为:{}", id);
+        }
+        return hrBaseDepartment;
+    }
+}

+ 150 - 41
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/controller/HrBaseEmployeeInfoController.java

@@ -12,7 +12,7 @@
  */
 package vip.xiaonuo.hr.modular.baseemployeeinfo.controller;
 
-import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
@@ -27,15 +27,18 @@ import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonValidList;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.HrBaseEmployeeInfo;
-import vip.xiaonuo.hr.modular.baseemployeeinfo.param.HrBaseEmployeeInfoAddParam;
-import vip.xiaonuo.hr.modular.baseemployeeinfo.param.HrBaseEmployeeInfoEditParam;
-import vip.xiaonuo.hr.modular.baseemployeeinfo.param.HrBaseEmployeeInfoIdParam;
-import vip.xiaonuo.hr.modular.baseemployeeinfo.param.HrBaseEmployeeInfoPageParam;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.CountPerson;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.EoucationVo;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.CountNum;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.PerNum;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.param.*;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.service.HrBaseEmployeeInfoService;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import javax.validation.constraints.NotEmpty;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 人员明细控制器
@@ -52,62 +55,34 @@ public class HrBaseEmployeeInfoController {
     @Resource
     private HrBaseEmployeeInfoService hrBaseEmployeeInfoService;
 
-    /**
-     * 获取人员明细分页
-     *
-     * @author 余
-     * @date  2024/11/14 15:02
-     */
     @ApiOperationSupport(order = 1)
     @ApiOperation("获取人员明细分页")
-    @SaCheckPermission("/hr/baseemployeeinfo/page")
     @GetMapping("/hr/baseemployeeinfo/page")
     public CommonResult<Page<HrBaseEmployeeInfo>> page(HrBaseEmployeeInfoPageParam hrBaseEmployeeInfoPageParam) {
         return CommonResult.data(hrBaseEmployeeInfoService.page(hrBaseEmployeeInfoPageParam));
     }
 
-    /**
-     * 添加人员明细
-     *
-     * @author 余
-     * @date  2024/11/14 15:02
-     */
     @ApiOperationSupport(order = 2)
     @ApiOperation("添加人员明细")
     @CommonLog("添加人员明细")
-    @SaCheckPermission("/hr/baseemployeeinfo/add")
     @PostMapping("/hr/baseemployeeinfo/add")
     public CommonResult<String> add(@RequestBody @Valid HrBaseEmployeeInfoAddParam hrBaseEmployeeInfoAddParam) {
         hrBaseEmployeeInfoService.add(hrBaseEmployeeInfoAddParam);
         return CommonResult.ok();
     }
 
-    /**
-     * 编辑人员明细
-     *
-     * @author 余
-     * @date  2024/11/14 15:02
-     */
     @ApiOperationSupport(order = 3)
     @ApiOperation("编辑人员明细")
     @CommonLog("编辑人员明细")
-    @SaCheckPermission("/hr/baseemployeeinfo/edit")
     @PostMapping("/hr/baseemployeeinfo/edit")
     public CommonResult<String> edit(@RequestBody @Valid HrBaseEmployeeInfoEditParam hrBaseEmployeeInfoEditParam) {
         hrBaseEmployeeInfoService.edit(hrBaseEmployeeInfoEditParam);
         return CommonResult.ok();
     }
 
-    /**
-     * 删除人员明细
-     *
-     * @author 余
-     * @date  2024/11/14 15:02
-     */
     @ApiOperationSupport(order = 4)
     @ApiOperation("删除人员明细")
     @CommonLog("删除人员明细")
-    @SaCheckPermission("/hr/baseemployeeinfo/delete")
     @PostMapping("/hr/baseemployeeinfo/delete")
     public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
                                                    CommonValidList<HrBaseEmployeeInfoIdParam> hrBaseEmployeeInfoIdParamList) {
@@ -115,17 +90,151 @@ public class HrBaseEmployeeInfoController {
         return CommonResult.ok();
     }
 
-    /**
-     * 获取人员明细详情
-     *
-     * @author 余
-     * @date  2024/11/14 15:02
-     */
-    @ApiOperationSupport(order = 5)
+
     @ApiOperation("获取人员明细详情")
-    @SaCheckPermission("/hr/baseemployeeinfo/detail")
     @GetMapping("/hr/baseemployeeinfo/detail")
     public CommonResult<HrBaseEmployeeInfo> detail(@Valid HrBaseEmployeeInfoIdParam hrBaseEmployeeInfoIdParam) {
         return CommonResult.data(hrBaseEmployeeInfoService.detail(hrBaseEmployeeInfoIdParam));
     }
+
+
+    @ApiOperation("部门本科及以上学历")
+    @GetMapping("/hr/baseemployeeinfo/listByEoucation")
+    public CommonResult<List<EoucationVo>> listByEoucation(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        return CommonResult.data(hrBaseEmployeeInfoService.listByEoucation(employeeInfoEoucation));
+    }
+
+    @ApiOperation("数量统计及退休人员")
+    @GetMapping("/hr/baseemployeeinfo/countPerson")
+    public CommonResult<CountPerson> countPerson(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        return CommonResult.data(hrBaseEmployeeInfoService.countPerson(employeeInfoEoucation));
+    }
+
+    @ApiOperation("历史总人数等")
+    @GetMapping("/hr/baseemployeeinfo/countNum")
+    public CommonResult<CountNum> countNum(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        QueryWrapper<HrBaseEmployeeInfo> mapper = new QueryWrapper<>();
+        CountNum countNum = new CountNum();
+
+        long historyNum = hrBaseEmployeeInfoService.count(mapper.eq("ORG_ID", employeeInfoEoucation.getOrgId()));
+        long jobNum = hrBaseEmployeeInfoService.count(mapper.eq("USER_TYPE",0));
+        long maleNum = hrBaseEmployeeInfoService.count(mapper.eq("GENDER",0));
+
+        countNum.setHistoryNum(historyNum);
+        countNum.setMaleNum(maleNum);
+        countNum.setFemaleNum(jobNum -maleNum);
+        countNum.setJobNum(jobNum);
+        return CommonResult.data(countNum);
+    }
+
+    @ApiOperation("部门人数统计")
+    @GetMapping("/hr/baseemployeeinfo/listByDepart")
+    public CommonResult<List<EoucationVo>> listByDepart(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        return CommonResult.data(hrBaseEmployeeInfoService.listByDepart(employeeInfoEoucation));
+    }
+    @ApiOperation("部门人数统计")
+    @GetMapping("/hr/baseemployeeinfo/listByDepartGender")
+    public CommonResult<List<EoucationVo>> listByDepartGender(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        return CommonResult.data(hrBaseEmployeeInfoService.listByDepartGender(employeeInfoEoucation));
+    }
+
+    @ApiOperation("年龄分布")
+    @GetMapping("/hr/baseemployeeinfo/ageDis")
+    public CommonResult<List<PerNum>> ageDis(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        String orgId = employeeInfoEoucation.getOrgId();
+        long age22 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 18,22));
+        long age30 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 23,30));
+        long age40 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 31,40));
+        long age45 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 41,45));
+        long age60 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 46,60));
+        long age61 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).ge("AGE", 60));
+        ArrayList<PerNum> perNums = new ArrayList<>();
+        perNums.add(new PerNum("18-22",age22));
+        perNums.add(new PerNum("23-30",age30));
+        perNums.add(new PerNum("31-40",age40));
+        perNums.add(new PerNum("41-45",age45));
+        perNums.add(new PerNum("46-60",age60));
+        perNums.add(new PerNum("60以上",age61));
+        return CommonResult.data(perNums);
+    }
+
+    @ApiOperation("性别分布")
+    @GetMapping("/hr/baseemployeeinfo/genderDis")
+    public CommonResult<List<PerNum>> genderDis(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        String orgId = employeeInfoEoucation.getOrgId();
+        long age22 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).eq("GENDER", 0));
+        long age30 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).eq("GENDER", 1));
+        ArrayList<PerNum> perNums = new ArrayList<>();
+        perNums.add(new PerNum("男性",age22));
+        perNums.add(new PerNum("女性",age30));
+        return CommonResult.data(perNums);
+    }
+
+    @ApiOperation("婚姻状况")
+    @GetMapping("/hr/baseemployeeinfo/marrDis")
+    public CommonResult<List<PerNum>> marrDis(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        String orgId = employeeInfoEoucation.getOrgId();
+        long age22 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).eq("MARRIAGE", 0));
+        long age30 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).eq("MARRIAGE", 1));
+        ArrayList<PerNum> perNums = new ArrayList<>();
+        perNums.add(new PerNum("未婚",age22));
+        perNums.add(new PerNum("已婚",age30));
+        return CommonResult.data(perNums);
+    }
+    @ApiOperation("民族分布")
+    @GetMapping("/hr/baseemployeeinfo/nationDis")
+    public CommonResult<List<PerNum>> nationDis(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        String orgId = employeeInfoEoucation.getOrgId();
+        long age22 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).eq("NATION", "汉族"));
+        long age30 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).ne("NATION", "汉族"));
+        ArrayList<PerNum> perNums = new ArrayList<>();
+        perNums.add(new PerNum("汉族",age22));
+        perNums.add(new PerNum("其他",age30));
+        return CommonResult.data(perNums);
+    }
+
+    @ApiOperation("学历分布")
+    @GetMapping("/hr/baseemployeeinfo/educationDis")
+    public CommonResult<List<PerNum>> educationDis(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        String orgId = employeeInfoEoucation.getOrgId();
+        long age22 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).eq("EDUCATION", 0));
+        long age2 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).eq("EDUCATION", 1));
+        long age3 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).eq("EDUCATION", 2));
+        long age4 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).eq("EDUCATION", 3));
+        long age5 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).eq("EDUCATION", 4));
+        long age6 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq("ORG_ID", orgId).eq("USER_TYPE",0).eq("EDUCATION", 5));
+
+        ArrayList<PerNum> perNums = new ArrayList<>();
+        perNums.add(new PerNum("小学",age22));
+        perNums.add(new PerNum("初中",age2));
+        perNums.add(new PerNum("高中",age3));
+        perNums.add(new PerNum("本科",age4));
+        perNums.add(new PerNum("研究生",age5));
+        perNums.add(new PerNum("博士研究生",age6));
+        return CommonResult.data(perNums);
+    }
+
+    @ApiOperation("部门学历分布")
+    @GetMapping("/hr/baseemployeeinfo/listByDepartGenderEducationDis")
+    public CommonResult<List<EoucationVo>> listByDepartGenderEducationDis(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        return CommonResult.data(hrBaseEmployeeInfoService.listByDepartGenderEducationDis(employeeInfoEoucation));
+    }
+
+    @ApiOperation("生日分布")
+    @GetMapping("/hr/baseemployeeinfo/birthDis")
+    public CommonResult<List<PerNum>> birthDis(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        return CommonResult.data(hrBaseEmployeeInfoService.birthDis(employeeInfoEoucation));
+    }
+
+    @ApiOperation("生日分布")
+    @GetMapping("/hr/baseemployeeinfo/siLingDis")
+    public CommonResult<List<PerNum>> siLingDis(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        return CommonResult.data(hrBaseEmployeeInfoService.siLingDis(employeeInfoEoucation));
+    }
+
+    @ApiOperation("生日分布")
+    @GetMapping("/hr/baseemployeeinfo/gongLingDis")
+    public CommonResult<List<PerNum>> gongLingDis(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+        return CommonResult.data(hrBaseEmployeeInfoService.gongLingDis(employeeInfoEoucation));
+    }
 }

+ 5 - 5
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/HrBaseEmployeeInfo.java

@@ -44,7 +44,7 @@ public class HrBaseEmployeeInfo {
     private String name;
 
     /** 性别 */
-    @ApiModelProperty(value = "性别", position = 4)
+    @ApiModelProperty(value = "性别 0男 1 女", position = 4)
     private String gender;
 
     /** 年龄 */
@@ -53,7 +53,7 @@ public class HrBaseEmployeeInfo {
 
     /** 出生日期 */
     @ApiModelProperty(value = "出生日期", position = 6)
-    private String birthday;
+    private Date birthday;
 
     /** 民族 */
     @ApiModelProperty(value = "民族", position = 7)
@@ -88,8 +88,8 @@ public class HrBaseEmployeeInfo {
     private String politicalOutlook;
 
     /** 学历 */
-    @ApiModelProperty(value = "学历", position = 15)
-    private String education;
+    @ApiModelProperty(value = "学历 0小学 1初中 2高中 3本科 4研究生", position = 15)
+    private int education;
 
     /** 手机 */
     @ApiModelProperty(value = "手机", position = 16)
@@ -97,7 +97,7 @@ public class HrBaseEmployeeInfo {
 
     /** 入职日期 */
     @ApiModelProperty(value = "入职日期", position = 17)
-    private String entryDate;
+    private Date entryDate;
 
     /** 机构id */
     @ApiModelProperty(value = "机构id", position = 18)

+ 16 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/vo/CountNum.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CountNum {
+    @ApiModelProperty(value = "历史总人数")
+    private Long historyNum;
+    @ApiModelProperty(value = "在职总人数")
+    private Long jobNum;
+    @ApiModelProperty(value = "男性总人数")
+    private Long maleNum;
+    @ApiModelProperty(value = "女性总人数")
+    private Long femaleNum;
+}

+ 31 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/vo/CountPerson.java

@@ -0,0 +1,31 @@
+package vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.HrBaseEmployeeInfo;
+
+import java.util.List;
+
+@Data
+public class CountPerson {
+    @ApiModelProperty(value = "总人数")
+    private Long countNum;
+    @ApiModelProperty(value = "男性")
+    private Long maleNum;
+    @ApiModelProperty(value = "女性")
+    private Long femaleNum;
+    @ApiModelProperty(value = "即将到职")
+    private Long dutyNum;
+    @ApiModelProperty(value = "退休")
+    private int retireNum;
+    @ApiModelProperty(value = "退休返聘")
+    private Long retireAndDutyNum;
+
+    @ApiModelProperty(value = "即将退休名单")
+    private List<HrBaseEmployeeInfo> retirePersonList;
+
+    @ApiModelProperty(value = "即将退休人员")
+    private List<EoucationVo> retirePersonNum;
+
+
+}

+ 30 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/vo/EoucationVo.java

@@ -0,0 +1,30 @@
+package vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class EoucationVo {
+    @ApiModelProperty(value = "部门名称")
+    private String departmentName;
+    @ApiModelProperty(value = "人数")
+    private int  countNum;
+    @ApiModelProperty(value = "男性人数")
+    private int  maleNum;
+    @ApiModelProperty(value = "女性人数")
+    private int  femaleNum;
+
+    @ApiModelProperty(value = "小学")
+    private int  priNum;
+    @ApiModelProperty(value = "初中")
+    private int  midNum;
+    @ApiModelProperty(value = "高中")
+    private int  highNum;
+    @ApiModelProperty(value = "本科")
+    private int  underNum;
+    @ApiModelProperty(value = "研究生")
+    private int  postNum;
+    @ApiModelProperty(value = "博士研究生")
+    private int phdNum;
+
+}

+ 14 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/entity/vo/PerNum.java

@@ -0,0 +1,14 @@
+package vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class PerNum {
+    private String name;
+    private long vlue;
+
+    public PerNum(String name, long vlue) {
+        this.name = name;
+        this.vlue = vlue;
+    }
+}

+ 19 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/mapper/HrBaseEmployeeInfoMapper.java

@@ -13,7 +13,13 @@
 package vip.xiaonuo.hr.modular.baseemployeeinfo.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Param;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.HrBaseEmployeeInfo;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.EoucationVo;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.PerNum;
+
+import java.util.List;
 
 /**
  * 人员明细Mapper接口
@@ -22,4 +28,17 @@ import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.HrBaseEmployeeInfo;
  * @date  2024/11/14 15:02
  **/
 public interface HrBaseEmployeeInfoMapper extends BaseMapper<HrBaseEmployeeInfo> {
+    List<EoucationVo> listByEoucation(@Param("orgId") String orgId);
+
+    List<EoucationVo> listByDepart(@Param("orgId") String orgId);
+
+    List<EoucationVo> listByDepartGender(@Param("orgId")String orgId);
+
+    List<EoucationVo> listByDepartGenderEducationDis(@Param("orgId") String orgId);
+
+    List<PerNum> birthDis(@Param("orgId")String orgId);
+
+    List<PerNum> siLingDis( @Param("orgId") String orgId);
+
+    List<PerNum> gongLingDis( @Param("orgId")String orgId);
 }

+ 96 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/mapper/mapping/HrBaseEmployeeInfoMapper.xml

@@ -2,4 +2,100 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="vip.xiaonuo.hr.modular.baseemployeeinfo.mapper.HrBaseEmployeeInfoMapper">
 
+    <select id="listByEoucation" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.EoucationVo">
+        SELECT b.NAME departmentName ,COUNT(a.ID)  countNum FROM `hr_base_employee_info` a JOIN `hr_base_department`  b ON a.DEPARTMENT_ID = b.ID
+        AND a.ORG_ID = ${orgId} AND a.USER_TYPE =0 AND a.EDUCATION >2  GROUP BY a.DEPARTMENT_ID
+
+    </select>
+    <select id="listByDepart" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.EoucationVo">
+        SELECT
+            b.NAME AS departmentName,
+            COUNT(a.ID) AS countNum
+        FROM
+            `hr_base_department` b
+        LEFT JOIN
+            `hr_base_employee_info` a
+        ON
+            b.ID = a.DEPARTMENT_ID AND a.ORG_ID = ${orgId} AND a.USER_TYPE = 0
+        GROUP BY
+    b.NAME;
+    </select>
+    <select id="listByDepartGender" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.EoucationVo">
+          SELECT
+
+           b.NAME AS departmentName ,SUM(CASE WHEN a.GENDER = 0 AND a.USER_TYPE = 0 THEN 1 ELSE 0 END) AS maleNum,
+        SUM(CASE WHEN a.GENDER = 1  AND a.USER_TYPE = 0 THEN 1 ELSE 0 END) AS femaleNum
+         FROM
+            `hr_base_department` b
+        LEFT JOIN
+    `hr_base_employee_info` a  ON a.DEPARTMENT_ID = b.ID  WHERE a.ORG_ID = ${orgId}   GROUP BY a.DEPARTMENT_ID
+    </select>
+    <select id="listByDepartGenderEducationDis"
+            resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.EoucationVo">
+SELECT
+            b.NAME AS departmentName ,
+
+         SUM(CASE WHEN a.EDUCATION = 0  THEN 1 ELSE 0 END) AS priNum,
+        SUM(CASE WHEN a.EDUCATION = 1  THEN 1 ELSE 0 END) AS midNum,
+        SUM(CASE WHEN a.EDUCATION = 2  THEN 1 ELSE 0 END) AS highNum,
+        SUM(CASE WHEN a.EDUCATION = 3  THEN 1 ELSE 0 END) AS underNum,
+        SUM(CASE WHEN a.EDUCATION = 4  THEN 1 ELSE 0 END) AS postNum,
+        SUM(CASE WHEN a.EDUCATION = 5  THEN 1 ELSE 0 END) AS phdNum
+        FROM
+            `hr_base_department` b
+        LEFT JOIN
+           `hr_base_employee_info` a
+        ON
+            b.ID = a.DEPARTMENT_ID AND a.ORG_ID = ${orgId} AND a.USER_TYPE = 0
+        GROUP BY
+    b.NAME;
+
+    </select>
+
+
+    <select id="birthDis" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.PerNum">
+
+
+SELECT
+    CONCAT(months.month_num,"月") AS `name`,
+    COUNT(b.BIRTHDAY) AS `value`
+FROM
+    (SELECT 1 AS month_num UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12) AS months
+LEFT JOIN
+    `hr_base_employee_info` b ON DATE_FORMAT(b.BIRTHDAY, '%m') = months.month_num AND b.ORG_ID = ${orgId} AND b.USER_TYPE = 0
+GROUP BY
+    months.month_num
+ORDER BY
+    months.month_num;
+
+
+    </select>
+    <select id="siLingDis" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.PerNum">
+
+    SELECT
+
+        SUM(CASE WHEN a.SI_LING BETWEEN 0 AND 1 THEN 1 ELSE 0 END) AS 1年,
+    SUM(CASE WHEN a.SI_LING BETWEEN 2 AND 5 THEN 1 ELSE 0 END) AS 5年,
+    SUM(CASE WHEN a.SI_LING BETWEEN 6 AND 10 THEN 1 ELSE 0 END) AS 10年,
+    SUM(CASE WHEN a.SI_LING BETWEEN 11 AND 15 THEN 1 ELSE 0 END) AS 15年,
+    SUM(CASE WHEN a.SI_LING BETWEEN 16 AND 20 THEN 1 ELSE 0 END) AS 20年,
+    SUM(CASE WHEN a.SI_LING BETWEEN 21 AND 25 THEN 1 ELSE 0 END) AS 25年,
+    SUM(CASE WHEN a.SI_LING  BETWEEN 26 AND 30 THEN 1 ELSE 0 END) AS 30年
+    FROM
+           `hr_base_employee_info` a
+          WHERE a.ORG_ID = ${orgId} AND a.USER_TYPE = 0
+
+    </select>
+    <select id="gongLingDis" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.PerNum">
+            SUM(CASE WHEN SENIORITY BETWEEN 0 AND 1 THEN 1 ELSE 0 END) AS 1年,
+    SUM(CASE WHEN SENIORITY BETWEEN 2 AND 5 THEN 1 ELSE 0 END) AS 5年,
+    SUM(CASE WHEN SENIORITY BETWEEN 6 AND 10 THEN 1 ELSE 0 END) AS 10年,
+    SUM(CASE WHEN SENIORITY BETWEEN 11 AND 15 THEN 1 ELSE 0 END) AS 15年,
+    SUM(CASE WHEN SENIORITY BETWEEN 16 AND 20 THEN 1 ELSE 0 END) AS 20年,
+    SUM(CASE WHEN SENIORITY BETWEEN 21 AND 25 THEN 1 ELSE 0 END) AS 25年,
+    SUM(CASE WHEN SENIORITY  BETWEEN 26 AND 30 THEN 1 ELSE 0 END) AS 30年
+    FROM
+           `hr_base_employee_info`
+          WHERE ORG_ID = ${orgId} AND USER_TYPE = 0
+    </select>
 </mapper>

+ 21 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/param/EmployeeInfoEoucation.java

@@ -0,0 +1,21 @@
+package vip.xiaonuo.hr.modular.baseemployeeinfo.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+@Getter
+@Setter
+public class EmployeeInfoEoucation {
+
+    private String orgId;
+
+    @ApiModelProperty(value = "年限 1一年内(默认) 2两年内 3三年内 4四年内 5五年内")
+    private int dateYear;
+
+    private Date startDate;
+
+    private Date endDate;
+}

+ 4 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/param/HrBaseEmployeeInfoEditParam.java

@@ -12,9 +12,12 @@
  */
 package vip.xiaonuo.hr.modular.baseemployeeinfo.param;
 
+import com.fhs.core.trans.anno.Trans;
+import com.fhs.core.trans.constant.TransType;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
+import vip.xiaonuo.sys.modular.user.entity.SysUser;
 
 import javax.validation.constraints.NotBlank;
 import java.util.Date;
@@ -100,6 +103,7 @@ public class HrBaseEmployeeInfoEditParam {
 
     /** 机构id */
     @ApiModelProperty(value = "机构id", position = 18)
+//    @Trans(type = TransType.SIMPLE, target = SysUser.class, fields = "name", alias = "manager", ref = "managerName")
     private String departmentId;
 
     /** 司龄 */

+ 21 - 4
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/service/HrBaseEmployeeInfoService.java

@@ -15,10 +15,10 @@ package vip.xiaonuo.hr.modular.baseemployeeinfo.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.HrBaseEmployeeInfo;
-import vip.xiaonuo.hr.modular.baseemployeeinfo.param.HrBaseEmployeeInfoAddParam;
-import vip.xiaonuo.hr.modular.baseemployeeinfo.param.HrBaseEmployeeInfoEditParam;
-import vip.xiaonuo.hr.modular.baseemployeeinfo.param.HrBaseEmployeeInfoIdParam;
-import vip.xiaonuo.hr.modular.baseemployeeinfo.param.HrBaseEmployeeInfoPageParam;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.CountPerson;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.EoucationVo;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.PerNum;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.param.*;
 
 import java.util.List;
 
@@ -77,4 +77,21 @@ public interface HrBaseEmployeeInfoService extends IService<HrBaseEmployeeInfo>
      * @date  2024/11/14 15:02
      **/
     HrBaseEmployeeInfo queryEntity(String id);
+
+
+    List<EoucationVo> listByEoucation(EmployeeInfoEoucation employeeInfoEoucation);
+
+    CountPerson countPerson(EmployeeInfoEoucation employeeInfoEoucation);
+
+    List<EoucationVo>  listByDepart(EmployeeInfoEoucation employeeInfoEoucation);
+
+    List<EoucationVo>  listByDepartGender(EmployeeInfoEoucation employeeInfoEoucation);
+
+    List<EoucationVo> listByDepartGenderEducationDis(EmployeeInfoEoucation employeeInfoEoucation);
+
+    List<PerNum> birthDis(EmployeeInfoEoucation employeeInfoEoucation);
+
+    List<PerNum> siLingDis(EmployeeInfoEoucation employeeInfoEoucation);
+
+    List<PerNum> gongLingDis(EmployeeInfoEoucation employeeInfoEoucation);
 }

+ 107 - 4
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/service/impl/HrBaseEmployeeInfoServiceImpl.java

@@ -14,25 +14,36 @@ package vip.xiaonuo.hr.modular.baseemployeeinfo.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.hr.modular.basedepartment.entity.HrBaseDepartment;
+import vip.xiaonuo.hr.modular.basedepartment.mapper.HrBaseDepartmentMapper;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.HrBaseEmployeeInfo;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.CountPerson;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.EoucationVo;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.PerNum;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.mapper.HrBaseEmployeeInfoMapper;
-import vip.xiaonuo.hr.modular.baseemployeeinfo.param.HrBaseEmployeeInfoAddParam;
-import vip.xiaonuo.hr.modular.baseemployeeinfo.param.HrBaseEmployeeInfoEditParam;
-import vip.xiaonuo.hr.modular.baseemployeeinfo.param.HrBaseEmployeeInfoIdParam;
-import vip.xiaonuo.hr.modular.baseemployeeinfo.param.HrBaseEmployeeInfoPageParam;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.param.*;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.service.HrBaseEmployeeInfoService;
+import vip.xiaonuo.purchase.entity.PurchaseContract;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 人员明细Service接口实现类
@@ -42,6 +53,11 @@ import java.util.List;
  **/
 @Service
 public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInfoMapper, HrBaseEmployeeInfo> implements HrBaseEmployeeInfoService {
+    @Autowired
+    private  HrBaseEmployeeInfoMapper hrBaseEmployeeInfoMapper;
+    @Autowired
+    private HrBaseDepartmentMapper hrBaseDepartmentMapper;
+
 
     @Override
     public Page<HrBaseEmployeeInfo> page(HrBaseEmployeeInfoPageParam hrBaseEmployeeInfoPageParam) {
@@ -91,4 +107,91 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
         }
         return hrBaseEmployeeInfo;
     }
+
+    @Override
+    public List<EoucationVo> listByEoucation(EmployeeInfoEoucation employeeInfoEoucation) {
+        return hrBaseEmployeeInfoMapper.listByEoucation(employeeInfoEoucation.getOrgId());
+    }
+
+    @Override
+    public CountPerson countPerson(EmployeeInfoEoucation employeeInfoEoucation) {
+        CountPerson countPerson = new CountPerson();
+        String orgId = employeeInfoEoucation.getOrgId();
+        QueryWrapper<HrBaseEmployeeInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).ne("USER_TYPE",1);
+        long count = this.count(queryWrapper);
+        queryWrapper.eq("GENDER",0);
+        long maleNum = this.count(queryWrapper);
+        countPerson.setCountNum(count);
+        countPerson.setMaleNum(maleNum);
+        countPerson.setFemaleNum(count -maleNum);
+
+        queryWrapper.clear();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).le("ENTRY_DATE",new Date()).eq("USER_TYPE",3);
+        countPerson.setDutyNum(this.count(queryWrapper));
+
+        queryWrapper.clear();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).eq("USER_TYPE",2);
+        countPerson.setRetireAndDutyNum(this.count(queryWrapper));
+
+        queryWrapper.clear();
+        queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).ge("RETIRE_TIME", DateUtil.offset(new Date(), DateField.YEAR,employeeInfoEoucation.getDateYear()));
+        List<HrBaseEmployeeInfo> list = this.list(queryWrapper);
+        if (ObjectUtil.isEmpty(list)) {
+            countPerson.setRetireNum(list.size());
+
+            countPerson.setRetirePersonList(list);
+
+            List<HrBaseDepartment> baseDepartments = hrBaseDepartmentMapper.selectList(new QueryWrapper<HrBaseDepartment>().eq("ORG_ID", orgId));
+
+            Map<Object, Long> departmentCountMap = list.stream()
+                    .collect(Collectors.groupingBy(
+                            o -> o.getDepartmentId(), // 分组的键是部门ID
+                            Collectors.counting()    // 分组的值是该部门ID对应的人数
+                    ));
+            List<EoucationVo> personList = baseDepartments.stream()
+                    .map(baseDepartment -> {
+                        EoucationVo eoucationVo = new EoucationVo();
+                        eoucationVo.setDepartmentName(baseDepartment.getName());
+                        // 使用getOrDefault来避免Map中不存在的键导致的NullPointerException
+                        eoucationVo.setCountNum(departmentCountMap.getOrDefault(baseDepartment.getId(), 0L).intValue());
+                        return eoucationVo;
+                    })
+                    .collect(Collectors.toList());
+            countPerson.setRetirePersonNum(personList);
+
+        }
+        return countPerson;
+    }
+
+    @Override
+    public  List<EoucationVo>  listByDepart(EmployeeInfoEoucation employeeInfoEoucation) {
+        return hrBaseEmployeeInfoMapper.listByDepart(employeeInfoEoucation.getOrgId());
+    }
+    @Override
+    public    List<EoucationVo>  listByDepartGender(EmployeeInfoEoucation employeeInfoEoucation) {
+        return hrBaseEmployeeInfoMapper.listByDepartGender(employeeInfoEoucation.getOrgId());
+    }
+
+    @Override
+    public List<EoucationVo> listByDepartGenderEducationDis(EmployeeInfoEoucation employeeInfoEoucation) {
+        return hrBaseEmployeeInfoMapper.listByDepartGenderEducationDis(employeeInfoEoucation.getOrgId());
+    }
+
+    @Override
+    public List<PerNum> birthDis(EmployeeInfoEoucation employeeInfoEoucation) {
+        return hrBaseEmployeeInfoMapper.birthDis(employeeInfoEoucation.getOrgId());
+    }
+
+    @Override
+    public   List<PerNum> siLingDis(EmployeeInfoEoucation employeeInfoEoucation) {
+        return hrBaseEmployeeInfoMapper.siLingDis(employeeInfoEoucation.getOrgId());
+    }
+
+    @Override
+    public   List<PerNum> gongLingDis(EmployeeInfoEoucation employeeInfoEoucation) {
+        return hrBaseEmployeeInfoMapper.gongLingDis(employeeInfoEoucation.getOrgId());
+    }
+
+
 }

+ 96 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/controller/HrCountController.java

@@ -0,0 +1,96 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.count.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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 org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.hr.modular.count.entity.HrCount;
+import vip.xiaonuo.hr.modular.count.param.HrCountAddParam;
+import vip.xiaonuo.hr.modular.count.param.HrCountEditParam;
+import vip.xiaonuo.hr.modular.count.param.HrCountIdParam;
+import vip.xiaonuo.hr.modular.count.param.HrCountPageParam;
+import vip.xiaonuo.hr.modular.count.service.HrCountService;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * 组织控制器
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ */
+@Api(tags = "组织控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class HrCountController {
+
+    @Resource
+    private HrCountService hrCountService;
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取组织分页")
+    @GetMapping("/biz/count/page")
+    public CommonResult<Page<HrCount>> page(HrCountPageParam hrCountPageParam) {
+        return CommonResult.data(hrCountService.page(hrCountPageParam));
+    }
+
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加组织")
+    @CommonLog("添加组织")
+    @PostMapping("/biz/count/add")
+    public CommonResult<String> add(@RequestBody @Valid HrCountAddParam hrCountAddParam) {
+        hrCountService.add(hrCountAddParam);
+        return CommonResult.ok();
+    }
+
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑组织")
+    @CommonLog("编辑组织")
+    @PostMapping("/biz/count/edit")
+    public CommonResult<String> edit(@RequestBody @Valid HrCountEditParam hrCountEditParam) {
+        hrCountService.edit(hrCountEditParam);
+        return CommonResult.ok();
+    }
+
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除组织")
+    @CommonLog("删除组织")
+    @PostMapping("/biz/count/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   CommonValidList<HrCountIdParam> hrCountIdParamList) {
+        hrCountService.delete(hrCountIdParamList);
+        return CommonResult.ok();
+    }
+
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取组织详情")
+    @GetMapping("/biz/count/detail")
+    public CommonResult<HrCount> detail(@Valid HrCountIdParam hrCountIdParam) {
+        return CommonResult.data(hrCountService.detail(hrCountIdParam));
+    }
+}

+ 79 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/entity/HrCount.java

@@ -0,0 +1,79 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.count.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 组织实体
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Getter
+@Setter
+@TableName("hr_count")
+public class HrCount {
+
+    /** ID */
+    @TableId
+    @ApiModelProperty(value = "ID", position = 1)
+    private String id;
+
+    /** 月 */
+    @ApiModelProperty(value = "月", position = 2)
+    private String hrMonth;
+
+    /** 年 */
+    @ApiModelProperty(value = "年", position = 3)
+    private String hrYear;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 4)
+    private String orgId;
+
+    /** 数量 */
+    @ApiModelProperty(value = "数量", position = 5)
+    private String hrNum;
+
+    /** 删除标志 */
+    @ApiModelProperty(value = "删除标志", position = 6)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 7)
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 创建用户 */
+    @ApiModelProperty(value = "创建用户", position = 8)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 9)
+    @TableField(fill = FieldFill.UPDATE)
+    private Date updateTime;
+
+    /** 修改用户 */
+    @ApiModelProperty(value = "修改用户", position = 10)
+    @TableField(fill = FieldFill.UPDATE)
+    private String updateUser;
+}

+ 34 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/enums/HrCountEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.count.enums;
+
+import lombok.Getter;
+
+/**
+ * 组织枚举
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Getter
+public enum HrCountEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    HrCountEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/mapper/HrCountMapper.java

@@ -0,0 +1,25 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.count.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.hr.modular.count.entity.HrCount;
+
+/**
+ * 组织Mapper接口
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+public interface HrCountMapper extends BaseMapper<HrCount> {
+}

+ 5 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/mapper/mapping/HrCountMapper.xml

@@ -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.hr.modular.count.mapper.HrCountMapper">
+
+</mapper>

+ 50 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/param/HrCountAddParam.java

@@ -0,0 +1,50 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.count.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 组织添加参数
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Getter
+@Setter
+public class HrCountAddParam {
+
+    /** 月 */
+    @ApiModelProperty(value = "月", position = 2)
+    private String hrMonth;
+
+    /** 年 */
+    @ApiModelProperty(value = "年", position = 3)
+    private String hrYear;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 4)
+    private String orgId;
+
+    /** 数量 */
+    @ApiModelProperty(value = "数量", position = 5)
+    private String hrNum;
+
+}

+ 55 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/param/HrCountEditParam.java

@@ -0,0 +1,55 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.count.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 组织编辑参数
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Getter
+@Setter
+public class HrCountEditParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true, position = 1)
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /** 月 */
+    @ApiModelProperty(value = "月", position = 2)
+    private String hrMonth;
+
+    /** 年 */
+    @ApiModelProperty(value = "年", position = 3)
+    private String hrYear;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 4)
+    private String orgId;
+
+    /** 数量 */
+    @ApiModelProperty(value = "数量", position = 5)
+    private String hrNum;
+
+}

+ 35 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/param/HrCountIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.count.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 组织Id参数
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Getter
+@Setter
+public class HrCountIdParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true)
+    @NotBlank(message = "id不能为空")
+    private String id;
+}

+ 51 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/param/HrCountPageParam.java

@@ -0,0 +1,51 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.count.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 组织查询参数
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Getter
+@Setter
+public class HrCountPageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+}

+ 80 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/service/HrCountService.java

@@ -0,0 +1,80 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.count.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.hr.modular.count.entity.HrCount;
+import vip.xiaonuo.hr.modular.count.param.HrCountAddParam;
+import vip.xiaonuo.hr.modular.count.param.HrCountEditParam;
+import vip.xiaonuo.hr.modular.count.param.HrCountIdParam;
+import vip.xiaonuo.hr.modular.count.param.HrCountPageParam;
+
+import java.util.List;
+
+/**
+ * 组织Service接口
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+public interface HrCountService extends IService<HrCount> {
+
+    /**
+     * 获取组织分页
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    Page<HrCount> page(HrCountPageParam hrCountPageParam);
+
+    /**
+     * 添加组织
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    void add(HrCountAddParam hrCountAddParam);
+
+    /**
+     * 编辑组织
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    void edit(HrCountEditParam hrCountEditParam);
+
+    /**
+     * 删除组织
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    void delete(List<HrCountIdParam> hrCountIdParamList);
+
+    /**
+     * 获取组织详情
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     */
+    HrCount detail(HrCountIdParam hrCountIdParam);
+
+    /**
+     * 获取组织详情
+     *
+     * @author 余
+     * @date  2024/12/16 11:09
+     **/
+    HrCount queryEntity(String id);
+}

+ 94 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/service/impl/HrCountServiceImpl.java

@@ -0,0 +1,94 @@
+/*
+ * Copyright [2022] [https://www.baiduc.com]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
+ */
+package vip.xiaonuo.hr.modular.count.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.hr.modular.count.entity.HrCount;
+import vip.xiaonuo.hr.modular.count.mapper.HrCountMapper;
+import vip.xiaonuo.hr.modular.count.param.HrCountAddParam;
+import vip.xiaonuo.hr.modular.count.param.HrCountEditParam;
+import vip.xiaonuo.hr.modular.count.param.HrCountIdParam;
+import vip.xiaonuo.hr.modular.count.param.HrCountPageParam;
+import vip.xiaonuo.hr.modular.count.service.HrCountService;
+
+import java.util.List;
+
+/**
+ * 组织Service接口实现类
+ *
+ * @author 余
+ * @date  2024/12/16 11:09
+ **/
+@Service
+public class HrCountServiceImpl extends ServiceImpl<HrCountMapper, HrCount> implements HrCountService {
+
+    @Override
+    public Page<HrCount> page(HrCountPageParam hrCountPageParam) {
+        QueryWrapper<HrCount> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isAllNotEmpty(hrCountPageParam.getSortField(), hrCountPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(hrCountPageParam.getSortOrder());
+            queryWrapper.orderBy(true, hrCountPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(hrCountPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(HrCount::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(HrCountAddParam hrCountAddParam) {
+        HrCount hrCount = BeanUtil.toBean(hrCountAddParam, HrCount.class);
+        this.save(hrCount);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(HrCountEditParam hrCountEditParam) {
+        HrCount hrCount = this.queryEntity(hrCountEditParam.getId());
+        BeanUtil.copyProperties(hrCountEditParam, hrCount);
+        this.updateById(hrCount);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<HrCountIdParam> hrCountIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(hrCountIdParamList, HrCountIdParam::getId));
+    }
+
+    @Override
+    public HrCount detail(HrCountIdParam hrCountIdParam) {
+        return this.queryEntity(hrCountIdParam.getId());
+    }
+
+    @Override
+    public HrCount queryEntity(String id) {
+        HrCount hrCount = this.getById(id);
+        if(ObjectUtil.isEmpty(hrCount)) {
+            throw new CommonException("组织不存在,id值为:{}", id);
+        }
+        return hrCount;
+    }
+}

+ 3 - 0
pom.xml

@@ -86,6 +86,7 @@
     </properties>
 
     <modules>
+
         <!-- 基础通用规则模块 -->
         <module>snowy-common</module>
 
@@ -97,6 +98,8 @@
 
         <!-- 主启动模块 -->
         <module>huimv-farm</module>
+        <!-- 基础通用规则模块 -->
+<!--        <module>get-data</module>-->
 
     </modules>