Browse Source

2023年6月28日09:05:36

纪新园 2 years ago
parent
commit
a48271b420
20 changed files with 496 additions and 271 deletions
  1. 78 0
      blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/entity/StockInventory.java
  2. 13 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjGoodsDesc.java
  3. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrderItems.java
  4. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjProductLaunch.java
  5. 4 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjStockDesc.java
  6. 1 1
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java
  7. 72 42
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/AllotController.java
  8. 4 0
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/mapper/DeliveryMapper.java
  9. 86 1
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/mapper/DeliveryMapper.xml
  10. 7 0
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/IDeliveryService.java
  11. 10 0
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java
  12. 7 5
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java
  13. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsTypeMapper.xml
  14. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java
  15. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/mapper/GoodsTypeMapper.xml
  16. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml
  17. 189 212
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  18. 5 8
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/impl/ProductLaunchServiceImpl.java
  19. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/controller/ShipController.java
  20. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java

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

@@ -0,0 +1,78 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.deliver.goods.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 发货通知单实体类
+ *
+ * @author BladeX
+ * @since 2021-10-21
+ */
+@Data
+public class StockInventory implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 业务编号
+	 */
+	private String sysNo;
+
+	/**
+	 * 业务日期
+	 */
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	private Date businessDate;
+
+	/**
+	 * 增加
+	 */
+	private BigDecimal addQuantity = new BigDecimal("0.00");
+	/**
+	 * 减少
+	 */
+	private BigDecimal subQuantity = new BigDecimal("0.00");
+	/**
+	 * 结余
+	 */
+	private BigDecimal totalQuantity = new BigDecimal("0.00");
+
+	/**
+	 * 类型
+	 */
+	private String orderType;
+
+	/**
+	 * 商品名
+	 */
+	private String goodsName;
+
+	/**
+	 * 商品名
+	 */
+	private String status;
+
+}

+ 13 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjGoodsDesc.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.salesPart.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
@@ -246,4 +247,16 @@ public class PjGoodsDesc implements Serializable {
 	@TableField(exist = false)
 	private String stock;
 
+	/**
+	 * 共享公司Id
+	 */
+	@TableField(exist = false)
+	private Long sharedCompanyId;
+
+	/**
+	 * 共享公司名称
+	 */
+	@TableField(exist = false)
+	private String sharedCompanyName;
+
 }

+ 6 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrderItems.java

@@ -246,4 +246,10 @@ public class PjOrderItems implements Serializable {
 	@ApiModelProperty(value = "共享公司名称")
 	private String sharedCompanyName;
 
+	/**
+	 * 参考库存
+	 */
+	@ApiModelProperty(value = "参考库存")
+	private BigDecimal inventory;
+
 }

+ 6 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjProductLaunch.java

@@ -186,6 +186,12 @@ public class PjProductLaunch implements Serializable {
 	private Long sourceCompanyId;
 
 	/**
+	 * 来源公司名称
+	 */
+	@ApiModelProperty(value = "来源公司名称")
+	private String sourceCompanyName;
+
+	/**
 	 * 共享公司
 	 */
 	@ApiModelProperty(value = "共享公司")

+ 4 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjStockDesc.java

@@ -18,12 +18,14 @@ package org.springblade.salesPart.entity;
 
 import java.math.BigDecimal;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
 
+import com.baomidou.mybatisplus.annotation.Version;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
@@ -213,6 +215,8 @@ public class PjStockDesc implements Serializable {
 	 * 版本
 	 */
 	@ApiModelProperty(value = "版本")
+	@Version
+	@TableField(value = "version", fill = FieldFill.INSERT_UPDATE)
 	private String version;
 
 	@TableField(exist = false)

+ 1 - 1
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java

@@ -62,7 +62,7 @@ public interface IUserClient {
 	String GET_USER_BY_ROLE = API_PREFIX + "/getUserByRole";
 
 	@GetMapping(LIST_USER_BY_ROLE_ID)
-	R<List<User>> listUserByRoleId(@RequestParam("roleId") Long roleId,@RequestParam("roleId") String tenantId,@RequestParam("roleId") Long salesCompanyId);
+	R<List<User>> listUserByRoleId(@RequestParam("roleId") Long roleId,@RequestParam("tenantId") String tenantId,@RequestParam("salesCompanyId") Long salesCompanyId);
 
 	/**
 	 * 获取用户信息

+ 72 - 42
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/AllotController.java

@@ -22,6 +22,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.deliver.goods.entity.Delivery;
+import org.springblade.deliver.goods.entity.StockInventory;
 import org.springblade.deliver.goods.enums.DeliveryStatusEnum;
 import org.springblade.deliver.goods.service.IDeliveryFeesService;
 import org.springblade.deliver.goods.service.IDeliveryFilesService;
@@ -33,6 +34,8 @@ import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -54,6 +57,7 @@ public class AllotController extends BladeController {
 	private final IDeliveryItemsService deliveryItemsService;
 	private final IDeliveryFeesService deliveryFeesService;
 	private final IDeliveryFilesService deliveryFilesService;
+
 	/**
 	 * 经销商调拨详情
 	 */
@@ -73,28 +77,28 @@ public class AllotController extends BladeController {
 	@ApiOperation(value = "分页", notes = "传入delivery")
 	public R<IPage<Delivery>> list(Delivery delivery, Query query) {
 		LambdaQueryWrapper<Delivery> lambdaQueryWrapper = new LambdaQueryWrapper();
-		lambdaQueryWrapper.eq(Delivery::getIsDeleted,0);
+		lambdaQueryWrapper.eq(Delivery::getIsDeleted, 0);
 		lambdaQueryWrapper.eq(Delivery::getTenantId, SecureUtil.getTenantId());
 		lambdaQueryWrapper.eq(Delivery::getBillType, OrderTypeEnum.ALLOY.getType());
-		lambdaQueryWrapper.eq(Delivery::getTradeType,OrderTypeEnum.DEALER.getType());
-		lambdaQueryWrapper.eq(delivery.getSalesCompany()!=null,Delivery::getSalesCompany,delivery.getSalesCompany());
-		lambdaQueryWrapper.like(StringUtils.isNotBlank(delivery.getPurchaseMode()),Delivery::getPurchaseMode,delivery.getPurchaseMode());
-		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getCreateStartTime()),Delivery::getCreateTime,delivery.getCreateStartTime());//制单日期开始
-		lambdaQueryWrapper.le(Func.isNotEmpty(delivery.getCreateEndTime()),Delivery::getCreateTime,delivery.getCreateEndTime());//制单日期结束
-		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getBusinessStartDate()),Delivery::getBusinessDate,delivery.getBusinessStartDate());//发货日期开始
-		lambdaQueryWrapper.le(Func.isNotEmpty(delivery.getBusinessEndDate()),Delivery::getBusinessDate,delivery.getBusinessEndDate());//发货日期结束
-		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getOrgOrderNo()),Delivery::getOrgOrderNo,delivery.getOrgOrderNo());//销售订单号
-		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getCorpId()),Delivery::getCorpId,delivery.getCorpId());//客户
-		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getSalesCompany()),Delivery::getSalesCompany,delivery.getSalesCompany());//所属公司
-		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalAddress()),Delivery::getArrivalAddress,delivery.getArrivalAddress());//收货地址
-		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalContact()),Delivery::getArrivalContact,delivery.getArrivalContact());//收货人
-		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalTel()),Delivery::getArrivalTel,delivery.getArrivalTel());//收货电话
-		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getDeliveryRemarks()),Delivery::getDeliveryRemarks,delivery.getDeliveryRemarks());//备注
-		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getCreateUser()),Delivery::getCreateUser,delivery.getCreateUser());//制单人
-		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getStorageId()),Delivery::getStorageId,delivery.getStorageId());//仓库
+		lambdaQueryWrapper.eq(Delivery::getTradeType, OrderTypeEnum.DEALER.getType());
+		lambdaQueryWrapper.eq(delivery.getSalesCompany() != null, Delivery::getSalesCompany, delivery.getSalesCompany());
+		lambdaQueryWrapper.like(StringUtils.isNotBlank(delivery.getPurchaseMode()), Delivery::getPurchaseMode, delivery.getPurchaseMode());
+		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getCreateStartTime()), Delivery::getCreateTime, delivery.getCreateStartTime());//制单日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(delivery.getCreateEndTime()), Delivery::getCreateTime, delivery.getCreateEndTime());//制单日期结束
+		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getBusinessStartDate()), Delivery::getBusinessDate, delivery.getBusinessStartDate());//发货日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(delivery.getBusinessEndDate()), Delivery::getBusinessDate, delivery.getBusinessEndDate());//发货日期结束
+		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getOrgOrderNo()), Delivery::getOrgOrderNo, delivery.getOrgOrderNo());//销售订单号
+		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getCorpId()), Delivery::getCorpId, delivery.getCorpId());//客户
+		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getSalesCompany()), Delivery::getSalesCompany, delivery.getSalesCompany());//所属公司
+		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalAddress()), Delivery::getArrivalAddress, delivery.getArrivalAddress());//收货地址
+		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalContact()), Delivery::getArrivalContact, delivery.getArrivalContact());//收货人
+		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalTel()), Delivery::getArrivalTel, delivery.getArrivalTel());//收货电话
+		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getDeliveryRemarks()), Delivery::getDeliveryRemarks, delivery.getDeliveryRemarks());//备注
+		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getCreateUser()), Delivery::getCreateUser, delivery.getCreateUser());//制单人
+		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getStorageId()), Delivery::getStorageId, delivery.getStorageId());//仓库
 		lambdaQueryWrapper.orderByDesc(Delivery::getId);
 		IPage<Delivery> pages = deliveryService.page(Condition.getPage(query), lambdaQueryWrapper);
-		if (CollectionUtils.isNotEmpty(pages.getRecords())){
+		if (CollectionUtils.isNotEmpty(pages.getRecords())) {
 
 			String corpIds = "";//客户拼接
 			String salesCompanyIds = "";//销售公司
@@ -103,23 +107,23 @@ public class AllotController extends BladeController {
 			String storageIds = "";//仓库
 			String allotStorageIds = "";//调拨仓库
 
-			for (Delivery deliverys : pages.getRecords()){
-				if (ObjectUtil.isNotEmpty(deliverys.getCorpId())){
+			for (Delivery deliverys : pages.getRecords()) {
+				if (ObjectUtil.isNotEmpty(deliverys.getCorpId())) {
 					corpIds = corpIds + deliverys.getCorpId() + ",";
 				}
-				if (ObjectUtil.isNotEmpty(deliverys.getCorpId())){
+				if (ObjectUtil.isNotEmpty(deliverys.getCorpId())) {
 					salesCompanyIds = salesCompanyIds + deliverys.getSalesCompany() + ",";
 				}
-				if (ObjectUtil.isNotEmpty(deliverys.getCreateUser())){
+				if (ObjectUtil.isNotEmpty(deliverys.getCreateUser())) {
 					createUserIds = createUserIds + deliverys.getCreateUser() + ",";
 				}
-				if (ObjectUtil.isNotEmpty(deliverys.getUpdateUser())){
+				if (ObjectUtil.isNotEmpty(deliverys.getUpdateUser())) {
 					updateUserIds = updateUserIds + deliverys.getUpdateUser() + ",";
 				}
-				if (ObjectUtil.isNotEmpty(deliverys.getStorageId())){
+				if (ObjectUtil.isNotEmpty(deliverys.getStorageId())) {
 					storageIds = storageIds + deliverys.getStorageId() + ",";
 				}
-				if (ObjectUtil.isNotEmpty(deliverys.getStorageId())){
+				if (ObjectUtil.isNotEmpty(deliverys.getStorageId())) {
 					allotStorageIds = allotStorageIds + deliverys.getAllotStorageId() + ",";
 				}
 			}
@@ -131,49 +135,48 @@ public class AllotController extends BladeController {
 			List<StorageDesc> storageList = iStorageClient.selectStorageIds(storageIds);
 			List<StorageDesc> allotStorageList = iStorageClient.selectStorageIds(allotStorageIds);
 
-			pages.getRecords().forEach(item ->{
+			pages.getRecords().forEach(item -> {
 				if (item.getCorpId() != null) {
 					if (ObjectUtil.isNotEmpty(corpList)) {
 						item.setCorpsName(corpList.stream().filter(e -> e.getId().equals(item.getCorpId())).findFirst().get().getCname());
 					}
 				}
-				if (item.getSalesCompany() != null){
+				if (item.getSalesCompany() != null) {
 					if (ObjectUtil.isNotEmpty(salesCompanyList)) {
 						item.setSalesCompanyName(salesCompanyList.stream().filter(e -> e.getId().equals(item.getSalesCompany())).findFirst().get().getCname());
 					}
 				}
 				//制单人名字
-				if(item.getCreateUser()!=null)
-				{
+				if (item.getCreateUser() != null) {
 					if (ObjectUtil.isNotEmpty(createUserList)) {
 						item.setCreateUserName(createUserList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().get().getRealName());
 					}
 				}
 				//修改制单人名字
-				if(item.getUpdateUser()!=null)
-				{
+				if (item.getUpdateUser() != null) {
 					if (ObjectUtil.isNotEmpty(updateUserList)) {
 						item.setUpdateUserName(updateUserList.stream().filter(e -> e.getId().equals(item.getUpdateUser())).findFirst().get().getRealName());
 					}
 				}
-				if (item.getStorageId() != null){
-					if (ObjectUtil.isNotEmpty(storageList)){
+				if (item.getStorageId() != null) {
+					if (ObjectUtil.isNotEmpty(storageList)) {
 						item.setStorageName((storageList.stream().filter(e -> e.getId().equals(item.getStorageId()))).findFirst().get().getCname());
 					}
 				}
 				//调拨仓库信息
-				if (item.getAllotStorageId() != null){
-					if (ObjectUtil.isNotEmpty(allotStorageList)){
+				if (item.getAllotStorageId() != null) {
+					if (ObjectUtil.isNotEmpty(allotStorageList)) {
 						item.setAllotStorageName((allotStorageList.stream().filter(e -> e.getId().equals(item.getAllotStorageId()))).findFirst().get().getCname());
 					}
 				}
-				if (item.getTradeType().equals(OrderTypeEnum.DEALER.getType())){
+				if (item.getTradeType().equals(OrderTypeEnum.DEALER.getType())) {
 
 				}
 			});
 		}
 		return R.data(pages);
 	}
+
 	/**
 	 * 自定义分页 经销商调拨
 	 */
@@ -197,12 +200,12 @@ public class AllotController extends BladeController {
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入delivery")
 	public R update(@Valid @RequestBody Delivery delivery) {
-		if (delivery.getId() == null){
-			throw  new SecurityException("请选择要删除的数据");
+		if (delivery.getId() == null) {
+			throw new SecurityException("请选择要删除的数据");
 		}
 		Delivery service = deliveryService.getById(delivery.getId());
-		if (service.getDeliveryStatus().equals(DeliveryStatusEnum.ALLOT.getType())){
-			throw  new SecurityException("订单已确认调拨,删除失败");
+		if (service.getDeliveryStatus().equals(DeliveryStatusEnum.ALLOT.getType())) {
+			throw new SecurityException("订单已确认调拨,删除失败");
 		}
 		delivery.setIsDeleted(1);
 		deliveryService.updateById(delivery);
@@ -223,6 +226,7 @@ public class AllotController extends BladeController {
 		delivery.setTradeType(OrderTypeEnum.DEALER.getType());
 		return deliveryService.submitDelivery(delivery);
 	}
+
 	/**
 	 * 确认调拨
 	 */
@@ -230,11 +234,12 @@ public class AllotController extends BladeController {
 	@ApiOperationSupport(order = 7)
 	@ApiOperation(value = "确认调拨", notes = "传入delivery")
 	public R affirmAllot(@Valid @RequestBody Delivery delivery) {
-		if (delivery.getId() == null){
+		if (delivery.getId() == null) {
 			throw new SecurityException("缺少必要的参数");
 		}
 		return deliveryService.affirmAllot(delivery);
 	}
+
 	/**
 	 * 撤销调拨
 	 */
@@ -242,10 +247,35 @@ public class AllotController extends BladeController {
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "新增或修改", notes = "传入delivery")
 	public R repealAllot(@Valid @RequestBody Delivery delivery) {
-		if (delivery.getId() == null){
+		if (delivery.getId() == null) {
 			throw new SecurityException("缺少必要的参数");
 		}
 		return deliveryService.repealAllot(delivery);
 	}
 
+	/**
+	 * 经销商库存查询
+	 */
+	@GetMapping("/selectStockInventory")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入delivery")
+	public R<List<StockInventory>> selectStockInventory(@RequestParam("stockId") String stockId, @RequestParam("goodsId") String goodsId) {
+		List<StockInventory> stockInventoryList = new ArrayList<>();
+		stockInventoryList = deliveryService.selectStockInventory(stockId, goodsId);
+		List<StockInventory> stockInventoryListNew = deliveryService.selectStockInventoryList(null, stockId, goodsId);
+		for (StockInventory stockInventory : stockInventoryListNew) {
+			stockInventory.setOrderType("调入");
+			stockInventory.setSubQuantity(new BigDecimal("0.00"));
+			stockInventoryList.add(stockInventory);
+		}
+		List<StockInventory> stockInventoryListOld = deliveryService.selectStockInventoryList(stockId, null, goodsId);
+		for (StockInventory stockInventory : stockInventoryListOld) {
+			stockInventory.setOrderType("调出");
+			stockInventory.setAddQuantity(new BigDecimal("0.00"));
+			stockInventoryList.add(stockInventory);
+		}
+		return R.data(stockInventoryList);
+	}
+
+
 }

+ 4 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/mapper/DeliveryMapper.java

@@ -17,6 +17,7 @@
 package org.springblade.deliver.goods.mapper;
 
 import org.springblade.deliver.goods.entity.Delivery;
+import org.springblade.deliver.goods.entity.StockInventory;
 import org.springblade.deliver.goods.vo.DeliveryVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -39,4 +40,7 @@ public interface DeliveryMapper extends BaseMapper<Delivery> {
 	 */
 	List<DeliveryVO> selectDeliveryPage(IPage page, DeliveryVO delivery);
 
+    List<StockInventory> selectStockInventory(String stockId, String goodsId);
+
+	List<StockInventory> selectStockInventoryList(String oldStockId,String newStockId, String goodsId);
 }

+ 86 - 1
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/mapper/DeliveryMapper.xml

@@ -51,7 +51,92 @@
 
 
     <select id="selectDeliveryPage" resultMap="deliveryResultMap">
-        select * from business_delivery where is_deleted = 0
+        select *
+        from business_delivery
+        where is_deleted = 0
+    </select>
+    <select id="selectStockInventory" resultType="org.springblade.deliver.goods.entity.StockInventory">
+        SELECT
+        bo.order_no AS sysNo,
+        bo.busines_date AS businessDate,
+        CASE
+        bo.Bill_type
+        WHEN "XS" THEN
+        "销售"
+        WHEN "CG" THEN
+        "采购"
+        END AS orderType,
+        bgd.cname AS goodsName,
+        CASE
+        bo.Bill_type
+        WHEN "XS" THEN
+        boi.order_quantity
+        END AS subQuantity,
+        CASE
+        bo.Bill_type
+        WHEN "CG" THEN
+        boi.order_quantity
+        END AS addQuantity,
+        boi.storage_quantity AS totalQuantity,
+        CASE
+        bo.status
+        WHEN   0 THEN
+        "未确认"
+        ELSE
+        "已确认"
+        END AS status
+        FROM
+        business_order bo
+        LEFT JOIN business_order_items boi ON bo.id = boi.pid
+        LEFT JOIN basic_goods_desc bgd ON boi.item_id = bgd.id
+        WHERE
+        bo.is_deleted = 0
+        <if test="stockId!=null and stockId != ''">
+            and bo.storage_id = #{stockId}
+        </if>
+        <if test="goodsId!=null and goodsId != ''">
+            and bgd.id = #{goodsId}
+        </if>
+    </select>
+    <select id="selectStockInventoryList" resultType="org.springblade.deliver.goods.entity.StockInventory">
+        SELECT
+        bo.sys_no AS sysNo,
+        bo.business_date AS businessDate,
+        CASE
+        bo.Bill_type
+        WHEN "XS" THEN
+        "销售"
+        WHEN "CG" THEN
+        "采购"
+        WHEN "DB" THEN
+        "调拨"
+        END AS orderType,
+        bgd.cname AS goodsName,
+        boi.actual_quantity AS subQuantity,
+        boi.actual_quantity AS addQuantity,
+        boi.inventory_number AS totalQuantity,
+        CASE
+        bo.status
+        WHEN   0 THEN
+        "未确认"
+        ELSE
+        "已确认"
+        END AS status
+        FROM
+        business_delivery bo
+        LEFT JOIN business_delivery_items boi ON bo.id = boi.pid
+        LEFT JOIN basic_goods_desc bgd ON boi.item_id = bgd.id
+        WHERE
+        bo.is_deleted = 0
+        <if test="oldStockId!=null and oldStockId != ''">
+            and bo.storage_id = #{oldStockId}
+        </if>
+        <if test="newStockId!=null and newStockId != ''">
+            and bo.allot_storage_id = #{newStockId}
+        </if>
+        <if test="goodsId!=null and goodsId != ''">
+            and bgd.id = #{goodsId}
+        </if>
     </select>
 
 </mapper>

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

@@ -19,10 +19,13 @@ package org.springblade.deliver.goods.service;
 import com.trade.purchase.order.entity.Order;
 import org.springblade.core.tool.api.R;
 import org.springblade.deliver.goods.entity.Delivery;
+import org.springblade.deliver.goods.entity.StockInventory;
 import org.springblade.deliver.goods.vo.DeliveryVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.List;
+
 /**
  * 发货通知单 服务类
  *
@@ -96,4 +99,8 @@ public interface IDeliveryService extends IService<Delivery> {
     R documentaryStatusUpdate(Delivery delivery);
 
 	R takeDeliveryBatch(String ids);
+
+	List<StockInventory> selectStockInventory(String stockId, String goodsId);
+
+	List<StockInventory> selectStockInventoryList(String oldStockId,String newStockId, String goodsId);
 }

+ 10 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -1658,6 +1658,16 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 		return R.data("操作成功!");
 	}
 
+	@Override
+	public List<StockInventory> selectStockInventory(String stockId, String goodsId) {
+		return baseMapper.selectStockInventory( stockId,  goodsId);
+	}
+
+	@Override
+	public List<StockInventory> selectStockInventoryList(String oldStockId,String newStockId, String goodsId) {
+		return baseMapper.selectStockInventoryList(oldStockId,newStockId,  goodsId);
+	}
+
 
 	public void createProfit(Order order, BigDecimal createProfit) {
 		//检查是否使用返利,如果使用返利

+ 7 - 5
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java

@@ -15,7 +15,6 @@ import org.springblade.client.feign.IFeesDescClient;
 import org.springblade.client.feign.IGoodsDescClient;
 import org.springblade.client.feign.IMessageClient;
 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.BeanUtil;
 import org.springblade.finance.dto.ApplyDTO;
@@ -376,19 +375,21 @@ public class PaymentServiceImpl implements IPaymentService {
 							selectOrder.setActualPaymentStatus(2);
 							selectOrder.setStatus(OrderTypeEnum.XSDQR.getType());
 							selectOrder.setXcxStatus(OrderTypeEnum.XSDFH.getType());
-							ipjOrderClient.updateBySrcOrgId(selectOrder.getId()+"");
+							ipjOrderClient.updateBySrcOrgId(selectOrder.getId() + "");
 							//给角色为财务的人发送消息
 							R<String> clientDeptIds = sysClient.getRoleIds(parametersDetails.getTenantId(), "销售");
 							if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+								System.out.println("获取角色id:" + clientDeptIds.getData());
 								LocalDateTime now = LocalDateTime.now();
 								DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 								String formatted = now.format(formatter);
-								R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()),parametersDetails.getTenantId(),selectOrder.getSalesCompanyId());
+								R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()), parametersDetails.getTenantId(), selectOrder.getSalesCompanyId());
 								if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
 									for (User datum : userList.getData()) {
+										System.out.println("接收人:" + datum.getName());
 										//循环发送消息
 										Message sendMessage = new Message();
-										sendMessage.setParameter(selectOrder.getId()+"");
+										sendMessage.setParameter(selectOrder.getId() + "");
 										sendMessage.setUserName("外部用户");
 										sendMessage.setUserId(null);
 										sendMessage.setToUserId(datum.getId());
@@ -400,8 +401,9 @@ public class PaymentServiceImpl implements IPaymentService {
 										sendMessage.setUrl("/tirePartsMall/salesManagement/saleOrder/index");
 										sendMessage.setPageLabel("销售订单");
 										sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
-										sendMessage.setMessageBody("您有新的外部销售订单请及时处理!单号:" + selectOrder.getOrdNo() + "时间:" +formatted );
+										sendMessage.setMessageBody("您有新的外部销售订单请及时处理!单号:" + selectOrder.getOrdNo() + "时间:" + formatted);
 										R save = messageClient.save(sendMessage);
+										System.out.println("发送结果:" + save);
 										if (!save.isSuccess()) {
 											throw new SecurityException("发送消息失败");
 										}

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsTypeMapper.xml

@@ -58,7 +58,7 @@
         SELECT
         CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
         FROM
-        basic_corps_type
+        pjpf_corps_type
         WHERE
         parent_id = dept.id and is_deleted = 0
         ) AS hasChildren

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java

@@ -411,6 +411,8 @@ public class GoodsDescController extends BladeController {
 			} else if ("售价4".equals(priceSystem)) {
 				detail.setPrice(pjProductLaunch.get(0).getPriceFour());
 			}
+			detail.setSharedCompanyId(pjProductLaunch.get(0).getSourceCompanyId());
+			detail.setSharedCompanyName(pjProductLaunch.get(0).getSourceCompanyName());
 			detail.setInventory(pjProductLaunch.stream().map(PjProductLaunch::getInventory).reduce(BigDecimal.ZERO, BigDecimal::add));
 		}
 		return R.data(detail);

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/mapper/GoodsTypeMapper.xml

@@ -55,7 +55,7 @@
                 SELECT
                     CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
                 FROM
-                    pjpf_goods_type
+        pjpf_goods_type
                 WHERE
                     parent_id = dept.id and is_deleted = 0
             ) AS hasChildren

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml

@@ -34,6 +34,7 @@
         <result column="sales_company_id" property="salesCompanyId"/>
         <result column="sales_company_name" property="salesCompanyName"/>
         <result column="this_used_profit" property="thisUsedProfit"/>
+        <result column="inventory" property="inventory"/>
     </resultMap>
 
 

+ 189 - 212
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -202,6 +202,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 
 			// 保存订单明细
 			if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
+				//所属公司
+				R<Dept> dept = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId()));
+				if (ObjectUtil.isNotEmpty(dept)) {
+					order.setSalesCompanyId(dept.getData().getId());
+					order.setSalesCompanyName(dept.getData().getFullName());
+					if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()) {
+						order.setSharedCompanyId(dept.getData().getId());
+						order.setSharedCompanyName(dept.getData().getFullName());
+					} else {
+						order.setSharedCompanyId(order.getSharedCompanyId());
+						order.setSharedCompanyName(order.getSharedCompanyName());
+					}
+				} else {
+					throw new SecurityException("未维护所属公司");
+				}
 				StringBuilder goodsName = new StringBuilder();
 				StringBuilder retrieval = new StringBuilder();
 				for (PjOrderItems item : order.getOrderItemsList()) {
@@ -261,7 +276,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId())
 							.eq(PjProductLaunch::getSourceCompanyId, order.getSharedCompanyId());
 						PjProductLaunch productLaunch = productLaunchMapper.selectOne(lambdaQueryWrapper);
-						item.setCostprie(item.getGoodsNum().multiply(productLaunch.getShareCost()));
+						if (ObjectUtils.isNotNull(productLaunch)){
+							item.setCostprie(item.getGoodsNum().multiply(productLaunch.getShareCost()));
+						}else{
+							throw new RuntimeException("未查到共享商品成本价格");
+						}
 					}
 
 					//计算毛利
@@ -300,25 +319,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				//成本
 				order.setCost(order.getOrderItemsList().stream().filter(e -> e.getCostprie() != null).map(PjOrderItems::getCostprie).reduce(BigDecimal.ZERO, BigDecimal::add));
 			}
-			//所属公司
-			R<Dept> dept = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId()));
-			if (ObjectUtil.isNotEmpty(dept)) {
-				order.setSalesCompanyId(dept.getData().getId());
-				order.setSalesCompanyName(dept.getData().getFullName());
-				if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()) {
-					order.setSharedCompanyId(dept.getData().getId());
-					order.setSharedCompanyName(dept.getData().getFullName());
-				} else {
-					if (ObjectUtils.isNotNull(order.getOrderItemsList()) && order.getOrderItemsList().size() > 0) {
-						order.setSharedCompanyId(order.getOrderItemsList().get(0).getSharedCompanyId());
-						order.setSharedCompanyName(order.getOrderItemsList().get(0).getSharedCompanyName());
-					} else {
-						throw new SecurityException("获取所属公司失败");
-					}
-				}
-			} else {
-				throw new SecurityException("未维护所属公司");
-			}
 		} else if (order.getBsType().equals(OrderTypeEnum.PURCHASE.getType())) {//采购
 			//仓库名称
 			order.setStorageName(storageDescMapper.selectById(order.getStorageId()).getCname());
@@ -462,7 +462,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		PjOrder pjOrder = baseMapper.selectById(order.getId());
 		PjShip pjShip = shipMapper.selectOne(new LambdaQueryWrapper<PjShip>().eq(PjShip::getIsDeleted, 0)
 			.eq(PjShip::getOrdId, order.getId())
-			.eq(PjShip::getBizTypeName,"FHRW"));
+			.eq(PjShip::getBizTypeName, "FHRW"));
 		if (ObjectUtils.isNotNull(pjShip) && (ObjectUtils.isNull(pjShip.getSendTotalNum()) || new BigDecimal("0.00").compareTo(pjShip.getSendTotalNum()) == 0)) {
 			shipMapper.deleteById(pjShip.getId());
 			shipMapper.deleteByTaskId(pjShip.getTaskId());
@@ -639,215 +639,185 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (order == null) {
 			throw new SecurityException("审批通过失败");
 		}
-		if (OrderTypeEnum.SHIPED.getType().equals(order.getOriginalStatus())) {//已发货
-			if ("退款中".equals(order.getStatus())) {
-				throw new SecurityException("订单已审批通过请勿重复审批");
-			}
+		if ("XS".equals(order.getBsType())){
+			if (OrderTypeEnum.SHIPED.getType().equals(order.getOriginalStatus()) || OrderTypeEnum.RECEIVEDGOODS.getType().equals(order.getOriginalStatus())) {//已发货
+				if ("退款中".equals(order.getStatus())) {
+					throw new SecurityException("订单已审批通过请勿重复审批");
+				}
 
-			if (OrderTypeEnum.WEB.getType().equals(order.getBusinessSource())) {
-				order.setStatus("退款中");
-			} else {
-				order.setStatus("退款中");
-				order.setXcxStatus("退款中");
-			}
+				if (OrderTypeEnum.WEB.getType().equals(order.getBusinessSource())) {
+					order.setStatus("退款中");
+				} else {
+					order.setStatus("退款中");
+					order.setXcxStatus("退款中");
+				}
 
-			List<PjShip> shipList = shipMapper.selectList(new LambdaQueryWrapper<PjShip>().eq(PjShip::getOrdNo, order.getOrdNo()).eq(PjShip::getStatusName, "待出库"));
-			if (shipList.size() > 0) {
-				List<Long> ids = shipList.stream().map(PjShip::getId).collect(Collectors.toList());
-				shipMapper.deleteBatchIds(ids);
-			}
+				List<PjShip> shipList = shipMapper.selectList(new LambdaQueryWrapper<PjShip>().eq(PjShip::getOrdNo, order.getOrdNo()).eq(PjShip::getStatusName, "待出库"));
+				if (shipList.size() > 0) {
+					List<Long> ids = shipList.stream().map(PjShip::getId).collect(Collectors.toList());
+					shipMapper.deleteBatchIds(ids);
+				}
 
-			//生成退货入库单
-			PjShip pjShip = new PjShip();
-			// 获取系统编号
-			R billNo = serialClient.getBillNo(OrderTypeEnum.TKSHGD.getType(), OrderTypeEnum.TKSHGD.getType(), OrderTypeEnum.TKSHGD.getType());
-			if (billNo.getCode() != 200) {
-				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-				return R.fail(500, "生成系统编号失败");
-			}
-			BeanUtil.copyProperties(order, pjShip);
-			pjShip.setId(null);
-			pjShip.setBillno((String) billNo.getData());
-			pjShip.setOrdNo(order.getOrdNo());
-			pjShip.setOrdId(order.getId());
-			pjShip.setSrcOrdNo(order.getSrcOrdNo());
-			pjShip.setStatusName(OrderTypeEnum.TREATWAREHOUSING.getType());
-			pjShip.setBsType(order.getBusinessSource());
-			pjShip.setTenantId(AuthUtil.getTenantId());
-			pjShip.setBizTypeName(OrderTypeEnum.TKSHGD.getType());
-			pjShip.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-			pjShip.setCreateUser(AuthUtil.getUserId());
-			pjShip.setCreateTime(new Date());
-			shipMapper.insert(pjShip);
-			//根据主表id获得明细数据
-			List<PjOrderItems> list = orderItemsMapper.selectList(new QueryWrapper<PjOrderItems>()
-				.eq("pid", order.getId())
-				.eq("is_deleted", 0)
-				.eq("tenant_id", AuthUtil.getTenantId()));
-			if (ObjectUtil.isNotEmpty(list)) {
-				for (PjOrderItems e : list) {
-					if (ObjectUtils.isNull(e.getSendNum()) || e.getSendNum().compareTo(new BigDecimal("0.00")) == 0) {
-						continue;
-					} else {
-						//根据销售明细创建入库工单明细
-						PjShipItems shipItems = new PjShipItems();
-						BeanUtil.copyProperties(e, shipItems);
-
-						shipItems.setId(null);
-						shipItems.setPid(pjShip.getId());
-						shipItems.setSrcItemId(e.getId());
-						shipItems.setCreateTime(new Date());
-						shipItems.setCreateUser(AuthUtil.getUserId());
-						shipItems.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-						shipItems.setSendNum(e.getSendNum());
-						if (ObjectUtils.isNotNull(shipItems.getCostprie()) && new BigDecimal("0.00").compareTo(shipItems.getCostprie()) != 0) {
-							shipItems.setPrice(shipItems.getCostprie().divide(e.getGoodsNum(), MathContext.DECIMAL32));
+				//生成退货入库单
+				PjShip pjShip = new PjShip();
+				// 获取系统编号
+				R billNo = serialClient.getBillNo(OrderTypeEnum.TKSHGD.getType(), OrderTypeEnum.TKSHGD.getType(), OrderTypeEnum.TKSHGD.getType());
+				if (billNo.getCode() != 200) {
+					TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+					return R.fail(500, "生成系统编号失败");
+				}
+				BeanUtil.copyProperties(order, pjShip);
+				pjShip.setId(null);
+				pjShip.setBillno((String) billNo.getData());
+				pjShip.setOrdNo(order.getOrdNo());
+				pjShip.setOrdId(order.getId());
+				pjShip.setSrcOrdNo(order.getSrcOrdNo());
+				pjShip.setStatusName(OrderTypeEnum.TREATWAREHOUSING.getType());
+				pjShip.setBsType(order.getBusinessSource());
+				pjShip.setTenantId(AuthUtil.getTenantId());
+				pjShip.setBizTypeName(OrderTypeEnum.TKSHGD.getType());
+				pjShip.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+				pjShip.setCreateUser(AuthUtil.getUserId());
+				pjShip.setCreateTime(new Date());
+				shipMapper.insert(pjShip);
+				//根据主表id获得明细数据
+				List<PjOrderItems> list = orderItemsMapper.selectList(new QueryWrapper<PjOrderItems>()
+					.eq("pid", order.getId())
+					.eq("is_deleted", 0)
+					.eq("tenant_id", AuthUtil.getTenantId()));
+				if (ObjectUtil.isNotEmpty(list)) {
+					for (PjOrderItems e : list) {
+						if (ObjectUtils.isNull(e.getSendNum()) || e.getSendNum().compareTo(new BigDecimal("0.00")) == 0) {
+							continue;
+						} else {
+							//根据销售明细创建入库工单明细
+							PjShipItems shipItems = new PjShipItems();
+							BeanUtil.copyProperties(e, shipItems);
+
+							shipItems.setId(null);
+							shipItems.setPid(pjShip.getId());
+							shipItems.setSrcItemId(e.getId());
+							shipItems.setCreateTime(new Date());
+							shipItems.setCreateUser(AuthUtil.getUserId());
+							shipItems.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+							shipItems.setSendNum(e.getSendNum());
+							if (ObjectUtils.isNotNull(shipItems.getCostprie()) && new BigDecimal("0.00").compareTo(shipItems.getCostprie()) != 0) {
+								shipItems.setPrice(shipItems.getCostprie().divide(e.getGoodsNum(), MathContext.DECIMAL32));
+							}
+							shipItemsMapper.insert(shipItems);
 						}
-						shipItemsMapper.insert(shipItems);
 					}
 				}
-			}
 
-			//生成历史记录
-			saveHistory(order.getId(), "退款中");
+				//生成历史记录
+				saveHistory(order.getId(), "退款中");
 
-		} else {//未发货
-			if ("已取消".equals(order.getStatus()) && OrderTypeEnum.WEB.getType().equals(order.getBusinessSource())) {
-				throw new SecurityException("订单已审批通过请勿重复审批");
-			} else if ("已退款".equals(order.getStatus()) && OrderTypeEnum.XCX.getType().equals(order.getBusinessSource())) {
-				throw new SecurityException("订单已审批通过请勿重复审批");
-			}
-
-			List<PjShip> shipList = shipMapper.selectList(new LambdaQueryWrapper<PjShip>().eq(PjShip::getOrdNo, order.getOrdNo()));
-			if (shipList.size() > 0) {
-				List<Long> ids = shipList.stream().map(PjShip::getId).collect(Collectors.toList());
-				shipMapper.deleteBatchIds(ids);
-			}
+			} else {//未发货
+				if ("已取消".equals(order.getStatus()) && OrderTypeEnum.WEB.getType().equals(order.getBusinessSource())) {
+					throw new SecurityException("订单已审批通过请勿重复审批");
+				} else if ("已退款".equals(order.getStatus()) && OrderTypeEnum.XCX.getType().equals(order.getBusinessSource())) {
+					throw new SecurityException("订单已审批通过请勿重复审批");
+				}
 
-			//修改库存账信息
-			//根据主表id获得明细数据
-			List<PjOrderItems> list = orderItemsMapper.selectList(new QueryWrapper<PjOrderItems>()
-				.eq("pid", order.getId())
-				.eq("is_deleted", 0)
-				.eq("tenant_id", AuthUtil.getTenantId()));
-			if (CollectionUtils.isNotEmpty(list)) {
-				list.forEach(item -> {
-					if (item.getId() == null) {
-						item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-						item.setCreateTime(new Date());
-						item.setCreateUser(AuthUtil.getUserId());
-						item.setPid(order.getId());
-						item.setTenantId(AuthUtil.getTenantId());
-						orderItemsMapper.insert(item);
-					} else {
-						item.setUpdateTime(new Date());
-						item.setUpdateUser(AuthUtil.getUserId());
-						item.setPid(order.getId());
-						orderItemsMapper.updateById(item);
-					}
+				List<PjShip> shipList = shipMapper.selectList(new LambdaQueryWrapper<PjShip>().eq(PjShip::getOrdNo, order.getOrdNo()));
+				if (shipList.size() > 0) {
+					List<Long> ids = shipList.stream().map(PjShip::getId).collect(Collectors.toList());
+					shipMapper.deleteBatchIds(ids);
+				}
 
-					//获得商品
-					PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
-					if (ObjectUtil.isEmpty(goodsDesc)) {
-						throw new RuntimeException("商品数据异常");
-					}
+				//修改库存账信息
+				//根据主表id获得明细数据
+				List<PjOrderItems> list = orderItemsMapper.selectList(new QueryWrapper<PjOrderItems>()
+					.eq("pid", order.getId())
+					.eq("is_deleted", 0)
+					.eq("tenant_id", AuthUtil.getTenantId()));
+				if (CollectionUtils.isNotEmpty(list)) {
+					list.forEach(item -> {
+						if (item.getId() == null) {
+							item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+							item.setCreateTime(new Date());
+							item.setCreateUser(AuthUtil.getUserId());
+							item.setPid(order.getId());
+							item.setTenantId(AuthUtil.getTenantId());
+							orderItemsMapper.insert(item);
+						} else {
+							item.setUpdateTime(new Date());
+							item.setUpdateUser(AuthUtil.getUserId());
+							item.setPid(order.getId());
+							orderItemsMapper.updateById(item);
+						}
 
-					//获得库存账
-					/*LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-					lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
-						.eq(PjStockDesc::getIsDeleted, 0)
-						.eq(PjStockDesc::getSalesCompanyId, order.getSalesCompanyId())
-						.eq(PjStockDesc::getGoodsId, goodsDesc.getId())
-						.eq(PjStockDesc::getStorageId, order.getStorageId());
-					if (ObjectUtil.isNotEmpty(goodsDesc.getWhether()) && goodsDesc.getWhether().equals("1")) {//管理批次号
-						if (ObjectUtil.isEmpty(item.getDot())) {
-							throw new RuntimeException(goodsDesc.getCname() + "已开启批次号管理,请填写批次号");
+						//获得商品
+						PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
+						if (ObjectUtil.isEmpty(goodsDesc)) {
+							throw new RuntimeException("商品数据异常");
 						}
-						lambdaQueryWrapper.eq(PjStockDesc::getDot, item.getDot());
-					} else {
-						lambdaQueryWrapper.and(i -> i.eq(PjStockDesc::getDot, "").or().isNull(PjStockDesc::getDot));
-					}
 
-					PjStockDesc stockOne = stockDescMapper.selectOne(lambdaQueryWrapper);
-					if (ObjectUtil.isEmpty(stockOne)) {
-						throw new RuntimeException("获取库存账失败");
-					} else {
-						stockOne.setUpdateTime(new Date());
-						stockOne.setUpdateUser(AuthUtil.getUserId());
-						stockOne.setBalanceQuantity(stockOne.getBalanceQuantity().add(item.getSendNum()));
-						stockOne.setStoreInventory(stockOne.getBalanceQuantity());
-
-						//库存金额
-						BigDecimal inventoryAmount = item.getSendNum().multiply(item.getPrice());
-						stockOne.setInventoryAmount(stockOne.getInventoryAmount().add(inventoryAmount));
-
-						//库存成本价
-						stockOne.setInventoryCostPrice(stockOne.getInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
-						stockDescMapper.updateById(stockOne);
-					}*/
-
-					/** ----------------------修改上架库存---------------------- */
-					//查询所有该商品的库存
-					LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapperList = new LambdaQueryWrapper<>();
-					lambdaQueryWrapperList.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
-						.eq(PjStockDesc::getIsDeleted, 0)
-						.eq(PjStockDesc::getSalesCompanyId, order.getSalesCompanyId())
-						.eq(PjStockDesc::getGoodsId, goodsDesc.getId());
-					List<PjStockDesc> stockDescList = stockDescMapper.selectList(lambdaQueryWrapperList);
-
-					//库存总数量
-					BigDecimal balanceQuantity = stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-
-					//查询所有上架商品
-					LambdaQueryWrapper<PjProductLaunch> productLaunchQueryWrapper = new LambdaQueryWrapper<>();
-					productLaunchQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
-						.eq(PjProductLaunch::getIsDeleted, 0)
-						.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId())
-						.and(i -> i.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId()).or().in(PjProductLaunch::getSourceCompanyId, order.getSalesCompanyId()))
-						.eq(PjProductLaunch::getGoodsId, goodsDesc.getId());
-					List<PjProductLaunch> productLaunch = productLaunchMapper.selectList(productLaunchQueryWrapper);
-					//修改上架数量
-					if (ObjectUtil.isNotEmpty(productLaunch)) {
-						productLaunch.forEach(e -> {
-							e.setInventory(e.getInventory().add(item.getGoodsNum()));
-							productLaunchMapper.updateById(e);
-						});
-					}
+						/** ----------------------修改上架库存---------------------- */
+						//查询所有该商品的库存
+						LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapperList = new LambdaQueryWrapper<>();
+						lambdaQueryWrapperList.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
+							.eq(PjStockDesc::getIsDeleted, 0)
+							.eq(PjStockDesc::getSalesCompanyId, order.getSalesCompanyId())
+							.eq(PjStockDesc::getGoodsId, goodsDesc.getId());
+						List<PjStockDesc> stockDescList = stockDescMapper.selectList(lambdaQueryWrapperList);
 
-					/** ----------------------修改上架库存---------------------- */
-				});
-			}
+						//库存总数量
+						BigDecimal balanceQuantity = stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 
-			//生成历史记录
-			saveHistory(order.getId(), "已退款");
+						//查询所有上架商品
+						LambdaQueryWrapper<PjProductLaunch> productLaunchQueryWrapper = new LambdaQueryWrapper<>();
+						productLaunchQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+							.eq(PjProductLaunch::getIsDeleted, 0)
+							.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId())
+							.and(i -> i.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId()).or().in(PjProductLaunch::getSourceCompanyId, order.getSalesCompanyId()))
+							.eq(PjProductLaunch::getGoodsId, goodsDesc.getId());
+						List<PjProductLaunch> productLaunch = productLaunchMapper.selectList(productLaunchQueryWrapper);
+						//修改上架数量
+						if (ObjectUtil.isNotEmpty(productLaunch)) {
+							productLaunch.forEach(e -> {
+								e.setInventory(e.getInventory().add(item.getGoodsNum()));
+								productLaunchMapper.updateById(e);
+							});
+						}
 
-			/** ----------------------调用退款接口---------------------- */
+						/** ----------------------修改上架库存---------------------- */
+					});
+				}
 
-			/** ----------------------调用退款接口---------------------- */
+				//生成历史记录
+				saveHistory(order.getId(), "已退款");
 
-			if (OrderTypeEnum.WEB.getType().equals(order.getBusinessSource())) {
-				order.setStatus("已取消");
-			} else {
-				order.setStatus("已退款");
-				order.setXcxStatus("已退款");
-				R<Map<String, String>> r = payService.refund(order.getId(), order.getPaymentAmountTl(), order.getOrdNo(), order.getSrcOrdNo(), order.getOldTrxId());
-				if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
-					Map<String, String> map = r.getData();
-					String returnCode = map.get("retcode");
-					String returnMsg = map.get("retmsg");
-					if ("FAIL".equalsIgnoreCase(returnCode)) {
-						if ("3008".equals(map.get("trxstatus"))) {
-							throw new RuntimeException("退款失败!原因:账户余额不足");
-						} else if ("3999".equals(map.get("trxstatus"))) {
-							throw new RuntimeException("退款失败!原因:金额错误,当前可退货金额为:0.00");
-						} else {
-							throw new RuntimeException("退款失败!原因:" + returnMsg);
+				/** ----------------------调用退款接口---------------------- */
+
+				/** ----------------------调用退款接口---------------------- */
+
+				if (OrderTypeEnum.WEB.getType().equals(order.getBusinessSource())) {
+					order.setStatus("已取消");
+				} else {
+					order.setStatus("已退款");
+					order.setXcxStatus("已退款");
+					R<Map<String, String>> r = payService.refund(order.getId(), order.getPaymentAmountTl(), order.getOrdNo(), order.getSrcOrdNo(), order.getOldTrxId());
+					if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+						Map<String, String> map = r.getData();
+						String returnCode = map.get("retcode");
+						String returnMsg = map.get("retmsg");
+						if ("FAIL".equalsIgnoreCase(returnCode)) {
+							if ("3008".equals(map.get("trxstatus"))) {
+								throw new RuntimeException("退款失败!原因:账户余额不足");
+							} else if ("3999".equals(map.get("trxstatus"))) {
+								throw new RuntimeException("退款失败!原因:金额错误,当前可退货金额为:0.00");
+							} else {
+								throw new RuntimeException("退款失败!原因:" + returnMsg);
+							}
 						}
+					} else {
+						throw new RuntimeException("退款失败!服务器错误");
 					}
-				} else {
-					throw new RuntimeException("退款失败!服务器错误");
 				}
 			}
+		}else{
+			order.setStatus("待确认");
 		}
 
 		order.setCheckStatus("审核完成");
@@ -884,9 +854,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (order == null) {
 			throw new SecurityException("审批驳回失败");
 		}
-
-		order.setStatus(order.getOriginalStatus());
-		order.setCheckStatus("审批驳回");
+		if ("XS".equals(order.getBsType())){
+			order.setStatus(order.getOriginalStatus());
+			order.setCheckStatus("审批驳回");
+		}else{
+			order.setStatus("录入");
+		}
 		baseMapper.updateById(order);
 
 		return R.success("操作成功");
@@ -958,7 +931,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (!financeProcess.isSuccess()) {
 			throw new SecurityException("操作失败,请联系管理员");
 		}
-		declare.setStatus(declare.getOriginalStatus());
+		if ("XS".equals(declare.getBsType())){
+			declare.setStatus(declare.getOriginalStatus());
+		}else{
+			declare.setStatus("录入");
+		}
 		declare.setCheckStatus("审核撤销");
 		baseMapper.updateById(declare);
 		return declare;

+ 5 - 8
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/impl/ProductLaunchServiceImpl.java

@@ -331,7 +331,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 						.eq(PjProductLaunch::getIsDeleted, 0)
 						.eq(PjProductLaunch::getBillType, 1)
 						.eq(PjProductLaunch::getGoodsId, productLaunch.getGoodsId())
-						.eq(PjProductLaunch::getSalesCompanyId, item)
+						.eq(PjProductLaunch::getSalesCompanyId, item.getId())
 						.eq(PjProductLaunch::getSourceCompanyId, productLaunch.getSalesCompanyId());
 					PjProductLaunch selOne = baseMapper.selectOne(lambdaQueryWrapper1);
 
@@ -345,6 +345,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 						launch.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 						launch.setSourceId(productLaunch.getId());
 						launch.setSourceCompanyId(productLaunch.getSalesCompanyId());
+						launch.setSourceCompanyName(productLaunch.getSalesCompanyName());
 						launch.setTenantId(AuthUtil.getTenantId());
 						launch.setSharedCompany(null);
 						launch.setSalesCompanyId(item.getId());
@@ -371,9 +372,6 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 						launchList.add(selOne);
 					}
 				}
-				if (ObjectUtils.isNotNull(productLaunch.getSharedCompany())){
-					productLaunch.setSharedCompany(productLaunch.getSharedCompany().substring(1));
-				}
 				LambdaQueryWrapper<PjProductLaunch> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 				lambdaQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
 					.eq(PjProductLaunch::getBillType, 1)
@@ -691,7 +689,8 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 			}
 			//获得共享公司
 			if (StringUtil.isNotBlank(productLaunch.getSharedCompany())) {
-				R<List<Dept>> dept = iSysClient.getDeptListIByName(AuthUtil.getTenantId(), productLaunch.getSharedCompany());
+				R<List<Dept>> dept = iSysClient.selectByDeptIds(productLaunch.getSharedCompany());
+				productLaunch.setSharedCompany("");
 				for (Dept item : dept.getData()) {
 					productLaunch.setSharedCompany(productLaunch.getSharedCompany() + "," + item.getId());
 					PjProductLaunch launch = new PjProductLaunch();
@@ -716,6 +715,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 						launch.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 						launch.setSourceId(productLaunch.getId());
 						launch.setSourceCompanyId(productLaunch.getSalesCompanyId());
+						launch.setSourceCompanyName(productLaunch.getSalesCompanyName());
 						launch.setTenantId(AuthUtil.getTenantId());
 						launch.setSharedCompany(null);
 						launch.setSalesCompanyId(item.getId());
@@ -740,9 +740,6 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 						launchList.add(selOne);
 					}
 				}
-				if (ObjectUtils.isNotNull(productLaunch.getSharedCompany())){
-					productLaunch.setSharedCompany(productLaunch.getSharedCompany().substring(1));
-				}
 				LambdaQueryWrapper<PjProductLaunch> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 				lambdaQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
 					.eq(PjProductLaunch::getBillType, 1)

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/controller/ShipController.java

@@ -93,6 +93,7 @@ public class ShipController extends BladeController {
 			.eq(PjShip::getIsDeleted, 0)
 			.eq(PjShip::getSalesCompanyId, AuthUtil.getDeptId())//公司
 			.like(ObjectUtil.isNotEmpty(ship.getOrdNo()), PjShip::getOrdNo, ship.getOrdNo())//销售订单
+			.like(ObjectUtil.isNotEmpty(ship.getBillno()), PjShip::getBillno, ship.getBillno())//销售订单
 			.like(ObjectUtil.isNotEmpty(ship.getSrcOrdNo()), PjShip::getSrcOrdNo, ship.getSrcOrdNo())//销售订单
 			.eq(ObjectUtil.isNotEmpty(ship.getStorageId()), PjShip::getStorageId, ship.getStorageId())//仓库
 			.like(ObjectUtil.isNotEmpty(ship.getStorageName()), PjShip::getStorageName, ship.getStorageName())

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java

@@ -210,6 +210,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					order.setPhone(corpsAttn.getTel());
 					order.setBsType(OrderTypeEnum.SALES.getType());
 					order.setBusinessSource(OrderTypeEnum.XCX.getType());
+					order.setReceivableType("网络支付");
 					orderMapper.insert(order);
 					ids.append(order.getId()).append(",");
 					//保存销售明细信息
@@ -227,6 +228,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 							orderItems.setTenantId(AuthUtil.getTenantId());
 							orderItems.setBillNo(order.getOrdNo());
 							orderItems.setBizType(order.getBsType());
+							orderItems.setInventory(e.getInventory());
 							orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
 							orderItems.setUrl(ObjectUtils.isNotNull(e.getFilesList()) && e.getFilesList().size() > 0 ? e.getFilesList().get(0).getUrl() : "");
 							orderItemsMapper.insert(orderItems);