Browse Source

2022年10月18日18:18:07

纪新园 3 years ago
parent
commit
738afb0371

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

@@ -138,7 +138,6 @@ public class StorageType implements Serializable {
 	/**
 	 * 是否已删除(0 否 1是)
 	 */
-	//@TableLogic
 	@ApiModelProperty(value = "是否已删除(0 否 1是)")
 	private Integer isDeleted;
 	/**
@@ -147,5 +146,11 @@ public class StorageType implements Serializable {
 	@TableField(exist = false)
 	private String parentName;
 
+	/**
+	 * 是否扫描
+	 */
+	@ApiModelProperty(value = "是否扫描")
+	private String isScanningCode;
+
 
 }

+ 6 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java

@@ -977,4 +977,10 @@ public class Order implements Serializable {
 	 */
 	@TableField(exist = false)
 	private BigDecimal sumNumber;
+
+	/**
+	 * 总货值
+	 */
+	@TableField(exist = false)
+	private BigDecimal totalValue;
 }

+ 0 - 5
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderCost.java

@@ -101,11 +101,6 @@ public class OrderCost implements Serializable {
 	*/
 		@ApiModelProperty(value = "1.陆运费 2.港杂费")
 		private Integer feesType;
-	/**
-	* 合计
-	*/
-		@ApiModelProperty(value = "合计")
-		private BigDecimal amount;
 
 	/**
 	 * 陆运以及港杂费明细

+ 14 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderItems.java

@@ -690,5 +690,19 @@ public class OrderItems implements Serializable {
 	@ApiModelProperty(value = "其他 配件销售价格")
 	private BigDecimal partsOtherSalePrice;
 
+	/**
+	 * 出厂价格
+	 */
+	@ApiModelProperty(value = "出厂价格")
+	private BigDecimal outFactoryPrice;
+
+	/**
+	 * 分摊金额
+	 */
+	@ApiModelProperty(value = "分摊金额")
+	private BigDecimal shareAmount;
+
+
+
 
 }

+ 31 - 0
blade-service/blade-client/src/main/java/org/springblade/client/serial/controller/StorageTypeController.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.client.serial.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import io.swagger.annotations.Api;
@@ -30,6 +31,7 @@ import org.springblade.client.feign.IRedisClient;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
+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;
@@ -39,7 +41,10 @@ import org.springblade.client.vo.StorageTypeVO;
 import org.springblade.client.serial.service.IStorageTypeService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 仓库 控制器
@@ -191,4 +196,30 @@ public class StorageTypeController extends BladeController {
 		return R.data(tree);
 	}
 
+	/**
+	 * 获取仓库树形结构(自定义)
+	 *
+	 * @return
+	 */
+	@GetMapping("/customTree")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "树形结构", notes = "树形结构")
+	public R<List<Map<String,Object>>> customTree() {
+		List<Map<String,Object>> mapList = new ArrayList<>();
+		LambdaQueryWrapper<StorageType> storageTypeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		storageTypeLambdaQueryWrapper.eq(StorageType::getTenantId, AuthUtil.getTenantId()).eq(StorageType::getIsDeleted,0);
+		List<StorageType> storageTypeList = storageTypeService.list(storageTypeLambdaQueryWrapper);
+		for (StorageType storageType:storageTypeList) {
+			Map<String,Object> map = new HashMap<>();
+			map.put("id",storageType.getId());
+			map.put("key",storageType.getId());
+			map.put("parentId",storageType.getParentId());
+			map.put("title",storageType.getCname());
+			map.put("value",storageType.getId());
+			map.put("isScanningCode",storageType.getIsScanningCode());
+			mapList.add(map);
+		}
+		return R.data(mapList);
+	}
+
 }

+ 6 - 2
blade-service/blade-client/src/main/java/org/springblade/client/serial/mapper/StorageTypeMapper.xml

@@ -23,6 +23,7 @@
         <result column="update_time" property="updateTime"/>
         <result column="status" property="status"/>
         <result column="is_deleted" property="isDeleted"/>
+        <result column="is_scanning_code" property="isScanningCode"/>
     </resultMap>
     <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
         <id column="id" property="id"/>
@@ -55,6 +56,7 @@
 	dept.update_time,
 	dept.status,
 	dept.is_deleted,
+        is_scanning_code,
 	case
         when dept.status = '0' then '正常'
         when dept.status = '1' then '停用'
@@ -141,7 +143,8 @@ WHERE
         basic_storage_type
         WHERE
         parent_id = dept.id and is_deleted = 0 and status = 0
-        ) AS "has_children"
+        ) AS "has_children",
+        is_scanning_code AS isScanningCode
         FROM
         basic_storage_type dept
         WHERE
@@ -158,7 +161,8 @@ WHERE
         parent_id,
         cname AS title,
         id AS "value",
-        id AS "key"
+        id AS "key",
+        is_scanning_code AS isScanningCode
         FROM
         basic_storage_type
         WHERE

+ 66 - 11
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderItemServiceImpl.java

@@ -19,10 +19,12 @@ package org.springblade.land.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
+import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
 import org.springblade.client.constant.LandConstant;
 import org.springblade.client.entity.CommonFile;
 import org.springblade.client.entity.CorpsDesc;
@@ -39,6 +41,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.land.constant.LandConst;
 import org.springblade.land.entity.Order;
 import org.springblade.land.entity.OrderAddress;
 import org.springblade.land.entity.OrderChange;
@@ -54,6 +57,7 @@ import org.springblade.system.entity.Dept;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
+import org.springblade.system.user.feign.IUserSearchClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -89,6 +93,8 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
 
 	private final IMessageClient messageClient;
 
+	private final IUserSearchClient userSearchClient;
+
 	@Override
 	public IPage<OrderItemVO> selectOrderItemPage(IPage<OrderItemVO> page, OrderItemVO orderItem) {
 		return page.setRecords(baseMapper.selectOrderItemPage(page, orderItem));
@@ -96,11 +102,11 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
 
 	@Override
 	public IPage<OrderItem> getList(OrderItem orderItem, Query query) {
+
 		LambdaQueryWrapper<OrderItem> wrapper = getWrapper(orderItem);
 		if (ObjectUtil.isEmpty(wrapper)) {
 			return new Page<>();
 		}
-
 		IPage<OrderItem> pages = baseMapper.selectPage(Condition.getPage(query), wrapper);
 		pages.getRecords().forEach(record -> {
 			Order order = orderMapper.selectById(record.getOrderId());
@@ -118,6 +124,7 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
 				record.setOrderAddressList(orderAddressList);
 			}
 		});
+
 		return pages;
 	}
 
@@ -138,14 +145,35 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
 
 	@Override
 	public Map<String, Object> getCount(OrderItem orderItem) {
+		List<Long> orderIdList = Collections.emptyList();
+		if (AuthUtil.getUserRole().contains(LandConst.DDZX_MANAGER)) {
+			R<List<User>> r = userSearchClient.listByRole("1572039278093946882");
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<Order>()
+				.like(StringUtil.isNotBlank(orderItem.getOrderNo()), Order::getOrderNo, orderItem.getOrderNo())
+				.like(StringUtil.isNotBlank(orderItem.getStation()), Order::getStation, orderItem.getStation())
+				.like(StringUtil.isNotBlank(orderItem.getFactory()), Order::getFactory, orderItem.getFactory())
+				.like(StringUtil.isNotBlank(orderItem.getAddressDetail()), Order::getAddressDetail, orderItem.getAddressDetail())
+				.eq(Order::getIsDeleted, 0)
+				.eq(Order::getTenantId, AuthUtil.getTenantId())
+				.ne(Order::getShippingMode, "散货");
+			if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+				List<Long> ids = r.getData().stream().map(User::getId).collect(Collectors.toList());
+				orderLambdaQueryWrapper.apply("find_in_set(dispatcher,'" + StringUtils.join(ids, ",") + "')");
+			}
+			orderIdList = orderMapper.selectList(orderLambdaQueryWrapper).stream().map(Order::getId).collect(Collectors.toList());
+
+			if (CollectionUtil.isEmpty(orderIdList)) {
+				return null;
+			}
+		}
 		LambdaQueryWrapper<OrderItem> itemQueryWrapper = new LambdaQueryWrapper<>();
 		if (orderItem.getTag() == 4) {
 			itemQueryWrapper.notIn(OrderItem::getStatus, 0, 1);
 		} else if (orderItem.getTag() == 3) {
 			itemQueryWrapper.notIn(OrderItem::getStatus, 0);
 		}
-
 		itemQueryWrapper.eq(OrderItem::getKind, 2)
+			.in(CollectionUtil.isNotEmpty(orderIdList), OrderItem::getOrderId, orderIdList)
 			.eq(OrderItem::getTenantId, AuthUtil.getTenantId())
 			.eq(OrderItem::getIsDeleted, 0)
 			.ne(OrderItem::getShippingMode, "散货")
@@ -606,23 +634,50 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
 
 	private LambdaQueryWrapper<OrderItem> getWrapper(OrderItem orderItem) {
 		List<Long> orderIdList = Collections.emptyList();
-		if (StringUtil.isNotBlank(orderItem.getAddressDetail()) || StringUtil.isNotBlank(orderItem.getStation())
-			|| StringUtil.isNotBlank(orderItem.getFactory()) || StringUtil.isNotBlank(orderItem.getOrderNo())) {
-			orderIdList = orderMapper.selectList(new LambdaQueryWrapper<Order>()
+		if (AuthUtil.getUserRole().contains(LandConst.DDZX_MANAGER)) {
+			R<List<User>> r = userSearchClient.listByRole("1572039278093946882");
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<Order>()
 				.like(StringUtil.isNotBlank(orderItem.getOrderNo()), Order::getOrderNo, orderItem.getOrderNo())
 				.like(StringUtil.isNotBlank(orderItem.getStation()), Order::getStation, orderItem.getStation())
 				.like(StringUtil.isNotBlank(orderItem.getFactory()), Order::getFactory, orderItem.getFactory())
 				.like(StringUtil.isNotBlank(orderItem.getAddressDetail()), Order::getAddressDetail, orderItem.getAddressDetail())
 				.eq(Order::getIsDeleted, 0)
 				.eq(Order::getTenantId, AuthUtil.getTenantId())
-				.ne(Order::getShippingMode, "散货")
-			).stream().map(Order::getId).collect(Collectors.toList());
+				.ne(Order::getShippingMode, "散货");
+			if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+				List<Long> ids = r.getData().stream().map(User::getId).collect(Collectors.toList());
+				orderLambdaQueryWrapper.apply("find_in_set(dispatcher,'" + StringUtils.join(ids, ",") + "')");
+			}
+			orderIdList = orderMapper.selectList(orderLambdaQueryWrapper).stream().map(Order::getId).collect(Collectors.toList());
 
 			if (CollectionUtil.isEmpty(orderIdList)) {
 				return null;
 			}
-		}
+		} else {
+			if (StringUtil.isNotBlank(orderItem.getAddressDetail()) || StringUtil.isNotBlank(orderItem.getStation())
+				|| StringUtil.isNotBlank(orderItem.getFactory()) || StringUtil.isNotBlank(orderItem.getOrderNo())) {
+				LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<Order>()
+					.like(StringUtil.isNotBlank(orderItem.getOrderNo()), Order::getOrderNo, orderItem.getOrderNo())
+					.like(StringUtil.isNotBlank(orderItem.getStation()), Order::getStation, orderItem.getStation())
+					.like(StringUtil.isNotBlank(orderItem.getFactory()), Order::getFactory, orderItem.getFactory())
+					.like(StringUtil.isNotBlank(orderItem.getAddressDetail()), Order::getAddressDetail, orderItem.getAddressDetail())
+					.eq(Order::getIsDeleted, 0)
+					.eq(Order::getTenantId, AuthUtil.getTenantId())
+					.ne(Order::getShippingMode, "散货");
+				if (AuthUtil.getUserRole().contains(LandConst.DDZX_MANAGER)) {
+					R<List<User>> r = userSearchClient.listByRole("1572039278093946882");
+					if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+						List<Long> ids = r.getData().stream().map(User::getId).collect(Collectors.toList());
+						orderLambdaQueryWrapper.apply("find_in_set(dispatcher,'" + StringUtils.join(ids, ",") + "')");
+					}
+				}
+				orderIdList = orderMapper.selectList(orderLambdaQueryWrapper).stream().map(Order::getId).collect(Collectors.toList());
 
+				if (CollectionUtil.isEmpty(orderIdList)) {
+					return null;
+				}
+			}
+		}
 		LambdaQueryWrapper<OrderItem> itemQueryWrapper = new LambdaQueryWrapper<>();
 		if (orderItem.getTag() == 4) {
 			itemQueryWrapper.notIn(OrderItem::getStatus, 0, 1);
@@ -662,13 +717,13 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
 
 		if (ObjectUtil.isNotEmpty(order.getDispatcher())) {
 			R<User> user = userClient.userInfoById(order.getDispatcher());
-			if(user.isSuccess() && user.getData() != null) {
+			if (user.isSuccess() && user.getData() != null) {
 				item.setDispatcherName(user.getData().getRealName());
 			}
 		}
 		if (ObjectUtil.isNotEmpty(order.getDispatchDept())) {
 			R<Dept> dept = sysClient.getDept(order.getDispatchDept());
-			if(dept.isSuccess() && dept.getData() != null) {
+			if (dept.isSuccess() && dept.getData() != null) {
 				item.setDispatchDeptName(dept.getData().getDeptName());
 			}
 		}
@@ -688,7 +743,7 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
 		}
 		if (ObjectUtil.isNotEmpty(item.getDriverId())) {
 			LandDriver driver = landDriverClient.getDriver(item.getDriverId());
-			if (ObjectUtil.isNotEmpty(driver)){
+			if (ObjectUtil.isNotEmpty(driver)) {
 				item.setDriverName(driver.getName());
 			}
 		}

+ 7 - 4
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java

@@ -252,10 +252,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (AuthUtil.getUserRole().contains(LandConst.DDZX_MANAGER)) {
 			R<List<User>> r = userSearchClient.listByRole("1572039278093946882");
 			if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
-				/*List<String> ids = new ArrayList<>();
-				r.getData().stream().forEach(item->{
-					ids.add(item.getId()+"");
-				});*/
 				List<Long> ids = r.getData().stream().map(User::getId).collect(Collectors.toList());
 				orderQueryWrapper.apply("find_in_set(dispatcher,'" + StringUtils.join(ids, ",") + "')");
 			}
@@ -476,6 +472,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			.eq(Order::getIsDeleted, 0)
 			.ne(Order::getShippingMode, "散货")
 			.between(StringUtil.isNotBlank(order.getBeginArrivalTime()) && StringUtil.isNotBlank(order.getEndArrivalTime()), Order::getArrivalTime, order.getBeginArrivalTime(), order.getEndArrivalTime());
+		if (AuthUtil.getUserRole().contains(LandConst.DDZX_MANAGER)) {
+			R<List<User>> r = userSearchClient.listByRole("1572039278093946882");
+			if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+				List<Long> ids = r.getData().stream().map(User::getId).collect(Collectors.toList());
+				orderQueryWrapper.apply("find_in_set(dispatcher,'" + StringUtils.join(ids, ",") + "')");
+			}
+		}
 
 		if (order.getKind() == 1) {
 			orderIdList = baseMapper.selectList(orderQueryWrapper).stream().filter(orderTemp -> orderTemp.getStatus() == 0).map(Order::getId).collect(Collectors.toList());

+ 2 - 1
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java

@@ -28,6 +28,7 @@ import org.springblade.stock.entity.StockGoods;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 销售或采购订单表 服务类
@@ -249,5 +250,5 @@ public interface IOrderService extends IService<Order> {
 	/**
 	 * 计算国内费用
 	 */
-	BigDecimal calculationDomesticFees(Order order);
+	Map<String,BigDecimal> calculationDomesticFees(Order order);
 }

+ 1 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderCostServiceImpl.java

@@ -17,6 +17,7 @@
 package org.springblade.purchase.sales.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;

+ 55 - 41
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -69,6 +69,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.math.MathContext;
 import java.math.RoundingMode;
 import java.util.*;
 
@@ -317,9 +318,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				//总提价
 				orderMessage.setCartonWeight(cartonWeight);
 			} else if (CollectionUtils.isNotEmpty(list) && order.getTradeType().equals(OrderTypeEnum.EXPORT.getType())) {
-				// 出口的毛利额=销售价 * 汇率 - (采购价+配件价格)    毛利率 =毛利额/(采购单价+配件价格)
+				// 出口的毛利额=销售价 * 汇率 - (采购价+配件价格)    毛利率 =毛利额/(采购单价+配件价格)旧
+				// 出口的毛利额=出厂价 * 汇率 - (采购价+配件价格)    毛利率 =毛利额/(采购单价+配件价格)新
 				// 金额求和
-				BigDecimal amount = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getPrice().multiply(y.getOrderQuantity())), BigDecimal::add);
+//				BigDecimal amount = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getPrice().multiply(y.getOrderQuantity())), BigDecimal::add);
+				BigDecimal amount = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getOutFactoryPrice().multiply(y.getOrderQuantity())), BigDecimal::add);
 				// 采购金额求和
 				BigDecimal purchaseAmount = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getPurchaseAmount().multiply(y.getOrderQuantity())), BigDecimal::add);
 				// 配件金额求和
@@ -1496,7 +1499,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	 * @return
 	 */
 	@Override
-	public BigDecimal calculationDomesticFees(Order order) {
+	public Map<String,BigDecimal> calculationDomesticFees(Order order) {
 
 		//客户
 		List<CorpsDesc> corpsDescList = castToList(redisTemplate.opsForValue().get("corps"), CorpsDesc.class);
@@ -1508,71 +1511,82 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			.eq(OrderCost::getTenantId, AuthUtil.getTenantId())
 			.eq(OrderCost::getIsDeleted, 0);
 
-		OrderCost orderCost = orderCostMapper.selectOne(lambdaQueryWrapper);
-
-		List<OrderItems> orderItemsList = order.getOrderItemsList();
 		BigDecimal amount = new BigDecimal(0);
-		if (ObjectUtils.isNotNull(orderCost)){
+		BigDecimal amountF = new BigDecimal(0);
+		List<OrderItems> orderItemsList = order.getOrderItemsList();
+
+		List<OrderCost> orderCostList = orderCostMapper.selectList(lambdaQueryWrapper);
+		for (OrderCost orderCost : orderCostList) {
 			LambdaQueryWrapper<OrderCostItem> itemLambdaQueryWrapper = new LambdaQueryWrapper<>();
 			itemLambdaQueryWrapper.eq(OrderCostItem::getPId, orderCost.getId());
-			if (ObjectUtils.isNotNull(orderItemsList)){
-				Long corpId =  orderItemsList.get(0).getCorpId();
+			if (ObjectUtils.isNotNull(orderItemsList)) {
+				Long corpId = orderItemsList.get(0).getCorpId();
 				//货权人
 				CorpsDesc corpsDesc = corpsDescList.stream().filter(corps -> corps.getId().equals(corpId)).findFirst().orElse(null);
 				if (ObjectUtils.isNotNull(corpsDesc)) {
-					itemLambdaQueryWrapper.eq(OrderCostItem::getDepartureId, corpsDesc.getBelongtoarea());//明细供应商所在地址
+					itemLambdaQueryWrapper.eq(OrderCostItem::getDeparture, corpsDesc.getBelongtoarea());//明细供应商所在地址
 				}
 			}
 			itemLambdaQueryWrapper.eq(OrderCostItem::getStatus, 0)
 				.eq(OrderCostItem::getTenantId, AuthUtil.getTenantId())
 				.eq(OrderCostItem::getIsDeleted, 0);
-			if ("20GP".equals(order.getBoxPile())) {
-				itemLambdaQueryWrapper.ge(OrderCostItem::getTwentyGp, new BigDecimal(0));
-			} else if ("40GP".equals(order.getBoxPile())) {
-				itemLambdaQueryWrapper.ge(OrderCostItem::getFortyGp, new BigDecimal(0));
-			} else if ("40HC".equals(order.getBoxPile())) {
-				itemLambdaQueryWrapper.ge(OrderCostItem::getFortyHc, new BigDecimal(0));
-			} else if ("45GP".equals(order.getBoxPile())) {
-				itemLambdaQueryWrapper.ge(OrderCostItem::getFortyFiveGp, new BigDecimal(0));
-			} else if ("PALLET".equals(order.getBoxPile())) {
-				itemLambdaQueryWrapper.ge(OrderCostItem::getPallet, new BigDecimal(0));
-			} else {
-				itemLambdaQueryWrapper.ge(OrderCostItem::getTicket, new BigDecimal(0));
-			}
 			List<OrderCostItem> orderCostItemList = orderCostItemMapper.selectList(itemLambdaQueryWrapper);
 			for (OrderCostItem orderCostItem : orderCostItemList) {
-				if ("USD".equals(order.getCurrency())) {
+				//陆运费
+				if (orderCostItem.getType() == 1) {
+					//陆运费=箱型费用*箱量/汇率
 					if ("20GP".equals(order.getBoxPile())) {
-						amount.add(orderCostItem.getTwentyGp().multiply(order.getBoxNumber()).divide(order.getExchangeRate()).divide(order.getSumNumber()));
+						amount = amount.add(orderCostItem.getTwentyGp().multiply(order.getBoxNumber()).divide(order.getExchangeRate(), MathContext.DECIMAL32));
 					} else if ("40GP".equals(order.getBoxPile())) {
-						amount.add(orderCostItem.getFortyGp().multiply(order.getBoxNumber()).divide(order.getExchangeRate()).divide(order.getSumNumber()));
+						amount = amount.add(orderCostItem.getFortyGp().multiply(order.getBoxNumber()).divide(order.getExchangeRate(), MathContext.DECIMAL32));
 					} else if ("40HC".equals(order.getBoxPile())) {
-						amount.add(orderCostItem.getFortyHc().multiply(order.getBoxNumber()).divide(order.getExchangeRate()).divide(order.getSumNumber()));
+						amount = amount.add(orderCostItem.getFortyHc().multiply(order.getBoxNumber()).divide(order.getExchangeRate(), MathContext.DECIMAL32));
 					} else if ("45GP".equals(order.getBoxPile())) {
-						amount.add(orderCostItem.getFortyFiveGp().multiply(order.getBoxNumber()).divide(order.getExchangeRate()).divide(order.getSumNumber()));
+						amount = amount.add(orderCostItem.getFortyFiveGp().multiply(order.getBoxNumber()).divide(order.getExchangeRate(), MathContext.DECIMAL32));
 					} else if ("PALLET".equals(order.getBoxPile())) {
-						amount.add(orderCostItem.getPallet().multiply(order.getBoxNumber()).divide(order.getExchangeRate()).divide(order.getSumNumber()));
-					} else {
-						amount.add(orderCostItem.getTicket().multiply(order.getBoxNumber()).divide(order.getExchangeRate()).divide(order.getSumNumber()));
+						amount = amount.add(orderCostItem.getPallet().multiply(order.getBoxNumber()).divide(order.getExchangeRate(), MathContext.DECIMAL32));
 					}
-				} else {
+				} else if (orderCostItem.getType() == 2) {//运费
+					//运费=箱型费用*箱量/汇率  || 箱型费用*箱量
 					if ("20GP".equals(order.getBoxPile())) {
-						amount.add(orderCostItem.getTwentyGp().multiply(order.getBoxNumber()).divide(order.getExchangeRate()).divide(order.getSumNumber()));
+						if (orderCostItem.getCurrency().equals("CNY")) {
+							amount = amount.add(orderCostItem.getTwentyGp().multiply(order.getBoxNumber()).divide(order.getExchangeRate(), MathContext.DECIMAL32));
+						} else {
+							amount = amount.add(orderCostItem.getTwentyGp().multiply(order.getBoxNumber()));
+						}
 					} else if ("40GP".equals(order.getBoxPile())) {
-						amount.add(orderCostItem.getFortyGp().multiply(order.getBoxNumber()).divide(order.getExchangeRate()).divide(order.getSumNumber()));
+						if (orderCostItem.getCurrency().equals("CNY")) {
+							amount = amount.add(orderCostItem.getFortyGp().multiply(order.getBoxNumber()).divide(order.getExchangeRate(), MathContext.DECIMAL32));
+						} else {
+							amount = amount.add(orderCostItem.getFortyGp().multiply(order.getBoxNumber()));
+						}
 					} else if ("40HC".equals(order.getBoxPile())) {
-						amount.add(orderCostItem.getFortyHc().multiply(order.getBoxNumber()).divide(order.getExchangeRate()).divide(order.getSumNumber()));
-					} else if ("45GP".equals(order.getBoxPile())) {
-						amount.add(orderCostItem.getFortyFiveGp().multiply(order.getBoxNumber()).divide(order.getExchangeRate()).divide(order.getSumNumber()));
-					} else if ("PALLET".equals(order.getBoxPile())) {
-						amount.add(orderCostItem.getPallet().multiply(order.getBoxNumber()).divide(order.getExchangeRate()).divide(order.getSumNumber()));
+						if (orderCostItem.getCurrency().equals("CNY")) {
+							amount = amount.add(orderCostItem.getFortyHc().multiply(order.getBoxNumber()).divide(order.getExchangeRate(), MathContext.DECIMAL32));
+						} else {
+							amount = amount.add(orderCostItem.getFortyHc().multiply(order.getBoxNumber()));
+						}
+					}
+				} else {//杂费
+					//杂费 = 票费用/汇率  || 票费用
+					if (orderCostItem.getCurrency().equals("CNY")) {
+						amount = amount.add(orderCostItem.getTicket().divide(order.getExchangeRate(), MathContext.DECIMAL32));
 					} else {
-						amount.add(orderCostItem.getTicket().multiply(order.getBoxNumber()).divide(order.getExchangeRate()).divide(order.getSumNumber()));
+						amount = amount.add(orderCostItem.getTicket());
 					}
 				}
 			}
 		}
-		return amount;
+		//分摊费用额 = 总费用/总货值
+		amountF = amount.divide(order.getTotalValue(), MathContext.DECIMAL32);
+		amountF = amountF.setScale(2, BigDecimal.ROUND_HALF_UP);
+		amount = amount.setScale(2, BigDecimal.ROUND_HALF_UP);
+
+		Map<String,BigDecimal> map = new HashMap<>();
+		map.put("amount",amount);
+		map.put("amountF",amountF);
+
+		return map;
 	}
 
 	@Override

+ 3 - 2
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

@@ -2176,7 +2176,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 		}
 		queryWrapper.like(ObjectUtils.isNotNull(order.getOrderRemark()), "order_remark", order.getOrderRemark());
-		if (ObjectUtils.isNotNull(order.getStatuss())) {
+		/*if (ObjectUtils.isNotNull(order.getStatuss())) {
 			String[] arrs = order.getStatuss().split(",");
 			for (int i = 0; i < arrs.length; i++) {
 				if (i > 0) {
@@ -2185,7 +2185,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					queryWrapper.eq("status", arrs[i]);
 				}
 			}
-		}
+		}*/
+		queryWrapper.in(ObjectUtils.isNotNull(order.getStatuss()),"status",order.getStatuss());
 		queryWrapper.apply(ObjectUtils.isNotNull(order.getCreateStartTime()), "DATE_FORMAT(stock_time,'%Y-%m-%d') >= DATE_FORMAT('" + order.getCreateStartTime() + "','%Y-%m-%d')")
 			.apply(ObjectUtils.isNotNull(order.getCreateEndTime()), "DATE_FORMAT(stock_time,'%Y-%m-%d') <= DATE_FORMAT('" + order.getCreateEndTime() + "','%Y-%m-%d')")
 			.orderByDesc("stock_time");