Browse Source

学校暂存

lazhaoqian 3 years ago
parent
commit
01e8fd6c7d

+ 19 - 0
blade-service-api/blade-school-api/src/main/java/org/springblade/school/entity/SalaryData.java

@@ -1,5 +1,6 @@
 package org.springblade.school.entity;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -18,34 +19,52 @@ public class SalaryData implements Serializable {
 	/**
 	 * 工资总额
 	 */
+	@ApiModelProperty(value = "工资总额")
 	private BigDecimal salaryRental;
 	/**
 	 *年工资额增长率
 	 */
+	@ApiModelProperty(value = "年工资额增长率")
 	private BigDecimal annualWageGrowth;
 	/**
 	 *人均工资
 	 */
+	@ApiModelProperty(value = "人均工资")
 	private BigDecimal averageWage;
 	/**
 	 *年人均工资增长率
 	 */
+	@ApiModelProperty(value = "年人均工资增长率")
 	private BigDecimal averageWageGrowthRate;
 	/**
 	 *保险总额
 	 */
+	@ApiModelProperty(value = "保险总额")
 	private BigDecimal insuredSum;
 	/**
 	 *
 	 *保险总额同比
 	 */
+	@ApiModelProperty(value = "保险总额同比")
 	private BigDecimal insuredSumYear;
 	/**
 	 *人均保险
 	 */
+	@ApiModelProperty(value = "人均保险")
 	private BigDecimal insuredMean;
 	/**
 	 *人均保险同比
 	 */
+	@ApiModelProperty(value = "人均保险同比")
 	private BigDecimal insuredMeanYear;
+	/**
+	 * 教师人数
+	 */
+	@ApiModelProperty(value = "教师人数")
+	private BigDecimal personNumber;
+	/**
+	 * 工资主表数量
+	 */
+	@ApiModelProperty(value = "工资主表数量")
+	private BigDecimal salaryNumber;
 }

+ 249 - 4
blade-service/blade-client/src/main/java/org/springblade/client/school/service/impl/SchoolConfigServiceImpl.java

@@ -18,6 +18,7 @@ package org.springblade.client.school.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.client.entity.SchoolConfig;
@@ -35,6 +36,8 @@ import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 学校拨付标准配置主表 服务实现类
@@ -55,6 +58,7 @@ public class SchoolConfigServiceImpl extends ServiceImpl<SchoolConfigMapper, Sch
 
 	@Override
 	public SchoolConfig saveOrUpdateMessage(SchoolConfig schoolConfig) {
+		this.judgeCriteria(schoolConfig);//判断标准是否符合
 		//查询标准是否存在相同的 存在且主表id为空 或主表id和查询出的id一致 或 不存在 则修改或保存
 		LambdaQueryWrapper<SchoolConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(SchoolConfig::getIsDeleted,0);
@@ -69,11 +73,14 @@ public class SchoolConfigServiceImpl extends ServiceImpl<SchoolConfigMapper, Sch
 		lambdaQueryWrapper.isNull(Func.isNull(schoolConfig.getCompileCategory()),SchoolConfig::getCompileCategory);
 		lambdaQueryWrapper.eq(Func.isNotEmpty(schoolConfig.getClassType()),SchoolConfig::getClassType,schoolConfig.getClassType());
 		lambdaQueryWrapper.isNull(Func.isNull(schoolConfig.getClassType()),SchoolConfig::getClassType);
-		SchoolConfig config = baseMapper.selectOne(lambdaQueryWrapper);
-		if (config != null && schoolConfig.getId() == null){
-			throw new RuntimeException("标准已存在,请勿重复创建");
-		}else if (config != null && schoolConfig.getId() != null && schoolConfig.getId().longValue() != config.getId().longValue()){
+		List<SchoolConfig> schoolConfigs = baseMapper.selectList(lambdaQueryWrapper);
+		if (CollectionUtils.isNotEmpty(schoolConfigs) && schoolConfig.getId() == null){
 			throw new RuntimeException("标准已存在,请勿重复创建");
+		}else if (CollectionUtils.isNotEmpty(schoolConfigs) && schoolConfig.getId() != null){
+			List<Long> collect = schoolConfigs.stream().map(SchoolConfig::getId).collect(Collectors.toList());
+			if (!collect.contains(schoolConfig.getId())){
+				throw new RuntimeException("标准已存在,请勿重复创建");
+			}
 		}
 		if (schoolConfig.getId() == null){
 			schoolConfig.setTenantId(SecureUtil.getTenantId());
@@ -122,5 +129,243 @@ public class SchoolConfigServiceImpl extends ServiceImpl<SchoolConfigMapper, Sch
 		}
 		return config;
 	}
+	public void judgeCriteria(SchoolConfig schoolConfig){
+		if (schoolConfig.getNormType().equals("工资拨付标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getInSection()) && schoolConfig.getInSection().equals("高中部") && StringUtils.isBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getInSection()) && !schoolConfig.getInSection().equals("高中部") && StringUtils.isNotBlank(schoolConfig.getClassType())){
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("职级拨付标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getInSection()) && schoolConfig.getInSection().equals("高中部") && StringUtils.isBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getInSection()) && !schoolConfig.getInSection().equals("高中部") && StringUtils.isNotBlank(schoolConfig.getClassType())){
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("班主任补贴标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不需要输入");
+			}
+			if ( StringUtils.isNotBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("班主任考核补贴标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不需要输入");
+			}
+			if ( StringUtils.isNotBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("教研组长补贴标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不需要输入");
+			}
+			if (StringUtils.isBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不能为空");
+			}
+			if ( StringUtils.isNotBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("教研组长考核补贴标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不需要输入");
+			}
+			if (StringUtils.isBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不能为空");
+			}
+			if ( StringUtils.isNotBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("备课组长补贴标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不需要输入");
+			}
+			if (StringUtils.isBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不能为空");
+			}
+			if ( StringUtils.isNotBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("备课组长考核补贴标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不需要输入");
+			}
+			if (StringUtils.isBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不能为空");
+			}
+			if ( StringUtils.isNotBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("领导干部补贴标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不需要输入");
+			}
+			if (StringUtils.isBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不能为空");
+			}
+			if ( StringUtils.isNotBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("领导干部考核补贴标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不需要输入");
+			}
+			if (StringUtils.isBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不能为空");
+			}
+			if ( StringUtils.isNotBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("职级等级标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("学历标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("增资标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("履约奖标准")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("日常考核等级")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getInSection()) && schoolConfig.getInSection().equals("高中部") && StringUtils.isBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getInSection()) && !schoolConfig.getInSection().equals("高中部") && StringUtils.isNotBlank(schoolConfig.getClassType())){
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+		if (schoolConfig.getNormType().equals("学期绩效等级")){
+			if (StringUtils.isBlank(schoolConfig.getInSection())){   //部门
+				throw new SecurityException(schoolConfig.getNormType()+"中部门不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getSalaryWithdrawalStandardName())){ //类别
+				throw new SecurityException(schoolConfig.getNormType()+"中类别不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getCompileCategory())){ //岗位
+				throw new SecurityException(schoolConfig.getNormType()+"中岗位不需要输入");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getInSection()) && schoolConfig.getInSection().equals("高中部") && StringUtils.isBlank(schoolConfig.getClassType())){ //授课类别
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不能为空");
+			}
+			if (StringUtils.isNotBlank(schoolConfig.getInSection()) && !schoolConfig.getInSection().equals("高中部") && StringUtils.isNotBlank(schoolConfig.getClassType())){
+				throw new SecurityException(schoolConfig.getNormType()+"中授课类别不需要输入");
+			}
+		}
+	}
 
 }

+ 10 - 0
blade-service/blade-school/src/main/java/org/springblade/school/controller/SalaryController.java

@@ -30,6 +30,7 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.school.entity.SalaryData;
 import org.springblade.school.entity.SalaryStatistics;
 import org.springblade.school.service.ISalaryItemService;
 import org.springblade.system.user.entity.User;
@@ -218,5 +219,14 @@ public class SalaryController extends BladeController {
 	public R<List<SalaryStatistics>> SalaryStatistics(Salary salary) {
 		return R.data(salaryService.SalaryStatistics(salary));
 	}
+	/**
+	 * 分页 通济学校-工资管理主表信息
+	 */
+	@GetMapping("/salaryData")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "首页教师工资总体数据", notes = "传入salary")
+	public R<SalaryData> salaryData(Salary salary) {
+		return R.data(salaryService.salaryData(salary));
+	}
 
 }

+ 18 - 0
blade-service/blade-school/src/main/java/org/springblade/school/mapper/SalaryMapper.java

@@ -16,8 +16,10 @@
  */
 package org.springblade.school.mapper;
 
+import com.baomidou.mybatisplus.annotation.SqlParser;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.school.entity.Salary;
+import org.springblade.school.entity.SalaryData;
 import org.springblade.school.entity.SalaryStatistics;
 import org.springblade.school.vo.SalaryVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -48,4 +50,20 @@ public interface SalaryMapper extends BaseMapper<Salary> {
 	 */
 	List<SalaryStatistics> SalaryStatistics(@Param("salary") Salary salary);
 
+	/**
+	 * 获取当前年或选中年度的工资信息
+	 * @param salary
+	 * @return
+	 */
+	@SqlParser(filter=true)
+	SalaryData salaryDataNow (@Param("salary") Salary salary);
+
+	/**
+	 * 获取前年前一年或选中年度前一年的工资信息
+	 * @param salary
+	 * @return
+	 */
+	@SqlParser(filter=true)
+	SalaryData salaryDataLastYear (@Param("salary") Salary salary);
+
 }

+ 50 - 0
blade-service/blade-school/src/main/java/org/springblade/school/mapper/SalaryMapper.xml

@@ -87,5 +87,55 @@
         ) n ON m.id = n.moon
         ORDER BY m.id
     </select>
+    <select id="salaryDataNow" resultType="org.springblade.school.entity.SalaryData">
+        SELECT
+	        IFNULL(SUM(st.f_salary),0) AS  salaryRental, #工资总额
+	        IFNULL(SUM(st.insurance_unit),0) AS insuredSum, #保险总额
+            COUNT(st.id) AS personNumber,#教师人数
+            COUNT(DISTINCT sa.id) AS salaryNumber#工资主表数量
+        FROM
+	    school_salary sa
+        LEFT JOIN school_salary_item st
+        ON sa.id = st.pid
+        WHERE sa.is_deleted = 0
+        AND st.is_deleted = 0
+        <if test="salary.annual!=null and salary.annual != ''">
+            and sa.annual = #{salary.annual}
+        </if>
+        <if test="salary.tenantId!=null and salary.tenantId != ''">
+            and sa.tenant_id = #{salary.tenantId}
+        </if>
+        <if test="salary.salaryType!=null and salary.salaryType != ''">
+            and sa.salary_type = #{salary.salaryType}
+        </if>
+        <if test="salary.annual==null or salary.annual == ''">
+            AND sa.annual=YEAR(NOW())
+        </if>
+    </select>
+    <select id="salaryDataLastYear" resultType="org.springblade.school.entity.SalaryData">
+        SELECT
+        IFNULL(SUM(st.f_salary),0) AS  salaryRental, #工资总额
+        COUNT(st.id) AS personNumber,#教师人数
+        COUNT(DISTINCT sa.id) AS salaryNumber,#工资主表数量
+        IFNULL(SUM(st.insurance_unit),0) AS insuredSum #保险总额
+        FROM
+        school_salary sa
+        LEFT JOIN school_salary_item st
+        ON sa.id = st.pid
+        WHERE sa.is_deleted = 0
+        AND st.is_deleted = 0
+        <if test="salary.annual!=null and salary.annual != ''">
+            and sa.annual = #{salary.annual} -1
+        </if>
+        <if test="salary.tenantId!=null and salary.tenantId != ''">
+            and sa.tenant_id = #{salary.tenantId}
+        </if>
+        <if test="salary.salaryType!=null and salary.salaryType != ''">
+            and sa.salary_type = #{salary.salaryType}
+        </if>
+        <if test="salary.annual==null or salary.annual == ''">
+            AND sa.annual=YEAR(NOW())-1
+        </if>
+    </select>
 
 </mapper>

+ 8 - 0
blade-service/blade-school/src/main/java/org/springblade/school/service/ISalaryService.java

@@ -18,6 +18,7 @@ package org.springblade.school.service;
 
 import org.springblade.core.tool.api.R;
 import org.springblade.school.entity.Salary;
+import org.springblade.school.entity.SalaryData;
 import org.springblade.school.entity.SalaryStatistics;
 import org.springblade.school.vo.SalaryVO;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -99,4 +100,11 @@ public interface ISalaryService extends IService<Salary> {
 	 */
 	List<SalaryStatistics> SalaryStatistics(Salary salary);
 
+	/**
+	 * 获取工资信息
+	 * @param salary
+	 * @return
+	 */
+	SalaryData salaryData(Salary salary);
+
 }

+ 69 - 0
blade-service/blade-school/src/main/java/org/springblade/school/service/impl/SalaryServiceImpl.java

@@ -32,6 +32,7 @@ import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.school.entity.Salary;
+import org.springblade.school.entity.SalaryData;
 import org.springblade.school.entity.SalaryItem;
 import org.springblade.school.entity.SalaryStatistics;
 import org.springblade.school.mapper.SalaryItemMapper;
@@ -317,4 +318,72 @@ public class SalaryServiceImpl extends ServiceImpl<SalaryMapper, Salary> impleme
 		return baseMapper.SalaryStatistics(salary);
 	}
 
+	@Override
+	public SalaryData salaryData(Salary salary) {
+		if (StringUtils.isBlank(salary.getTenantId())){
+			salary.setTenantId(SecureUtil.getTenantId());
+		}
+		 //获取当前年或者选中年的工资信息
+		SalaryData salaryData = baseMapper.salaryDataNow(salary);
+		//当年人均工资或人均保险
+		if (salaryData != null && salaryData.getSalaryNumber().compareTo(BigDecimal.ZERO)!=0){
+			BigDecimal annualWageGrowth = salaryData.getPersonNumber().divide(salaryData.getSalaryNumber(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP);
+			if (annualWageGrowth.compareTo(BigDecimal.ZERO) > 0 ){
+				salaryData.setAverageWage(salaryData.getSalaryRental().divide(annualWageGrowth,5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+				salaryData.setInsuredMean(salaryData.getInsuredSum().divide(annualWageGrowth,5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+			}else {
+				salaryData.setAverageWage(BigDecimal.ZERO);
+				salaryData.setInsuredMean(BigDecimal.ZERO);
+			}
+		}else {
+			salaryData.setAverageWage(BigDecimal.ZERO);
+			salaryData.setInsuredMean(BigDecimal.ZERO);
+		}
+		//获取当前年前一年或者选中年前一年的工资信息
+		SalaryData lastYear = baseMapper.salaryDataLastYear(salary);
+		//当前年前一年或者选中年前一年人均工资或人均保险
+		if (lastYear != null && lastYear.getSalaryNumber().compareTo(BigDecimal.ZERO)!=0){
+			BigDecimal annualWageGrowth = lastYear.getPersonNumber().divide(lastYear.getSalaryNumber(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP);
+			if (annualWageGrowth.compareTo(BigDecimal.ZERO) > 0 ){
+				lastYear.setAverageWage(salaryData.getSalaryRental().divide(annualWageGrowth,5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+				lastYear.setInsuredMean(salaryData.getInsuredSum().divide(annualWageGrowth,5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+			}else {
+				lastYear.setAverageWage(BigDecimal.ZERO);
+				lastYear.setInsuredMean(BigDecimal.ZERO);
+			}
+		}else {
+			lastYear.setAverageWage(BigDecimal.ZERO);
+			lastYear.setInsuredMean(BigDecimal.ZERO);
+		}
+		BigDecimal salaryRental = salaryData.getSalaryRental().subtract(lastYear.getSalaryRental());
+		//年工资额增长率
+		if (salaryRental.compareTo(BigDecimal.ZERO) >= 0 &&lastYear.getSalaryRental().compareTo(BigDecimal.ZERO) != 0){
+			salaryData.setAnnualWageGrowth(salaryRental.divide(lastYear.getSalaryRental(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryData.setAnnualWageGrowth(BigDecimal.ZERO);
+		}
+		//年人均工资增长率
+		BigDecimal averageWage = salaryData.getAverageWage().subtract(lastYear.getAverageWage());
+		if (averageWage.compareTo(BigDecimal.ZERO) >= 0 && lastYear.getAverageWage().compareTo(BigDecimal.ZERO) != 0){
+			salaryData.setAverageWageGrowthRate(averageWage.divide(lastYear.getAverageWage(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryData.setAverageWageGrowthRate(BigDecimal.ZERO);
+		}
+		//保险总额同比
+		BigDecimal insuredSumYear = salaryData.getInsuredSum().subtract(lastYear.getInsuredSum());
+		if (insuredSumYear.compareTo(BigDecimal.ZERO) >= 0 && lastYear.getInsuredSum().compareTo(BigDecimal.ZERO) != 0){
+			salaryData.setInsuredSumYear(insuredSumYear.divide(lastYear.getInsuredSum(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryData.setInsuredSumYear(BigDecimal.ZERO);
+		}
+		//人均保险同比
+		BigDecimal insuredMeanYear = salaryData.getInsuredMean().subtract(lastYear.getInsuredMean());
+		if (insuredMeanYear.compareTo(BigDecimal.ZERO) >= 0 && lastYear.getInsuredMean().compareTo(BigDecimal.ZERO) != 0){
+			salaryData.setInsuredMeanYear(insuredMeanYear.divide(lastYear.getInsuredMean(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryData.setInsuredMeanYear(BigDecimal.ZERO);
+		}
+		return salaryData;
+	}
+
 }