Browse Source

学校修改

lazhaoqian 3 years ago
parent
commit
f915a23a8f

+ 5 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/SchoolConfig.java

@@ -61,6 +61,11 @@ public class SchoolConfig implements Serializable {
 		@ApiModelProperty(value = "标准类别(字典表 工资标准 职称工资拨付标准 必填)")
 		private String normType;
 	/**
+	 * 职务
+	 */
+		@ApiModelProperty(value = "职务")
+		private String compileCategory;
+	/**
 	 * 备注
 	 */
 		@ApiModelProperty(value = "备注")

+ 6 - 1
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/SchoolTeacher.java

@@ -108,7 +108,7 @@ public class SchoolTeacher implements Serializable {
 	 * 校龄开始日期
 	 */
 		@ApiModelProperty(value = "校龄开始日期")
-		@JsonFormat(pattern = "yyyy-MM-dd")
+		@JsonFormat(pattern = "yyyy-MM")
 		private Date schoolAgeSalaryDate;
 	/**
 	 * 校龄
@@ -566,6 +566,11 @@ public class SchoolTeacher implements Serializable {
 	 */
 	@ApiModelProperty(value = "教研组长补贴")
 	private BigDecimal assessTeachingResearch;
+	/**
+	 * 职称
+	 */
+	@ApiModelProperty(value = "职称")
+	private String rankType;
 
 
 

+ 11 - 3
blade-service/blade-client/src/main/java/org/springblade/client/school/controller/SchoolConfigController.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.client.school.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -73,9 +74,16 @@ public class SchoolConfigController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入schoolConfig")
 	public R<IPage<SchoolConfig>> list(SchoolConfig schoolConfig, Query query) {
-		schoolConfig.setTenantId(SecureUtil.getTenantId());
-		schoolConfig.setIsDeleted(0);
-		IPage<SchoolConfig> pages = schoolConfigService.page(Condition.getPage(query), Condition.getQueryWrapper(schoolConfig));
+		LambdaQueryWrapper<SchoolConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(SchoolConfig::getIsDeleted,0);
+		lambdaQueryWrapper.eq(SchoolConfig::getTenantId,SecureUtil.getTenantId());
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolConfig.getInSection()),SchoolConfig::getInSection,schoolConfig.getInSection());
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolConfig.getSalaryWithdrawalStandardName()),SchoolConfig::getSalaryWithdrawalStandardName,schoolConfig.getSalaryWithdrawalStandardName());
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolConfig.getNormType()),SchoolConfig::getNormType,schoolConfig.getNormType());
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolConfig.getCompileCategory()),SchoolConfig::getCompileCategory,schoolConfig.getCompileCategory());
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolConfig.getRemarks()),SchoolConfig::getRemarks,schoolConfig.getRemarks());
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolConfig.getResultType()),SchoolConfig::getResultType,schoolConfig.getResultType());
+		IPage<SchoolConfig> pages = schoolConfigService.page(Condition.getPage(query), lambdaQueryWrapper);
 		if (CollectionUtils.isNotEmpty(pages.getRecords())){
 			pages.getRecords().stream().forEach(item ->{
 				R<User> user = userClient.userInfoById(item.getCreateUser());

+ 24 - 1
blade-service/blade-client/src/main/java/org/springblade/client/school/controller/SchoolTeacherController.java

@@ -103,6 +103,8 @@ public class SchoolTeacherController extends BladeController {
 		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getPhone()),SchoolTeacher::getPhone,schoolTeacher.getPhone());//联系电话
 		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getCode()),SchoolTeacher::getCode,schoolTeacher.getCode());//学历
 		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getInSection()),SchoolTeacher::getInSection,schoolTeacher.getInSection());//所在部门
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getDepartment()),SchoolTeacher::getDepartment,schoolTeacher.getDepartment());//级部
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getInStaffRoom()),SchoolTeacher::getInStaffRoom,schoolTeacher.getInStaffRoom());//班级
 		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getCompileCategory()),SchoolTeacher::getCompileCategory,schoolTeacher.getCompileCategory());//职务
 		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getRemarks()),SchoolTeacher::getRemarks,schoolTeacher.getRemarks());//备注
 		lambdaQueryWrapper.ge(Func.isNotEmpty(schoolTeacher.getCreateTimeStart()), SchoolTeacher::getJoiningDate,schoolTeacher.getCreateTimeStart());//入职日期开始
@@ -209,8 +211,29 @@ public class SchoolTeacherController extends BladeController {
 	@ApiOperationSupport(order = 9)
 	@ApiOperation(value = "导出信息-教职工资料")
 	public void exportSupplierTemplate(SchoolTeacher schoolTeacher,HttpServletResponse response) {
+		LambdaQueryWrapper<SchoolTeacher> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(SchoolTeacher::getIsDeleted,0);
+		lambdaQueryWrapper.eq(SchoolTeacher::getTenantId,SecureUtil.getTenantId());
+		lambdaQueryWrapper.eq(Func.isNotEmpty(schoolTeacher.getGender()),SchoolTeacher::getGender,schoolTeacher.getGender());//性别
+		lambdaQueryWrapper.eq(Func.isNotEmpty(schoolTeacher.getSchoolAge()),SchoolTeacher::getSchoolAge,schoolTeacher.getSchoolAge());//校龄
+		lambdaQueryWrapper.eq(Func.isNotEmpty(schoolTeacher.getDoubleTeachers()),SchoolTeacher::getDoubleTeachers,schoolTeacher.getDoubleTeachers());//是否班主任
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getCname()),SchoolTeacher::getCname,schoolTeacher.getCname());//姓名
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getIdNumber()),SchoolTeacher::getIdNumber,schoolTeacher.getIdNumber());//身份证号
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getPhone()),SchoolTeacher::getPhone,schoolTeacher.getPhone());//联系电话
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getCode()),SchoolTeacher::getCode,schoolTeacher.getCode());//学历
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getInSection()),SchoolTeacher::getInSection,schoolTeacher.getInSection());//所在部门
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getDepartment()),SchoolTeacher::getDepartment,schoolTeacher.getDepartment());//级部
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getInStaffRoom()),SchoolTeacher::getInStaffRoom,schoolTeacher.getInStaffRoom());//班级
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getCompileCategory()),SchoolTeacher::getCompileCategory,schoolTeacher.getCompileCategory());//职务
+		lambdaQueryWrapper.like(Func.isNotEmpty(schoolTeacher.getRemarks()),SchoolTeacher::getRemarks,schoolTeacher.getRemarks());//备注
+		lambdaQueryWrapper.ge(Func.isNotEmpty(schoolTeacher.getCreateTimeStart()), SchoolTeacher::getJoiningDate,schoolTeacher.getCreateTimeStart());//入职日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(schoolTeacher.getCreateTimeEnd()),SchoolTeacher::getJoiningDate,schoolTeacher.getCreateTimeEnd());//入职日期结束
+		lambdaQueryWrapper.ge(Func.isNotEmpty(schoolTeacher.getDateValidityStart()),SchoolTeacher::getBirthdate,schoolTeacher.getDateValidityStart());//转正日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(schoolTeacher.getDateValidityEnd()),SchoolTeacher::getBirthdate,schoolTeacher.getDateValidityEnd());//转正日期结束
+		lambdaQueryWrapper.ge(Func.isNotEmpty(schoolTeacher.getSchoolAgeSalaryDateStart()),SchoolTeacher::getSchoolAgeSalaryDate,schoolTeacher.getSchoolAgeSalaryDateStart());//校龄开始日期起始时间
+		lambdaQueryWrapper.le(Func.isNotEmpty(schoolTeacher.getSchoolAgeSalaryDateEnd()),SchoolTeacher::getSchoolAgeSalaryDate,schoolTeacher.getSchoolAgeSalaryDateEnd());//校龄开始日期结束时间
 		List<SchoolTeacherExcel> list = new ArrayList<>();
-		List<SchoolTeacher> schoolTeacherList = schoolTeacherService.list(new QueryWrapper<SchoolTeacher>().setEntity(schoolTeacher));
+		List<SchoolTeacher> schoolTeacherList = schoolTeacherService.list(lambdaQueryWrapper);
 		if (CollectionUtils.isNotEmpty(schoolTeacherList)){
 			list = JSON.parseArray(JSON.toJSONString(schoolTeacherList), SchoolTeacherExcel.class);
 		}

+ 8 - 2
blade-service/blade-client/src/main/java/org/springblade/client/school/excel/SchoolTeacherExcel.java

@@ -52,11 +52,12 @@ public class SchoolTeacherExcel implements Serializable {
 	 * 校龄开始日期
 	 */
 	@ExcelProperty(value = "校龄开始日期")
+	@JsonFormat(pattern = "yyyy-MM")
 	private Date schoolAgeSalaryDate;
 	/**
 	 * 所在部门
 	 */
-	@ExcelProperty(value = "所在部门(必填)")
+	@ExcelProperty(value = "所在部门")
 	private String inSection;
 	/**
 	 * 级部
@@ -81,9 +82,14 @@ public class SchoolTeacherExcel implements Serializable {
 	/**
 	 * 工资拨付标准
 	 */
-	@ExcelProperty(value = "教师类别(必填)")
+	@ExcelProperty(value = "教师类别")
 	private String salaryWithdrawalStandardName;
 	/**
+	 * 职称
+	 */
+	@ExcelProperty(value = "职称")
+	private String rankType;
+	/**
 	 * 工资拨付标准
 	 */
 	@ExcelProperty(value = "工资拨付标准")

+ 3 - 1
blade-service/blade-client/src/main/java/org/springblade/client/school/mapper/SchoolConfigItemMapper.java

@@ -47,12 +47,14 @@ public interface SchoolConfigItemMapper extends BaseMapper<SchoolConfigItem> {
 	 * @param salaryWithdrawalStandardName 教师类别 必填
 	 * @param normType 标准类别 必填
 	 * @param parameter 类别参数
+	 * @param compileCategory 职务
 	 * @return
 	 */
 	SchoolConfigItem getConfigMessage(@Param("tenantId") String tenantId,
 									  @Param("inSection") String inSection,
 									  @Param("salaryWithdrawalStandardName") String salaryWithdrawalStandardName,
 									  @Param("normType") String normType,
-									  @Param("parameter") String parameter);
+									  @Param("parameter") String parameter,
+									  @Param("compileCategory") String compileCategory);
 
 }

+ 15 - 6
blade-service/blade-client/src/main/java/org/springblade/client/school/mapper/SchoolConfigItemMapper.xml

@@ -32,18 +32,27 @@
 	    ON ci.pid = cf.id
 	    WHERE ci.is_deleted = 0
 	    AND cf.is_deleted = 0
-	    #租户
 	    AND ci.tenant_id = #{tenantId}
-	    #部门
 	    AND cf.in_section = #{inSection}
-	    #教师类别
-	    AND cf.salary_withdrawal_standard_name = #{salaryWithdrawalStandardName}
-	    #标准类别
 	    AND cf.norm_type = #{normType}
-	    #类别参数
         <if test="parameter!=null and parameter != ''">
             AND ci.parameter = #{parameter}
         </if>
+        <if test="parameter==null and parameter == ''">
+            AND ci.parameter IS NULL
+        </if>
+        <if test="salaryWithdrawalStandardName!=null and salaryWithdrawalStandardName != ''">
+            AND cf.salary_withdrawal_standard_name = #{salaryWithdrawalStandardName}
+        </if>
+        <if test="salaryWithdrawalStandardName==null and salaryWithdrawalStandardName == ''">
+            AND cf.salary_withdrawal_standard_name = ''
+        </if>
+        <if test="compileCategory!=null and compileCategory != ''">
+            AND cf.compile_category = #{compileCategory}
+        </if>
+        <if test="compileCategory==null or compileCategory == ''">
+            AND cf.compile_category = ''
+        </if>
 	    ORDER BY ci.salary DESC LIMIT 1
     </select>
 

+ 19 - 0
blade-service/blade-client/src/main/java/org/springblade/client/school/service/impl/SchoolConfigServiceImpl.java

@@ -28,6 +28,7 @@ import org.springblade.client.school.service.ISchoolConfigService;
 import org.springblade.client.vo.SchoolConfigVO;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
@@ -54,6 +55,24 @@ public class SchoolConfigServiceImpl extends ServiceImpl<SchoolConfigMapper, Sch
 
 	@Override
 	public SchoolConfig saveOrUpdateMessage(SchoolConfig schoolConfig) {
+		//查询标准是否存在相同的 存在且主表id为空 或主表id和查询出的id一致 或 不存在 则修改或保存
+		LambdaQueryWrapper<SchoolConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(SchoolConfig::getIsDeleted,0);
+		lambdaQueryWrapper.eq(SchoolConfig::getTenantId,SecureUtil.getTenantId());
+		lambdaQueryWrapper.eq(Func.isNotEmpty(schoolConfig.getInSection()),SchoolConfig::getInSection,schoolConfig.getInSection());
+		lambdaQueryWrapper.isNull(Func.isNull(schoolConfig.getInSection()),SchoolConfig::getInSection);
+		lambdaQueryWrapper.eq(Func.isNotEmpty(schoolConfig.getSalaryWithdrawalStandardName()),SchoolConfig::getSalaryWithdrawalStandardName,schoolConfig.getSalaryWithdrawalStandardName());
+		lambdaQueryWrapper.isNull(Func.isNull(schoolConfig.getSalaryWithdrawalStandardName()),SchoolConfig::getSalaryWithdrawalStandardName);
+		lambdaQueryWrapper.eq(Func.isNotEmpty(schoolConfig.getNormType()),SchoolConfig::getNormType,schoolConfig.getNormType());
+		lambdaQueryWrapper.isNull(Func.isNull(schoolConfig.getNormType()),SchoolConfig::getNormType);
+		lambdaQueryWrapper.eq(Func.isNotEmpty(schoolConfig.getCompileCategory()),SchoolConfig::getCompileCategory,schoolConfig.getCompileCategory());
+		lambdaQueryWrapper.isNull(Func.isNull(schoolConfig.getCompileCategory()),SchoolConfig::getCompileCategory);
+		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()){
+			throw new RuntimeException("标准已存在,请勿重复创建");
+		}
 		if (schoolConfig.getId() == null){
 			schoolConfig.setTenantId(SecureUtil.getTenantId());
 			schoolConfig.setCreateTime(new Date());

+ 109 - 57
blade-service/blade-client/src/main/java/org/springblade/client/school/service/impl/SchoolTeacherServiceImpl.java

@@ -22,6 +22,9 @@ 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 net.sf.jsqlparser.expression.DateTimeLiteralExpression;
+import org.joda.time.DateTime;
+import org.joda.time.Months;
 import org.springblade.client.entity.GoodsType;
 import org.springblade.client.entity.SchoolConfigItem;
 import org.springblade.client.entity.SchoolTeacher;
@@ -36,13 +39,16 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.DateUtil;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.time.LocalDate;
+import java.time.Month;
 import java.time.Period;
 import java.time.ZoneId;
 import java.util.Calendar;
@@ -72,43 +78,43 @@ public class SchoolTeacherServiceImpl extends ServiceImpl<SchoolTeacherMapper, S
 		SchoolTeacher teacher = baseMapper.selectOne(new QueryWrapper<SchoolTeacher>().eq("id_number", schoolTeacher.getIdNumber()).eq("tenant_id", SecureUtil.getTenantId())
 			.eq("is_deleted", 0));
 		if (schoolTeacher.getSchoolAgeSalaryDate() != null){
-			Calendar start = Calendar.getInstance();
-			Calendar end = Calendar.getInstance();
-			start.setTime(schoolTeacher.getSchoolAgeSalaryDate());
-			end.setTime(new Date());
-			int month = end.get(Calendar.YEAR)-start.get(Calendar.YEAR);
-			schoolTeacher.setSchoolAge(new BigDecimal(month));
+			DateTime start = new DateTime(schoolTeacher.getSchoolAgeSalaryDate().getTime());
+			DateTime end = new DateTime(new Date().getTime());
+			int result = Months.monthsBetween(start,end).getMonths();
+			schoolTeacher.setSchoolAge(new BigDecimal(Math.floorDiv(result, 12)));
 		}
 		if (schoolTeacher.getSchoolAge() != null && schoolTeacher.getSchoolAge().compareTo(new BigDecimal(10)) < 0){
 			schoolTeacher.setSchoolAgeSalary(schoolTeacher.getSchoolAge().multiply(new BigDecimal(100)));
 		}else if (schoolTeacher.getSchoolAge() != null && schoolTeacher.getSchoolAge().compareTo(new BigDecimal(10)) >= 0){
 			schoolTeacher.setSchoolAgeSalary(new BigDecimal(1000));
 		}
+		//获取教职工标准配置
+		SchoolTeacher configMessage = this.getConfigMessage(schoolTeacher);
 		if (teacher == null	){
-			schoolTeacher.setId(null);
-			schoolTeacher.setCreateTime(new Date());
-			schoolTeacher.setCreateUser(SecureUtil.getUserId());
-			schoolTeacher.setTenantId(SecureUtil.getTenantId());
-			baseMapper.insert(schoolTeacher);
+			configMessage.setId(null);
+			configMessage.setCreateTime(new Date());
+			configMessage.setCreateUser(SecureUtil.getUserId());
+			configMessage.setTenantId(SecureUtil.getTenantId());
+			baseMapper.insert(configMessage);
 		}else{
 			if (schoolTeacher.getId() != null && teacher.getId().longValue() != schoolTeacher.getId().longValue()){
 				throw  new RuntimeException("身份证号:"+schoolTeacher.getIdNumber()+"已存在");
 			}
-			schoolTeacher.setId(teacher.getId());
-			schoolTeacher.setUpdateTime(new Date());
-			schoolTeacher.setUpdateUser(SecureUtil.getUserId());
-			baseMapper.updateById(schoolTeacher);
+			configMessage.setId(teacher.getId());
+			configMessage.setUpdateTime(new Date());
+			configMessage.setUpdateUser(SecureUtil.getUserId());
+			baseMapper.updateById(configMessage);
 		}
-		if (CollectionUtils.isNotEmpty(schoolTeacher.getCauseList())){
-			schoolTeacher.getCauseList().stream().forEach(item ->{
+		if (CollectionUtils.isNotEmpty(configMessage.getCauseList())){
+			configMessage.getCauseList().stream().forEach(item ->{
 				if (item.getId() == null){
-					item.setPid(schoolTeacher.getId());
+					item.setPid(configMessage.getId());
 					item.setCreateTime(new Date());
 					item.setCreateUser(SecureUtil.getUserId());
 					item.setTenantId(SecureUtil.getTenantId());
 					schoolTeacherCauseMapper.insert(item);
 				}else {
-					item.setPid(schoolTeacher.getId());
+					item.setPid(configMessage.getId());
 					item.setUpdateTime(new Date());
 					item.setUpdateUser(SecureUtil.getUserId());
 					item.setTenantId(SecureUtil.getTenantId());
@@ -116,7 +122,7 @@ public class SchoolTeacherServiceImpl extends ServiceImpl<SchoolTeacherMapper, S
 				}
 			});
 		}
-		return schoolTeacher;
+		return configMessage;
 	}
 
 	@Override
@@ -146,31 +152,34 @@ public class SchoolTeacherServiceImpl extends ServiceImpl<SchoolTeacherMapper, S
 			SchoolTeacher schoolTeacher = new SchoolTeacher();
 			BeanUtil.copy(schoolTeacherExcel,schoolTeacher);
 			if (schoolTeacher.getSchoolAgeSalaryDate() != null){
-				Calendar start = Calendar.getInstance();
-				Calendar end = Calendar.getInstance();
-				start.setTime(schoolTeacher.getSchoolAgeSalaryDate());
-				end.setTime(new Date());
-				int month = end.get(Calendar.YEAR)-start.get(Calendar.YEAR);
-				schoolTeacher.setSchoolAge(new BigDecimal(month));
+				DateTime start = new DateTime(schoolTeacher.getSchoolAgeSalaryDate().getTime());
+				DateTime end = new DateTime(new Date().getTime());
+				int result = Months.monthsBetween(start,end).getMonths();
+				schoolTeacher.setSchoolAge(new BigDecimal(Math.floorDiv(result, 12)));
+			}else {
+				schoolTeacher.setSchoolAge(new BigDecimal(BigInteger.ZERO));
 			}
 			if (schoolTeacher.getSchoolAge() != null && schoolTeacher.getSchoolAge().compareTo(new BigDecimal(10)) < 0){
 				schoolTeacher.setSchoolAgeSalary(schoolTeacher.getSchoolAge().multiply(new BigDecimal(100)));
 			}else if (schoolTeacher.getSchoolAge() != null && schoolTeacher.getSchoolAge().compareTo(new BigDecimal(10)) >= 0){
 				schoolTeacher.setSchoolAgeSalary(new BigDecimal(1000));
 			}
+			//获取教职工标准配置
+			schoolTeacher.setTenantId(SecureUtil.getTenantId());
+			SchoolTeacher configMessage = this.getConfigMessage(schoolTeacher);
 			//根据身份证号查询教职工信息是否存在存在更新不存在新增
-			SchoolTeacher teacher = baseMapper.selectOne(new QueryWrapper<SchoolTeacher>().eq("id_number", schoolTeacher.getIdNumber()).eq("tenant_id", SecureUtil.getTenantId())
+			SchoolTeacher teacher = baseMapper.selectOne(new QueryWrapper<SchoolTeacher>().eq("id_number", configMessage.getIdNumber()).eq("tenant_id", SecureUtil.getTenantId())
 				.eq("is_deleted", 0));
 			if (teacher == null){
-				schoolTeacher.setTenantId(SecureUtil.getTenantId());
-				schoolTeacher.setCreateUser(SecureUtil.getUserId());
-				schoolTeacher.setCreateTime(new Date());
-				baseMapper.insert(schoolTeacher);
+				configMessage.setTenantId(SecureUtil.getTenantId());
+				configMessage.setCreateUser(SecureUtil.getUserId());
+				configMessage.setCreateTime(new Date());
+				baseMapper.insert(configMessage);
 			}else {
-				schoolTeacher.setId(teacher.getId());
-				schoolTeacher.setUpdateUser(SecureUtil.getUserId());
-				schoolTeacher.setUpdateTime(new Date());
-				baseMapper.updateById(schoolTeacher);
+				configMessage.setId(teacher.getId());
+				configMessage.setUpdateUser(SecureUtil.getUserId());
+				configMessage.setUpdateTime(new Date());
+				baseMapper.updateById(configMessage);
 			}
 
 		}
@@ -190,12 +199,10 @@ public class SchoolTeacherServiceImpl extends ServiceImpl<SchoolTeacherMapper, S
 		//有数据执行更新校龄操作
 		if (CollectionUtils.isNotEmpty(schoolTeacherList)){
 			schoolTeacherList.stream().forEach(item ->{
-				Calendar start = Calendar.getInstance();
-				Calendar end = Calendar.getInstance();
-				start.setTime(item.getSchoolAgeSalaryDate());
-				end.setTime(new Date());
-				int month = end.get(Calendar.YEAR)-start.get(Calendar.YEAR);
-				item.setSchoolAge(new BigDecimal(month));
+				DateTime start = new DateTime(item.getSchoolAgeSalaryDate().getTime());
+				DateTime end = new DateTime(new Date().getTime());
+				int result = Months.monthsBetween(start,end).getMonths();
+				item.setSchoolAge(new BigDecimal(Math.floorDiv(result, 12)));
 				baseMapper.updateById(item);
 			});
 		}
@@ -204,10 +211,15 @@ public class SchoolTeacherServiceImpl extends ServiceImpl<SchoolTeacherMapper, S
 	//获取工资标准配置信息
 	public SchoolTeacher getConfigMessage(SchoolTeacher schoolTeacher){
 		//获取工资拨付标准 公办用职称查询 其他用校龄查询
-		if (!schoolTeacher.getSalaryWithdrawalStandardName().equals("公办")){
-			SchoolConfigItem configMessage = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "工资拨付标准", schoolTeacher.getSchoolAge().toString());
+		if (!schoolTeacher.getSalaryWithdrawalStandardName().contains("公办")){
+			//非公办教师查询按校龄查询 查询不到按最大的校龄取值
+			SchoolConfigItem configMessage = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(),
+				schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(),
+				"工资拨付标准", schoolTeacher.getSchoolAge().toString(),null);
 			if (configMessage == null){
-				SchoolConfigItem configItem = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "工资拨付标准", null);
+				SchoolConfigItem configItem = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(),
+					schoolTeacher.getInSection(),
+					schoolTeacher.getSalaryWithdrawalStandardName(), "工资拨付标准", null,null);
 				if (configItem != null){
 					schoolTeacher.setSalaryWithdrawalStandard(configItem.getSalary());
 				}
@@ -215,56 +227,96 @@ public class SchoolTeacherServiceImpl extends ServiceImpl<SchoolTeacherMapper, S
 				schoolTeacher.setSalaryWithdrawalStandard(configMessage.getSalary());
 			}
 		}else {
-			SchoolConfigItem configMessage = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "工资拨付标准", schoolTeacher.getRankWithdrawalStandardName());
+			SchoolConfigItem configMessage = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "工资拨付标准", schoolTeacher.getRankType(),null);
 			if (configMessage != null){
-				schoolTeacher.setSalaryWithdrawalStandard(configMessage.getSalary());
+				if (schoolTeacher.getClassType().equals("非文化课")){
+					schoolTeacher.setSalaryWithdrawalStandard(configMessage.getSalary());
+				}else if (schoolTeacher.getClassType().equals("文化课")){
+					schoolTeacher.setSalaryWithdrawalStandard(configMessage.getSalary().add(new BigDecimal(700)));
+				}
 			}
 		}
-		//获取职级拨付标准
-		SchoolConfigItem teacherSubsidy = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "职级拨付标准", schoolTeacher.getRankWithdrawalStandardName());
+		if (schoolTeacher.getSalaryWithdrawalStandard() != null && schoolTeacher.getStaffType().equals("非教师")){
+			schoolTeacher.setSalaryWithdrawalStandard(schoolTeacher.getSalaryWithdrawalStandard().multiply(new BigDecimal(0.8)));
+		}
+		//获取职级拨付标准 按校龄取值 查询不到不赋值
+		SchoolConfigItem teacherSubsidy = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(),
+			schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "职级拨付标准",
+			schoolTeacher.getSchoolAge().toString(),null);
 		if (teacherSubsidy != null){
-			schoolTeacher.setTeacherSubsidy(teacherSubsidy.getSalary());
+			schoolTeacher.setRankWithdrawalStandardName(teacherSubsidy.getSalary().toString());
+		}else {
+			SchoolConfigItem message = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(),
+				schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "职级拨付标准",
+				null, null);
+			if (message != null){
+				schoolTeacher.setRankWithdrawalStandardName(message.getSalary().toString());
+			}
 		}
 		//班主任补贴标准
-		SchoolConfigItem message = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "班主任补贴标准", schoolTeacher.getInStaffRoom()+schoolTeacher.getDoubleTeachers());
+		SchoolConfigItem message = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(),
+			schoolTeacher.getInSection(), null, "班主任补贴标准", schoolTeacher.getDepartment()+schoolTeacher.getDoubleTeachers(),
+			schoolTeacher.getCompileCategory());
 		if (message != null){
 			schoolTeacher.setTeacherSubsidy(message.getSalary());
 		}
 		//班主任考核补贴标准
-		SchoolConfigItem teacherAssessSubsidy = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "班主任考核补贴标准", schoolTeacher.getInStaffRoom()+schoolTeacher.getDoubleTeachers());
+		SchoolConfigItem teacherAssessSubsidy = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), null, "班主任考核补贴标准", schoolTeacher.getDepartment()+schoolTeacher.getDoubleTeachers(),schoolTeacher.getCompileCategory());
 		if (teacherAssessSubsidy != null){
 			schoolTeacher.setTeacherAssessSubsidy(teacherAssessSubsidy.getSalary());
 		}
 		//教研组长补贴标准
-		SchoolConfigItem assessTeachingResearch = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "教研组长补贴标准", null);
+		SchoolConfigItem assessTeachingResearch = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), null, "教研组长补贴标准", null,schoolTeacher.getCompileCategory());
 		if (assessTeachingResearch != null){
 			schoolTeacher.setAssessTeachingResearch(assessTeachingResearch.getSalary());
 		}
 		//教研组长考核补贴标准
-		SchoolConfigItem assessTeachingResearchName = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "教研组长考核补贴标准", null);
+		SchoolConfigItem assessTeachingResearchName = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), null, "教研组长考核补贴标准", null,schoolTeacher.getCompileCategory());
 		if (assessTeachingResearchName != null){
 			schoolTeacher.setAssessTeachingResearchName(assessTeachingResearchName.getSalary());
 		}
 		//备课组长补贴标准
-		SchoolConfigItem assessPrepareLessonsName = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "备课组长补贴标准", null);
+		SchoolConfigItem assessPrepareLessonsName = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), null, "备课组长补贴标准", null,schoolTeacher.getCompileCategory());
 		if (assessPrepareLessonsName != null){
 			schoolTeacher.setAssessPrepareLessonsName(assessPrepareLessonsName.getSalary());
 		}
 		//备课组长考核补贴标准
-		SchoolConfigItem assessPrepareLessons = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "备课组长考核补贴标准", null);
+		SchoolConfigItem assessPrepareLessons = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), null, "备课组长考核补贴标准", null,schoolTeacher.getCompileCategory());
 		if (assessPrepareLessons != null){
 			schoolTeacher.setAssessPrepareLessons(assessPrepareLessons.getSalary());
 		}
 		//领导干部补贴标准
-		SchoolConfigItem assessLeadingCadreSubsidyName = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "领导干部补贴标准", schoolTeacher.getRankWithdrawalStandardName());
+		SchoolConfigItem assessLeadingCadreSubsidyName = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), null, "领导干部补贴标准", null,schoolTeacher.getCompileCategory());
 		if (assessLeadingCadreSubsidyName != null){
 			schoolTeacher.setAssessLeadingCadreSubsidyName(assessLeadingCadreSubsidyName.getSalary());
 		}
 		//领导干部考核补贴标准
-		SchoolConfigItem assessLeadingCadreSubsidy = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), schoolTeacher.getSalaryWithdrawalStandardName(), "领导干部考核补贴标准", schoolTeacher.getRankWithdrawalStandardName());
+		SchoolConfigItem assessLeadingCadreSubsidy = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), null, "领导干部考核补贴标准", null,schoolTeacher.getCompileCategory());
 		if (assessLeadingCadreSubsidy != null){
 			schoolTeacher.setAssessLeadingCadreSubsidy(assessLeadingCadreSubsidy.getSalary());
 		}
+		//学历工资
+		SchoolConfigItem code = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), null, "学历标准", schoolTeacher.getCode(), null);
+		if (code != null){
+			schoolTeacher.setEducationSalary(code.getSalary());
+		}
+		//职级等级工资
+		SchoolConfigItem rankSalaryName = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), null, "职级等级标准", schoolTeacher.getRankSalaryName(), null);
+		if (rankSalaryName != null){
+			schoolTeacher.setRankSalary(rankSalaryName.getSalary());
+		}
+		//增资标准
+		SchoolConfigItem capitalIncreaseName = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), null, "增资标准", schoolTeacher.getSchoolAge().toString(), null);
+		if (capitalIncreaseName == null){
+			SchoolConfigItem capitalIncrease = schoolConfigItemMapper.getConfigMessage(schoolTeacher.getTenantId(), schoolTeacher.getInSection(), null, "增资标准", null, null);
+			if (capitalIncrease != null){
+				schoolTeacher.setCapitalIncreaseName(capitalIncrease.getSalary().toString());
+				schoolTeacher.setCapitalIncrease(capitalIncrease.getSalary());
+			}
+		}else {
+			schoolTeacher.setCapitalIncreaseName(capitalIncreaseName.getSalary().toString());
+			schoolTeacher.setCapitalIncrease(capitalIncreaseName.getSalary());
+		}
 		return schoolTeacher;
 	}
 

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

@@ -196,5 +196,14 @@ public class SalaryController extends BladeController {
 		return R.success("操作成功");
 	}
 
+	/**
+	 * 详情
+	 */
+	@GetMapping("/copyMessage")
+	@ApiOperationSupport(order = 10)
+	@ApiOperation(value = "复制工资明细", notes = "传入salary")
+	public R<Salary> copyMessage(SalaryVO salary) {
+		return R.data(salaryService.copyMessage(salary));
+	}
 
 }

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

@@ -82,4 +82,10 @@ public interface ISalaryService extends IService<Salary> {
 	 */
 	void underReview(Long id);
 
+	/**
+	 * 复制工资信息
+	 * @return
+	 */
+	Salary copyMessage(Salary salary);
+
 }

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

@@ -16,6 +16,7 @@
  */
 package org.springblade.school.service.impl;
 
+import com.alibaba.druid.sql.ast.expr.SQLCaseExpr;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -231,4 +232,41 @@ public class SalaryServiceImpl extends ServiceImpl<SalaryMapper, Salary> impleme
 		salaryItemMapper.updateStatus(2,id);
 	}
 
+	/**
+	 * 复制工资信息
+	 * @param salary
+	 * @return
+	 */
+	@Override
+	public Salary copyMessage(Salary salary) {
+		//获取工资主表信息
+		Salary selectById = baseMapper.selectById(salary.getId());
+		LambdaQueryWrapper<SalaryItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(SalaryItem::getPid,salary.getId());
+		lambdaQueryWrapper.eq(SalaryItem::getIsDeleted,0);
+		List<SalaryItem> salaryItemList = salaryItemMapper.selectList(lambdaQueryWrapper);
+		selectById.setId(null);
+		selectById.setStatus(0);
+		selectById.setTenantId(SecureUtil.getTenantId());
+		selectById.setCreateUser(SecureUtil.getUserId());
+		selectById.setCreateTime(new Date());
+		selectById.setUpdateUser(null);
+		selectById.setUpdateTime(null);
+		int insert = baseMapper.insert(selectById);
+		//保存明细表的数据
+		if (CollectionUtils.isNotEmpty(salaryItemList)){
+			salaryItemList.stream().forEach(item -> {
+				item.setId(null);
+				item.setStatus(0);
+				item.setPid(selectById.getId());
+				item.setCreateUser(SecureUtil.getUserId());
+				item.setCreateTime(new Date());
+				item.setUpdateUser(null);
+				item.setUpdateTime(null);
+				salaryItemMapper.insert(item);
+			});
+		}
+		return selectById;
+	}
+
 }