Parcourir la source

2022年9月29日10:33:25

纪新园 il y a 3 ans
Parent
commit
01f407e22a

+ 16 - 4
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/OrderItems.java

@@ -1,15 +1,15 @@
 package com.trade.purchase.order.entity;
 
-import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.trade.purchase.order.common.entity.OrderBase;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
-import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
@@ -392,9 +392,9 @@ public class OrderItems extends OrderBase {
 	private String productRemark;
 
 	@ApiModelProperty(value = "已收发票重量")
-	private BigDecimal  actualWeight;
+	private BigDecimal actualWeight;
 	@ApiModelProperty(value = "产品价格")
-	private BigDecimal  productPrice;
+	private BigDecimal productPrice;
 	@ApiModelProperty(value = "商品类型 默认0 为商品 1 为赠品")
 	private int goodType;
 	@ApiModelProperty(value = "单品毛利率")
@@ -599,5 +599,17 @@ public class OrderItems extends OrderBase {
 	 */
 	@ApiModelProperty(value = "搬运工")
 	private String carry;
+	/**
+	 * 明细来源id
+	 */
+	@ApiModelProperty(value = "明细来源id")
+	private Long srcItemId;
+	/**
+	 * 入库日期
+	 */
+	@ApiModelProperty(value = "入库日期")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date stockTime;
 
 }

+ 14 - 9
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/AccController.java

@@ -18,14 +18,11 @@ package org.springblade.finance.controller;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import com.trade.purchase.financing.entity.Financing;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -46,13 +43,14 @@ import org.springblade.finance.excel.FeeStatisticsExcel;
 import org.springblade.finance.service.IAccService;
 import org.springblade.finance.vo.AccVO;
 import org.springblade.finance.vojo.Acc;
+import org.springblade.system.entity.Tenant;
+import org.springblade.system.feign.ITenantClient;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -81,6 +79,9 @@ public class AccController extends BladeController {
 
 	private final IUserClient iUserClient;
 
+	//租户
+	private final ITenantClient iTenantClient;
+
 	/**
 	 * 财务账单添加
 	 */
@@ -356,7 +357,7 @@ public class AccController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入acc")
 	public R<IPage<Acc>> accBillList(Acc acc, Query query) {
-		IPage<Acc> pages = accService.selectAccBillList(acc,query);
+		IPage<Acc> pages = accService.selectAccBillList(acc, query);
 		return R.data(pages);
 	}
 
@@ -366,7 +367,7 @@ public class AccController extends BladeController {
 	@GetMapping("/revenueExpenditure")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入acc")
-	public R<Map<String, BigDecimal>> revenueExpenditure(Acc acc, Query query) {
+	public R<Map<String, String>> revenueExpenditure(Acc acc, Query query) {
 		LambdaQueryWrapper<Acc> accLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		accLambdaQueryWrapper
 			.eq(Acc::getTenantId, AuthUtil.getTenantId())
@@ -375,7 +376,7 @@ public class AccController extends BladeController {
 			.eq(acc.getCorpId() != null, Acc::getCorpId, acc.getCorpId())
 			.apply("date_format(create_time,'%Y-%m') = date_format(now(),'%Y-%m')");
 		List<Acc> list = accService.list(accLambdaQueryWrapper);
-		Map<String, BigDecimal> map = new HashMap<>();
+		Map<String, String> map = new HashMap<>();
 
 		BigDecimal settlementAmountD = new BigDecimal(0);
 		BigDecimal settlementAmountC = new BigDecimal(0);
@@ -389,8 +390,12 @@ public class AccController extends BladeController {
 				settlementAmountC = settlementAmountC.add(accs.getSettlementAmount());
 			}
 		}
-		map.put("settlementAmountD", settlementAmountD);
-		map.put("settlementAmountC", settlementAmountC);
+		//获得当前租户信息
+		Tenant tenant = iTenantClient.tenantMessage(AuthUtil.getTenantId());
+		//获得租户名称
+		map.put("tenantName", tenant.getTenantName());
+		map.put("settlementAmountD", settlementAmountD.toString());
+		map.put("settlementAmountC", settlementAmountC.toString());
 		return R.data(map);
 	}
 

+ 27 - 22
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/WoodHarvestingCloudController.java

@@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.trade.purchase.excel.CMYWarehousingExcel;
 import com.trade.purchase.excel.GeneralLedgerExcel;
-import com.trade.purchase.financing.service.IFinancingService;
 import com.trade.purchase.order.dto.OrderSubmitDto;
 import com.trade.purchase.order.entity.Order;
 import com.trade.purchase.order.entity.OrderItems;
@@ -184,7 +183,18 @@ public class WoodHarvestingCloudController {
 	@PostMapping("/removeByItemId")
 	@ApiOperationSupport(order = 7)
 	@ApiOperation(value = "删除", notes = "传入id")
-	public R removeByItemId(@ApiParam(value = "传入itemId", required = true) @RequestParam String itemId) {
+	public R removeByItemId(@ApiParam(value = "传入itemId", required = true) @RequestParam String itemId, @RequestParam String type) {
+		if (itemId == null) {
+			return R.fail("缺少必要参数");
+		}
+		//出库明细删除,修改入库明细状态为在库
+		if (OrderTypeEnum.OUT_WAREHOUSING.getType().equals(type)) {
+			OrderItems orderItems = orderItemsService.getById(itemId);
+			OrderItems RKOrderItems = new OrderItems();
+			RKOrderItems.setId(orderItems.getSrcItemId());
+			RKOrderItems.setIsIssue("3");
+			orderItemsService.updateById(RKOrderItems);
+		}
 		return R.data(orderItemsService.removeByItemId(itemId));
 	}
 
@@ -196,7 +206,7 @@ public class WoodHarvestingCloudController {
 	@ApiOperation(value = "电脑端提交", notes = "传入id")
 	public R pcSubmit(@RequestParam(value = "id") Long id,
 					  @RequestParam(value = "type") String type,
-					  @RequestParam(value = "toolType",required = false) String toolType,
+					  @RequestParam(value = "toolType", required = false) String toolType,
 					  @RequestParam(value = "status") int status,
 					  @RequestParam(value = "isIssue") String isIssue) {
 		if (id == null) {
@@ -312,25 +322,7 @@ public class WoodHarvestingCloudController {
 		if (ObjectUtils.isNull(id) || ObjectUtils.isNull(map)) {
 			return R.fail("缺少必要参数");
 		}
-		for (Map<String, String> ma : map) {
-			QueryWrapper<OrderItems> queryWrapper = new QueryWrapper<>();
-			queryWrapper.eq("pid", id);
-			queryWrapper.eq("id", ma.get("itemId"));
-			queryWrapper.eq("bill_no", ma.get("billNo"));
-			queryWrapper.eq("tenant_id", AuthUtil.getTenantId());
-			queryWrapper.eq("is_deleted", 0);
-			OrderItems orderItems = orderItemsService.getOne(queryWrapper);
-			if (ObjectUtils.isNotNull(orderItems)) {
-				orderItems.setScanningComparison("Y");
-				orderItems.setUpdateTime(new Date());
-				orderItems.setUpdateUser(AuthUtil.getUserId());
-				orderItemsService.updateById(orderItems);
-				return R.data(orderItems);
-			} else {
-				return R.fail("扫码比对失败!未在本单据中找到次码信息");
-			}
-		}
-		return R.success("");
+		return orderService.appScanningCodeComparison(id, map);
 	}
 
 	/**
@@ -388,4 +380,17 @@ public class WoodHarvestingCloudController {
 		return R.data(orderFilesService.removeById(ids));
 	}
 
+	/**
+	 * app扫码添加明细
+	 */
+	@GetMapping("/scanningCodeAdd")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "app扫码添加明细", notes = "billNo")
+	public R pcSubmit(@RequestParam(value = "billNo") String billNo, @RequestParam(value = "id") Long id) {
+		if (ObjectUtils.isNull(billNo) || ObjectUtils.isNull(id)) {
+			return R.fail("缺少必要参数");
+		}
+		return orderService.scanningCodeAdd(billNo, id);
+	}
+
 }

+ 16 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/IOrderService.java

@@ -228,4 +228,20 @@ public interface IOrderService extends IService<Order> {
 	 * @return
 	 */
 	R financingExcess(Order order);
+
+	/**
+	 * app扫码比对
+	 * @param id
+	 * @param map
+	 * @return
+	 */
+	R appScanningCodeComparison(Long id, List<Map<String, String>> map);
+
+	/**
+	 * app扫码添加明细
+	 * @param billNo
+	 * @param id
+	 * @return
+	 */
+	R scanningCodeAdd(String billNo, Long id);
 }

+ 277 - 279
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

@@ -64,6 +64,7 @@ import org.springblade.system.feign.IDictBizClient;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -112,6 +113,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	private final AgreementitemsServiceImpl agreementitemsService;//仓储费明细
 	private FinancingServiceImpl financingService;//融资
 	private IDictBizClient dictBizClient;//字典
+	private final RedisTemplate<String, Object> redisTemplate;
+
+	//客户
+//	private final List<CorpsDesc> corpsDescList = castToList(redisTemplate.opsForValue().get("corps"), CorpsDesc.class);
+	//商品
+//	private final List<GoodsDesc> goodsList = castToList(redisTemplate.opsForValue().get("goods"), GoodsDesc.class);
+	//仓库
+//	private final List<StorageType> storageTypeList = castToList(redisTemplate.opsForValue().get("storageType"), StorageType.class);
+	//库区
+//	private final List<StorageDesc> storageDescList = castToList(redisTemplate.opsForValue().get("storageDesc"), StorageDesc.class);
+	//用户
+//	private final List<User> userList = castToList(redisTemplate.opsForValue().get("user"), User.class);
 
 
 	@Override
@@ -1040,24 +1053,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		submitDto.setTenantId(AuthUtil.getTenantId());
 		submitDto.setBusinesDate(submitDto.getStockTime());
 		baseMapper.insert(submitDto);
-		//获取入库信息用于出库,盘点修改信息
-		LambdaQueryWrapper<Order> RKOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		RKOrderLambdaQueryWrapper
-			.eq(Order::getIsDeleted, 0)
-			.eq(Order::getOrderNo, submitDto.getOrderNo())
-			.eq(Order::getBillType, OrderTypeEnum.WAREHOUSING.getType())
-			.eq(Order::getTenantId, AuthUtil.getTenantId());
-		Order RKOrder = baseMapper.selectOne(RKOrderLambdaQueryWrapper);
-		if (RKOrder == null) {
-			throw new SecurityException("更新入库数据失败");
-		}
-		//入库明细
-		LambdaQueryWrapper<OrderItems> RKOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		RKOrderItemsLambdaQueryWrapper
-			.eq(OrderItems::getIsDeleted, 0)
-			.eq(OrderItems::getPid, RKOrder.getId())
-			.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
-		List<OrderItems> RKOrderItemsList = orderItemsMapper.selectList(RKOrderItemsLambdaQueryWrapper);
 		//结余数量
 		BigDecimal balanceNumber = new BigDecimal(0);
 		//结余金额
@@ -1082,17 +1077,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						throw new Error("捆包号:" + orderItems.getBillNo() + "不允许重复");
 					}
 					orderItems.setBillType(OrderTypeEnum.WAREHOUSING.getType());
+					orderItems.setStockTime(submitDto.getStockTime());
 				} else if (OrderTypeEnum.OUT_WAREHOUSING.getType().equals(submitDto.getBillType())) {//出库添加逻辑
-					//循环比对出库明细与入库明细捆包号是否相等,同事修改货物状态
-					for (OrderItems items : RKOrderItemsList) {
-						if (items.getBillNo().equals(orderItems.getBillNo())) {
-							items.setIsIssue("4");
-							orderItems.setIsIssue("4");
-							orderItemsMapper.updateById(items);
-							break;
-						}
-					}
+					orderItems.setIsIssue("4");
 					orderItems.setBillType(OrderTypeEnum.OUT_WAREHOUSING.getType());
+					OrderItems items = new OrderItems();
+					items.setId(orderItems.getSrcItemId());
+					items.setIsIssue("4");
+					orderItemsMapper.updateById(items);
 				}
 				orderItems.setPid(submitDto.getId());
 				orderItems.setCreateTime(new Date());
@@ -1157,6 +1149,24 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						.eq(OrderItems::getBillType, OrderTypeEnum.WAREHOUSING.getType())
 						.eq(OrderItems::getIsDeleted, 0);
 					orderItemsBillNo = orderItemsMapper.selectList(orderItemsLambdaQueryWrapper);
+					if (ObjectUtils.isNotNull(orderItems.getId())) {
+						if (orderItemsBillNo.size() > 1) {
+							throw new Error("捆包号:" + orderItems.getBillNo() + "不允许重复");
+						}
+					} else {
+						if (orderItemsBillNo.size() > 0) {
+							throw new Error("捆包号:" + orderItems.getBillNo() + "不允许重复");
+						}
+					}
+				} else if (OrderTypeEnum.OUT_WAREHOUSING.getType().equals(submitDto.getBillType())) {
+					if (ObjectUtils.isNull(orderItems.getId())) {
+						orderItems.setIsIssue("4");
+						orderItems.setBillType(OrderTypeEnum.OUT_WAREHOUSING.getType());
+						OrderItems items = new OrderItems();
+						items.setId(orderItems.getSrcItemId());
+						items.setIsIssue("4");
+						orderItemsMapper.updateById(items);
+					}
 				}
 				orderItems.setPid(submitDto.getId());
 				orderItems.setTenantId(AuthUtil.getTenantId());
@@ -1164,17 +1174,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				orderItems.setBalanceMoney(orderItems.getStorageAmount());//结余金额
 				//判断明细id是否为空 true新增  false修改
 				if (ObjectUtils.isNotNull(orderItems.getId())) {
-					if (orderItemsBillNo.size() > 1) {
-						throw new Error("捆包号:" + orderItems.getBillNo() + "不允许重复");
-					}
 					orderItems.setUpdateTime(new Date());
 					orderItems.setUpdateUser(AuthUtil.getUserId());
 					orderItems.setUpdateUserName(AuthUtil.getUserName());
 					orderItemsMapper.updateById(orderItems);
 				} else {
-					if (orderItemsBillNo.size() > 0) {
-						throw new Error("捆包号:" + orderItems.getBillNo() + "不允许重复");
-					}
 					orderItems.setCreateTime(new Date());
 					orderItems.setCreateUser(AuthUtil.getUserId());
 					orderItems.setCreateUserName(AuthUtil.getUserName());
@@ -1236,24 +1240,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			submitDto.setCreateTime(new Date());
 			baseMapper.insert(submitDto);
 		}
-		//获取入库数据用于出库,盘点修改数据
-		LambdaQueryWrapper<Order> RKOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		RKOrderLambdaQueryWrapper
-			.eq(Order::getIsDeleted, 0)
-			.eq(Order::getOrderNo, submitDto.getOrderNo())
-			.eq(Order::getBillType, OrderTypeEnum.WAREHOUSING.getType())
-			.eq(Order::getTenantId, AuthUtil.getTenantId());
-		Order RKOrder = baseMapper.selectOne(RKOrderLambdaQueryWrapper);
-		if (RKOrder == null) {
-			throw new SecurityException("更新入库数据失败");
-		}
-		//入库明细
-		LambdaQueryWrapper<OrderItems> RKOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		RKOrderItemsLambdaQueryWrapper
-			.eq(OrderItems::getIsDeleted, 0)
-			.eq(OrderItems::getPid, RKOrder.getId())
-			.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
-		List<OrderItems> RKOrderItemsList = orderItemsMapper.selectList(RKOrderItemsLambdaQueryWrapper);
 		//结余数量
 		BigDecimal balanceNumber = new BigDecimal(0);
 		//结余金额
@@ -1279,34 +1265,32 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						.eq(OrderItems::getBillType, OrderTypeEnum.WAREHOUSING.getType())
 						.eq(OrderItems::getIsDeleted, 0);
 					orderItemsBillNo = orderItemsMapper.selectList(orderItemsLambdaQueryWrapper);
-					if (orderItemsBillNo.size() > 1) {
-						throw new Error("捆包号:" + orderItems.getBillNo() + "不允许重复");
+					if (ObjectUtils.isNotNull(orderItems.getId())) {
+						if (orderItemsBillNo.size() > 1) {
+							throw new Error("捆包号:" + orderItems.getBillNo() + "不允许重复");
+						}
+					} else {
+						if (orderItemsBillNo.size() > 0) {
+							throw new Error("捆包号:" + orderItems.getBillNo() + "不允许重复");
+						}
 					}
 					orderItems.setBillType(OrderTypeEnum.WAREHOUSING.getType());
+					orderItems.setStockTime(submitDto.getStockTime());
 				} else if (OrderTypeEnum.OUT_WAREHOUSING.getType().equals(submitDto.getBillType())) {//出库  同时更新入库明细货物状态
-					for (OrderItems items : RKOrderItemsList) {
-						if (items.getBillNo().equals(orderItems.getBillNo())) {
-							items.setIsIssue("4");
-							orderItemsMapper.updateById(items);
-							break;
-						}
-					}
 					orderItems.setIsIssue("4");
 					orderItems.setBillType(OrderTypeEnum.OUT_WAREHOUSING.getType());
+					OrderItems items = new OrderItems();
+					items.setId(orderItems.getSrcItemId());
+					items.setIsIssue("4");
+					orderItemsMapper.updateById(items);
 				}
 				//判断明细id是否为空  true 新增  false修改
 				if (ObjectUtils.isNotNull(orderItems.getId())) {
-					if (orderItemsBillNo.size() > 1) {
-						throw new Error("捆包号:" + orderItems.getBillNo() + "不允许重复");
-					}
 					orderItems.setUpdateTime(new Date());
 					orderItems.setUpdateUser(AuthUtil.getUserId());
 					orderItems.setUpdateUserName(AuthUtil.getUserName());
 					orderItemsMapper.updateById(orderItems);
 				} else {
-					if (orderItemsBillNo.size() > 0) {
-						throw new Error("捆包号:" + orderItems.getBillNo() + "不允许重复");
-					}
 					orderItems.setCreateTime(new Date());
 					orderItems.setCreateUser(AuthUtil.getUserId());
 					orderItems.setCreateUserName(AuthUtil.getUserName());
@@ -1628,35 +1612,28 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
 			//出库明细
 			List<OrderItems> CkOrderItemsList = orderItemsMapper.selectList(CKOrderItemsLambdaQueryWrapper);
-			int count = 0;
 			for (OrderItems orderItems : CkOrderItemsList) {
-				for (OrderItems RKOrderItems : RKOrderItemsList) {
-					//判断是否全部出库
-					if (RKOrderItems.getIsIssue().equals("7")) {
-						count++;
-					}
-					//判断出库与入库明细捆包号是否相等
-					if (orderItems.getBillNo().equals(RKOrderItems.getBillNo())) {
-						//判断该捆包号是否已出库
-						if (orderItems.getIsIssue().equals("7")) {
-							throw new SecurityException("捆包号:" + RKOrderItems.getBillNo() + "已出库");
-						} else {
-							//判断第几次出库审核
-							if (0 == times) {//第一次审批
-								RKOrderItems.setIsIssue("5");
-								orderItems.setIsIssue("5");
-							} else {//第二次审批
-								RKOrderItems.setIsIssue("7");
-								orderItems.setIsIssue("7");
-							}
-						}
-						//修改入库明细
-						orderItemsMapper.updateById(RKOrderItems);
-						//修改出库明细
-						orderItemsMapper.updateById(orderItems);
+				OrderItems RKOrderItems = new OrderItems();
+				RKOrderItems.setId(orderItems.getSrcItemId());
+				//判断该捆包号是否已出库
+				if (orderItems.getIsIssue().equals("7")) {
+					throw new SecurityException("捆包号:" + RKOrderItems.getBillNo() + "已出库");
+				} else {
+					//判断第几次出库审核
+					if (0 == times) {//第一次审批
+						RKOrderItems.setIsIssue("5");
+						orderItems.setIsIssue("5");
+					} else {//第二次审批
+						RKOrderItems.setIsIssue("7");
+						orderItems.setIsIssue("7");
 					}
+					//修改入库明细
+					orderItemsMapper.updateById(RKOrderItems);
+					//修改出库明细
+					orderItemsMapper.updateById(orderItems);
 				}
 			}
+			long count = RKOrderItemsList.stream().filter(R -> R.getIsIssue().equals("7")).count();
 			//判断入库明细是否已全部出库 true 修改入库主表总状态为已出库
 			if (count == RKOrderItemsList.size()) {
 				order.setSpecialCheckStatus(1);
@@ -1684,20 +1661,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			//盘点明细
 			List<OrderItems> PDOrderItemsList = orderItemsMapper.selectList(PDOrderItemsLambdaQueryWrapper);
 			for (OrderItems orderItems : PDOrderItemsList) {
-				for (OrderItems RKOrderItems : RKOrderItemsList) {
-					//判断盘点与入库明细捆包号是否相等 true修改入库盘点量,结余量,结余金额
-					if (orderItems.getBillNo().equals(RKOrderItems.getBillNo())) {
-						RKOrderItems.setInventory(orderItems.getInventory());
-						RKOrderItems.setBalanceNumber(orderItems.getInventory());
-						RKOrderItems.setBalanceMoney(orderItems.getBalanceMoney());
-						RKOrderItems.setSurplusLoss(orderItems.getSurplusLoss());
-						if (RKOrderItems.getIsIssue().equals("6")) {
-							throw new SecurityException("捆包号:" + RKOrderItems.getBillNo() + "已出库");
-						}
-						orderItemsMapper.updateById(RKOrderItems);
-						break;
-					}
+				//判断盘点与入库明细捆包号是否相等 true修改入库盘点量,结余量,结余金额
+				OrderItems RKOrderItems = new OrderItems();
+				RKOrderItems.setId(orderItems.getSrcItemId());
+				RKOrderItems.setInventory(orderItems.getInventory());
+				RKOrderItems.setBalanceNumber(orderItems.getInventory());
+				RKOrderItems.setBalanceMoney(orderItems.getBalanceMoney());
+				RKOrderItems.setSurplusLoss(orderItems.getSurplusLoss());
+				if (RKOrderItems.getIsIssue().equals("6")) {
+					throw new SecurityException("捆包号:" + RKOrderItems.getBillNo() + "已出库");
 				}
+				orderItemsMapper.updateById(RKOrderItems);
 			}
 			order.setStatus(3);
 			order.setOrderStatus("审批通过");
@@ -1744,26 +1718,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (order == null) {
 			throw new SecurityException("未找到单据");
 		}
-		//获取入库数据
-		LambdaQueryWrapper<Order> RKOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		RKOrderLambdaQueryWrapper
-			.eq(Order::getIsDeleted, 0)
-			.eq(Order::getOrderNo, order.getOrderNo())
-			.eq(Order::getBillType, OrderTypeEnum.WAREHOUSING.getType())
-			.eq(Order::getTenantId, AuthUtil.getTenantId());
-		Order RKOrder = baseMapper.selectOne(RKOrderLambdaQueryWrapper);
-		if (RKOrder == null) {
-			throw new SecurityException("更新入库数据失败");
-		}
-		//入库明细
-		LambdaQueryWrapper<OrderItems> RKOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		RKOrderItemsLambdaQueryWrapper
-			.eq(OrderItems::getIsDeleted, 0)
-			.eq(OrderItems::getPid, RKOrder.getId())
-			.eq(OrderItems::getBillType, OrderTypeEnum.WAREHOUSING.getType())
-			.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
-		List<OrderItems> RKOrderItemsList = orderItemsMapper.selectList(RKOrderItemsLambdaQueryWrapper);
-
 		//入库审批驳回
 		if (OrderTypeEnum.WAREHOUSING.getType().equals(order.getBillType())) {
 			if (order.getStatus() == 2) {
@@ -1779,7 +1733,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			LambdaQueryWrapper<OrderItems> CKOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
 			CKOrderItemsLambdaQueryWrapper
 				.eq(OrderItems::getIsDeleted, 0)
-				.eq(OrderItems::getPid, RKOrder.getId())
+				.eq(OrderItems::getPid, order.getId())
 				.eq(OrderItems::getBillType, OrderTypeEnum.WAREHOUSING.getType())
 				.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
 			List<OrderItems> CKOrderItemsList = orderItemsMapper.selectList(CKOrderItemsLambdaQueryWrapper);
@@ -1801,16 +1755,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				isIssue = 6;
 			}
 			for (OrderItems orderItems : CKOrderItemsList) {
-				for (OrderItems RKOrderItems : RKOrderItemsList) {
-					//判断出库与入库明细捆包号是否相等
-					if (orderItems.getBillNo().equals(RKOrderItems.getBillNo())) {
-						RKOrderItems.setIsIssue(isIssue + "");
-						orderItems.setIsIssue(isIssue + "");
-						orderItemsMapper.updateById(RKOrderItems);
-						orderItemsMapper.updateById(orderItems);
-						break;
-					}
-				}
+				OrderItems RKOrderItems = new OrderItems();
+				RKOrderItems.setId(orderItems.getSrcItemId());
+				RKOrderItems.setIsIssue(isIssue + "");
+				orderItems.setIsIssue(isIssue + "");
+				orderItemsMapper.updateById(RKOrderItems);
+				orderItemsMapper.updateById(orderItems);
 			}
 			//盘点审批驳回
 		} else if (OrderTypeEnum.INVENTORY.getType().equals(order.getBillType())) {
@@ -1890,7 +1840,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				LambdaQueryWrapper<Order> RKOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
 				RKOrderLambdaQueryWrapper
 					.eq(Order::getIsDeleted, 0)
-					.eq(Order::getOrderNo, order.getOrderNo())
+					.eq(Order::getSysNo, order.getOrderNo())
 					.eq(Order::getBillType, OrderTypeEnum.WAREHOUSING.getType())
 					.eq(Order::getTenantId, AuthUtil.getTenantId());
 				Order RKOrder = orderMapper.selectOne(RKOrderLambdaQueryWrapper);
@@ -1898,29 +1848,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					throw new SecurityException("更新入库数据失败");
 				}
 				RKOrder.setSpecialCheckStatus(1);
+				RKOrder.setConfirmStatus("1");
 				orderMapper.updateById(RKOrder);
-
-				//获取入库明细
-				QueryWrapper<OrderItems> RKqueryWrapper = new QueryWrapper<>();
-				RKqueryWrapper.eq("pid", RKOrder.getId());
-				RKqueryWrapper.eq("tenant_id", AuthUtil.getTenantId());
-				RKqueryWrapper.eq("is_deleted", 0);
-				List<OrderItems> RKderItemsList = orderItemsMapper.selectList(queryWrapper);
 				for (OrderItems orderItems : orderItemsList) {
-					for (OrderItems RKorderItems : RKderItemsList) {
-						//判断入库捆包号是否与出库捆包号相等  同时更细入库,出库扫描状态
-						if (orderItems.getBillNo().equals(RKorderItems.getBillNo())) {
-							orderItems.setUpdateTime(new Date());
-							orderItems.setUpdateUser(AuthUtil.getUserId());
-							RKorderItems.setScanningComparison("Y");
-							orderItemsMapper.updateById(RKorderItems);
-							orderItems.setUpdateTime(new Date());
-							orderItems.setUpdateUser(AuthUtil.getUserId());
-							orderItems.setScanningComparison("Y");
-							orderItemsMapper.updateById(orderItems);
-							break;
-						}
-					}
+					OrderItems RKorderItems = new OrderItems();
+					RKorderItems.setId(orderItems.getSrcItemId());
+					orderItems.setUpdateTime(new Date());
+					orderItems.setUpdateUser(AuthUtil.getUserId());
+					RKorderItems.setScanningComparison("Y");
+					RKorderItems.setIsIssue("7");
+					orderItemsMapper.updateById(RKorderItems);
+					orderItems.setUpdateTime(new Date());
+					orderItems.setUpdateUser(AuthUtil.getUserId());
+					orderItems.setScanningComparison("Y");
+					orderItems.setIsIssue("7");
+					orderItemsMapper.updateById(orderItems);
 				}
 			} else if (OrderTypeEnum.WAREHOUSING.getType().equals(order.getBillType())) {//入库手动修改货物状态为在库
 				QueryWrapper<OrderItems> queryWrapper = new QueryWrapper<>();
@@ -2045,16 +1987,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				isIssue = 6;
 			}
 			for (OrderItems orderItems : orderItemsVOList) {
-				for (OrderItems RKOrderItems : RKOrderItemsList) {
-					//判断出库与入库明细捆包号是否相等
-					if (orderItems.getBillNo().equals(RKOrderItems.getBillNo())) {
-						RKOrderItems.setIsIssue(isIssue + "");
-						orderItems.setIsIssue(isIssue + "");
-						orderItemsMapper.updateById(RKOrderItems);
-						orderItemsMapper.updateById(orderItems);
-						break;
-					}
-				}
+				OrderItems RKOrderItems = new OrderItems();
+				RKOrderItems.setId(orderItems.getSrcItemId());
+				RKOrderItems.setIsIssue(isIssue + "");
+				orderItems.setIsIssue(isIssue + "");
+				orderItemsMapper.updateById(RKOrderItems);
+				orderItemsMapper.updateById(orderItems);
 			}
 			//盘点审批撤销
 		} else if (OrderTypeEnum.INVENTORY.getType().equals(order.getBillType())) {
@@ -2065,18 +2003,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			queryWrapper.eq("is_deleted", 0);
 			List<OrderItems> RkOrderItemsList = orderItemsMapper.selectList(queryWrapper);
 			for (OrderItems orderItems : orderItemsVOList) {
-				for (OrderItems Rk : RkOrderItemsList) {
-					if (orderItems.getBillNo().equals(Rk.getBillNo())) {
-						if (orderItems.getBalanceNumber().compareTo(new BigDecimal("0")) > 0) {
-							//撤回
-							Rk.setBalanceNumber(Rk.getBalanceNumber());
-							Rk.setBalanceMoney(Rk.getBalanceMoney());
-							orderItemsMapper.updateById(orderItems);
-							break;
-						} else {
-							throw new SecurityException("库存为空,撤回失败");
-						}
-					}
+				OrderItems RKOrderItems = new OrderItems();
+				RKOrderItems.setId(orderItems.getSrcItemId());
+				if (orderItems.getBalanceNumber().compareTo(new BigDecimal("0")) > 0) {
+					//撤回
+					RKOrderItems.setBalanceNumber(orderItems.getBalanceNumber());
+					RKOrderItems.setBalanceMoney(orderItems.getBalanceMoney());
+					orderItemsMapper.updateById(orderItems);
+				} else {
+					throw new SecurityException("库存为空,撤回失败");
 				}
 			}
 			order.setStatus(0);
@@ -2112,43 +2047,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					throw new SecurityException("已提交审核,撤回失败");
 				}
 			}
-			//获取入库
-			LambdaQueryWrapper<Order> RKOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
-			RKOrderLambdaQueryWrapper
-				.eq(Order::getIsDeleted, 0)
-				.eq(Order::getOrderNo, order.getOrderNo())
-				.eq(Order::getBillType, OrderTypeEnum.WAREHOUSING.getType())
-				.eq(Order::getTenantId, AuthUtil.getTenantId());
-			Order RKOrder = orderMapper.selectOne(RKOrderLambdaQueryWrapper);
-			if (RKOrder == null) {
-				throw new SecurityException("更新入库数据失败");
-			}
-			//入库明细
-			LambdaQueryWrapper<OrderItems> RKOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-			RKOrderItemsLambdaQueryWrapper
-				.eq(OrderItems::getIsDeleted, 0)
-				.eq(OrderItems::getPid, RKOrder.getId())
-				.eq(OrderItems::getBillType, OrderTypeEnum.WAREHOUSING.getType())
-				.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
-			List<OrderItems> RKOrderItemsList = orderItemsMapper.selectList(RKOrderItemsLambdaQueryWrapper);
-
 			//出库明细
 			LambdaQueryWrapper<OrderItems> CKOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
 			CKOrderItemsLambdaQueryWrapper
 				.eq(OrderItems::getIsDeleted, 0)
-				.eq(OrderItems::getPid, RKOrder.getId())
+				.eq(OrderItems::getPid, order.getId())
 				.eq(OrderItems::getBillType, OrderTypeEnum.WAREHOUSING.getType())
 				.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
 			List<OrderItems> CKOrderItemsList = orderItemsMapper.selectList(CKOrderItemsLambdaQueryWrapper);
 			for (OrderItems orderItems : CKOrderItemsList) {
-				for (OrderItems Rk : RKOrderItemsList) {
-					if (orderItems.getBillNo().equals(Rk.getBillNo())) {
-						orderItems.setIsIssue(isIssue);
-						Rk.setIsIssue(isIssue);
-						orderItemsMapper.updateById(Rk);
-						orderItemsMapper.updateById(orderItems);
-					}
-				}
+				OrderItems Rk = new OrderItems();
+				Rk.setId(orderItems.getSrcItemId());
+				orderItems.setIsIssue(isIssue);
+				Rk.setIsIssue(isIssue);
+				orderItemsMapper.updateById(Rk);
+				orderItemsMapper.updateById(orderItems);
 			}
 		}
 		order.setStatus(status);
@@ -2170,6 +2083,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	@Transactional(rollbackFor = Exception.class)
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public IPage<Order> selectOrderList(Order order, Query query) {
+
 		QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
 		queryWrapper.eq("is_deleted", 0)
 			.eq("tenant_id", AuthUtil.getTenantId())
@@ -2178,8 +2092,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			.eq(ObjectUtils.isNotNull(order.getBusinessType()), "business_type", order.getBusinessType());
 		if (ObjectUtils.isNotNull(order.getPurchaser())) {
 			//货权人
+//			CorpsDesc corpsDesc = corpsDescList.stream().filter(corps -> corps.getCname().equals(order.getPurchaser())).findFirst().orElse(null);
 			R<CorpsDesc> corpsDesc = corpsDescClient.getCorpByName(order.getPurchaser(), AuthUtil.getTenantId());
-			if (corpsDesc.isSuccess()) {
+			if (ObjectUtils.isNotNull(corpsDesc)) {
 				queryWrapper.eq(ObjectUtils.isNotNull(order.getPurchaserId()), "purchaser_id", corpsDesc.getData().getId());
 			}
 		} else {
@@ -2187,6 +2102,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		}
 		if (ObjectUtils.isNotNull(order.getStorageName())) {
 			//仓库
+//			StorageType storageType = storageTypeList.stream().filter(storageTypes -> storageTypes.getCname().equals(order.getStorageName())).findFirst().orElse(null);
 			StorageType storageType = iStorageClient.storageTypeName(order.getStorageName());
 			if (ObjectUtils.isNotNull(storageType)) {
 				queryWrapper.eq("storage_id", storageType.getId());
@@ -2225,6 +2141,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		for (Order orders : orderList) {
 			if (ObjectUtils.isNotNull(orders.getStorageId())) {
 				//仓库
+//				StorageType storageType = storageTypeList.stream().filter(storageTypes -> storageTypes.getId().equals(orders.getStorageId())).findFirst().orElse(null);
 				StorageType storageType = iStorageClient.getStorageType(orders.getStorageId());
 				if (ObjectUtils.isNotNull(storageType)) {
 					orders.setStorageName(storageType.getCname());
@@ -2232,21 +2149,25 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 			//货权人
 			if (ObjectUtils.isNotNull(orders.getPurchaserId())) {
+//				CorpsDesc corpsDesc = corpsDescList.stream().filter(corps -> corps.getId().equals(orders.getPurchaserId())).findFirst().orElse(null);
 				R<CorpsDesc> corpsDesc = corpsDescClient.getCorpMessage(orders.getPurchaserId());
-				if (corpsDesc.isSuccess()) {
+				if (ObjectUtils.isNotNull(corpsDesc)) {
 					orders.setPurchaser(corpsDesc.getData().getCname());
 				}
 			}
 			//供应商
 			if (ObjectUtils.isNotNull(orders.getCorpId())) {
+//				CorpsDesc corpsDesc = corpsDescList.stream().filter(corps -> corps.getId().equals(orders.getCorpId())).findFirst().orElse(null);
 				R<CorpsDesc> corpsDesc = corpsDescClient.getCorpMessage(orders.getCorpId());
-				if (corpsDesc.isSuccess()) {
+				if (ObjectUtils.isNotNull(corpsDesc)) {
 					orders.setCorpName(corpsDesc.getData().getCname());
 				}
 			}
-			R<User> userR = userClient.userInfoById(orders.getCreateUser());
-			if (userR.isSuccess()) {
-				orders.setSalesName(userR.getData().getName());
+			//操作人
+//			User user = userList.stream().filter(u -> u.getId().equals(orders.getCreateUser())).findFirst().orElse(null);
+			R<User> user = userClient.userInfoById(orders.getCreateUser());
+			if (ObjectUtils.isNotNull(user)) {
+				orders.setSalesName(user.getData().getName());
 			}
 		}
 		return pages;
@@ -2304,6 +2225,64 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		return R.data("操作成功");
 	}
 
+
+	/**
+	 * app扫码比对
+	 *
+	 * @param id
+	 * @param map
+	 * @return
+	 */
+	@Override
+	public R appScanningCodeComparison(Long id, List<Map<String, String>> map) {
+		for (Map<String, String> ma : map) {
+			OrderItems orderItems = orderItemsService.getById(Long.parseLong(String.valueOf(ma.get("itemId"))));
+			if (ObjectUtils.isNotNull(orderItems)) {
+				orderItems.setScanningComparison("Y");
+				orderItems.setUpdateTime(new Date());
+				orderItems.setUpdateUser(AuthUtil.getUserId());
+				orderItemsService.updateById(orderItems);
+				return R.data(orderItems);
+			} else {
+				return R.fail("扫码比对失败!未在本单据中找到次码信息");
+			}
+		}
+		return R.success("操作成功");
+	}
+
+	/**
+	 * app扫码添加明细
+	 *
+	 * @param billNo
+	 * @param id
+	 * @return
+	 */
+	@Override
+	public R scanningCodeAdd(String billNo, Long id) {
+		Order order = baseMapper.selectById(id);
+		LambdaQueryWrapper<Order> RKlambdaQueryWrapper = new LambdaQueryWrapper<>();
+		RKlambdaQueryWrapper.eq(Order::getTenantId, AuthUtil.getTenantId())
+			.eq(Order::getIsDeleted, 0)
+			.eq(Order::getSysNo, order.getOrderNo())
+			.eq(Order::getBillType, billNo)
+			.eq(Order::getTradeType, "3");
+		Order RKOrder = baseMapper.selectOne(RKlambdaQueryWrapper);
+		LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(OrderItems::getTenantId, AuthUtil.getTenantId())
+			.eq(OrderItems::getIsDeleted, 0)
+			.eq(OrderItems::getPid, RKOrder.getId())
+			.eq(OrderItems::getIsIssue, "3")
+			.eq(OrderItems::getScanningComparison, "N")
+			.eq(OrderItems::getSubmitPay, 1);
+		List<OrderItems> orderItemsList = orderItemsService.list(lambdaQueryWrapper);
+		for (OrderItems orderItems : orderItemsList) {
+			if (orderItems.getBillNo().equals(billNo)) {
+				return R.data(orderItems);
+			}
+		}
+		return R.fail("该货物不在本单据中");
+	}
+
 	/**
 	 * 订单生成账单 并且推送财务消息
 	 *
@@ -2470,76 +2449,73 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			Items items = new Items();
 			items.setItemType("仓储费");
 
-			int date = 0;
 			//获取入库日期
-			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			LambdaQueryWrapper<OrderItems> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
 			orderLambdaQueryWrapper
-				.eq(Order::getOrderNo, order.getOrderNo())
-				.eq(Order::getBillType, OrderTypeEnum.WAREHOUSING.getType())
-				.eq(Order::getTradeType, OrderTypeEnum.WOOD_HARVESTING_CLOUD.getType())
-				.eq(Order::getIsDeleted, 0)
-				.eq(Order::getTenantId, AuthUtil.getTenantId());
-			Order RKoOrder = baseMapper.selectOne(orderLambdaQueryWrapper);
-			if (RKoOrder == null) {
-				throw new SecurityException("未找到入库单据");
-			}
-			//获取存放天数
-			if (ObjectUtils.isNotNull(order.getBusinesDate()) && ObjectUtils.isNotNull(RKoOrder.getBusinesDate())) {
-				date = (int) ((order.getBusinesDate().getTime() - RKoOrder.getBusinesDate().getTime()) / (1000 * 3600 * 24));
-				if (0 == date || date - 1 == 0) {
-					date = 1;
-				} else {
-					date = date - 1;
-				}
-			}
-
-			//获取仓储费协议
-			LambdaQueryWrapper<Agreement> agreementLambdaQueryWrapper = new LambdaQueryWrapper<>();
-			agreementLambdaQueryWrapper
-				.eq(Agreement::getCorpId, order.getPurchaserId())
-				.eq(Agreement::getFeetypeId, "0")
-				.eq(Agreement::getDelFlag, "0")
-				.eq(Agreement::getStatus, "0")
-				.eq(Agreement::getTenantId, AuthUtil.getTenantId());
-			if (order.getOrderItemsList().size() > 0) {
-				agreementLambdaQueryWrapper.apply("FIND_IN_SET(" + order.getOrderItemsList().get(0).getItemId() + ",goods_id)");
-			}
-			agreementLambdaQueryWrapper.apply("FIND_IN_SET(" + order.getStorageId() + ",warehouse_id)");
-			Agreement agreement = agreementService.getOne(agreementLambdaQueryWrapper);
-			if (agreement == null) {
-				throw new SecurityException("未找到仓储费协议");
-			}
-			//获取实际收费天数  (存放天数减去免费天数)
-			int days = date;
-
-			//获取仓储费协议明细
-			LambdaQueryWrapper<Agreementitems> agreementItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-			agreementItemsLambdaQueryWrapper
-				.eq(Agreementitems::getPid, agreement.getId())
-				.orderByAsc(Agreementitems::getLineno)
-				.eq(Agreementitems::getDelFlag, "0");
-			List<Agreementitems> agreementItemsList = agreementitemsService.list(agreementItemsLambdaQueryWrapper);
-			int count = 0;
+				.eq(OrderItems::getPid, pid)
+				.eq(OrderItems::getBillType, OrderTypeEnum.OUT_WAREHOUSING.getType())
+				.eq(OrderItems::getIsDeleted, 0)
+				.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
+			List<OrderItems> orderItemsList = order.getOrderItemsList();
 			StringBuilder text = new StringBuilder();
-			for (Agreementitems agreementitems : agreementItemsList) {
-				if (count == 0 && days <= agreementitems.getEnDays()) {
-					break;
-				} else {
-					//判断实际存放天数是否大于本条结束天数
-					if (days >= agreementitems.getEnDays()) {
-						//本条收费天数乘以单价 = 所需收费金额
-						amount = amount.add((new BigDecimal((agreementitems.getEnDays() - agreementitems.getFromDays() + 1), MathContext.UNLIMITED)).multiply(agreementitems.getPrice(), MathContext.UNLIMITED).multiply(order.getStorageQuantity()));
-						//业务天数减去本条结束天数所得天数为下一条要收费天数
-						date = date - (agreementitems.getEnDays() - agreementitems.getFromDays() + 1);
-						text.append(order.getStorageQuantity()).append("*").append(agreementitems.getPrice()).append("*").append(agreementitems.getEnDays() - agreementitems.getFromDays() + 1).append("+");
+			Long feeUnitId = 0l;
+			for (OrderItems orderItems : orderItemsList) {
+				int date = 0;
+				//获取存放天数
+				if (ObjectUtils.isNotNull(order.getBusinesDate()) && ObjectUtils.isNotNull(orderItems.getStockTime())) {
+					date = (int) ((order.getBusinesDate().getTime() - orderItems.getStockTime().getTime()) / (1000 * 3600 * 24));
+					if (0 == date || date - 1 == 0) {
+						date = 1;
 					} else {
-						if (agreementitems.getPrice().compareTo(new BigDecimal(0)) > 0) {
-							//业务天数乘以单价 = 剩余所需收费金额
-							amount = amount.add((new BigDecimal(date + 2)).multiply(agreementitems.getPrice(), MathContext.UNLIMITED).multiply(order.getStorageQuantity()));
-							text.append(order.getStorageQuantity()).append("*").append(agreementitems.getPrice()).append("*").append(date + 2);
+						date = date - 1;
+					}
+				}
+				//获取仓储费协议
+				LambdaQueryWrapper<Agreement> agreementLambdaQueryWrapper = new LambdaQueryWrapper<>();
+				agreementLambdaQueryWrapper
+					.eq(Agreement::getCorpId, order.getPurchaserId())
+					.eq(Agreement::getFeetypeId, "0")
+					.eq(Agreement::getDelFlag, "0")
+					.eq(Agreement::getStatus, "0")
+					.eq(Agreement::getTenantId, AuthUtil.getTenantId())
+					.apply("FIND_IN_SET(" + orderItems.getItemId() + ",goods_id)")
+					.apply("FIND_IN_SET(" + order.getStorageId() + ",warehouse_id)");
+				Agreement agreement = agreementService.getOne(agreementLambdaQueryWrapper);
+				if (agreement == null) {
+					throw new SecurityException("未找到仓储费协议");
+				}
+				//获取实际收费天数  (存放天数减去免费天数)
+				int days = date;
+
+				//获取仓储费协议明细
+				LambdaQueryWrapper<Agreementitems> agreementItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+				agreementItemsLambdaQueryWrapper
+					.eq(Agreementitems::getPid, agreement.getId())
+					.orderByAsc(Agreementitems::getLineno)
+					.eq(Agreementitems::getDelFlag, "0");
+				List<Agreementitems> agreementItemsList = agreementitemsService.list(agreementItemsLambdaQueryWrapper);
+				int count = 0;
+				for (Agreementitems agreementitems : agreementItemsList) {
+					feeUnitId = agreementitems.getFeeUnitId();
+					if (count == 0 && days <= agreementitems.getEnDays()) {
+						break;
+					} else {
+						//判断实际存放天数是否大于本条结束天数
+						if (days >= agreementitems.getEnDays()) {
+							//本条收费天数乘以单价 = 所需收费金额
+							amount = amount.add((new BigDecimal((agreementitems.getEnDays() - agreementitems.getFromDays() + 1), MathContext.UNLIMITED)).multiply(agreementitems.getPrice(), MathContext.UNLIMITED).multiply(order.getStorageQuantity()));
+							//业务天数减去本条结束天数所得天数为下一条要收费天数
+							date = date - (agreementitems.getEnDays() - agreementitems.getFromDays() + 1);
+							text.append(order.getStorageQuantity()).append("*").append(agreementitems.getPrice()).append("*").append(agreementitems.getEnDays() - agreementitems.getFromDays() + 1).append("+");
+						} else {
+							if (agreementitems.getPrice().compareTo(new BigDecimal(0)) > 0) {
+								//业务天数乘以单价 = 剩余所需收费金额
+								amount = amount.add((new BigDecimal(date + 2)).multiply(agreementitems.getPrice(), MathContext.UNLIMITED).multiply(order.getStorageQuantity()));
+								text.append(order.getStorageQuantity()).append("*").append(agreementitems.getPrice()).append("*").append(date + 2);
+							}
 						}
+						count++;
 					}
-					count++;
 				}
 			}
 			//账单数据
@@ -2585,7 +2561,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				orderFees.setAmount(amount);
 				orderFees.setCurrency("CNY");
 				orderFees.setExchangeRate(new BigDecimal("1"));
-				orderFees.setUnit(ObjectUtils.isNull(agreementItemsList) ? "" : agreementItemsList.get(0).getFeeUnitId().toString());
+				orderFees.setUnit(feeUnitId + "");
 				orderFees.setFeesType(1);
 				orderFees.setRemarks(text.toString());
 				orderFees.setCreateTime(new Date());
@@ -2688,4 +2664,26 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			});
 		}
 	}
+
+
+	/**
+	 * 将Object转换成List类型
+	 *
+	 * @param obj   Object对象
+	 * @param clazz 数据类型
+	 * @param <T>   泛型类型
+	 * @return List类型
+	 */
+	public static <T> List<T> castToList(Object obj, Class<T> clazz) {
+		List<T> resList = new ArrayList<>();
+		// 如果不是List<?>对象,是没有办法转换的
+		if (obj instanceof List<?>) {
+			for (Object o : (List<?>) obj) {
+				// 将对应的元素进行类型转换
+				resList.add(clazz.cast(o));
+			}
+			return resList;
+		}
+		return null;
+	}
 }