Parcourir la source

学校 福达修改

lazhaoqian il y a 3 ans
Parent
commit
9e08627990
16 fichiers modifiés avec 658 ajouts et 61 suppressions
  1. 83 0
      blade-service-api/blade-school-api/src/main/java/org/springblade/school/entity/SalaryDataChain.java
  2. 1 1
      blade-service-api/blade-school-api/src/main/java/org/springblade/school/entity/SalaryStatistics.java
  3. 5 1
      blade-service-api/blade-school-api/src/main/java/org/springblade/school/vo/SalaryVO.java
  4. 5 5
      blade-service/blade-client/src/main/java/org/springblade/client/school/service/impl/SchoolConfigServiceImpl.java
  5. 37 47
      blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/feign/PriceBankClient.java
  6. 14 1
      blade-service/blade-school/src/main/java/org/springblade/school/controller/SalaryController.java
  7. 112 0
      blade-service/blade-school/src/main/java/org/springblade/school/controller/SalaryItemController.java
  8. 37 0
      blade-service/blade-school/src/main/java/org/springblade/school/excel/LeadAssessExcel.java
  9. 36 0
      blade-service/blade-school/src/main/java/org/springblade/school/excel/PrepareAssessExcel.java
  10. 36 0
      blade-service/blade-school/src/main/java/org/springblade/school/excel/TeamLeaderAssessExcel.java
  11. 17 1
      blade-service/blade-school/src/main/java/org/springblade/school/mapper/SalaryMapper.java
  12. 38 1
      blade-service/blade-school/src/main/java/org/springblade/school/mapper/SalaryMapper.xml
  13. 28 0
      blade-service/blade-school/src/main/java/org/springblade/school/service/ISalaryItemService.java
  14. 7 0
      blade-service/blade-school/src/main/java/org/springblade/school/service/ISalaryService.java
  15. 138 0
      blade-service/blade-school/src/main/java/org/springblade/school/service/impl/SalaryItemServiceImpl.java
  16. 64 4
      blade-service/blade-school/src/main/java/org/springblade/school/service/impl/SalaryServiceImpl.java

+ 83 - 0
blade-service-api/blade-school-api/src/main/java/org/springblade/school/entity/SalaryDataChain.java

@@ -0,0 +1,83 @@
+package org.springblade.school.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 通济学校-首页工资环比柱状图
+ *
+ * @author BladeX
+ * @since 2022-01-11
+ */
+@Data
+public class SalaryDataChain implements Serializable {
+	/**
+	 * 工资总数第一年
+	 */
+	@ApiModelProperty(value = "工资总数第一年")
+	private BigDecimal fSalary;
+
+	/**
+	 * 学生人数第一年
+	 */
+	@ApiModelProperty(value = "学生人数第一年")
+	private BigDecimal studentNumber;
+	/**
+	 * 工资总数第二年
+	 */
+	@ApiModelProperty(value = "工资总数第二年")
+	private BigDecimal fSalaryOne;
+
+	/**
+	 * 学生人数第二年
+	 */
+	@ApiModelProperty(value = "学生人数第二年")
+	private BigDecimal studentNumberOne;
+	/**
+	 * 工资总数第三年
+	 */
+	@ApiModelProperty(value = "工资总数第三年")
+	private BigDecimal fSalaryTwo;
+
+	/**
+	 * 学生人数第三年
+	 */
+	@ApiModelProperty(value = "学生人数第三年")
+	private BigDecimal studentNumberTwo;
+	/**
+	 * 工资总数第四年
+	 */
+	@ApiModelProperty(value = "工资总数第四年")
+	private BigDecimal fSalaryThree;
+
+	/**
+	 * 学生人数第四年
+	 */
+	@ApiModelProperty(value = "学生人数第四年")
+	private BigDecimal studentNumberThree;
+	/**
+	 * 工资总数第五年
+	 */
+	@ApiModelProperty(value = "工资总数第五年")
+	private BigDecimal fSalaryFour;
+
+	/**
+	 * 学生人数第五年
+	 */
+	@ApiModelProperty(value = "学生人数第五年")
+	private BigDecimal studentNumberFour;
+	/**
+	 * 工资总数第六年
+	 */
+	@ApiModelProperty(value = "工资总数第六年")
+	private BigDecimal fSalaryFive;
+
+	/**
+	 * 学生人数第六年
+	 */
+	@ApiModelProperty(value = "学生人数第六年")
+	private BigDecimal studentNumberFive;
+}

+ 1 - 1
blade-service-api/blade-school-api/src/main/java/org/springblade/school/entity/SalaryStatistics.java

@@ -7,7 +7,7 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 
 /**
- * 通济学校-首页工资统计
+ * 通济学校-首页工资同比柱状图
  *
  * @author BladeX
  * @since 2022-01-11

+ 5 - 1
blade-service-api/blade-school-api/src/main/java/org/springblade/school/vo/SalaryVO.java

@@ -36,5 +36,9 @@ import java.util.List;
 @ApiModel(value = "SalaryVO对象", description = "通济学校-工资管理主表信息")
 public class SalaryVO extends Salary {
 	private static final long serialVersionUID = 1L;
-
+	/**
+	 * 学期 上学期 下学期
+	 */
+	@ApiModelProperty(value = "学期 上学期 下学期")
+	private String semester;
 }

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

@@ -58,7 +58,7 @@ public class SchoolConfigServiceImpl extends ServiceImpl<SchoolConfigMapper, Sch
 
 	@Override
 	public SchoolConfig saveOrUpdateMessage(SchoolConfig schoolConfig) {
-		//this.judgeCriteria(schoolConfig);//判断标准是否符合
+		this.judgeCriteria(schoolConfig);//判断标准是否符合
 		//查询标准是否存在相同的 存在且主表id为空 或主表id和查询出的id一致 或 不存在 则修改或保存
 		LambdaQueryWrapper<SchoolConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(SchoolConfig::getIsDeleted,0);
@@ -73,7 +73,7 @@ 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);
-	/*	List<SchoolConfig> schoolConfigs = baseMapper.selectList(lambdaQueryWrapper);
+		List<SchoolConfig> schoolConfigs = baseMapper.selectList(lambdaQueryWrapper);
 		if (CollectionUtils.isNotEmpty(schoolConfigs) && schoolConfig.getId() == null){
 			throw new RuntimeException("标准已存在,请勿重复创建");
 		}else if (CollectionUtils.isNotEmpty(schoolConfigs) && schoolConfig.getId() != null){
@@ -81,13 +81,13 @@ public class SchoolConfigServiceImpl extends ServiceImpl<SchoolConfigMapper, Sch
 			if (!collect.contains(schoolConfig.getId())){
 				throw new RuntimeException("标准已存在,请勿重复创建");
 			}
-		}*/
-		SchoolConfig config = baseMapper.selectOne(lambdaQueryWrapper);
+		}
+		/*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());

+ 37 - 47
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/feign/PriceBankClient.java

@@ -84,62 +84,52 @@ public class PriceBankClient implements IPriceBankClient{
 		lambdaQueryWrapper.eq(PriceBank::getItemId,itemId);
 		lambdaQueryWrapper.eq(PriceBank::getCorpId,corpId);
 		PriceBank priceBank = priceBankMapper.selectOne(lambdaQueryWrapper);
+		//获取商品信息
+		R<GoodsDescVO> goodsDesc = goodsDescClient.selectGoodsMessage(itemId);
+		R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(corpId);
+		PriceBank bank = new PriceBank();
+		bank.setItemId(itemId);
+		if (goodsDesc.isSuccess() && goodsDesc.getData() != null){
+			bank.setCode(goodsDesc.getData().getCode());
+			bank.setCname(goodsDesc.getData().getCname());
+			bank.setEname(goodsDesc.getData().getEname());
+			bank.setSpecs(goodsDesc.getData().getTypeno());
+		}
+		bank.setCorpId(corpId);
+		bank.setCurrency(currency);
+		bank.setCoefficient(coefficient);
+		bank.setBillType(billType);
+		bank.setTradeType(tradeType);
+		bank.setEndTime(date);
+		bank.setPrice(price);
+		bank.setRemarks(remarks);
+		bank.setPriceTime(new Date());
+		bank.setExchangeRate(exchangeRate);
+		bank.setGreenback(greenback);
+		bank.setTaxRate(taxRate);
+		bank.setGoodTypeId(Long.valueOf(goodsDesc.getData().getGoodsTypeId()));
+		bank.setPurchaseAmount(purchaseAmount);
+		bank.setPriorityReferrer(priorityReferrer);
+		bank.setReferrerReason(referrerReason);
+		if (corpMessage.isSuccess() && corpMessage.getData() != null){
+			bank.setCorpName(corpMessage.getData().getCname());
+		}
+		GoodsType goodsType = goodsDescClient.goodTypeId(itemId);
+		if (goodsType != null){
+			bank.setGoodsTypeName(goodsType.getCname());
+		}
 		if (priceBank != null){
 			if (new Date().compareTo(priceBank.getPriceTime()) >0){
 				priceBankMapper.updatePrice(priceBank.getId());//更新历史价格
 			}
-			PriceBank bank = new PriceBank();
 			bank.setId(priceBank.getId());
-			bank.setPrice(price);
-			bank.setPriceTime(new Date());
-			bank.setExchangeRate(exchangeRate);
-			bank.setGreenback(greenback);
-			bank.setCurrency(currency);
-			bank.setCoefficient(coefficient);
-			bank.setTaxRate(taxRate);
 			bank.setUpdateUser(SecureUtil.getUserId());
 			bank.setUpdateTime(new Date());
-			bank.setEndTime(date);
-			bank.setRemarks(remarks);
 			flag = priceBankMapper.updateById(bank);
 		}else {
-			//获取商品信息
-			R<GoodsDescVO> goodsDesc = goodsDescClient.selectGoodsMessage(itemId);
-			R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(corpId);
-			if (goodsDesc.isSuccess() && goodsDesc.getData() != null){
-				PriceBank bank = new PriceBank();
-				bank.setItemId(itemId);
-				bank.setCode(goodsDesc.getData().getCode());
-				bank.setCname(goodsDesc.getData().getCname());
-				bank.setEname(goodsDesc.getData().getEname());
-				bank.setSpecs(goodsDesc.getData().getTypeno());
-				bank.setCorpId(corpId);
-				bank.setCurrency(currency);
-				bank.setCoefficient(coefficient);
-				bank.setBillType(billType);
-				bank.setTradeType(tradeType);
-				bank.setEndTime(date);
-				bank.setPrice(price);
-				bank.setRemarks(remarks);
-				bank.setPriceTime(new Date());
-				bank.setExchangeRate(exchangeRate);
-				bank.setGreenback(greenback);
-				bank.setTaxRate(taxRate);
-				bank.setGoodTypeId(Long.valueOf(goodsDesc.getData().getGoodsTypeId()));
-				bank.setPurchaseAmount(purchaseAmount);
-				bank.setPriorityReferrer(priorityReferrer);
-				bank.setReferrerReason(referrerReason);
-				bank.setCreateUser(SecureUtil.getUserId());
-				bank.setCreateTime(new Date());
-				if (corpMessage.isSuccess() && corpMessage.getData() != null){
-					bank.setCorpName(corpMessage.getData().getCname());
-				}
-				GoodsType goodsType = goodsDescClient.goodTypeId(itemId);
-				if (goodsType != null){
-					bank.setGoodsTypeName(goodsType.getCname());
-				}
-				flag = priceBankMapper.insert(bank);
-			}
+			bank.setCreateUser(SecureUtil.getUserId());
+			bank.setCreateTime(new Date());
+			flag = priceBankMapper.insert(bank);
 		}
 		return flag;
 	}

+ 14 - 1
blade-service/blade-school/src/main/java/org/springblade/school/controller/SalaryController.java

@@ -31,6 +31,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.SalaryData;
+import org.springblade.school.entity.SalaryDataChain;
 import org.springblade.school.entity.SalaryStatistics;
 import org.springblade.school.service.ISalaryItemService;
 import org.springblade.system.user.entity.User;
@@ -215,7 +216,7 @@ public class SalaryController extends BladeController {
 	 */
 	@GetMapping("/salaryStatistics")
 	@ApiOperationSupport(order = 11)
-	@ApiOperation(value = "首页统计工资明细", notes = "传入salary")
+	@ApiOperation(value = "首页统计工资环比图", notes = "传入salary")
 	public R<List<SalaryStatistics>> SalaryStatistics(Salary salary) {
 		return R.data(salaryService.SalaryStatistics(salary));
 	}
@@ -228,5 +229,17 @@ public class SalaryController extends BladeController {
 	public R<SalaryData> salaryData(Salary salary) {
 		return R.data(salaryService.salaryData(salary));
 	}
+	/**
+	 * 分页 通济学校-工资管理主表信息
+	 */
+	@GetMapping("/salaryDataChain")
+	@ApiOperationSupport(order = 13)
+	@ApiOperation(value = "首页统计工资环比图", notes = "传入salary")
+	public R<SalaryDataChain> salaryDataChain(SalaryVO salary) {
+		if (StringUtils.isBlank(salary.getAnnual())){
+			throw new SecurityException("请选择查询的年份");
+		}
+		return R.data(salaryService.salaryDataChain(salary));
+	}
 
 }

+ 112 - 0
blade-service/blade-school/src/main/java/org/springblade/school/controller/SalaryItemController.java

@@ -1662,4 +1662,116 @@ public class SalaryItemController extends BladeController {
 		}
 		return salaryItemService.importSalaryMessage(excelList,false,id,file);
 	}
+
+	/**
+	 * 导入教研组长考核补贴模板
+	 */
+	@GetMapping("/export/teamLeaderAssessExcel")
+	@ApiOperationSupport(order = 92)
+	@ApiOperation(value = "导入模板-工资管理-小学部-教研组长考核补贴模板")
+	public void exportTeamLeaderAssessExcel(HttpServletResponse response) {
+		List<TeamLeaderAssessExcel> list = new ArrayList<TeamLeaderAssessExcel>();
+		ExcelUtil.export(response, "教研组长考核补贴", "教研组长考核补贴", list, TeamLeaderAssessExcel.class);
+	}
+	/**
+	 * 导入-工资管理-小学部-教研组长考核补贴
+	 *
+	 * */
+	@PostMapping("/import/teamLeaderAssessExcel")
+	@ApiOperationSupport(order = 93)
+	@ApiOperation(value = "导入-工资管理-小学部-教研组长考核补贴", notes = "传入excel")
+	public R importTeamLeaderAssessExcel(@RequestParam("file") MultipartFile file,@RequestParam("id") Long id)
+	{
+		//校验模板
+		String excelPattern = null;
+		try {
+			excelPattern = ExcelCheck.checkExcelPattern(file, new TeamLeaderAssessExcel());
+		} catch (Exception e) {
+			throw new SecurityException("校验Excel失败");
+		}
+		if (StringUtils.isNotBlank(excelPattern)){
+			throw new SecurityException(excelPattern);
+		}
+		//导入数据
+		List<TeamLeaderAssessExcel> excelList = ExcelUtil.read(file, TeamLeaderAssessExcel.class);
+		if(CollectionUtils.isEmpty(excelList))
+		{
+			throw new SecurityException("数据不能为空");
+		}
+		return salaryItemService.importTeamLeaderAssessExcel(excelList,false,id,file);
+	}
+	/**
+	 * 导入备课组长考核补贴模板
+	 */
+	@GetMapping("/export/prepareAssessExcel")
+	@ApiOperationSupport(order = 94)
+	@ApiOperation(value = "导入模板-工资管理-小学部-备课组长考核补贴模板")
+	public void exportPrepareAssessExcel(HttpServletResponse response) {
+		List<PrepareAssessExcel> list = new ArrayList<PrepareAssessExcel>();
+		ExcelUtil.export(response, "备课组长考核补贴", "备课组长考核补贴", list, PrepareAssessExcel.class);
+	}
+	/**
+	 * 导入-工资管理-小学部-导入备课组长考核补贴
+	 *
+	 * */
+	@PostMapping("/import/prepareAssessExcel")
+	@ApiOperationSupport(order = 95)
+	@ApiOperation(value = "导入-工资管理-小学部-导入备课组长考核补贴", notes = "传入excel")
+	public R importPrepareAssessExcel(@RequestParam("file") MultipartFile file,@RequestParam("id") Long id)
+	{
+		//校验模板
+		String excelPattern = null;
+		try {
+			excelPattern = ExcelCheck.checkExcelPattern(file, new PrepareAssessExcel());
+		} catch (Exception e) {
+			throw new SecurityException("校验Excel失败");
+		}
+		if (StringUtils.isNotBlank(excelPattern)){
+			throw new SecurityException(excelPattern);
+		}
+		//导入数据
+		List<PrepareAssessExcel> excelList = ExcelUtil.read(file, PrepareAssessExcel.class);
+		if(CollectionUtils.isEmpty(excelList))
+		{
+			throw new SecurityException("数据不能为空");
+		}
+		return salaryItemService.importPrepareAssessExcel(excelList,false,id,file);
+	}
+	/**
+	 * 导入领导干部考核补贴模板
+	 */
+	@GetMapping("/export/leadAssessExcel")
+	@ApiOperationSupport(order = 96)
+	@ApiOperation(value = "导入模板-工资管理-小学部-领导干部考核补贴模板")
+	public void exportLeadAssessExcel(HttpServletResponse response) {
+		List<SalaryMessage> list = new ArrayList<SalaryMessage>();
+		ExcelUtil.export(response, "领导干部考核补贴", "领导干部考核补贴", list, SalaryMessage.class);
+	}
+	/**
+	 * 导入-工资管理-小学部-导入领导干部考核补贴
+	 *
+	 * */
+	@PostMapping("/import/leadAssessExcel")
+	@ApiOperationSupport(order = 97)
+	@ApiOperation(value = "导入-工资管理-小学部-导入领导干部考核补贴", notes = "传入excel")
+	public R importLeadAssessExcel(@RequestParam("file") MultipartFile file,@RequestParam("id") Long id)
+	{
+		//校验模板
+		String excelPattern = null;
+		try {
+			excelPattern = ExcelCheck.checkExcelPattern(file, new LeadAssessExcel());
+		} catch (Exception e) {
+			throw new SecurityException("校验Excel失败");
+		}
+		if (StringUtils.isNotBlank(excelPattern)){
+			throw new SecurityException(excelPattern);
+		}
+		//导入数据
+		List<LeadAssessExcel> excelList = ExcelUtil.read(file, LeadAssessExcel.class);
+		if(CollectionUtils.isEmpty(excelList))
+		{
+			throw new SecurityException("数据不能为空");
+		}
+		return salaryItemService.importLeadAssessExcel(excelList,false,id,file);
+	}
 }

+ 37 - 0
blade-service/blade-school/src/main/java/org/springblade/school/excel/LeadAssessExcel.java

@@ -0,0 +1,37 @@
+package org.springblade.school.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 通济学校-工资管理-小学部-领导干部考核补贴导入模板
+ */
+@Data
+@ColumnWidth(15)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class LeadAssessExcel implements Serializable {
+	/**
+	 * 姓名
+	 */
+	@ExcelProperty(value = "姓名(必填)")
+	private String cname;
+	/**
+	 * 身份证号
+	 */
+	@ExcelProperty(value = "身份证号(必填)")
+	@ColumnWidth(35)
+	private String idNumber;
+	/**
+	 * 领导干部考核补贴
+	 */
+	@ExcelProperty(value = "领导干部考核补贴")
+	private BigDecimal customizeFive;
+
+}

+ 36 - 0
blade-service/blade-school/src/main/java/org/springblade/school/excel/PrepareAssessExcel.java

@@ -0,0 +1,36 @@
+package org.springblade.school.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 通济学校-工资管理-小学部-备课组长考核补贴导入模板
+ */
+@Data
+@ColumnWidth(15)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class PrepareAssessExcel implements Serializable {
+	/**
+	 * 姓名
+	 */
+	@ExcelProperty(value = "姓名(必填)")
+	private String cname;
+	/**
+	 * 身份证号
+	 */
+	@ExcelProperty(value = "身份证号(必填)")
+	@ColumnWidth(35)
+	private String idNumber;
+	/**
+	 * 备课组长考核补贴
+	 */
+	@ExcelProperty(value = "备课组长考核补贴")
+	private BigDecimal customizeSix;
+}

+ 36 - 0
blade-service/blade-school/src/main/java/org/springblade/school/excel/TeamLeaderAssessExcel.java

@@ -0,0 +1,36 @@
+package org.springblade.school.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 通济学校-工资管理-小学部-教研组长考核补贴导入模板
+ */
+@Data
+@ColumnWidth(15)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class TeamLeaderAssessExcel implements Serializable {
+	/**
+	 * 姓名
+	 */
+	@ExcelProperty(value = "姓名(必填)")
+	private String cname;
+	/**
+	 * 身份证号
+	 */
+	@ExcelProperty(value = "身份证号(必填)")
+	@ColumnWidth(35)
+	private String idNumber;
+	/**
+	 * 教研组长考核补贴
+	 */
+	@ExcelProperty(value = "教研组长考核补贴")
+	private BigDecimal customizeSeven;
+}

+ 17 - 1
blade-service/blade-school/src/main/java/org/springblade/school/mapper/SalaryMapper.java

@@ -20,6 +20,7 @@ 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.SalaryDataChain;
 import org.springblade.school.entity.SalaryStatistics;
 import org.springblade.school.vo.SalaryVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -44,7 +45,7 @@ public interface SalaryMapper extends BaseMapper<Salary> {
 	List<SalaryVO> selectSalaryPage(IPage page, SalaryVO salary);
 
 	/**
-	 * 工资首页统计工资明细
+	 * 工资首页统计工资同比柱状图
 	 * @param salary
 	 * @return
 	 */
@@ -65,5 +66,20 @@ public interface SalaryMapper extends BaseMapper<Salary> {
 	 */
 	@SqlParser(filter=true)
 	SalaryData salaryDataLastYear (@Param("salary") Salary salary);
+	/**
+	 * 工资首页统计工资环比柱状图
+	 * @param annual 年
+	 * @param moon 月
+	 * @param semester 学期
+	 * @param salaryType 部门
+	 * @param tenantId 租户
+	 * @return
+	 */
+	@SqlParser(filter=true)
+	SalaryDataChain salaryDataChain(@Param("annual") Long annual,
+									@Param("moon") String moon,
+									@Param("semester") String semester,
+									@Param("salaryType") String salaryType,
+									@Param("tenantId") String tenantId);
 
 }

+ 38 - 1
blade-service/blade-school/src/main/java/org/springblade/school/mapper/SalaryMapper.xml

@@ -137,5 +137,42 @@
             AND sa.annual=YEAR(NOW())-1
         </if>
     </select>
-
+    <select id="salaryDataChain" resultType="org.springblade.school.entity.SalaryDataChain">
+        SELECT
+	        IFNULL(SUM(st.f_salary),0) AS fSalary,
+	        #只选择年 人数需要除以12 选中年和月人数不处理 选中年和学期 人数除以6
+        <if test="(annual!=null) and (moon==null or moon == '') and (semester==null or semester == '')">
+            IFNULL(SUM(sa.student_number),0)/12 AS studentNumber
+        </if>
+        <if test="(annual!=null) and (moon!=null and moon != '') and (semester==null or semester == '')">
+            IFNULL(SUM(sa.student_number),0) AS studentNumber
+        </if>
+        <if test="(annual!=null) and (moon==null or moon == '') and (semester!=null and semester != '')">
+            IFNULL(SUM(sa.student_number),0)/6 AS studentNumber
+        </if>
+        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="(annual!=null ) and (semester==null or semester == '')">
+            and sa.annual = #{annual}
+        </if>
+        <if test="(annual!=null) and (semester!=null and semester != '' and semester == '上学期')">
+            and (sa.annual = #{annual} and sa.moon &gt;= 9 and sa.moon &lt;= 12)
+            and (sa.annual = #{annual} +1 and sa.moon = 1)
+        </if>
+        <if test="(annual!=null) and (semester!=null and semester != '' and semester == '下学期')">
+            and (sa.annual = #{annual}+1 and sa.moon &gt;= 2 and sa.moon &lt;= 8)
+        </if>
+        <if test="moon!=null and moon != ''">
+            and sa.moon = #{moon}
+        </if>
+        <if test="tenantId!=null and tenantId != ''">
+            and sa.tenant_id = #{tenantId}
+        </if>
+        <if test="salaryType!=null and salaryType != ''">
+            and sa.salary_type = #{salaryType}
+        </if>
+    </select>
 </mapper>

+ 28 - 0
blade-service/blade-school/src/main/java/org/springblade/school/service/ISalaryItemService.java

@@ -368,4 +368,32 @@ public interface ISalaryItemService extends IService<SalaryItem> {
 	 */
 	R importSalaryMessage(List<SalaryMessage> data, Boolean isCovered, Long id,MultipartFile file);
 
+	/**
+	 * 教研组长考核补贴导入
+	 * @param data
+	 * @param isCovered
+	 * @param id
+	 * @param file
+	 * @return
+	 */
+	R importTeamLeaderAssessExcel(List<TeamLeaderAssessExcel> data, Boolean isCovered, Long id,MultipartFile file);
+	/**
+	 * 教研组长考核补贴导入
+	 * @param data
+	 * @param isCovered
+	 * @param id
+	 * @param file
+	 * @return
+	 */
+	R importPrepareAssessExcel(List<PrepareAssessExcel> data, Boolean isCovered, Long id,MultipartFile file);
+	/**
+	 * 教研组长考核补贴导入
+	 * @param data
+	 * @param isCovered
+	 * @param id
+	 * @param file
+	 * @return
+	 */
+	R importLeadAssessExcel(List<LeadAssessExcel> data, Boolean isCovered, Long id,MultipartFile file);
+
 }

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

@@ -19,6 +19,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.SalaryDataChain;
 import org.springblade.school.entity.SalaryStatistics;
 import org.springblade.school.vo.SalaryVO;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -106,5 +107,11 @@ public interface ISalaryService extends IService<Salary> {
 	 * @return
 	 */
 	SalaryData salaryData(Salary salary);
+	/**
+	 * 工资首页统计工资环比柱状图
+	 * @param salary
+	 * @return
+	 */
+	SalaryDataChain salaryDataChain(SalaryVO salary);
 
 }

+ 138 - 0
blade-service/blade-school/src/main/java/org/springblade/school/service/impl/SalaryItemServiceImpl.java

@@ -2181,6 +2181,144 @@ public class SalaryItemServiceImpl extends ServiceImpl<SalaryItemMapper, SalaryI
 		}
 	}
 
+	@Override
+	public R importTeamLeaderAssessExcel(List<TeamLeaderAssessExcel> data, Boolean isCovered, Long id, MultipartFile file) {
+		if(org.springframework.util.CollectionUtils.isEmpty(data))
+		{
+			throw new SecurityException("导入数据不能为空");
+		}
+		int message = 0; //导入成功条数
+		StringBuffer errMsg= new StringBuffer();
+		for(int i=0;i<data.size();i++)
+		{
+			TeamLeaderAssessExcel teamLeaderAssessExcel = data.get(i);
+			if (StringUtils.isBlank(teamLeaderAssessExcel.getIdNumber())){
+				errMsg.append("第"+(i+2)+"行,身份证号码为空,");
+				continue;
+			}
+			if (StringUtils.isBlank(teamLeaderAssessExcel.getCname())){
+				errMsg.append("第"+(i+2)+"行,姓名为空,");
+				continue;
+			}
+			SalaryItem salaryItem = new SalaryItem();
+			BeanUtil.copy(teamLeaderAssessExcel,salaryItem);
+			//根据身份证号查询教职工信息是否存在存在更新不存在新增
+			SalaryItem item = baseMapper.selectOne(new QueryWrapper<SalaryItem>().eq("id_number", salaryItem.getIdNumber()).eq("tenant_id", SecureUtil.getTenantId())
+				.eq("is_deleted", 0).eq("pid",id));
+			if (item != null){
+				salaryItem.setPid(id);
+				salaryItem.setId(item.getId());
+				salaryItem.setUpdateUser(SecureUtil.getUserId());
+				salaryItem.setUpdateTime(new Date());
+				baseMapper.updateById(salaryItem);
+				message = ++ message;
+				//更新计算工资
+				this.countSalary(salaryItem);
+			}
+		}
+		//保存上传记录
+		this.saveAccessory(file,id);
+		if (message >0 && message == data.size()){
+			return R.success("全部导入成功");
+		}else if (message >0 && message != data.size()){
+			return R.success("导入部分成功,成功"+ message +"条,导入失败"+(data.size()-message)+"条");
+		}else {
+			return R.success("导入失败");
+		}
+	}
+
+	@Override
+	public R importPrepareAssessExcel(List<PrepareAssessExcel> data, Boolean isCovered, Long id, MultipartFile file) {
+		if(org.springframework.util.CollectionUtils.isEmpty(data))
+		{
+			throw new SecurityException("导入数据不能为空");
+		}
+		int message = 0; //导入成功条数
+		StringBuffer errMsg= new StringBuffer();
+		for(int i=0;i<data.size();i++)
+		{
+			PrepareAssessExcel prepareAssessExcel = data.get(i);
+			if (StringUtils.isBlank(prepareAssessExcel.getIdNumber())){
+				errMsg.append("第"+(i+2)+"行,身份证号码为空,");
+				continue;
+			}
+			if (StringUtils.isBlank(prepareAssessExcel.getCname())){
+				errMsg.append("第"+(i+2)+"行,姓名为空,");
+				continue;
+			}
+			SalaryItem salaryItem = new SalaryItem();
+			BeanUtil.copy(prepareAssessExcel,salaryItem);
+			//根据身份证号查询教职工信息是否存在存在更新不存在新增
+			SalaryItem item = baseMapper.selectOne(new QueryWrapper<SalaryItem>().eq("id_number", salaryItem.getIdNumber()).eq("tenant_id", SecureUtil.getTenantId())
+				.eq("is_deleted", 0).eq("pid",id));
+			if (item != null){
+				salaryItem.setPid(id);
+				salaryItem.setId(item.getId());
+				salaryItem.setUpdateUser(SecureUtil.getUserId());
+				salaryItem.setUpdateTime(new Date());
+				baseMapper.updateById(salaryItem);
+				message = ++ message;
+				//更新计算工资
+				this.countSalary(salaryItem);
+			}
+		}
+		//保存上传记录
+		this.saveAccessory(file,id);
+		if (message >0 && message == data.size()){
+			return R.success("全部导入成功");
+		}else if (message >0 && message != data.size()){
+			return R.success("导入部分成功,成功"+ message +"条,导入失败"+(data.size()-message)+"条");
+		}else {
+			return R.success("导入失败");
+		}
+	}
+
+	@Override
+	public R importLeadAssessExcel(List<LeadAssessExcel> data, Boolean isCovered, Long id, MultipartFile file) {
+		if(org.springframework.util.CollectionUtils.isEmpty(data))
+		{
+			throw new SecurityException("导入数据不能为空");
+		}
+		int message = 0; //导入成功条数
+		StringBuffer errMsg= new StringBuffer();
+		for(int i=0;i<data.size();i++)
+		{
+			LeadAssessExcel leadAssessExcel = data.get(i);
+			if (StringUtils.isBlank(leadAssessExcel.getIdNumber())){
+				errMsg.append("第"+(i+2)+"行,身份证号码为空,");
+				continue;
+			}
+			if (StringUtils.isBlank(leadAssessExcel.getCname())){
+				errMsg.append("第"+(i+2)+"行,姓名为空,");
+				continue;
+			}
+			SalaryItem salaryItem = new SalaryItem();
+			BeanUtil.copy(leadAssessExcel,salaryItem);
+			//根据身份证号查询教职工信息是否存在存在更新不存在新增
+			SalaryItem item = baseMapper.selectOne(new QueryWrapper<SalaryItem>().eq("id_number", salaryItem.getIdNumber()).eq("tenant_id", SecureUtil.getTenantId())
+				.eq("is_deleted", 0).eq("pid",id));
+			if (item != null){
+				salaryItem.setPid(id);
+				salaryItem.setId(item.getId());
+				salaryItem.setUpdateUser(SecureUtil.getUserId());
+				salaryItem.setUpdateTime(new Date());
+				baseMapper.updateById(salaryItem);
+				message = ++ message;
+				//更新计算工资
+				this.countSalary(salaryItem);
+			}
+		}
+		//保存上传记录
+		this.saveAccessory(file,id);
+		if (message >0 && message == data.size()){
+			return R.success("全部导入成功");
+		}else if (message >0 && message != data.size()){
+			return R.success("导入部分成功,成功"+ message +"条,导入失败"+(data.size()-message)+"条");
+		}else {
+			return R.success("导入失败");
+		}
+	}
+
 	/**
 	 *工资计算
 	 *

+ 64 - 4
blade-service/blade-school/src/main/java/org/springblade/school/service/impl/SalaryServiceImpl.java

@@ -31,10 +31,7 @@ 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.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.entity.*;
 import org.springblade.school.mapper.SalaryItemMapper;
 import org.springblade.school.vo.SalaryVO;
 import org.springblade.school.mapper.SalaryMapper;
@@ -386,4 +383,67 @@ public class SalaryServiceImpl extends ServiceImpl<SalaryMapper, Salary> impleme
 		return salaryData;
 	}
 
+	@Override
+	public SalaryDataChain salaryDataChain(SalaryVO salary) {
+		SalaryDataChain salaryDataChain = new SalaryDataChain();
+		if (StringUtils.isBlank(salary.getTenantId())){
+			salary.setTenantId(SecureUtil.getTenantId());
+		}
+		//选中年的工资和人数
+		SalaryDataChain salarySix = baseMapper.salaryDataChain(Long.valueOf(salary.getAnnual()),salary.getMoon(),salary.getSemester(),salary.getSalaryType(),salary.getTenantId());
+		if (salarySix !=null){
+			salaryDataChain.setFSalaryFive(salarySix.getFSalary());
+			salaryDataChain.setStudentNumberFive(salarySix.getStudentNumber());
+		}else {
+			salaryDataChain.setFSalaryFive(BigDecimal.ZERO);
+			salaryDataChain.setStudentNumberFive(BigDecimal.ZERO);
+		}
+		//前六年的工资和人数
+		SalaryDataChain salaryOne = baseMapper.salaryDataChain(Long.valueOf(salary.getAnnual())-5,salary.getMoon(),salary.getSemester(),salary.getSalaryType(),salary.getTenantId());
+		if (salaryOne !=null){
+			salaryDataChain.setFSalary(salaryOne.getFSalary());
+			salaryDataChain.setStudentNumber(salaryOne.getStudentNumber());
+		}else {
+			salaryDataChain.setFSalary(BigDecimal.ZERO);
+			salaryDataChain.setStudentNumber(BigDecimal.ZERO);
+		}
+		//前五年的工资和人数
+		SalaryDataChain salaryTwo = baseMapper.salaryDataChain(Long.valueOf(salary.getAnnual())-4,salary.getMoon(),salary.getSemester(),salary.getSalaryType(),salary.getTenantId());
+		if (salaryTwo !=null){
+			salaryDataChain.setFSalaryOne(salaryTwo.getFSalary());
+			salaryDataChain.setStudentNumberOne(salaryTwo.getStudentNumber());
+		}else {
+			salaryDataChain.setFSalaryOne(BigDecimal.ZERO);
+			salaryDataChain.setStudentNumberOne(BigDecimal.ZERO);
+		}
+		//前四年的工资和人数
+		SalaryDataChain salaryThree = baseMapper.salaryDataChain(Long.valueOf(salary.getAnnual())-3,salary.getMoon(),salary.getSemester(),salary.getSalaryType(),salary.getTenantId());
+		if (salaryThree !=null){
+			salaryDataChain.setFSalaryTwo(salaryThree.getFSalary());
+			salaryDataChain.setStudentNumberTwo(salaryThree.getStudentNumber());
+		}else {
+			salaryDataChain.setFSalaryTwo(BigDecimal.ZERO);
+			salaryDataChain.setStudentNumberTwo(BigDecimal.ZERO);
+		}
+		//前三年的工资和人数
+		SalaryDataChain salaryFour = baseMapper.salaryDataChain(Long.valueOf(salary.getAnnual())-2,salary.getMoon(),salary.getSemester(),salary.getSalaryType(),salary.getTenantId());
+		if (salaryFour !=null){
+			salaryDataChain.setFSalaryThree(salaryFour.getFSalary());
+			salaryDataChain.setStudentNumberThree(salaryFour.getStudentNumber());
+		}else {
+			salaryDataChain.setFSalaryThree(BigDecimal.ZERO);
+			salaryDataChain.setStudentNumberThree(BigDecimal.ZERO);
+		}
+		//前二年的工资和人数
+		SalaryDataChain salaryFive = baseMapper.salaryDataChain(Long.valueOf(salary.getAnnual())-1,salary.getMoon(),salary.getSemester(),salary.getSalaryType(),salary.getTenantId());
+		if (salaryFive !=null){
+			salaryDataChain.setFSalaryFour(salaryFive.getFSalary());
+			salaryDataChain.setStudentNumberFour(salaryFive.getStudentNumber());
+		}else {
+			salaryDataChain.setFSalaryFour(BigDecimal.ZERO);
+			salaryDataChain.setStudentNumberFour(BigDecimal.ZERO);
+		}
+		return salaryDataChain;
+	}
+
 }