diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysSalaryRateController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysSalaryRateController.java new file mode 100644 index 000000000..a825e5e1a --- /dev/null +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysSalaryRateController.java @@ -0,0 +1,86 @@ +package com.stdiet.web.controller.custom; + + +import com.stdiet.common.annotation.Log; +import com.stdiet.common.core.controller.BaseController; +import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.common.enums.BusinessType; +import com.stdiet.common.utils.StringUtils; +import com.stdiet.common.utils.poi.ExcelUtil; +import com.stdiet.custom.domain.SysSalaryComposeConfig; +import com.stdiet.custom.domain.SysSalaryRate; +import com.stdiet.custom.dto.request.SalaryRequest; +import com.stdiet.custom.service.ISysSalaryRateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 工资比例Controller + * @author xzj + * @date 2021-03-15 + */ +@RestController +@RequestMapping("/custom/salaryRate") +public class SysSalaryRateController extends BaseController { + + @Autowired + private ISysSalaryRateService sysSalaryRateService; + + @Log(title = "工资比例管理", businessType = BusinessType.IMPORT) + @PreAuthorize("@ss.hasPermi('custom:salaryRate:list')") + @PostMapping("/importSalary") + public AjaxResult importData(MultipartFile file) throws Exception + { + AjaxResult result = AjaxResult.success(); + ExcelUtil util = new ExcelUtil(SalaryRequest.class); + List salaryList = util.importExcel(file.getInputStream()); + if(salaryList == null && salaryList.size() > 0){ + return AjaxResult.error("Excel数据格式错误"); + } + //薪资比例集合 + List sysSalaryRateList = new ArrayList<>(); + Map configMap = sysSalaryRateService.getSalaryComposeConfigMap(); + if(configMap != null && configMap.size() > 0){ + for (SalaryRequest salaryRequest : salaryList) { + if(StringUtils.isEmpty(salaryRequest.getName()) || salaryRequest.getSalary() == null || salaryRequest.getSalary().doubleValue() < 0 || + StringUtils.isEmpty(salaryRequest.getSalaryPostName()) || salaryRequest.getFullWork() == null + || (!"是".equals(salaryRequest.getFullWork().trim()) && !"否".equals(salaryRequest.getFullWork().trim()))){ + return AjaxResult.error("Excel中第"+(sysSalaryRateList.size()+1)+"条数据格式错误"); + } + SysSalaryComposeConfig config = configMap.get(salaryRequest.getSalaryPostName().trim()); + if(config == null){ + return AjaxResult.error("Excel中第"+(sysSalaryRateList.size()+1)+"条数据的岗位不存在"); + } + if(config.getBaseRateSum() > 100){ + return AjaxResult.error("Excel中第"+(sysSalaryRateList.size()+1)+"条数据的岗位薪资配置比例超过100"); + } + boolean fullWork = "是".equals(salaryRequest.getFullWork().trim()); + SysSalaryRate sysSalaryRate = sysSalaryRateService.calculateSingleRate(salaryRequest.getSalary(), fullWork, config); + sysSalaryRate.setName(salaryRequest.getName().trim()); + sysSalaryRate.setSalaryPostName(salaryRequest.getSalaryPostName()); + sysSalaryRateList.add(sysSalaryRate); + } + } + ExcelUtil sysSalaryRateExcelUtil = new ExcelUtil(SysSalaryRate.class); + return sysSalaryRateExcelUtil.exportExcel(sysSalaryRateList, "sysSalaryRate"); + } + + @PreAuthorize("@ss.hasPermi('custom:salaryRate:list')") + @GetMapping("/importTemplate") + public AjaxResult importTemplate() throws Exception{ + List sysSalaryRateList = new ArrayList<>(); + ExcelUtil util = new ExcelUtil(SalaryRequest.class); + return util.exportExcel(sysSalaryRateList, "sysSalaryRateTemplate"); + } + + +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysSalaryComposeConfig.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysSalaryComposeConfig.java new file mode 100644 index 000000000..1e17a02f6 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysSalaryComposeConfig.java @@ -0,0 +1,101 @@ +package com.stdiet.custom.domain; + +import java.math.BigDecimal; +import com.stdiet.common.annotation.Excel; +import com.stdiet.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * 工资比例配置对象 sys_salary_compose_config + * + * @author xiezhijun + * @date 2021-03-13 + */ +@Data +public class SysSalaryComposeConfig extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + //继续教育补贴界限,超过该值才有继续教育补贴 + public static final Double educationAllowanceLimit = 15000.00; + + //工资低于该值时,基本薪资+岗位津贴+绩效等于{baseSalarySum} + public static final Double baseSalarySumLimit = 6000.00; + + //工资低于{baseSalarySumLimit}时,基本薪资+岗位津贴+绩效之和 + public static final Double lowerBaseSalarySum = 3000.00; + + //工资高于{baseSalarySumLimit}时,基本薪资+岗位津贴+绩效之和 + public static final Double higherBaseSalarySum = 5000.00 * 0.99; + + /** $column.columnComment */ + private Long id; + + /** 岗位名称 */ + @Excel(name = "岗位名称") + private String salaryPostName; + + /** 基本薪资 */ + @Excel(name = "基本薪资") + private BigDecimal baseSalary; + + /** 岗位津贴比例(非全额比例),百分制,与绩效比例加起来为100% */ + @Excel(name = "岗位津贴比例(非全额比例),百分制,与绩效比例加起来为100%") + private Integer postAllowanceRate; + + /** 加班补贴占全额比例,百分制 */ + @Excel(name = "加班补贴占全额比例,百分制") + private Integer overtimeAllowanceRate; + + /** 绩效补贴比例(非全额比例),百分制,与岗位津贴加起来100% */ + @Excel(name = "绩效补贴比例(非全额比例),百分制,与岗位津贴加起来100%") + private Integer meritsAllowanceRate; + + /** 车补贴占全额比例,百分制 */ + @Excel(name = "车补贴占全额比例,百分制") + private Integer carAllowanceRate; + + /** 餐补占全额比例,百分制 */ + @Excel(name = "餐补占全额比例,百分制") + private Integer mealAllowanceRate; + + /** 全勤奖 */ + @Excel(name = "全勤奖") + private BigDecimal fullAttendanceSalary; + + /** 房补贴占全额比例,百分制 */ + @Excel(name = "房补贴占全额比例,百分制") + private Integer houseAllowanceRate; + + /** 差旅补贴占全额比例,百分制 */ + @Excel(name = "差旅补贴占全额比例,百分制") + private Integer travelAllowanceRate; + + /** 技能补贴占全额比例,百分制 */ + @Excel(name = "技能补贴占全额比例,百分制") + private Integer skillAllowanceRate; + + /** 培训补贴占全额比例,百分制 */ + @Excel(name = "培训补贴占全额比例,百分制") + private Integer trainAllowanceRate; + + /** 部门补贴占全额比例,百分制 */ + @Excel(name = "部门补贴占全额比例,百分制") + private Integer departmentAllowanceRate; + + /** 继续教育补贴占全额比例,百分制 */ + @Excel(name = "继续教育补贴占全额比例,百分制") + private Integer educationAllowanceRate; + + /** 删除标识 0未删除 1已删除 */ + private Integer delFlag; + + /** + * 获取固定比例之和,不能超过100% + * @return + */ + public int getBaseRateSum(){ + return overtimeAllowanceRate + carAllowanceRate + mealAllowanceRate + houseAllowanceRate + travelAllowanceRate + skillAllowanceRate + trainAllowanceRate + + departmentAllowanceRate + educationAllowanceRate; + } +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysSalaryRate.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysSalaryRate.java new file mode 100644 index 000000000..4fde21558 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysSalaryRate.java @@ -0,0 +1,104 @@ +package com.stdiet.custom.domain; + +import com.stdiet.common.annotation.Excel; +import com.stdiet.common.core.domain.BaseEntity; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class SysSalaryRate extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * 构造函数初始化,全部设为0 + */ + public SysSalaryRate(){ + this.baseSalary = BigDecimal.valueOf(0.0); + this.postAllowance = BigDecimal.valueOf(0.0); + this.overtimeAllowance = BigDecimal.valueOf(0.0); + this.meritsAllowance = BigDecimal.valueOf(0.0); + this.carAllowance = BigDecimal.valueOf(0.0); + this.mealAllowance = BigDecimal.valueOf(0.0); + this.fullAttendanceSalary = BigDecimal.valueOf(0.0); + this.houseAllowance = BigDecimal.valueOf(0.0); + this.travelAllowance = BigDecimal.valueOf(0.0); + this.skillAllowance = BigDecimal.valueOf(0.0); + this.trainAllowance = BigDecimal.valueOf(0.0); + this.departmentAllowance = BigDecimal.valueOf(0.0); + this.educationAllowance = BigDecimal.valueOf(0.0); + } + + /** $column.columnComment */ + private Long id; + + /** 员工姓名 */ + @Excel(name = "姓名") + private String name; + + /** 岗位名称ID,对应工资岗位字典表的键值 */ + private String salaryPostId; + + @Excel(name = "岗位") + private String salaryPostName; + + /** 基本薪资 */ + @Excel(name = "基本薪资") + private BigDecimal baseSalary; + + /** 岗位津贴 */ + @Excel(name = "岗位津贴") + private BigDecimal postAllowance; + + /** 加班补贴 */ + @Excel(name = "加班补贴") + private BigDecimal overtimeAllowance; + + @Excel(name = "绩效") + private BigDecimal meritsAllowance; + + @Excel(name = "车补") + private BigDecimal carAllowance; + + /** 餐补*/ + @Excel(name = "餐补") + private BigDecimal mealAllowance; + + /** 全勤奖 */ + @Excel(name = "全勤奖") + private BigDecimal fullAttendanceSalary; + + /** 房补 */ + @Excel(name = "房补") + private BigDecimal houseAllowance; + + /** 差旅费 */ + @Excel(name = "差旅费") + private BigDecimal travelAllowance; + + /** 技能补贴 */ + @Excel(name = "技能补贴") + private BigDecimal skillAllowance; + + /** 培训补贴 */ + @Excel(name = "培训补贴") + private BigDecimal trainAllowance; + + /** 部门补贴 */ + @Excel(name = "部门补贴") + private BigDecimal departmentAllowance; + + /** 继续教育补贴*/ + @Excel(name = "继续教育补贴") + private BigDecimal educationAllowance; + + /** + * 获取固定比例的薪资总和 + * @return + */ + public BigDecimal getTotalRateSalary(){ + return overtimeAllowance.add(carAllowance).add(mealAllowance).add(houseAllowance).add(travelAllowance) + .add(skillAllowance).add(trainAllowance).add(departmentAllowance).add(educationAllowance); + } +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/SalaryRequest.java b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/SalaryRequest.java new file mode 100644 index 000000000..77d3bc6a3 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/SalaryRequest.java @@ -0,0 +1,28 @@ +package com.stdiet.custom.dto.request; + +import com.stdiet.common.annotation.Excel; +import com.stdiet.common.core.domain.BaseEntity; +import lombok.Data; + +import java.math.BigDecimal; + + +@Data +public class SalaryRequest extends BaseEntity { + + //姓名 + @Excel(name = "姓名") + private String name; + + //薪资部门ID + @Excel(name = "岗位",prompt = "营养师、营养师助理、销售主管、销售、商务、策划运营、策划助理、人事、IT") + private String salaryPostName; + + //薪资 + @Excel(name = "薪资",prompt="保留两位小数") + private BigDecimal salary; + + //是否全勤 + @Excel(name = "是否全勤",prompt="是、否") + private String fullWork; +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysSalaryComposeConfigMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysSalaryComposeConfigMapper.java new file mode 100644 index 000000000..e4945d949 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysSalaryComposeConfigMapper.java @@ -0,0 +1,61 @@ +package com.stdiet.custom.mapper; + +import java.util.List; +import com.stdiet.custom.domain.SysSalaryComposeConfig; + +/** + * 工资比例配置Mapper接口 + * + * @author xiezhijun + * @date 2021-03-13 + */ +public interface SysSalaryComposeConfigMapper +{ + /** + * 查询工资比例配置 + * + * @param id 工资比例配置ID + * @return 工资比例配置 + */ + public SysSalaryComposeConfig selectSysSalaryComposeConfigById(Long id); + + /** + * 查询工资比例配置列表 + * + * @param sysSalaryComposeConfig 工资比例配置 + * @return 工资比例配置集合 + */ + public List selectSysSalaryComposeConfigList(SysSalaryComposeConfig sysSalaryComposeConfig); + + /** + * 新增工资比例配置 + * + * @param sysSalaryComposeConfig 工资比例配置 + * @return 结果 + */ + public int insertSysSalaryComposeConfig(SysSalaryComposeConfig sysSalaryComposeConfig); + + /** + * 修改工资比例配置 + * + * @param sysSalaryComposeConfig 工资比例配置 + * @return 结果 + */ + public int updateSysSalaryComposeConfig(SysSalaryComposeConfig sysSalaryComposeConfig); + + /** + * 删除工资比例配置 + * + * @param id 工资比例配置ID + * @return 结果 + */ + public int deleteSysSalaryComposeConfigById(Long id); + + /** + * 批量删除工资比例配置 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteSysSalaryComposeConfigByIds(Long[] ids); +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysSalaryRateService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysSalaryRateService.java new file mode 100644 index 000000000..0ae18f68f --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysSalaryRateService.java @@ -0,0 +1,14 @@ +package com.stdiet.custom.service; + +import com.stdiet.custom.domain.SysSalaryComposeConfig; +import com.stdiet.custom.domain.SysSalaryRate; + +import java.math.BigDecimal; +import java.util.Map; + +public interface ISysSalaryRateService { + + Map getSalaryComposeConfigMap(); + + SysSalaryRate calculateSingleRate(BigDecimal totalSalary, Boolean fullWorkFlag, SysSalaryComposeConfig sysSalaryComposeConfig); +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/ISysSalaryRateServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/ISysSalaryRateServiceImpl.java new file mode 100644 index 000000000..f5feca24e --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/ISysSalaryRateServiceImpl.java @@ -0,0 +1,130 @@ +package com.stdiet.custom.service.impl; + +import com.stdiet.common.utils.NumberUtils; +import com.stdiet.custom.domain.SysSalaryComposeConfig; +import com.stdiet.custom.domain.SysSalaryRate; +import com.stdiet.custom.mapper.SysSalaryComposeConfigMapper; +import com.stdiet.custom.service.ISysSalaryRateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class ISysSalaryRateServiceImpl implements ISysSalaryRateService { + + @Autowired + private SysSalaryComposeConfigMapper sysSalaryComposeConfigMapper; + + /* @Override + public AjaxResult calculateSalaryRate(List salaryList){ + AjaxResult result = AjaxResult.success(); + List sysSalaryRateList = new ArrayList<>(); + Map configMap = getSalaryComposeConfigMap(); + if(salaryList != null && salaryList.size() > 0 && configMap != null && configMap.size() > 0){ + for (SalaryRequest salaryRequest : salaryList) { + if(StringUtils.isEmpty(salaryRequest.getName()) || salaryRequest.getSalary().doubleValue() < 0 || + StringUtils.isEmpty(salaryRequest.getSalaryPostName()) || salaryRequest.getFullWork() == null){ + return AjaxResult.error("Excel数据格式错误"); + } + SysSalaryComposeConfig config = configMap.get(salaryRequest.getSalaryPostName().trim()); + if(config == null){ + return AjaxResult.error(salaryRequest.getName()+"所在岗位不存在"); + } + if(config.getBaseRateSum() > 100){ + return AjaxResult.error("岗位薪资配置比例超过100"); + } + SysSalaryRate sysSalaryRate = calculateSingleRate(salaryRequest.getSalary(), salaryRequest.getFullWork(), config); + sysSalaryRate.setName(salaryRequest.getName().trim()); + sysSalaryRate.setSalaryPostName(salaryRequest.getSalaryPostName()); + sysSalaryRateList.add(sysSalaryRate); + } + } + result.put("sysSalaryRateList", sysSalaryRateList); + return result; + }*/ + + /** + * 获取薪资部门配置 + * @return + */ + @Override + public Map getSalaryComposeConfigMap(){ + Map configMap = new HashMap<>(); + List configList = sysSalaryComposeConfigMapper.selectSysSalaryComposeConfigList(new SysSalaryComposeConfig()); + if(configList != null && configList.size() > 0){ + for (SysSalaryComposeConfig config : configList) { + configMap.put(config.getSalaryPostName(), config); + } + } + return configMap; + } + + /** + * 计算工资比例 + * @param totalSalary 总工资 + * @param fullWorkFlag 是否全勤 + * @param sysSalaryComposeConfig 比例配置 + * @return + */ + @Override + public SysSalaryRate calculateSingleRate(BigDecimal totalSalary, Boolean fullWorkFlag, SysSalaryComposeConfig sysSalaryComposeConfig){ + SysSalaryRate sysSalaryRate = new SysSalaryRate(); + //计算加班补贴 + sysSalaryRate.setOvertimeAllowance(NumberUtils.getNumberByRoundHalfUp(totalSalary.doubleValue()*sysSalaryComposeConfig.getOvertimeAllowanceRate()/100, 2)); + //计算车补 + sysSalaryRate.setCarAllowance(NumberUtils.getNumberByRoundHalfUp(totalSalary.doubleValue()*sysSalaryComposeConfig.getCarAllowanceRate()/100, 2)); + //计算餐补 + sysSalaryRate.setMealAllowance(NumberUtils.getNumberByRoundHalfUp(totalSalary.doubleValue()*sysSalaryComposeConfig.getMealAllowanceRate()/100, 2)); + //计算房补 + sysSalaryRate.setHouseAllowance(NumberUtils.getNumberByRoundHalfUp(totalSalary.doubleValue()*sysSalaryComposeConfig.getHouseAllowanceRate()/100, 2)); + //计算差旅费 + sysSalaryRate.setTravelAllowance(NumberUtils.getNumberByRoundHalfUp(totalSalary.doubleValue()*sysSalaryComposeConfig.getTravelAllowanceRate()/100, 2)); + //计算技能补贴 + sysSalaryRate.setSkillAllowance(NumberUtils.getNumberByRoundHalfUp(totalSalary.doubleValue()*sysSalaryComposeConfig.getSkillAllowanceRate()/100, 2)); + //计算培训补贴 + sysSalaryRate.setTrainAllowance(NumberUtils.getNumberByRoundHalfUp(totalSalary.doubleValue()*sysSalaryComposeConfig.getTrainAllowanceRate()/100, 2)); + //计算部门补贴 + sysSalaryRate.setDepartmentAllowance(NumberUtils.getNumberByRoundHalfUp(totalSalary.doubleValue()*sysSalaryComposeConfig.getDepartmentAllowanceRate()/100, 2)); + //该岗位存在继续教育补贴而且大于等于该薪资界限才有继续教育补贴 + if(sysSalaryComposeConfig.getEducationAllowanceRate().intValue() > 0 && totalSalary.doubleValue() >= SysSalaryComposeConfig.educationAllowanceLimit){ + sysSalaryRate.setEducationAllowance(NumberUtils.getNumberByRoundHalfUp(totalSalary.doubleValue()*sysSalaryComposeConfig.getDepartmentAllowanceRate()/100, 2)); + } + BigDecimal totalRateSalary = sysSalaryRate.getTotalRateSalary(); + //计算剩余薪资 + Double surplusSalary = totalSalary.doubleValue() - totalRateSalary.doubleValue(); + if(surplusSalary <= 0){ + return sysSalaryRate; + } + //是否全勤 + if(fullWorkFlag){ + //减去全勤奖 + surplusSalary -= sysSalaryComposeConfig.getFullAttendanceSalary().doubleValue(); + sysSalaryRate.setFullAttendanceSalary(surplusSalary >= 0 ? sysSalaryComposeConfig.getFullAttendanceSalary() : BigDecimal.valueOf(surplusSalary + sysSalaryComposeConfig.getFullAttendanceSalary().doubleValue())); + if(surplusSalary <= 0){ + return sysSalaryRate; + } + } + //减去基本薪资 + surplusSalary -= sysSalaryComposeConfig.getBaseSalary().doubleValue(); + sysSalaryRate.setBaseSalary(surplusSalary >= 0 ? sysSalaryComposeConfig.getBaseSalary() : BigDecimal.valueOf(surplusSalary + sysSalaryComposeConfig.getBaseSalary().doubleValue())); + if(surplusSalary <= 0){ + return sysSalaryRate; + } + BigDecimal postSalary = null; + Double baseSalarySum = totalRateSalary.doubleValue() >= SysSalaryComposeConfig.baseSalarySumLimit ? SysSalaryComposeConfig.higherBaseSalarySum : SysSalaryComposeConfig.lowerBaseSalarySum; + //计算原有基础岗位补贴 + postSalary = NumberUtils.getNumberByRoundHalfUp((baseSalarySum - sysSalaryComposeConfig.getBaseSalary().doubleValue()) * sysSalaryComposeConfig.getPostAllowanceRate()/100, 2); + //减去岗位补贴 + surplusSalary -= postSalary.doubleValue(); + sysSalaryRate.setPostAllowance(surplusSalary >= 0 ? postSalary : BigDecimal.valueOf(surplusSalary + postSalary.doubleValue())); + if(surplusSalary <= 0){ + return sysSalaryRate; + } + //剩余薪资全部为绩效 + sysSalaryRate.setMeritsAllowance(BigDecimal.valueOf(surplusSalary)); + return sysSalaryRate; + } +} diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysSalaryComposeConfigMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysSalaryComposeConfigMapper.xml new file mode 100644 index 000000000..b7bd8eae5 --- /dev/null +++ b/stdiet-custom/src/main/resources/mapper/custom/SysSalaryComposeConfigMapper.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, salary_post_name, base_salary, post_allowance_rate, overtime_allowance_rate, merits_allowance_rate, car_allowance_rate, meal_allowance_rate, full_attendance_salary, house_allowance_rate, travel_allowance_rate, skill_allowance_rate, train_allowance_rate, department_allowance_rate, education_allowance_rate, create_time, create_by, update_time, update_by, del_flag from sys_salary_compose_config + + + + + + + + insert into sys_salary_compose_config + + salary_post_name, + base_salary, + post_allowance_rate, + overtime_allowance_rate, + merits_allowance_rate, + car_allowance_rate, + meal_allowance_rate, + full_attendance_salary, + house_allowance_rate, + travel_allowance_rate, + skill_allowance_rate, + train_allowance_rate, + department_allowance_rate, + education_allowance_rate, + create_time, + create_by, + update_time, + update_by, + del_flag, + + + #{salaryPostName}, + #{baseSalary}, + #{postAllowanceRate}, + #{overtimeAllowanceRate}, + #{meritsAllowanceRate}, + #{carAllowanceRate}, + #{mealAllowanceRate}, + #{fullAttendanceSalary}, + #{houseAllowanceRate}, + #{travelAllowanceRate}, + #{skillAllowanceRate}, + #{trainAllowanceRate}, + #{departmentAllowanceRate}, + #{educationAllowanceRate}, + #{createTime}, + #{createBy}, + #{updateTime}, + #{updateBy}, + #{delFlag}, + + + + + update sys_salary_compose_config + + salary_post_name = #{salaryPostName}, + base_salary = #{baseSalary}, + post_allowance_rate = #{postAllowanceRate}, + overtime_allowance_rate = #{overtimeAllowanceRate}, + merits_allowance_rate = #{meritsAllowanceRate}, + car_allowance_rate = #{carAllowanceRate}, + meal_allowance_rate = #{mealAllowanceRate}, + full_attendance_salary = #{fullAttendanceSalary}, + house_allowance_rate = #{houseAllowanceRate}, + travel_allowance_rate = #{travelAllowanceRate}, + skill_allowance_rate = #{skillAllowanceRate}, + train_allowance_rate = #{trainAllowanceRate}, + department_allowance_rate = #{departmentAllowanceRate}, + education_allowance_rate = #{educationAllowanceRate}, + create_time = #{createTime}, + create_by = #{createBy}, + update_time = #{updateTime}, + update_by = #{updateBy}, + del_flag = #{delFlag}, + + where id = #{id} + + + + update sys_salary_compose_config set del_flag = 1 where id = #{id} + + + + update sys_salary_compose_config set del_flag = 1 where id in + + #{id} + + + + \ No newline at end of file diff --git a/stdiet-ui/src/api/custom/salaryRate.js b/stdiet-ui/src/api/custom/salaryRate.js new file mode 100644 index 000000000..5d0c67250 --- /dev/null +++ b/stdiet-ui/src/api/custom/salaryRate.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +// 下载薪资导入模板 +export function importTemplate() { + return request({ + url: '/custom/salaryRate/importTemplate', + method: 'get' + }) +} \ No newline at end of file diff --git a/stdiet-ui/src/views/custom/salaryRate/index.vue b/stdiet-ui/src/views/custom/salaryRate/index.vue new file mode 100644 index 000000000..d91415a66 --- /dev/null +++ b/stdiet-ui/src/views/custom/salaryRate/index.vue @@ -0,0 +1,98 @@ + + + \ No newline at end of file