Browse Source

达沃特需求修改

Signed-off-by: sunhz <mpcoo@foxmail.com>
sunhz 3 years ago
parent
commit
00497463f8
16 changed files with 338 additions and 132 deletions
  1. 2 1
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/GoodsDesc.java
  2. 37 0
      blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/entity/Delivery.java
  3. 30 0
      blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/feign/ISalesPolicyClient.java
  4. 6 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java
  5. 5 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderItems.java
  6. 8 1
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/Order.java
  7. 3 0
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/OrderItems.java
  8. 7 1
      blade-service/blade-client/pom.xml
  9. 2 1
      blade-service/blade-client/src/main/java/org/springblade/client/corps/feign/CorpsDescClient.java
  10. 10 4
      blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java
  11. 68 57
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java
  12. 19 6
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java
  13. 45 0
      blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/feign/SalesPolicyClient.java
  14. 24 4
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderItemsServiceImpl.java
  15. 56 48
      blade-service/trade-finance/src/main/java/org/springblade/finance/controller/SettlementController.java
  16. 16 9
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/PurchaseOrderController.java

+ 2 - 1
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/GoodsDesc.java

@@ -253,6 +253,7 @@ public class GoodsDesc implements Serializable {
 	@ApiModelProperty(value = "所属公司中文名")
 	private String artsVisionName;
 
-
+	@TableField(exist = false)
+	private String policyName;
 
 }

+ 37 - 0
blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/entity/Delivery.java

@@ -18,9 +18,11 @@ package org.springblade.deliver.goods.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 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;
@@ -317,6 +319,41 @@ public class Delivery implements Serializable {
 	@ApiModelProperty(value = "操作提成标准")
 	private String operatingCommissionRate;
 
+	/**
+	 * 物流确认
+	 */
+	@ApiModelProperty(value = "物流确认")
+	private Integer logisticsConfirm;
+	/**
+	 * 操作人
+	 */
+	@ApiModelProperty(value = "操作人")
+	private String logisticsConfirmUser;
+	/**
+	 * 操作时间
+	 */
+	@ApiModelProperty(value = "操作时间")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date logisticsConfirmTime;
+	/**
+	 * 助理确认
+	 */
+	@ApiModelProperty(value = "助理确认")
+	private Integer assistantConfirm;
+	/**
+	 * 操作人
+	 */
+	@ApiModelProperty(value = "操作人")
+	private String assistantConfirmUser;
+	/**
+	 * 操作时间
+	 */
+	@ApiModelProperty(value = "操作时间")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date assistantConfirmTime;
+
 	@ApiModelProperty(value = "详情回显所属公司中文名")
 	@TableField(exist = false)
 	private List<Map<String, Object>> companyName;

+ 30 - 0
blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/feign/ISalesPolicyClient.java

@@ -0,0 +1,30 @@
+package org.springblade.mocha.feign;
+
+import org.springblade.common.constant.LauncherConstant;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * 价格管理对外访问接口
+ *
+ * @author Snight
+ */
+@FeignClient(
+	value = LauncherConstant.APPLICATION_MOCHA_ITEM_NAME
+)
+public interface ISalesPolicyClient {
+
+	String API_PREFIX = "/client";
+	String GET_POLICY_NAME = API_PREFIX + "/get-policy-name";
+
+	/**
+	 * 获取商品所属政策名
+	 *
+	 * @param id 商品ID
+	 * @return 政策名
+	 */
+	@GetMapping(GET_POLICY_NAME)
+	String getPolicyName(@RequestParam("id") Long id);
+
+}

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

@@ -811,4 +811,10 @@ public class Order implements Serializable {
 	@ApiModelProperty(value = "提交审批时间")
 	private Date checkDate;
 
+	/**
+	 * 大尺寸比例
+	 */
+	@ApiModelProperty(value = "大尺寸比例")
+	private String largeScale;
+
 }

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

@@ -473,5 +473,10 @@ public class OrderItems implements Serializable {
 	 */
 	@ApiModelProperty(value = "最新价格时间")
 	private Date newDate;
+	/**
+	 * 录入类型
+	 */
+	@ApiModelProperty(value = "录入类型")
+	private Integer inputMold;
 
 }

+ 8 - 1
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/Order.java

@@ -1,7 +1,6 @@
 package com.trade.purchase.order.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -13,6 +12,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 销售或采购订单表实体类
@@ -703,4 +703,11 @@ public class Order extends OrderBase {
 	@ApiModelProperty(value = "提交审批时间")
 	private Date checkDate;
 
+	/**
+	 * 订单明细
+	 */
+	@ApiModelProperty(value = "订单明细")
+	@TableField(exist = false)
+	private List<OrderItems> itemsList;
+
 }

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

@@ -447,6 +447,9 @@ public class OrderItems extends OrderBase {
 	private Date newDate;
 
 	@TableField(exist = false)
+	private String goodsName;
+
+	@TableField(exist = false)
 	private String storageName;
 
 	@TableField(exist = false)

+ 7 - 1
blade-service/blade-client/pom.xml

@@ -84,7 +84,7 @@
             <artifactId>blade-starter-transaction</artifactId>
         </dependency>
         <!-- websocket -->
-       <dependency>
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-websocket</artifactId>
         </dependency>
@@ -131,6 +131,12 @@
             <version>2.8.2.RELEASE</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-mocha-item-api</artifactId>
+            <version>2.8.2.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 

+ 2 - 1
blade-service/blade-client/src/main/java/org/springblade/client/corps/feign/CorpsDescClient.java

@@ -121,7 +121,8 @@ public class CorpsDescClient implements ICorpsDescClient {
 	@GetMapping(LIST_BANK_BY_CORP_ID)
 	public List<CorpsBank> listBankByCorpId(Long corpsId) {
 		LambdaQueryWrapper<CorpsBank> bankLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		bankLambdaQueryWrapper.eq(CorpsBank::getPid, corpsId);
+		bankLambdaQueryWrapper.eq(CorpsBank::getPid, corpsId)
+			.eq(CorpsBank::getIsDeleted, 0);
 		return bankService.list(bankLambdaQueryWrapper);
 	}
 

+ 10 - 4
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java

@@ -42,12 +42,13 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.mocha.feign.ISalesPolicyClient;
 import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.feign.IOrderItemsClient;
 import org.springblade.stock.entity.StockGoods;
 import org.springblade.stock.feign.IStockGoodsClient;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -81,10 +82,13 @@ public class GoodsDescController extends BladeController {
 
 	private final IGoodsTypeService goodsDescType;
 
-	private final IStockGoodsClient stockGoodsClient;//库存接口
+	// 库存接口
+	private final IStockGoodsClient stockGoodsClient;
 
 	private final IOrderItemsClient orderItemsClient;
 
+	private final ISalesPolicyClient salesPolicyClient;
+
 	private final ICorpsDescService corpsDescService;
 
 	/**
@@ -167,8 +171,8 @@ public class GoodsDescController extends BladeController {
 		IPage<GoodsDesc> iPage = goodsDescService.page(page, goodsDescLambdaQueryWrapper);
 		if (CollectionUtils.isNotEmpty(iPage.getRecords())) {
 			iPage.getRecords().forEach(e -> {
-				String TypeId = e.getGoodsTypeId();
-				String[] split = TypeId.split(",");
+				String typeId = e.getGoodsTypeId();
+				String[] split = typeId.split(",");
 				List<String> stringList = Arrays.asList(split);
 				LambdaQueryWrapper<GoodsType> goodsTypeLambdaQueryWrapper = new LambdaQueryWrapper<>();
 				goodsTypeLambdaQueryWrapper.in(GoodsType::getId, stringList);
@@ -177,6 +181,8 @@ public class GoodsDescController extends BladeController {
 					List<String> typeStr = types.stream().map(GoodsType::getCname).collect(Collectors.toList());
 					e.setGoodsTypeName(typeStr.toString().replace("[", "").replace("]", ""));
 				}
+
+				e.setPolicyName(salesPolicyClient.getPolicyName(e.getId()));
 			});
 		}
 		return R.data(iPage);

+ 68 - 57
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java

@@ -403,49 +403,52 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 	 * @param stockId 库存账id
 	 * @param deliveryItems 货物明细信息
 	 */
-	 public StockGoods cancelStock(String tradeType,Long stockId,DeliveryItems deliveryItems)
-	 {
-		 //查询库存账
-		 R<StockGoods> stockById = stockGoodsClient.getStockById(stockId);
-		 if (!stockById.isSuccess()){
-			 throw  new RuntimeException("查询库存账出错");
-		 }
-		 if (stockById.getData() == null){
-			 throw  new RuntimeException("库存账不存在");
-		 }
-		 BigDecimal actualQuantity = deliveryItems.getActualQuantity()==null?new BigDecimal("0"):deliveryItems.getActualQuantity();
-		 BigDecimal invoiceWeight = deliveryItems.getInvoiceWeight()==null?new BigDecimal("0"):deliveryItems.getInvoiceWeight();
-		 BigDecimal billWeight = deliveryItems.getBillWeight()==null?new BigDecimal("0"):deliveryItems.getBillWeight();
-		 StockGoods stockGoods = stockById.getData();
-		 if(actualQuantity.compareTo(stockGoods.getInQuantity())==1)
-		 {
-                throw new SecurityException("操作数量大于入库数量,禁止操作");
-		 }
-		 if(actualQuantity.compareTo(stockGoods.getBalanceQuantity())==1)
-		 {
-			 throw new SecurityException("操作数量大于结余数量,禁止撤回");
-		 }
-		 if(actualQuantity.compareTo(stockGoods.getInQuantity())==1)
-		 {
-			 throw new SecurityException("操作数量大于可用数量,禁止操作");
-		 }
-		 stockGoods.setInQuantity(stockGoods.getInQuantity().subtract(actualQuantity));//入库数量 减
-		 stockGoods.setBalanceQuantity(stockGoods.getBalanceQuantity().subtract(actualQuantity));//结余数量 减
-		 stockGoods.setSurplusRouteQuantity(stockGoods.getSurplusRouteQuantity().subtract(actualQuantity));//可用数量 减
-		 if (tradeType.equals(OrderTypeEnum.IMPORT.getType())){
-			 stockGoods.setInWeight(stockGoods.getInWeight().subtract(invoiceWeight));//入库发票重量 减
-			 stockGoods.setBalanceWeight(stockGoods.getBalanceWeight().subtract(invoiceWeight));//结余发票重量 减
-			 stockGoods.setInVolumn(stockGoods.getInVolumn().subtract(billWeight));//入库码单重量 减
-			 stockGoods.setBalanceVolumn(stockGoods.getBalanceVolumn().subtract(billWeight));//结余码单重量 减
-		 }
-		 stockGoods.setUpdateTime(new Date());
-		 stockGoods.setUpdateUser(SecureUtil.getUserId());
-		 R updateStock = stockGoodsClient.updateStock(stockGoods);
-		 if (!updateStock.isSuccess()){
-			 throw new RuntimeException("更新库存总账失败");
-		 }
-		 return stockGoods;
-	 }
+	public StockGoods cancelStock(String tradeType, Long stockId, DeliveryItems deliveryItems) {
+		//查询库存账
+		R<StockGoods> stockById = stockGoodsClient.getStockById(stockId);
+		if (!stockById.isSuccess()) {
+			throw new RuntimeException("查询库存账出错");
+		}
+		if (stockById.getData() == null) {
+			throw new RuntimeException("库存账不存在");
+		}
+
+		BigDecimal actualQuantity = deliveryItems.getActualQuantity() == null ? new BigDecimal("0") : deliveryItems.getActualQuantity();
+		BigDecimal invoiceWeight = deliveryItems.getInvoiceWeight() == null ? new BigDecimal("0") : deliveryItems.getInvoiceWeight();
+		BigDecimal billWeight = deliveryItems.getBillWeight() == null ? new BigDecimal("0") : deliveryItems.getBillWeight();
+
+		StockGoods stockGoods = stockById.getData();
+		if (!tradeType.equals(OrderTypeEnum.DOMESTIC.getType())) {
+			if (actualQuantity.compareTo(stockGoods.getInQuantity()) > 0) {
+				throw new SecurityException("操作数量大于入库数量,禁止操作");
+			}
+			if (actualQuantity.compareTo(stockGoods.getBalanceQuantity()) > 0) {
+				throw new SecurityException("操作数量大于结余数量,禁止撤回");
+			}
+			if (actualQuantity.compareTo(stockGoods.getSurplusRouteQuantity()) > 0) {
+				throw new SecurityException("操作数量大于可用数量,禁止操作");
+			}
+			stockGoods.setInQuantity(stockGoods.getInQuantity().subtract(actualQuantity));//入库数量 减
+			stockGoods.setBalanceQuantity(stockGoods.getBalanceQuantity().subtract(actualQuantity));//结余数量 减
+			stockGoods.setSurplusRouteQuantity(stockGoods.getSurplusRouteQuantity().subtract(actualQuantity));//可用数量 减
+			if (tradeType.equals(OrderTypeEnum.IMPORT.getType())) {
+				stockGoods.setInWeight(stockGoods.getInWeight().subtract(invoiceWeight));//入库发票重量 减
+				stockGoods.setBalanceWeight(stockGoods.getBalanceWeight().subtract(invoiceWeight));//结余发票重量 减
+				stockGoods.setInVolumn(stockGoods.getInVolumn().subtract(billWeight));//入库码单重量 减
+				stockGoods.setBalanceVolumn(stockGoods.getBalanceVolumn().subtract(billWeight));//结余码单重量 减
+			}
+		} else {
+			stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().add(deliveryItems.getActualQuantity()));
+		}
+
+		stockGoods.setUpdateTime(new Date());
+		stockGoods.setUpdateUser(SecureUtil.getUserId());
+		R updateStock = stockGoodsClient.updateStock(stockGoods);
+		if (!updateStock.isSuccess()) {
+			throw new RuntimeException("更新库存总账失败");
+		}
+		return stockGoods;
+	}
 
 
 
@@ -455,29 +458,37 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 	 * @param stockId 库存账id
 	 * @param deliveryItems 货物明细信息
 	 */
-	public StockGoods receiving(String tradeType,Long stockId,DeliveryItems deliveryItems){
+	public StockGoods receiving(String tradeType, Long stockId, DeliveryItems deliveryItems) {
 		//查询库存账
 		R<StockGoods> stockById = stockGoodsClient.getStockById(stockId);
-		if (!stockById.isSuccess()){
-			throw  new RuntimeException("查询库存账出错");
+		if (!stockById.isSuccess()) {
+			throw new RuntimeException("查询库存账出错");
 		}
-		if (stockById.getData() == null){
-			throw  new RuntimeException("库存账不存在");
+		if (stockById.getData() == null) {
+			throw new RuntimeException("库存账不存在");
 		}
+
 		StockGoods stockGoods = stockById.getData();
-		stockGoods.setInQuantity(stockGoods.getInQuantity().add(deliveryItems.getActualQuantity()));//入库数量 加
-		stockGoods.setBalanceQuantity(stockGoods.getBalanceQuantity().add(deliveryItems.getActualQuantity()));//结余数量 加
-		stockGoods.setSurplusRouteQuantity(stockGoods.getSurplusRouteQuantity().add(deliveryItems.getActualQuantity()));//可用数量 加
-		if (tradeType.equals(OrderTypeEnum.IMPORT.getType())){
-			stockGoods.setInWeight(stockGoods.getInWeight()!=null?stockGoods.getInWeight().add(deliveryItems.getInvoiceWeight()):new BigDecimal("0").add(deliveryItems.getInvoiceWeight()));//入库发票重量 加
-			stockGoods.setBalanceWeight(stockGoods.getBalanceWeight()!=null?stockGoods.getBalanceWeight().add(deliveryItems.getInvoiceWeight()):new BigDecimal("0").add(deliveryItems.getInvoiceWeight()));//结余发票重量 加
-			stockGoods.setInVolumn(stockGoods.getInVolumn()!=null?stockGoods.getInVolumn().add(deliveryItems.getBillWeight()):new BigDecimal("0").add(deliveryItems.getBillWeight()));//入库码单重量 加
-			stockGoods.setBalanceVolumn(stockGoods.getBalanceVolumn()!=null?stockGoods.getBalanceVolumn().add(deliveryItems.getBillWeight()):new BigDecimal("0").add(deliveryItems.getBillWeight()));//结余码单重量 加
+		if (!tradeType.equals(OrderTypeEnum.DOMESTIC.getType())) {
+			stockGoods.setInQuantity(stockGoods.getInQuantity().add(deliveryItems.getActualQuantity()));//入库数量 加
+			stockGoods.setBalanceQuantity(stockGoods.getBalanceQuantity().add(deliveryItems.getActualQuantity()));//结余数量 加
+			stockGoods.setSurplusRouteQuantity(stockGoods.getSurplusRouteQuantity().add(deliveryItems.getActualQuantity()));//可用数量 加
+			if (tradeType.equals(OrderTypeEnum.IMPORT.getType())) {
+				stockGoods.setInWeight(stockGoods.getInWeight() != null ? stockGoods.getInWeight().add(deliveryItems.getInvoiceWeight()) : new BigDecimal("0").add(deliveryItems.getInvoiceWeight()));//入库发票重量 加
+				stockGoods.setBalanceWeight(stockGoods.getBalanceWeight() != null ? stockGoods.getBalanceWeight().add(deliveryItems.getInvoiceWeight()) : new BigDecimal("0").add(deliveryItems.getInvoiceWeight()));//结余发票重量 加
+				stockGoods.setInVolumn(stockGoods.getInVolumn() != null ? stockGoods.getInVolumn().add(deliveryItems.getBillWeight()) : new BigDecimal("0").add(deliveryItems.getBillWeight()));//入库码单重量 加
+				stockGoods.setBalanceVolumn(stockGoods.getBalanceVolumn() != null ? stockGoods.getBalanceVolumn().add(deliveryItems.getBillWeight()) : new BigDecimal("0").add(deliveryItems.getBillWeight()));//结余码单重量 加
+			}
+		} else {
+			if (stockGoods.getLockingQuantity().compareTo(deliveryItems.getActualQuantity()) < 0) {
+				throw new RuntimeException("更新库存总账失败,锁定库存不足");
+			}
+			stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().subtract(deliveryItems.getActualQuantity()));
 		}
 		stockGoods.setUpdateTime(new Date());
 		stockGoods.setUpdateUser(SecureUtil.getUserId());
 		R updateStock = stockGoodsClient.updateStock(stockGoods);
-		if (!updateStock.isSuccess()){
+		if (!updateStock.isSuccess()) {
 			throw new RuntimeException("更新库存总账失败");
 		}
 		return stockGoods;

+ 19 - 6
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -489,7 +489,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 
 		Long storageId = select.getStorageId();
 		//收货凭证
-		if ("681169".equals(select.getTenantId())) {
+		/*if ("681169".equals(select.getTenantId())) {
 			//todo
 			try {
 				String accountName = select.getBelongCompany();
@@ -500,7 +500,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			} catch (Exception exception) {
 				throw new SecurityException(exception.getMessage());
 			}
-		}
+		}*/
 
 
 		if (select.getDeliveryStatus() == null || "已收货".equals(select.getDeliveryStatus())) {
@@ -581,6 +581,12 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 						e.setInventoryNumber(receiving.getSurplusRouteQuantity());
 						e.setInWeight(receiving.getInWeight());
 					}
+				} else {
+					if (stock == null) {
+						throw new SecurityException("更新库存失败,未找到库存");
+					} else {
+						iDeliveryItemsService.receiving(delivery.getTradeType(), stock.getId(), e);
+					}
 				}
 
 				//更新item已发数量
@@ -697,11 +703,18 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 				} else {
 					throw new SecurityException("贸易类型未指定");
 				}
+
 				StockGoods stock = stockGoodsClient.getOneStock(model);
-				//更新stock库存数量
-				StockGoods stockGoods = iDeliveryItemsService.cancelStock(delivery.getTradeType(), stock.getId(), e);
-				e.setInventoryNumber(stockGoods.getSurplusRouteQuantity());
-				e.setInWeight(stockGoods.getInWeight());
+				//达沃特新需求-禅道860中体现-国内-采购确认-不增加库存
+				if (!"GN".equals(delivery.getTradeType())) {
+					//更新stock库存数量
+					StockGoods stockGoods = iDeliveryItemsService.cancelStock(delivery.getTradeType(), stock.getId(), e);
+					e.setInventoryNumber(stockGoods.getSurplusRouteQuantity());
+					e.setInWeight(stockGoods.getInWeight());
+				} else {
+					iDeliveryItemsService.cancelStock(delivery.getTradeType(), stock.getId(), e);
+				}
+
 				//更新库存内容
 				iDeliveryItemsService.updateById(e);
 			});

+ 45 - 0
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/feign/SalesPolicyClient.java

@@ -0,0 +1,45 @@
+package org.springblade.mocha.feign;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.mocha.entity.SalesPolicy;
+import org.springblade.mocha.entity.SalesPolicyItem;
+import org.springblade.mocha.service.ISalesPolicyItemService;
+import org.springblade.mocha.service.ISalesPolicyService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+@NonDS
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class SalesPolicyClient implements ISalesPolicyClient {
+
+	private final ISalesPolicyService salesPolicyService;
+
+	private final ISalesPolicyItemService salesPolicyItemService;
+
+	@Override
+	@GetMapping(GET_POLICY_NAME)
+	public String getPolicyName(Long id) {
+		SalesPolicyItem item = salesPolicyItemService.getOne(new LambdaQueryWrapper<SalesPolicyItem>()
+			.eq(SalesPolicyItem::getItemId, id)
+			.eq(SalesPolicyItem::getIsDeleted, 0)
+			.last("limit 1")
+		);
+		if (ObjectUtil.isEmpty(item) || ObjectUtil.isEmpty(item.getPid())) {
+			return null;
+		}
+
+		SalesPolicy policy = salesPolicyService.getById(item.getPid());
+		if (ObjectUtil.isEmpty(policy) || ObjectUtil.isEmpty(policy.getCname())) {
+			return null;
+		}
+
+		return policy.getCname();
+	}
+
+}

+ 24 - 4
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderItemsServiceImpl.java

@@ -29,6 +29,7 @@ import org.springblade.client.vo.GoodsDescVO;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.mocha.feign.IPriceItemClient;
+import org.springblade.mocha.feign.ISalesPolicyClient;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.entity.OrderParts;
@@ -61,10 +62,28 @@ import java.util.Map;
 @Service
 @AllArgsConstructor
 public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderItems> implements IOrderItemsService {
-	private IGoodsDescClient goodsDescClient;//获取商品信息
-	private IPriceItemClient priceItemClient;//价格管理对外接口
-	private IStockGoodsClient stockGoodsClient;//库存
-	private IUserClient iUserClient;//获取用户信息
+	/**
+	 * 获取商品信息
+	 */
+	private final IGoodsDescClient goodsDescClient;
+
+	/**
+	 * 价格管理对外接口
+	 */
+	private final IPriceItemClient priceItemClient;
+
+	/**
+	 * 库存
+	 */
+	private final IStockGoodsClient stockGoodsClient;
+
+	/**
+	 * 获取用户信息
+	 */
+	private final IUserClient iUserClient;
+
+	private final ISalesPolicyClient salesPolicyClient;
+
 	@Resource
 	private OrderPartsMapper orderPartsMapper;
 
@@ -86,6 +105,7 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderIt
 			if (goods.isSuccess() && goods.getData() != null) {
 				OrderItems orderItems = new OrderItems();
 				orderItems.setCode(item.getCode());
+				orderItems.setPriceType(salesPolicyClient.getPolicyName(goods.getData().getId()));
 				orderItems.setOrderQuantity(item.getOrderQuantity());
 				orderItems.setCname(goods.getData().getCname());//商品名称
 				orderItems.setItemId(goods.getData().getId());//商品id

+ 56 - 48
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/SettlementController.java

@@ -17,43 +17,43 @@
 package org.springblade.finance.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import org.springblade.finance.dto.ApplyDTO;
-import org.springblade.finance.dto.SettlementDTO;
-import org.springblade.finance.entity.InvoiceItem;
-import org.springblade.finance.mapper.InvoiceItemMapper;
-import org.springblade.finance.service.IInvoiceItemService;
-import org.springblade.finance.tool.JdyTool;
-import org.springblade.finance.vojo.Acc;
-import org.springblade.finance.vojo.Items;
-import org.springblade.finance.vojo.Settlement;
-import org.springblade.finance.service.IAccService;
-import org.springblade.finance.service.IItemsService;
-import org.springblade.finance.service.ISettlementService;
-import org.springblade.finance.vo.SettlementVO;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
 import org.springblade.client.entity.CorpsBank;
 import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IFeesDescClient;
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.finance.dto.ApplyDTO;
+import org.springblade.finance.dto.SettlementDTO;
+import org.springblade.finance.entity.InvoiceItem;
+import org.springblade.finance.service.IAccService;
+import org.springblade.finance.service.IInvoiceItemService;
+import org.springblade.finance.service.IItemsService;
+import org.springblade.finance.service.ISettlementService;
+import org.springblade.finance.tool.JdyTool;
+import org.springblade.finance.vo.SettlementVO;
+import org.springblade.finance.vojo.Acc;
+import org.springblade.finance.vojo.Items;
+import org.springblade.finance.vojo.Settlement;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.boot.ctrl.BladeController;
 
+import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
@@ -83,6 +83,7 @@ public class SettlementController extends BladeController {
 	private final IAccService accService;
 
 	private final IInvoiceItemService iInvoiceItemService;
+
 	/**
 	 * 详情
 	 */
@@ -90,55 +91,62 @@ public class SettlementController extends BladeController {
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "详情", notes = "传入settlement")
 	public R<Settlement> detail(Settlement settlement) throws Exception {
-	/*	JdyTool.test();*/
+		/*	JdyTool.test();*/
 		Settlement detail = settlementService.getById(settlement.getId());
 
-		R<User> user2 = iUserClient.userInfoById(detail.getUpdateUser());
-		if (user2.isSuccess() && user2.getData() != null){
-			detail.setUpdateUserName(user2.getData().getName());
+		if (ObjectUtil.isNotEmpty(detail.getUpdateUser())) {
+			R<User> user = iUserClient.userInfoById(detail.getUpdateUser());
+			if (user.isSuccess() && user.getData() != null) {
+				detail.setUpdateUserName(user.getData().getName());
+			}
 		}
-		R<User> user3 = iUserClient.userInfoById(detail.getCreateUser());
-		if (user3.isSuccess() && user3.getData() != null){
-			detail.setCreateUserName(user3.getData().getName());
+
+		if (ObjectUtil.isNotEmpty(detail.getUpdateUser())) {
+			R<User> user = iUserClient.userInfoById(detail.getCreateUser());
+			if (user.isSuccess() && user.getData() != null) {
+				detail.setCreateUserName(user.getData().getName());
+			}
 		}
 
-		LambdaQueryWrapper<Items> itemsLambdaQueryWrapper=new LambdaQueryWrapper<>();
-		itemsLambdaQueryWrapper.eq(Items::getPid,detail.getId()).eq(Items::getIsDeleted,0);
+		LambdaQueryWrapper<Items> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		itemsLambdaQueryWrapper.eq(Items::getPid, detail.getId()).eq(Items::getIsDeleted, 0);
 		List<Items> list = itemsService.list(itemsLambdaQueryWrapper);
 
-		LambdaQueryWrapper<InvoiceItem> itemLambdaQueryWrapper=new LambdaQueryWrapper<>();
-		itemLambdaQueryWrapper.eq(InvoiceItem::getPid,detail.getId()).eq(InvoiceItem::getIsDeleted,0);
+		LambdaQueryWrapper<InvoiceItem> itemLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		itemLambdaQueryWrapper.eq(InvoiceItem::getPid, detail.getId()).eq(InvoiceItem::getIsDeleted, 0);
 		List<InvoiceItem> invoiceItemList = iInvoiceItemService.list(itemLambdaQueryWrapper);
 		detail.setInvoiceItemList(invoiceItemList);
-		if(CollectionUtils.isNotEmpty(list))
-		{
-			list.forEach(e->{
-
-				R<User> user1 = iUserClient.userInfoById(e.getUpdateUser());
-				if (user1.isSuccess() && user1.getData() != null){
-					e.setUpdateUserName(user1.getData().getName());
+		if (CollectionUtils.isNotEmpty(list)) {
+			list.forEach(e -> {
+				if (ObjectUtil.isNotEmpty(detail.getUpdateUser())) {
+					R<User> user = iUserClient.userInfoById(e.getUpdateUser());
+					if (user.isSuccess() && user.getData() != null) {
+						e.setUpdateUserName(user.getData().getName());
+					}
 				}
-				R<User> user = iUserClient.userInfoById(e.getCreateUser());
-				if (user.isSuccess() && user.getData() != null){
-					e.setCreateUserName(user.getData().getName());
+				if (ObjectUtil.isNotEmpty(detail.getUpdateUser())) {
+					R<User> user = iUserClient.userInfoById(e.getCreateUser());
+					if (user.isSuccess() && user.getData() != null) {
+						e.setCreateUserName(user.getData().getName());
+					}
 				}
 
-
-				//录入人
-				e.setCreateUserName(iUserClient.userInfoById(e.getCreateUser()).getData().getRealName());
 				//客户名称
-                e.setCorpName(corpsDescClient.getCorpMessage(e.getCorpId()).getData().getCname());
+				if (ObjectUtil.isNotEmpty(e.getCorpId())) {
+					e.setCorpName(corpsDescClient.getCorpMessage(e.getCorpId()).getData().getCname());
+				}
 				//费用名称
-				e.setItemName(iFeesDescClient.detail(Long.valueOf(e.getCostType())).getData().getCname());
-
+				if (StringUtil.isNotBlank(e.getCostType())) {
+					e.setItemName(iFeesDescClient.detail(Long.valueOf(e.getCostType())).getData().getCname());
+				}
 			});
 		}
 
 		detail.setItemsList(list);
 		//获取客户中文名
-		if (detail.getCorpId() != null){
-			R<List<Map<String,Object>>> corpMessage = corpsDescClient.getCorpsMessage(detail.getCorpId().toString());
-			if (corpMessage.isSuccess() && corpMessage.getData() != null){
+		if (detail.getCorpId() != null) {
+			R<List<Map<String, Object>>> corpMessage = corpsDescClient.getCorpsMessage(detail.getCorpId().toString());
+			if (corpMessage.isSuccess() && corpMessage.getData() != null) {
 				detail.setCustomerModel(corpMessage.getData());
 			}
 		}

+ 16 - 9
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/PurchaseOrderController.java

@@ -268,30 +268,37 @@ public class PurchaseOrderController extends BladeController {
 				}
 
 				List<OrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<OrderItems>().eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getPid, e.getId()));
-				//是否有子项
-				Boolean flag=orderItemsService.count(new LambdaQueryWrapper<OrderItems>().eq(OrderItems::getPid,e.getId()))>0?true:false;
 				if(CollectionUtils.isNotEmpty(orderItemsList))
 				{
 					//子项总件数
-					BigDecimal orderQuantity = orderItemsList.stream().filter(it -> it.getOrderQuantity() != null)
-						.map(OrderItems::getOrderQuantity)
+					BigDecimal orderQuantity = orderItemsList.stream().map(OrderItems::getOrderQuantity)
+						.filter(Objects::nonNull)
 						.reduce(BigDecimal.ZERO, BigDecimal::add);
 					e.setOrderQuantity(orderQuantity);
 
 					//子项总收货数
-					BigDecimal actualQuantity = orderItemsList.stream().filter(it -> it.getActualQuantity() != null)
-						.map(OrderItems::getActualQuantity)
+					BigDecimal actualQuantity = orderItemsList.stream().map(OrderItems::getActualQuantity)
+						.filter(Objects::nonNull)
 						.reduce(BigDecimal.ZERO, BigDecimal::add);
 					e.setActualQuantity(actualQuantity);
 
 					//已收重量
-					BigDecimal actualWeight = orderItemsList.stream().filter(it -> it.getActualWeight() != null)
-						.map(OrderItems::getActualWeight)
+					BigDecimal actualWeight = orderItemsList.stream().map(OrderItems::getActualWeight)
+						.filter(Objects::nonNull)
 						.reduce(BigDecimal.ZERO, BigDecimal::add);
 					e.setActualWeight(actualWeight);
-				}
 
+					orderItemsList.forEach(item -> {
+						//商品信息
+						R<GoodsDescVO> goodsDesc = goodsDescClient.selectGoodsMessage(item.getItemId());
+						if(goodsDesc.isSuccess() && ObjectUtil.isNotEmpty(goodsDesc.getData()))
+						{
+							item.setGoodsName(goodsDesc.getData().getCname());
+						}
+					});
+				}
 
+				e.setItemsList(orderItemsList);
 			});
 		}
 		return R.data(pages);