523096025 2 meses atrás
pai
commit
54931e634a

+ 113 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/baseemployeeinfo/controller/DongShiEmployeeInfoController.java

@@ -0,0 +1,113 @@
+/*
+ * 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.baseemployeeinfo.controller;
+
+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.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.baseemployeeinfo.entity.HrBaseEmployeeInfo;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.*;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.param.*;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.service.HrBaseEmployeeInfoService;
+import vip.xiaonuo.purchase.param.DongShiPurchaseParam;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 人员明细控制器
+ *
+ * @author 余
+ * @date  2024/11/14 15:02
+ */
+@Api(tags = "董事页面控制器")
+@RestController
+@Validated
+public class DongShiEmployeeInfoController {
+
+    @Resource
+    private HrBaseEmployeeInfoService hrBaseEmployeeInfoService;
+
+    @ApiOperation("指标卡")
+    @PostMapping("/hr/dongShi/zhiBiao")
+    public CommonResult<DongShiCountNum> zhiBiao(@Valid @RequestBody DongShiPurchaseParam dongShiPurchaseParam) {
+     return    CommonResult.data(hrBaseEmployeeInfoService.zhiBiao(dongShiPurchaseParam));
+    }
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取人员明细分页")
+    @PostMapping("/hr/dongShi/yuanGongDetails")
+    public CommonResult<Page<HrBaseEmployeeInfo>> details(@RequestBody DongShiPurchaseParam dongShiPurchaseParam) {
+        return CommonResult.data(hrBaseEmployeeInfoService.details(dongShiPurchaseParam));
+    }
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取员工支出明细")
+    @PostMapping("/hr/dongShi/zhiChuDetails")
+    public CommonResult<List<DongShiCountNum>> zhiChuDetails(@RequestBody DongShiPurchaseParam dongShiPurchaseParam) {
+        return CommonResult.data(hrBaseEmployeeInfoService.zhiChuDetails(dongShiPurchaseParam));
+    }
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("员工数量趋势")
+    @PostMapping("/hr/dongShi/yuanGongNum")
+    public CommonResult<List<DongShiCountNum>> yuanGongNum(@RequestBody DongShiPurchaseParam dongShiPurchaseParam) {
+        return CommonResult.data(hrBaseEmployeeInfoService.yuanGongNum(dongShiPurchaseParam));
+    }
+
+    @ApiOperation("年龄性别分布")
+    @PostMapping("/hr/dongShi/ageDis")
+    public CommonResult<List<PerNumDongShi>> ageDis(@Valid @RequestBody EmployeeInfoEoucation employeeInfoEoucation) {
+        String orgId = employeeInfoEoucation.getOrgId();
+        long age22 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 18,24).eq("GENDER",0));
+        long age22x = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 18,24).eq("GENDER",1));
+        long age30 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 25,30).eq("GENDER",0));
+        long age30x = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 25,30).eq("GENDER",1));
+        long age40 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 31,40).eq("GENDER",0));
+        long age40x = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 31,40).eq("GENDER",1));
+        long age45 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 41,45).eq("GENDER",0));
+        long age45x = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 41,45).eq("GENDER",1));
+        long age55 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 46,55).eq("GENDER",0));
+        long age55x = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 46,55).eq("GENDER",1));
+        long age65 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 55,65).eq("GENDER",0));
+        long age65x = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).eq("USER_TYPE",0).between("AGE", 55,54).eq("GENDER",1));
+        long age66 = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).ge("AGE", 60).eq("GENDER",0));
+        long age66x = hrBaseEmployeeInfoService.count(new QueryWrapper<HrBaseEmployeeInfo>().eq(StringUtils.isNotBlank(orgId),"ORG_ID", orgId).ge("AGE", 60).eq("GENDER",1));
+        ArrayList<PerNumDongShi> perNums = new ArrayList<>();
+        perNums.add(new PerNumDongShi("18-24岁",age22,age22x));
+        perNums.add(new PerNumDongShi("25-30岁",age30,age30x));
+        perNums.add(new PerNumDongShi("31-40岁",age40,age40x));
+        perNums.add(new PerNumDongShi("41-45岁",age45,age45x));
+        perNums.add(new PerNumDongShi("46-55岁",age55,age55x));
+        perNums.add(new PerNumDongShi("56-65岁",age65,age65x));
+        perNums.add(new PerNumDongShi("65岁以上",age66,age66x));
+        return CommonResult.data(perNums);
+    }
+
+
+}

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

@@ -238,4 +238,6 @@ public class HrBaseEmployeeInfoController {
     public CommonResult<List<PerNum>> gongLingDis(@Valid @RequestBody EmployeeInfoEoucation employeeInfoEoucation) {
         return CommonResult.data(hrBaseEmployeeInfoService.gongLingDis(employeeInfoEoucation));
     }
+
+
 }

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

@@ -0,0 +1,34 @@
+package vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DongShiCountNum {
+
+    @ApiModelProperty(value = "在职总人数")
+    private String jobNum;
+    @ApiModelProperty(value = "在职总人数环比/同比", position = 2)
+    private String jobNumOnYear;
+    @ApiModelProperty(value = "在职总人数是否增加", position = 2)
+    private Boolean jobNumIsOn;
+
+    @ApiModelProperty(value = "薪酬支出")
+    private String pay;
+    @ApiModelProperty(value = "薪酬支出环比/同比", position = 2)
+    private String payOnYear;
+    @ApiModelProperty(value = "薪酬支出是否增加", position = 2)
+    private Boolean payIsOn;
+
+    @ApiModelProperty(value = "人均产值")
+    private String outputValue;
+    @ApiModelProperty(value = "人均产值环比/同比", position = 2)
+    private String outputValueOnYear;
+    @ApiModelProperty(value = "人均产值是否增加", position = 2)
+    private Boolean outputValueIsOn;
+
+    private String ymonth;
+    @ApiModelProperty(value = "增长率")
+    private String rateOnYear;
+    private Boolean rateIsOn;
+}

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

@@ -5,11 +5,14 @@ import lombok.Data;
 @Data
 public class PerNum {
     private String name;
-    private String oneYear;
-    private String twoYear;
-    private String threeYear;
-    private String fourYear;
     private long value;
+    private long one;
+    private long five;
+    private long ten;
+    private long oneFive;
+    private long twoZ;
+    private long twoFive;
+    private long threeZ;
 
     public PerNum(String name, long value) {
         this.name = name;

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

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

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

@@ -12,10 +12,12 @@
  */
 package vip.xiaonuo.hr.modular.baseemployeeinfo.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.DongShiCountNum;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.EoucationVo;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.PerNum;
 
@@ -38,7 +40,13 @@ public interface HrBaseEmployeeInfoMapper extends BaseMapper<HrBaseEmployeeInfo>
 
     List<PerNum> birthDis(String orgId);
 
-    List<PerNum> siLingDis(String orgId);
+    PerNum  siLingDis(String orgId);
 
-    List<PerNum> gongLingDis(String orgId);
+    PerNum  gongLingDis(String orgId);
+
+    DongShiCountNum zhiBiao(@Param(Constants.WRAPPER) QueryWrapper<HrBaseEmployeeInfo> wapper);
+
+    List<DongShiCountNum> yuanGongNumMonth(@Param(Constants.WRAPPER) QueryWrapper<HrBaseEmployeeInfo> wapper);
+
+    List<DongShiCountNum> yuanGongNumYear(@Param(Constants.WRAPPER) QueryWrapper<HrBaseEmployeeInfo> wapper);
 }

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

@@ -16,9 +16,11 @@ 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.entity.vo.CountPerson;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.DongShiCountNum;
 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 vip.xiaonuo.purchase.param.DongShiPurchaseParam;
 
 import java.util.List;
 
@@ -94,4 +96,12 @@ public interface HrBaseEmployeeInfoService extends IService<HrBaseEmployeeInfo>
     List<PerNum> siLingDis(EmployeeInfoEoucation employeeInfoEoucation);
 
     List<PerNum> gongLingDis(EmployeeInfoEoucation employeeInfoEoucation);
+
+    DongShiCountNum zhiBiao(DongShiPurchaseParam dongShiPurchaseParam);
+
+    Page<HrBaseEmployeeInfo>  details(DongShiPurchaseParam dongShiPurchaseParam);
+
+    List<DongShiCountNum> zhiChuDetails(DongShiPurchaseParam dongShiPurchaseParam);
+
+    List<DongShiCountNum> yuanGongNum(DongShiPurchaseParam dongShiPurchaseParam);
 }

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

@@ -31,18 +31,24 @@ 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.HrBaseEmployeeInfoVo;
-import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.PerNum;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.*;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.mapper.HrBaseEmployeeInfoMapper;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.param.*;
 import vip.xiaonuo.hr.modular.baseemployeeinfo.service.HrBaseEmployeeInfoService;
+import vip.xiaonuo.hr.modular.count.entity.HrCount;
+import vip.xiaonuo.hr.modular.count.mapper.HrCountMapper;
 import vip.xiaonuo.purchase.entity.PurchaseContract;
+import vip.xiaonuo.purchase.entity.PurchaseOrder;
+import vip.xiaonuo.purchase.param.DongShiPurchaseParam;
+import vip.xiaonuo.purchase.param.GongYingShangParam;
+import vip.xiaonuo.purchase.param.PurchaseAllParam;
 
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static vip.xiaonuo.money.service.impl.MoneyBusinessServiceImpl.calculateYOYChange;
+import static vip.xiaonuo.money.service.impl.MoneyBusinessServiceImpl.calculateYOYZiJinYvE;
+
 /**
  * 人员明细Service接口实现类
  *
@@ -54,6 +60,8 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
     @Autowired
     private  HrBaseEmployeeInfoMapper hrBaseEmployeeInfoMapper;
     @Autowired
+    private HrCountMapper hrCountMapper;
+    @Autowired
     private HrBaseDepartmentMapper hrBaseDepartmentMapper;
 
 
@@ -203,13 +211,118 @@ public class HrBaseEmployeeInfoServiceImpl extends ServiceImpl<HrBaseEmployeeInf
 
     @Override
     public   List<PerNum> siLingDis(EmployeeInfoEoucation employeeInfoEoucation) {
-        return hrBaseEmployeeInfoMapper.siLingDis(employeeInfoEoucation.getOrgId());
+        PerNum perNum = hrBaseEmployeeInfoMapper.siLingDis(employeeInfoEoucation.getOrgId());
+        return getEndList(perNum);
     }
 
     @Override
     public   List<PerNum> gongLingDis(EmployeeInfoEoucation employeeInfoEoucation) {
-        return hrBaseEmployeeInfoMapper.gongLingDis(employeeInfoEoucation.getOrgId());
+        PerNum perNum = hrBaseEmployeeInfoMapper.gongLingDis(employeeInfoEoucation.getOrgId());
+        return getEndList(perNum);
+    }
+
+    @Override
+    public DongShiCountNum zhiBiao(DongShiPurchaseParam dongShiPurchaseParam) {
+
+        String orgId = dongShiPurchaseParam.getOrgId();
+        String time = dongShiPurchaseParam.getTime();
+        Date date ;
+        if (StringUtils.isBlank(time)){
+            date = DateUtil.beginOfMonth(new Date());
+        }else {
+            date = DateUtil.beginOfMonth(   DateUtil.parse(time,"yyyy-MM"));
+        }
+        QueryWrapper<HrBaseEmployeeInfo> wapper = new QueryWrapper<HrBaseEmployeeInfo>();
+        wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("CREATE_TIME", date, DateUtil.endOfMonth(date));
+        DongShiCountNum dongShiCountNum = hrBaseEmployeeInfoMapper.zhiBiao(wapper);
+        wapper.clear();
+        wapper.eq(StringUtils.isNotBlank(orgId),"org_id", orgId).between("CREATE_TIME", DateUtil.offsetMonth(date,-12), DateUtil.offsetMonth(DateUtil.endOfMonth(date),-12));
+        DongShiCountNum lastdongShiCountNum = hrBaseEmployeeInfoMapper.zhiBiao(wapper);
+
+        dongShiCountNum.setPayIsOn(getDouble(lastdongShiCountNum.getPay())<getDouble(dongShiCountNum.getPay()));
+        dongShiCountNum.setJobNumIsOn(getDouble(lastdongShiCountNum.getJobNum() )<getDouble(dongShiCountNum.getJobNum()));
+        dongShiCountNum.setOutputValueIsOn(getDouble(lastdongShiCountNum.getOutputValue()) <getDouble(dongShiCountNum.getOutputValue()));
+
+        dongShiCountNum.setPayOnYear(calculateYOYZiJinYvE(getDouble(dongShiCountNum.getPay()),getDouble(lastdongShiCountNum.getPay())));
+        dongShiCountNum.setJobNumOnYear(calculateYOYZiJinYvE(getDouble(dongShiCountNum.getJobNum()),getDouble(lastdongShiCountNum.getJobNum())));
+        dongShiCountNum.setOutputValueOnYear(calculateYOYZiJinYvE(getDouble(dongShiCountNum.getOutputValue()),getDouble(lastdongShiCountNum.getOutputValue())));
+
+
+        return dongShiCountNum;
+    }
+    private Double getDouble(String balance) {
+        if (StringUtils.isBlank(balance)){
+            return 0.0;
+        }
+        return Double.parseDouble(balance);
+//        return  balance;
+    }
+
+    @Override
+    public Page<HrBaseEmployeeInfo> details(DongShiPurchaseParam dongShiPurchaseParam) {
+
+        String orgId = dongShiPurchaseParam.getOrgId();
+        QueryWrapper<HrBaseEmployeeInfo> wapper = new QueryWrapper<HrBaseEmployeeInfo>();
+        Page<HrBaseEmployeeInfo> page = new Page<HrBaseEmployeeInfo>(dongShiPurchaseParam.getPageNum(), dongShiPurchaseParam.getPageSize());
+        wapper.eq( StringUtils.isNotBlank(orgId),"org_id", orgId);
+        return this.page(page,wapper);
     }
 
+    @Override
+    public List<DongShiCountNum> zhiChuDetails(DongShiPurchaseParam dongShiPurchaseParam) {
+        String orgId = dongShiPurchaseParam.getOrgId();
+        Integer type = dongShiPurchaseParam.getType();
+        QueryWrapper<HrCount> wapper = new QueryWrapper<HrCount>();
+
+        wapper.eq( StringUtils.isNotBlank(orgId),"org_id", orgId).orderByAsc("ymonth").groupBy("ymonth");
+        List<DongShiCountNum> dongShiCountNums;
+        if (ObjectUtil.isEmpty(type) || 0 ==  type){
+            dongShiCountNums= hrCountMapper.getZhiChuDetailsMonth(wapper);
+        }else {
+            dongShiCountNums = hrCountMapper.getZhiChuDetailsYear(wapper);
+        }
+
+        return dongShiCountNums;
+    }
+
+    @Override
+    public List<DongShiCountNum> yuanGongNum(DongShiPurchaseParam dongShiPurchaseParam) {
+
+        String orgId = dongShiPurchaseParam.getOrgId();
+        Integer type = dongShiPurchaseParam.getType();
+        QueryWrapper<HrBaseEmployeeInfo> wapper = new QueryWrapper<HrBaseEmployeeInfo>();
+        wapper.eq( StringUtils.isNotBlank(orgId),"org_id", orgId).groupBy("ymonth").orderByAsc("ymonth");
+        List<DongShiCountNum>  busAllParams;
+        if (ObjectUtil.isEmpty(type) || 0 ==  type){
+            busAllParams= hrBaseEmployeeInfoMapper.yuanGongNumMonth(wapper);
+        }else {
+            busAllParams = hrBaseEmployeeInfoMapper.yuanGongNumYear(wapper);
+        }
+
+        for (int i = 0; i < busAllParams.size() -1 ; i++) {
+            DongShiCountNum  lastDsBus  = busAllParams.get(i);
+            DongShiCountNum dsBusAllParam = busAllParams.get(i + 1);
+            dsBusAllParam.setJobNumOnYear(calculateYOYZiJinYvE(getDouble(dsBusAllParam.getJobNum()),getDouble(lastDsBus.getJobNum( ))));
+            dsBusAllParam.setJobNumIsOn(getDouble(lastDsBus.getJobNum()) <getDouble(dsBusAllParam.getJobNum()));
+        }
+        DongShiCountNum dsBusAllParam = busAllParams.get(0);
+        dsBusAllParam.setJobNumOnYear("0%");
+        dsBusAllParam.setJobNumIsOn(true);
+        return busAllParams;
+    }
+
+    private List<PerNum> getEndList(PerNum perNum) {
+        List endList = new ArrayList();
+        endList.add(new PerNum("1-3年",perNum.getOne()));
+        endList.add(new PerNum("3-5年",perNum.getFive()));
+        endList.add(new PerNum("5-10年",perNum.getTen()));
+        endList.add(new PerNum("10-15年",perNum.getOneFive()));
+        endList.add(new PerNum("15-20年",perNum.getTwoZ()));
+        endList.add(new PerNum("20-25年",perNum.getTwoFive()));
+        endList.add(new PerNum("25年以上",perNum.getThreeZ()));
+        return endList;
+    }
+
+
 
 }

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

@@ -12,9 +12,15 @@
  */
 package vip.xiaonuo.hr.modular.count.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.vo.DongShiCountNum;
 import vip.xiaonuo.hr.modular.count.entity.HrCount;
 
+import java.util.List;
+
 /**
  * 组织Mapper接口
  *
@@ -22,4 +28,7 @@ import vip.xiaonuo.hr.modular.count.entity.HrCount;
  * @date  2024/12/16 11:09
  **/
 public interface HrCountMapper extends BaseMapper<HrCount> {
+    List<DongShiCountNum> getZhiChuDetailsMonth(@Param(Constants.WRAPPER)QueryWrapper<HrCount> wapper);
+
+    List<DongShiCountNum> getZhiChuDetailsYear(@Param(Constants.WRAPPER)QueryWrapper<HrCount> wapper);
 }

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

@@ -1,5 +0,0 @@
-<?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>

+ 20 - 7
huimv-farm/src/main/resources/mapper/HrBaseEmployeeInfoMapper.xml

@@ -89,13 +89,13 @@
     </select>
     <select id="siLingDis" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.PerNum">
         SELECT
-        IFNULL(SUM(CASE WHEN a.SI_LING BETWEEN 0 AND 1 THEN 1 ELSE 0 END),'0') AS '1年',
-        IFNULL(SUM(CASE WHEN a.SI_LING BETWEEN 2 AND 5 THEN 1 ELSE 0 END),'0') AS '5年',
-        IFNULL(SUM(CASE WHEN a.SI_LING BETWEEN 6 AND 10 THEN 1 ELSE 0 END),'0') AS '10年',
-        IFNULL(SUM(CASE WHEN a.SI_LING BETWEEN 11 AND 15 THEN 1 ELSE 0 END),'0') AS '15年',
-        IFNULL(SUM(CASE WHEN a.SI_LING BETWEEN 16 AND 20 THEN 1 ELSE 0 END),'0') AS '20年',
-        IFNULL(SUM(CASE WHEN a.SI_LING BETWEEN 21 AND 25 THEN 1 ELSE 0 END),'0') AS '25年',
-        IFNULL(SUM(CASE WHEN a.SI_LING BETWEEN 26 AND 30 THEN 1 ELSE 0 END),'0') AS '30年'
+        IFNULL(SUM(CASE WHEN a.SI_LING BETWEEN 0 AND 3 THEN 1 ELSE 0 END),'0') AS 'one',
+        IFNULL(SUM(CASE WHEN a.SI_LING BETWEEN 4 AND 5 THEN 1 ELSE 0 END),'0') AS 'five',
+        IFNULL(SUM(CASE WHEN a.SI_LING BETWEEN 6 AND 10 THEN 1 ELSE 0 END),'0') AS 'ten',
+        IFNULL(SUM(CASE WHEN a.SI_LING BETWEEN 11 AND 15 THEN 1 ELSE 0 END),'0') AS 'oneFive',
+        IFNULL(SUM(CASE WHEN a.SI_LING BETWEEN 16 AND 20 THEN 1 ELSE 0 END),'0') AS 'twoZ',
+        IFNULL(SUM(CASE WHEN a.SI_LING BETWEEN 21 AND 25 THEN 1 ELSE 0 END),'0') AS 'twoFive',
+        IFNULL(SUM(CASE WHEN a.SI_LING > 26 THEN 1 ELSE 0 END),'0') AS 'threeZ'
         FROM
         `hr_base_employee_info` a
         WHERE
@@ -121,4 +121,17 @@
         </if>
         USER_TYPE = 0
     </select>
+    <select id="zhiBiao" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.DongShiCountNum">
+              SELECT MAX(HR_NUM) jobNum ,
+              ROUND(IFNULL(SUM(PAY), 0)/10000 , 2)   pay  ,
+              ROUND(IFNULL(AVG(OUTPUT_VALUE), 0)/10000 , 2)  outputValue FROM `hr_count`   ${ew.customSqlSegment}
+
+    </select>
+    <select id="yuanGongNumMonth" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.DongShiCountNum">
+     SELECT MAX(HR_NUM) jobNum ,DATE_FORMAT(CREATE_TIME , '%Y-%m') ymonth      FROM `hr_count`  ${ew.customSqlSegment}
+
+    </select>
+    <select id="yuanGongNumYear" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.DongShiCountNum">
+            SELECT MAX(HR_NUM)  jobNum ,DATE_FORMAT(CREATE_TIME , '%Y') ymonth      FROM `hr_count` ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 11 - 0
huimv-farm/src/main/resources/mapper/HrCountMapper.xml

@@ -0,0 +1,11 @@
+<?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">
+
+    <select id="getZhiChuDetailsMonth" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.DongShiCountNum">
+     SELECT  max(HR_NUM)  jobNum, ROUND(IFNULL(SUM(PAY), 0)/10000 , 2) pay , DATE_FORMAT(CREATE_TIME , '%Y-%m')   ymonth FROM  `hr_count` ${ew.customSqlSegment}
+    </select>
+    <select id="getZhiChuDetailsYear" resultType="vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.DongShiCountNum">
+         SELECT  max(HR_NUM) jobNum , ROUND(IFNULL(SUM(PAY), 0)/10000 , 2) pay , DATE_FORMAT(CREATE_TIME , '%Y')   ymonth FROM  `hr_count` ${ew.customSqlSegment}
+    </select>
+</mapper>