Browse Source

问题调整

yzc 10 months ago
parent
commit
f5966e6b00

+ 4 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/promotion/po/PromotionApply.java

@@ -6,6 +6,7 @@ import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -26,6 +27,9 @@ public class PromotionApply extends BasePo {
      * 10实习员工、20试用员工、30正式员工
      */
     private Integer employeeType;
+    private BigDecimal probationRatio;
+    private BigDecimal internshipRatio;
+
 
     /**
      * 转正日期

+ 2 - 2
hx-oa/src/main/java/com/fjhx/oa/entity/user/po/UserSalary.java

@@ -45,12 +45,12 @@ public class UserSalary extends BasePo {
     /**
      * 试用期薪资比例
      */
-    private BigDecimal probationRatio;
+    private Integer probationRatio;
 
     /**
      * 实习期薪资比例
      */
-    private BigDecimal internshipRatio;
+    private Integer internshipRatio;
 
     /**
      * 计件薪资

+ 20 - 2
hx-oa/src/main/java/com/fjhx/oa/service/user/impl/UserSalaryManageServiceImpl.java

@@ -99,14 +99,32 @@ public class UserSalaryManageServiceImpl extends ServiceImpl<UserSalaryManageMap
 
         //再处理新数据
         //计算工资
+        BigDecimal ratio;
+        if (ObjectUtil.equals(dto.getEmployeeType(), 10)) {
+            Integer internshipRatio = dto.getInternshipRatio();
+            if (ObjectUtil.isEmpty(internshipRatio)) {
+                internshipRatio = oldUserSalary.getInternshipRatio();
+            }
+            ratio = BigDecimal.valueOf(internshipRatio / 100);
+        } else if (ObjectUtil.equals(dto.getEmployeeType(), 20)) {
+            Integer probationRatio = dto.getProbationRatio();
+            if (ObjectUtil.isEmpty(probationRatio)) {
+                probationRatio = oldUserSalary.getProbationRatio();
+            }
+            ratio = BigDecimal.valueOf(probationRatio / 100);
+        } else if (ObjectUtil.equals(dto.getEmployeeType(), 30)) {
+            ratio = BigDecimal.valueOf(1);
+        } else {
+            throw new ServiceException("未知劳动关系!");
+        }
         BigDecimal amount = dto.getUserSalaryDetailList().stream()
                 .filter(item -> ObjectUtil.equals(item.getType(), 10))
                 .map(UserSalaryDetail::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
         BigDecimal perfAmount = dto.getUserSalaryDetailList().stream()
                 .filter(item -> ObjectUtil.equals(item.getType(), 20))
                 .map(UserSalaryDetail::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
-        dto.setAmount(amount);
-        dto.setPerfAmount(perfAmount);
+        dto.setAmount(amount.multiply(ratio).setScale(4, BigDecimal.ROUND_HALF_UP));
+        dto.setPerfAmount(perfAmount.multiply(ratio).setScale(4, BigDecimal.ROUND_HALF_UP));
 
         dataVer++;//版本号+1
         this.updateById(dto);