|  | @@ -8,23 +8,27 @@ import com.gubersail.admin.inventory.service.IStockDescService;
 | 
	
		
			
				|  |  |  import com.gubersail.admin.zcrm.customer.mapper.ViewItemSelMapper;
 | 
	
		
			
				|  |  |  import com.gubersail.admin.zcrm.customer.mapper.ViewWhqohSelMapper;
 | 
	
		
			
				|  |  |  import com.gubersail.dealer.admin.api.inventory.entity.PjStockDesc;
 | 
	
		
			
				|  |  | -import com.gubersail.dealer.admin.api.zcrm.customer.entity.ViewCustomerSel;
 | 
	
		
			
				|  |  | +import com.gubersail.dealer.admin.api.inventory.vo.PjStockDescVo;
 | 
	
		
			
				|  |  |  import com.gubersail.dealer.admin.api.zcrm.customer.entity.ViewItemSel;
 | 
	
		
			
				|  |  |  import com.gubersail.dealer.admin.api.zcrm.customer.entity.ViewWhqohSel;
 | 
	
		
			
				|  |  |  import lombok.AllArgsConstructor;
 | 
	
		
			
				|  |  |  import org.springblade.common.enums.CommonEnum;
 | 
	
		
			
				|  |  | -import org.springblade.common.enums.NumberEnum;
 | 
	
		
			
				|  |  |  import org.springblade.core.secure.BladeUser;
 | 
	
		
			
				|  |  |  import org.springblade.core.secure.utils.AuthUtil;
 | 
	
		
			
				|  |  |  import org.springblade.core.tool.api.R;
 | 
	
		
			
				|  |  | +import org.springblade.system.user.entity.User;
 | 
	
		
			
				|  |  | +import org.springblade.system.user.feign.IUserClient;
 | 
	
		
			
				|  |  | +import org.springframework.beans.BeanUtils;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  import org.springframework.util.CollectionUtils;
 | 
	
		
			
				|  |  | -import org.springframework.util.StringUtils;
 | 
	
		
			
				|  |  | +import org.springframework.util.ObjectUtils;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -import java.time.LocalDateTime;
 | 
	
		
			
				|  |  | -import java.util.Date;
 | 
	
		
			
				|  |  | -import java.util.Objects;
 | 
	
		
			
				|  |  | +import java.math.BigDecimal;
 | 
	
		
			
				|  |  | +import java.math.RoundingMode;
 | 
	
		
			
				|  |  | +import java.util.*;
 | 
	
		
			
				|  |  | +import java.util.function.Function;
 | 
	
		
			
				|  |  | +import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
	
		
			
				|  | @@ -38,6 +42,9 @@ public class StockDescServiceImpl extends ServiceImpl<StockDescMapper, PjStockDe
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	private final ViewWhqohSelMapper viewWhqohSelMapper;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	private final IUserClient userClient;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
	
		
			
				|  | @@ -57,6 +64,9 @@ public class StockDescServiceImpl extends ServiceImpl<StockDescMapper, PjStockDe
 | 
	
		
			
				|  |  |  		if (Objects.isNull(stockDesc.getGoodsId())) {
 | 
	
		
			
				|  |  |  			stockDesc.setGoodsId(IdUtil.getSnowflakeNextId());
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +		if (BigDecimal.ZERO.compareTo(stockDesc.getInventoryCostPrice()) < 0) {
 | 
	
		
			
				|  |  | +			stockDesc.setInventoryAmount(stockDesc.getBalanceQuantity().multiply(stockDesc.getInventoryCostPrice()).setScale(2, RoundingMode.DOWN));
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  		stockDesc.setTenantId(bladeUser.getTenantId());
 | 
	
		
			
				|  |  |  		stockDesc.setUserAndDept(bladeUser);
 | 
	
		
			
				|  |  |  		stockDesc.setStatus(CommonEnum.ONE.info);
 | 
	
	
		
			
				|  | @@ -113,8 +123,11 @@ public class StockDescServiceImpl extends ServiceImpl<StockDescMapper, PjStockDe
 | 
	
		
			
				|  |  |  		stockDesc.setTenantId(bladeUser.getTenantId());
 | 
	
		
			
				|  |  |  		stockDesc.setUserAndDept(bladeUser);
 | 
	
		
			
				|  |  |  		stockDesc.setStatus(CommonEnum.ZERO.info);
 | 
	
		
			
				|  |  | -		boolean result = this.saveOrUpdate(stockDesc);
 | 
	
		
			
				|  |  | -		return result ? R.data(stockDesc.getId(), "提交成功") : R.fail("提交失败");
 | 
	
		
			
				|  |  | +		if (BigDecimal.ZERO.compareTo(stockDesc.getInventoryCostPrice()) < 0) {
 | 
	
		
			
				|  |  | +			stockDesc.setInventoryAmount(stockDesc.getBalanceQuantity().multiply(stockDesc.getInventoryCostPrice()).setScale(2, RoundingMode.DOWN));
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		int result = Objects.isNull(stockDesc.getId()) ? baseMapper.insert(stockDesc) : baseMapper.updateById(stockDesc);
 | 
	
		
			
				|  |  | +		return result > 0 ? R.data(stockDesc.getId(), "提交成功") : R.fail("提交失败");
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
	
		
			
				|  | @@ -133,15 +146,42 @@ public class StockDescServiceImpl extends ServiceImpl<StockDescMapper, PjStockDe
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  | -	public R revokeGoodsStock(Long id) {
 | 
	
		
			
				|  |  | +	public R revokeGoodsStock(PjStockDesc stockDesc) {
 | 
	
		
			
				|  |  |  		BladeUser bladeUser = AuthUtil.getUser();
 | 
	
		
			
				|  |  | +		PjStockDesc srcStock = this.getById(stockDesc.getId());
 | 
	
		
			
				|  |  | +		if (ObjectUtils.isEmpty(srcStock)) {
 | 
	
		
			
				|  |  | +			return R.fail("该单据不存在");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if (!srcStock.getVersion().equals(stockDesc.getVersion())) {
 | 
	
		
			
				|  |  | +			return R.fail(601, "数据已被其他用户更新,请等待刷新后重试");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  		PjStockDesc updateDesc = new PjStockDesc();
 | 
	
		
			
				|  |  | -		updateDesc.setId(id);
 | 
	
		
			
				|  |  | +		updateDesc.setId(stockDesc.getId());
 | 
	
		
			
				|  |  | +		updateDesc.setVersion(stockDesc.getVersion());
 | 
	
		
			
				|  |  |  		updateDesc.setStatus(CommonEnum.ZERO.info);
 | 
	
		
			
				|  |  |  		updateDesc.setUserAndDept(bladeUser);
 | 
	
		
			
				|  |  |  		return R.status(this.updateById(updateDesc));
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	public PjStockDescVo getDetail(Long id) {
 | 
	
		
			
				|  |  | +		PjStockDesc desc = this.getById(id);
 | 
	
		
			
				|  |  | +		if (ObjectUtils.isEmpty(desc)) {
 | 
	
		
			
				|  |  | +			return null;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		PjStockDescVo detail = new PjStockDescVo();
 | 
	
		
			
				|  |  | +		BeanUtils.copyProperties(desc, detail);
 | 
	
		
			
				|  |  | +		String userIds = detail.getCreateUser() + (Objects.isNull(detail.getUpdateUser()) ? "" :  "," + detail.getUpdateUser()) ;
 | 
	
		
			
				|  |  | +		List<User> userList = userClient.selectUserIds(userIds);
 | 
	
		
			
				|  |  | +		if (CollectionUtils.isEmpty(userList)) {
 | 
	
		
			
				|  |  | +			return detail;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		Map<Long, User> userMap = userList.stream().collect(Collectors.toMap(User::getId, Function.identity()));
 | 
	
		
			
				|  |  | +		Optional.ofNullable(userMap.get(detail.getCreateUser())).ifPresent(user -> detail.setCreateUserName(user.getRealName()));
 | 
	
		
			
				|  |  | +		Optional.ofNullable(userMap.get(detail.getUpdateUser())).ifPresent(user -> detail.setUpdateUserName(user.getRealName()));
 | 
	
		
			
				|  |  | +		return detail;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	private R<String> verifyVersion (PjStockDesc stockDesc) {
 | 
	
		
			
				|  |  |  		if (Objects.isNull(stockDesc.getId())) {
 | 
	
		
			
				|  |  |  			return null;
 |