Browse Source

经销商调拨,学校首页修改

lazhaoqian 3 years ago
parent
commit
921d00440c

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

@@ -19,13 +19,22 @@ public class SalaryDataChain implements Serializable {
 	 */
 	@ApiModelProperty(value = "工资总数第一年")
 	private BigDecimal fSalary;
-
 	/**
 	 * 学生人数第一年
 	 */
 	@ApiModelProperty(value = "学生人数第一年")
 	private BigDecimal studentNumber;
 	/**
+	 * 工资总数第一年比
+	 */
+	@ApiModelProperty(value = "工资总数第一年比")
+	private BigDecimal fSalaryContrast;
+	/**
+	 * 学生人数第一年比
+	 */
+	@ApiModelProperty(value = "学生人数第一年比")
+	private BigDecimal studentNumberContrast;
+	/**
 	 * 工资总数第二年
 	 */
 	@ApiModelProperty(value = "工资总数第二年")
@@ -37,6 +46,16 @@ public class SalaryDataChain implements Serializable {
 	@ApiModelProperty(value = "学生人数第二年")
 	private BigDecimal studentNumberOne;
 	/**
+	 * 工资总数第二年比
+	 */
+	@ApiModelProperty(value = "工资总数第二年比")
+	private BigDecimal fSalaryOneContrast;
+	/**
+	 * 学生人数第二年比
+	 */
+	@ApiModelProperty(value = "学生人数第二年比")
+	private BigDecimal studentNumberOneContrast;
+	/**
 	 * 工资总数第三年
 	 */
 	@ApiModelProperty(value = "工资总数第三年")
@@ -48,6 +67,16 @@ public class SalaryDataChain implements Serializable {
 	@ApiModelProperty(value = "学生人数第三年")
 	private BigDecimal studentNumberTwo;
 	/**
+	 * 工资总数第三年比
+	 */
+	@ApiModelProperty(value = "工资总数第三年比")
+	private BigDecimal fSalaryTwoContrast;
+	/**
+	 * 学生人数第三年比
+	 */
+	@ApiModelProperty(value = "学生人数第三年比")
+	private BigDecimal studentNumberTwoContrast;
+	/**
 	 * 工资总数第四年
 	 */
 	@ApiModelProperty(value = "工资总数第四年")
@@ -59,6 +88,16 @@ public class SalaryDataChain implements Serializable {
 	@ApiModelProperty(value = "学生人数第四年")
 	private BigDecimal studentNumberThree;
 	/**
+	 * 工资总数第四年比
+	 */
+	@ApiModelProperty(value = "工资总数第四年比")
+	private BigDecimal fSalaryThreeContrast;
+	/**
+	 * 学生人数第四年比
+	 */
+	@ApiModelProperty(value = "学生人数第四年比")
+	private BigDecimal studentNumberThreeContrast;
+	/**
 	 * 工资总数第五年
 	 */
 	@ApiModelProperty(value = "工资总数第五年")
@@ -70,6 +109,16 @@ public class SalaryDataChain implements Serializable {
 	@ApiModelProperty(value = "学生人数第五年")
 	private BigDecimal studentNumberFour;
 	/**
+	 * 工资总数第五年比
+	 */
+	@ApiModelProperty(value = "工资总数第五年比")
+	private BigDecimal fSalaryFourContrast;
+	/**
+	 * 学生人数第五年比
+	 */
+	@ApiModelProperty(value = "学生人数第五年比")
+	private BigDecimal studentNumberFourContrast;
+	/**
 	 * 工资总数第六年
 	 */
 	@ApiModelProperty(value = "工资总数第六年")
@@ -80,4 +129,14 @@ public class SalaryDataChain implements Serializable {
 	 */
 	@ApiModelProperty(value = "学生人数第六年")
 	private BigDecimal studentNumberFive;
+	/**
+	 * 工资总数第六年比
+	 */
+	@ApiModelProperty(value = "工资总数第六年比")
+	private BigDecimal fSalaryFiveContrast;
+	/**
+	 * 学生人数第六年比
+	 */
+	@ApiModelProperty(value = "学生人数第六年比")
+	private BigDecimal studentNumberFiveContrast;
 }

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

@@ -24,10 +24,20 @@ public class SalaryStatistics implements Serializable {
 	 * 人数
 	 */
 	@ApiModelProperty(value = "学生人数")
-	private String studentNumber;
+	private BigDecimal studentNumber;
 	/**
 	 * 实发工资
 	 */
 	@ApiModelProperty(value = "实发工资")
 	private BigDecimal fSalary;
+	/**
+	 * 学生人数比
+	 */
+	@ApiModelProperty(value = "学生人数比")
+	private BigDecimal studentNumberContrast;
+	/**
+	 * 实发工资比
+	 */
+	@ApiModelProperty(value = "实发工资比")
+	private BigDecimal fSalaryContrast;
 }

+ 34 - 8
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/AllotController.java

@@ -36,7 +36,7 @@ import javax.validation.Valid;
 import java.util.List;
 
 /**
- * 国内发货通知单 控制器
+ * 经销商调拨控制器
  *
  * @author BladeX
  * @since 2021-09-26
@@ -54,18 +54,18 @@ public class AllotController extends BladeController {
 	private final IDeliveryFeesService deliveryFeesService;
 	private final IDeliveryFilesService deliveryFilesService;
 	/**
-	 * 详情
+	 * 经销商调拨详情
 	 */
 	@GetMapping("/detail")
 	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入delivery")
+	@ApiOperation(value = "经销商调拨详情", notes = "传入delivery")
 	public R<Delivery> detail(Delivery delivery) {
 		Delivery detail = deliveryService.getDeliveryMessage(delivery);
 		return R.data(detail);
 	}
 
 	/**
-	 * 国内发货通知单
+	 * 经销商调拨
 	 */
 	@GetMapping("/list")
 	@ApiOperationSupport(order = 2)
@@ -132,12 +132,15 @@ public class AllotController extends BladeController {
 						item.setAllotStorageName(allotStorageId.getCname());
 					}
 				}
+				if (item.getTradeType().equals(OrderTypeEnum.DEALER.getType())){
+					
+				}
 			});
 		}
 		return R.data(pages);
 	}
 	/**
-	 * 自定义分页 国内发货通知单
+	 * 自定义分页 经销商调拨
 	 */
 	@GetMapping("/page")
 	@ApiOperationSupport(order = 3)
@@ -153,7 +156,7 @@ public class AllotController extends BladeController {
 
 
 	/**
-	 * 修改 国内发货通知单
+	 * 修改 经销商调拨
 	 */
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 5)
@@ -171,8 +174,7 @@ public class AllotController extends BladeController {
 	}
 
 	/**
-	 * 新增或修改 国内发货通知单
-	 * billType FH 发货通知  SH 收货通知
+	 * 新增或修改 经销商调拨
 	 */
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 6)
@@ -182,5 +184,29 @@ public class AllotController extends BladeController {
 		delivery.setTradeType(OrderTypeEnum.DEALER.getType());
 		return deliveryService.submitDelivery(delivery);
 	}
+	/**
+	 * 确认调拨
+	 */
+	@PostMapping("/affirmAllot")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "确认调拨", notes = "传入delivery")
+	public R affirmAllot(@Valid @RequestBody Delivery delivery) {
+		if (delivery.getId() == null){
+			throw new SecurityException("缺少必要的参数");
+		}
+		return deliveryService.affirmAllot(delivery);
+	}
+	/**
+	 * 撤销调拨
+	 */
+	@PostMapping("/repealAllot")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "新增或修改", notes = "传入delivery")
+	public R repealAllot(@Valid @RequestBody Delivery delivery) {
+		if (delivery.getId() == null){
+			throw new SecurityException("缺少必要的参数");
+		}
+		return deliveryService.repealAllot(delivery);
+	}
 
 }

+ 11 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/IDeliveryItemsService.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.deliver.goods.service;
 
+import org.springblade.core.tool.api.R;
 import org.springblade.deliver.goods.entity.DeliveryItems;
 import org.springblade.deliver.goods.vo.DeliveryItemsVO;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -51,5 +52,15 @@ public interface IDeliveryItemsService extends IService<DeliveryItems> {
 	 * @return
 	 */
 	List<ShipmentsVo> dailyShipmentStatistics(DeliveryVO delivery);
+	/**
+	 * 经销商调拨
+	 * @param storageId 原仓库
+	 * @param allotStorageId 调拨仓库
+	 * @param list 调拨明细
+	 * @param tradeType 贸易类型
+	 * @param operate 操作 1 确认调拨 2 撤销调拨
+	 * @return
+	 */
+	R affirmAllot(Long storageId, Long allotStorageId, List<DeliveryItems> list, int operate,String tradeType);
 
 }

+ 12 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/IDeliveryService.java

@@ -79,5 +79,17 @@ public interface IDeliveryService extends IService<Delivery> {
 	 * */
     void cancel(Delivery delivery);
 
+	/**
+	 * 确认调拨
+	 * @param delivery
+	 * @return
+	 */
+    R affirmAllot(Delivery delivery);
+	/**
+	 * 撤销调拨
+	 * @param delivery
+	 * @return
+	 */
+	R repealAllot(Delivery delivery);
 
 }

+ 81 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java

@@ -291,6 +291,9 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		}else if (tradeType.equals(OrderTypeEnum.EXPORT.getType())){//出口
 			storageId = null;
 			corpId = null;
+		}else if (tradeType.equals(OrderTypeEnum.DEALER.getType())){//经销商
+			corpId = null;
+			itemType = null;
 		}
 		R<StockGoodsVO> goodsVOR = stockGoodsClient.selectStock(corpId, storageId, deliveryItems.getItemId(), itemType, lotNo, cntrNo, billNo, contractNumber,tradeType);
 		if (goodsVOR.isSuccess()){
@@ -550,6 +553,11 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 			stockGoods.setTradeType("CK");
 			stockGoods.setItemType(deliveryItems.getSpecificationAndModel());//规格明细
 		}
+		//经销商
+		else if(tradeType.equals(OrderTypeEnum.DEALER.getType()))
+		{
+			stockGoods.setTradeType("JXS");
+		}
 		stockGoods.setCreateUser(SecureUtil.getUserId());
 		stockGoods.setTenantId(SecureUtil.getTenantId());
 		stockGoods.setCreateTime(new Date());
@@ -705,4 +713,77 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		}
 		return R.success("操作成功");
 	}
+
+	/**
+	 * 经销商调拨
+	 * @param storageId 原仓库
+	 * @param allotStorageId 调拨仓库
+	 * @param list 调拨明细
+	 * @param tradeType 贸易类型
+	 * @param operate 操作 1 确认调拨 2 撤销调拨
+	 * @return
+	 */
+	public R affirmAllot(Long storageId,Long allotStorageId,List<DeliveryItems> list,int operate,String tradeType){
+		//查询库存 判断原仓库是否有足够的库存调拨
+		if (operate == 1){
+			for (DeliveryItems deliveryItems : list) {
+				StockGoodsVO stock = this.getStock(tradeType, null, storageId, deliveryItems);
+				if (stock == null){
+					throw new SecurityException("商品未找库存");
+				}
+				if (stock.getSurplusRouteQuantity().compareTo(deliveryItems.getActualQuantity()) <0){
+					throw new SecurityException("商品库存不足");
+				}
+				//原仓库减去库存
+				stock.setOutQuantity(stock.getOutQuantity().add( deliveryItems.getActualQuantity()));//出库数量 加
+				stock.setSurplusRouteQuantity(stock.getSurplusRouteQuantity().subtract(deliveryItems.getActualQuantity()));//可用数量 减
+				R updateStock = stockGoodsClient.updateStock(stock);
+				if (!updateStock.isSuccess()){
+					throw new RuntimeException("更新库存总账失败");
+				}
+				//新仓库添加库存
+				StockGoodsVO serviceStock = this.getStock(tradeType, null, allotStorageId, deliveryItems);
+				if (serviceStock == null){
+					this.saveStock(tradeType,null,allotStorageId,deliveryItems);
+				}else {
+					serviceStock.setInQuantity(serviceStock.getInQuantity().add( deliveryItems.getActualQuantity()));//入库数量 加
+					serviceStock.setSurplusRouteQuantity(serviceStock.getSurplusRouteQuantity().add(deliveryItems.getActualQuantity()));//可用数量 加
+					R stockMessage = stockGoodsClient.updateStock(serviceStock);
+					if (!stockMessage.isSuccess()){
+						throw new RuntimeException("更新库存总账失败");
+					}
+				}
+			}
+		}else if (operate == 2){
+			for (DeliveryItems deliveryItems : list) {
+				StockGoodsVO stock = this.getStock(tradeType, null, allotStorageId, deliveryItems);
+				if (stock == null){
+					throw new SecurityException("商品未找库存");
+				}
+				if (stock.getSurplusRouteQuantity().compareTo(deliveryItems.getActualQuantity()) <0){
+					throw new SecurityException("商品库存不足");
+				}
+				//新仓库减去库存
+				stock.setInQuantity(stock.getInQuantity().subtract( deliveryItems.getActualQuantity()));//入库数量 减
+				stock.setSurplusRouteQuantity(stock.getSurplusRouteQuantity().subtract(deliveryItems.getActualQuantity()));//可用数量 减
+				R updateStock = stockGoodsClient.updateStock(stock);
+				if (!updateStock.isSuccess()){
+					throw new RuntimeException("更新库存总账失败");
+				}
+				//原仓库添加库存
+				StockGoodsVO serviceStock = this.getStock(tradeType, null, storageId, deliveryItems);
+				if (serviceStock == null){
+					this.saveStock(tradeType,null,storageId,deliveryItems);
+				}else {
+					stock.setOutQuantity(stock.getOutQuantity().subtract( deliveryItems.getActualQuantity()));//出库数量 减
+					stock.setSurplusRouteQuantity(stock.getSurplusRouteQuantity().add(deliveryItems.getActualQuantity()));//可用数量 加
+					R stockMessage = stockGoodsClient.updateStock(serviceStock);
+					if (!stockMessage.isSuccess()){
+						throw new RuntimeException("更新库存总账失败");
+					}
+				}
+			}
+		}
+		return R.success("操作成功");
+	}
 }

+ 46 - 4
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -31,10 +31,8 @@ import lombok.Data;
 import org.springblade.client.entity.BasicCorpsProfitChange;
 import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.entity.StorageDesc;
-import org.springblade.client.feign.ICorpsDescClient;
-import org.springblade.client.feign.ICorpsProfitChangeClient;
-import org.springblade.client.feign.ISerialClient;
-import org.springblade.client.feign.IStorageClient;
+import org.springblade.client.feign.*;
+import org.springblade.client.vo.GoodsDescVO;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
@@ -57,6 +55,7 @@ import org.springblade.purchase.sales.feign.IOrderDescClient;
 import org.springblade.purchase.sales.feign.IOrderItemsClient;
 import org.springblade.stock.entity.StockGoods;
 import org.springblade.stock.feign.IStockGoodsClient;
+import org.springblade.stock.vo.StockGoodsVO;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
@@ -127,6 +126,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 	private final JdTenantMapper jdTenantMapper;
 	private final JdModuleMapper moduleMapper;
 	private final JdCorpsMapper corpsMapper;
+	private IGoodsDescClient goodsDescClient;//获取商品信息
 
 	@Override
 	public IPage<DeliveryVO> selectDeliveryPage(IPage<DeliveryVO> page, DeliveryVO delivery) {
@@ -834,6 +834,48 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 		);
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional
+	public R affirmAllot(Delivery delivery) {
+		Delivery select = baseMapper.selectById(delivery.getId());
+		if (select == null){
+			throw new SecurityException("未找到调拨单数据");
+		}
+		//获取调拨明细数据
+		LambdaQueryWrapper<DeliveryItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(DeliveryItems::getIsDeleted,0);
+		lambdaQueryWrapper.eq(DeliveryItems::getGoodType,0);
+		lambdaQueryWrapper.eq(DeliveryItems::getTenantId,SecureUtil.getTenantId());
+		lambdaQueryWrapper.eq(DeliveryItems::getPid,delivery.getId());
+		List<DeliveryItems> deliveryItemsList = deliveryItemsService.list(lambdaQueryWrapper);
+		if (CollectionUtils.isNotEmpty(deliveryItemsList)){
+			deliveryItemsService.affirmAllot(delivery.getStorageId(),delivery.getAllotStorageId(),deliveryItemsList,1,select.getTradeType());
+		}
+		return R.success("操作成功");
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional
+	public R repealAllot(Delivery delivery) {
+		Delivery select = baseMapper.selectById(delivery.getId());
+		if (select == null){
+			throw new SecurityException("未找到调拨单数据");
+		}
+		//获取调拨明细数据
+		LambdaQueryWrapper<DeliveryItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(DeliveryItems::getIsDeleted,0);
+		lambdaQueryWrapper.eq(DeliveryItems::getGoodType,0);
+		lambdaQueryWrapper.eq(DeliveryItems::getTenantId,SecureUtil.getTenantId());
+		lambdaQueryWrapper.eq(DeliveryItems::getPid,delivery.getId());
+		List<DeliveryItems> deliveryItemsList = deliveryItemsService.list(lambdaQueryWrapper);
+		if (CollectionUtils.isNotEmpty(deliveryItemsList)){
+			deliveryItemsService.affirmAllot(delivery.getStorageId(),delivery.getAllotStorageId(),deliveryItemsList,2,select.getTradeType());
+		}
+		return R.success("操作成功");
+	}
+
 
 	public void createProfit(Order order, BigDecimal createProfit) {
 		//检查是否使用返利,如果使用返利

+ 90 - 10
blade-service/blade-school/src/main/java/org/springblade/school/service/impl/SalaryServiceImpl.java

@@ -312,7 +312,29 @@ public class SalaryServiceImpl extends ServiceImpl<SalaryMapper, Salary> impleme
 		if (StringUtils.isBlank(salary.getTenantId())){
 			salary.setTenantId(SecureUtil.getTenantId());
 		}
-		return baseMapper.SalaryStatistics(salary);
+		List<SalaryStatistics> salaryStatistics = baseMapper.SalaryStatistics(salary);
+		if (CollectionUtils.isNotEmpty(salaryStatistics)){
+			for (int i = 0; i<salaryStatistics.size(); i++ ){
+				if (i == 0){
+					salaryStatistics.get(i).setFSalaryContrast(BigDecimal.ZERO);
+					salaryStatistics.get(i).setStudentNumberContrast(BigDecimal.ZERO);
+				}else {
+					BigDecimal subtract = salaryStatistics.get(i).getFSalary().subtract(salaryStatistics.get(i - 1).getFSalary());
+					if (salaryStatistics.get(i-1).getFSalary().compareTo(BigDecimal.ZERO) >0){
+						salaryStatistics.get(i).setFSalaryContrast(subtract.divide(salaryStatistics.get(i-1).getFSalary(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+					}else {
+						salaryStatistics.get(i).setFSalaryContrast(BigDecimal.ZERO);
+					}
+					BigDecimal studentNumber = salaryStatistics.get(i).getStudentNumber().subtract(salaryStatistics.get(i - 1).getStudentNumber());
+					if (salaryStatistics.get(i-1).getStudentNumber().compareTo(BigDecimal.ZERO) >0){
+						salaryStatistics.get(i).setStudentNumberContrast(studentNumber.divide(salaryStatistics.get(i-1).getStudentNumber(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+					}else {
+						salaryStatistics.get(i).setStudentNumberContrast(BigDecimal.ZERO);
+					}
+				}
+			}
+		}
+		return salaryStatistics;
 	}
 
 	@Override
@@ -389,15 +411,6 @@ public class SalaryServiceImpl extends ServiceImpl<SalaryMapper, Salary> impleme
 		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){
@@ -407,6 +420,9 @@ public class SalaryServiceImpl extends ServiceImpl<SalaryMapper, Salary> impleme
 			salaryDataChain.setFSalary(BigDecimal.ZERO);
 			salaryDataChain.setStudentNumber(BigDecimal.ZERO);
 		}
+		//人数和工资百分比
+		salaryDataChain.setFSalaryContrast(BigDecimal.ZERO);
+		salaryDataChain.setStudentNumberContrast(BigDecimal.ZERO);
 		//前五年的工资和人数
 		SalaryDataChain salaryTwo = baseMapper.salaryDataChain(Long.valueOf(salary.getAnnual())-4,salary.getMoon(),salary.getSemester(),salary.getSalaryType(),salary.getTenantId());
 		if (salaryTwo !=null){
@@ -416,6 +432,17 @@ public class SalaryServiceImpl extends ServiceImpl<SalaryMapper, Salary> impleme
 			salaryDataChain.setFSalaryOne(BigDecimal.ZERO);
 			salaryDataChain.setStudentNumberOne(BigDecimal.ZERO);
 		}
+		//对比前年人数百分比
+		if (salaryDataChain.getFSalary().compareTo(BigDecimal.ZERO) >0){
+			salaryDataChain.setFSalaryOneContrast((salaryDataChain.getFSalaryOne().subtract(salaryDataChain.getFSalary())).divide(salaryDataChain.getFSalary(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryDataChain.setFSalaryOneContrast(BigDecimal.ZERO);
+		}
+		if (salaryDataChain.getStudentNumber().compareTo(BigDecimal.ZERO) >0){
+			salaryDataChain.setStudentNumberOneContrast((salaryDataChain.getStudentNumberOne().subtract(salaryDataChain.getStudentNumber())).divide(salaryDataChain.getStudentNumber(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryDataChain.setStudentNumberOneContrast(BigDecimal.ZERO);
+		}
 		//前四年的工资和人数
 		SalaryDataChain salaryThree = baseMapper.salaryDataChain(Long.valueOf(salary.getAnnual())-3,salary.getMoon(),salary.getSemester(),salary.getSalaryType(),salary.getTenantId());
 		if (salaryThree !=null){
@@ -425,6 +452,17 @@ public class SalaryServiceImpl extends ServiceImpl<SalaryMapper, Salary> impleme
 			salaryDataChain.setFSalaryTwo(BigDecimal.ZERO);
 			salaryDataChain.setStudentNumberTwo(BigDecimal.ZERO);
 		}
+		//对比前年人数百分比
+		if (salaryDataChain.getFSalaryOne().compareTo(BigDecimal.ZERO) >0){
+			salaryDataChain.setFSalaryTwoContrast((salaryDataChain.getFSalaryTwo().subtract(salaryDataChain.getFSalaryOne())).divide(salaryDataChain.getFSalaryOne(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryDataChain.setFSalaryTwoContrast(BigDecimal.ZERO);
+		}
+		if (salaryDataChain.getStudentNumberOne().compareTo(BigDecimal.ZERO) >0){
+			salaryDataChain.setStudentNumberTwoContrast((salaryDataChain.getStudentNumberTwo().subtract(salaryDataChain.getStudentNumberOne())).divide(salaryDataChain.getStudentNumberOne(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryDataChain.setStudentNumberTwoContrast(BigDecimal.ZERO);
+		}
 		//前三年的工资和人数
 		SalaryDataChain salaryFour = baseMapper.salaryDataChain(Long.valueOf(salary.getAnnual())-2,salary.getMoon(),salary.getSemester(),salary.getSalaryType(),salary.getTenantId());
 		if (salaryFour !=null){
@@ -434,6 +472,17 @@ public class SalaryServiceImpl extends ServiceImpl<SalaryMapper, Salary> impleme
 			salaryDataChain.setFSalaryThree(BigDecimal.ZERO);
 			salaryDataChain.setStudentNumberThree(BigDecimal.ZERO);
 		}
+		//对比前年人数百分比
+		if (salaryDataChain.getFSalaryTwo().compareTo(BigDecimal.ZERO) >0){
+			salaryDataChain.setFSalaryThreeContrast((salaryDataChain.getFSalaryThree().subtract(salaryDataChain.getFSalaryTwo())).divide(salaryDataChain.getFSalaryTwo(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryDataChain.setFSalaryThreeContrast(BigDecimal.ZERO);
+		}
+		if (salaryDataChain.getStudentNumberTwo().compareTo(BigDecimal.ZERO) >0){
+			salaryDataChain.setStudentNumberThreeContrast((salaryDataChain.getStudentNumberThree().subtract(salaryDataChain.getStudentNumberTwo())).divide(salaryDataChain.getStudentNumberTwo(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryDataChain.setStudentNumberThreeContrast(BigDecimal.ZERO);
+		}
 		//前二年的工资和人数
 		SalaryDataChain salaryFive = baseMapper.salaryDataChain(Long.valueOf(salary.getAnnual())-1,salary.getMoon(),salary.getSemester(),salary.getSalaryType(),salary.getTenantId());
 		if (salaryFive !=null){
@@ -443,6 +492,37 @@ public class SalaryServiceImpl extends ServiceImpl<SalaryMapper, Salary> impleme
 			salaryDataChain.setFSalaryFour(BigDecimal.ZERO);
 			salaryDataChain.setStudentNumberFour(BigDecimal.ZERO);
 		}
+		//对比前年人数百分比
+		if (salaryDataChain.getFSalaryThree().compareTo(BigDecimal.ZERO) >0){
+			salaryDataChain.setFSalaryFourContrast((salaryDataChain.getFSalaryFour().subtract(salaryDataChain.getFSalaryThree())).divide(salaryDataChain.getFSalaryThree(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryDataChain.setFSalaryFourContrast(BigDecimal.ZERO);
+		}
+		if (salaryDataChain.getStudentNumberThree().compareTo(BigDecimal.ZERO) >0){
+			salaryDataChain.setStudentNumberFourContrast((salaryDataChain.getStudentNumberFour().subtract(salaryDataChain.getStudentNumberThree())).divide(salaryDataChain.getStudentNumberThree(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryDataChain.setStudentNumberFourContrast(BigDecimal.ZERO);
+		}
+		//选中年的工资和人数
+		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);
+		}
+		//对比前年人数百分比
+		if (salaryDataChain.getFSalaryFour().compareTo(BigDecimal.ZERO) >0){
+			salaryDataChain.setFSalaryFiveContrast((salaryDataChain.getFSalaryFive().subtract(salaryDataChain.getFSalaryFour())).divide(salaryDataChain.getFSalaryFour(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryDataChain.setFSalaryFiveContrast(BigDecimal.ZERO);
+		}
+		if (salaryDataChain.getStudentNumberFour().compareTo(BigDecimal.ZERO) >0){
+			salaryDataChain.setStudentNumberFiveContrast((salaryDataChain.getStudentNumberFive().subtract(salaryDataChain.getStudentNumberFour())).divide(salaryDataChain.getStudentNumberFour(),5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+		}else {
+			salaryDataChain.setStudentNumberFiveContrast(BigDecimal.ZERO);
+		}
 		return salaryDataChain;
 	}