Przeglądaj źródła

达沃特 诺晶 福达 bug 2023年5月29日16:56:14

纪新园 2 lat temu
rodzic
commit
1cad15faab
13 zmienionych plików z 134 dodań i 15 usunięć
  1. 5 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IOrderDescClient.java
  2. 2 0
      blade-service/blade-client/src/main/java/org/springblade/client/serial/service/impl/SerialServiceImpl.java
  3. 1 1
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/OrderItemsController.java
  4. 27 5
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java
  5. 6 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java
  6. 6 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.java
  7. 25 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml
  8. 1 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java
  9. 16 4
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/BidingItemsServiceImpl.java
  10. 11 4
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  11. 10 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/controller/StockGoodsController.java
  12. 2 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/IStockGoodsService.java
  13. 22 1
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java

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

@@ -5,6 +5,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.entity.OrderFiles;
 import org.springblade.purchase.sales.vo.OrderStatisticsVo;
+import org.springblade.purchase.sales.vo.OrderVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -39,6 +40,7 @@ public interface IOrderDescClient {
 	String SHIPPING_ORDER = API_PREFIX + "/shippingOrder";
 	String GET_BY_ORDER_QUANTITY = API_PREFIX + "/getByOrderQuantity";
 	String SAVE = API_PREFIX + "/save";
+	String ORDER_INVENTORY_LIST = API_PREFIX + "/orderInventoryList";
 
 	/**
 	 * 修改采购订单状态
@@ -124,4 +126,7 @@ public interface IOrderDescClient {
 
 	@GetMapping(SAVE)
 	boolean save(Order orderNew);
+
+	@GetMapping(ORDER_INVENTORY_LIST)
+	List<OrderVO> orderInventoryList( @RequestParam("billType") String billType, @RequestParam("itemId") Long itemId, @RequestParam("corpId") Long corpId);
 }

+ 2 - 0
blade-service/blade-client/src/main/java/org/springblade/client/serial/service/impl/SerialServiceImpl.java

@@ -26,6 +26,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 
@@ -50,6 +51,7 @@ public class SerialServiceImpl extends ServiceImpl<SerialMapper, Serial> impleme
 	 * @return
 	 */
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public synchronized String getBillNo(String type,String tradeType,String serialType) {
 		Date date = new Date();
 		String billNo = null;

+ 1 - 1
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/OrderItemsController.java

@@ -228,7 +228,7 @@ public class OrderItemsController extends BladeController {
 	@ApiOperation(value = "导出订单明细模板")
 	public void exportPrice(HttpServletResponse response) {
 		List<OrderItemsExcel> list = new ArrayList<>();
-		ExcelUtil.export(response, "导入模板-销售订单明细", "订单明细数据表", list, OrderItemsExcel.class);
+		ExcelUtil.export(response, "导入模板-订单明细", "订单明细数据表", list, OrderItemsExcel.class);
 	}
 
 	/**

+ 27 - 5
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java

@@ -51,6 +51,7 @@ import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 出口销售单控制器
@@ -1332,7 +1333,21 @@ public class ExportOrderController extends BladeController {
 		lambdaQueryWrapper.eq(OrderItems::getTenantId, SecureUtil.getTenantId());//租户id
 		lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0);//订单是否有效
 		lambdaQueryWrapper.eq(OrderItems::getBillType, OrderTypeEnum.SALES.getType());//订单类型
-		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(orderItems.getPid()), OrderItems::getPid, orderItems.getPid());//主表id
+		if (ObjectUtils.isNotNull(orderItems.getPid())){
+			//主表id
+			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(orderItems.getPid()), OrderItems::getPid, orderItems.getPid());
+		}else{
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			orderLambdaQueryWrapper.eq(Order::getIsDeleted, 0)
+				.eq(Order::getTenantId, AuthUtil.getTenantId())
+				.eq(Order::getBillType, OrderTypeEnum.SALES.getType())
+				.eq(Order::getTradeType, OrderTypeEnum.EXPORT.getType())
+				.apply("storage_quantity > purchase_quantity");//销售数量大于采购数量
+			List<Order> orderList = orderService.list(orderLambdaQueryWrapper);
+			List<Long> orderId = orderList.stream().map(Order::getId).collect(Collectors.toList());
+			//主表id
+			lambdaQueryWrapper.in(ObjectUtils.isNotNull(orderId), OrderItems::getPid, orderId);
+		}
 		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(orderItems.getBillNo()), OrderItems::getBillNo, orderItems.getBillNo());//销售单号
 		if (ObjectUtils.isNotNull(orderItems.getBusinesDateList()) && orderItems.getBusinesDateList().size() > 0) {
 			lambdaQueryWrapper.ge(OrderItems::getBusinesDate, orderItems.getBusinesDateList().get(0));
@@ -1343,10 +1358,17 @@ public class ExportOrderController extends BladeController {
 			lambdaQueryWrapper.eq(OrderItems::getPlannedDeliveryDate, orderItems.getPlannedDeliveryDateList().get(1));//计划交货日期止
 		}
 		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(orderItems.getCorpId()), OrderItems::getCorpId, orderItems.getCorpId());//供应商
-
-		if(ObjectUtils.isNotEmpty(orderItems.getShowAll()) && orderItems.getShowAll() == 0) {//0代表不显示全部
-			lambdaQueryWrapper.eq(OrderItems::getFudaPurchaseStatus, "待采购");//采购状态
-			lambdaQueryWrapper.apply("order_quantity > purchase_quantity");//销售数量大于采购数量
+		//0代表不显示全部
+		if(ObjectUtils.isNotEmpty(orderItems.getShowAll()) && orderItems.getShowAll() == 0) {
+			//采购状态
+			lambdaQueryWrapper.eq(OrderItems::getFudaPurchaseStatus, "待采购");
+			//销售数量大于采购数量
+			lambdaQueryWrapper.apply("order_quantity > purchase_quantity");
+		}else{
+			//采购状态
+			lambdaQueryWrapper.ne(OrderItems::getFudaPurchaseStatus, "待采购");
+			//销售数量大于采购数量
+			lambdaQueryWrapper.ne(OrderItems::getPurchaseQuantity,new BigDecimal("0.00"));
 		}
 		lambdaQueryWrapper.orderByAsc(OrderItems::getSort);
 		List<OrderItems> pages = orderItemsService.list(lambdaQueryWrapper);

+ 6 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java

@@ -29,6 +29,7 @@ import org.springblade.purchase.sales.service.IOrderFilesService;
 import org.springblade.purchase.sales.service.IOrderItemsService;
 import org.springblade.purchase.sales.service.IOrderService;
 import org.springblade.purchase.sales.vo.OrderStatisticsVo;
+import org.springblade.purchase.sales.vo.OrderVO;
 import org.springblade.stock.feign.IStockGoodsClient;
 import org.springblade.stock.vo.StockGoodsVO;
 import org.springblade.system.feign.IDictBizClient;
@@ -429,5 +430,10 @@ public class OrderDescClient implements IOrderDescClient {
 		return iOrderService.save(orderNew);
 	}
 
+	@Override
+	public List<OrderVO> orderInventoryList( String billType, Long itemId, Long corpId) {
+		return iOrderService.orderInventoryList(billType,itemId,corpId);
+	}
+
 
 }

+ 6 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.java

@@ -364,4 +364,10 @@ public interface OrderMapper extends BaseMapper<Order> {
 	List<Order> turnoverAnalysisList(String tenantId, String type, String statusDate, String endDate, String billType);
 
     void updateAmount(Order order);
+
+    List<OrderVO> orderInventoryList(@Param("tenantId") String tenantId,
+									 @Param("tradeType") String tradeType,
+									 @Param("billType") String billType,
+									 @Param("itemId") Long itemId,
+									 @Param("corpId") Long corpId);
 }

+ 25 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml

@@ -3553,6 +3553,31 @@ ORDER BY
             and DATE_FORMAT(busines_date,'%Y-%m-%d') &lt;= DATE_FORMAT(#{endDate},'%Y-%m-%d')
         </if>
     </select>
+    <select id="orderInventoryList" resultType="org.springblade.purchase.sales.vo.OrderVO">
+        SELECT
+        DISTINCT
+        bo.id,
+        bo.order_no,
+        bo.busines_date,
+        item.corp_id,
+        item.order_quantity as orderQuantity
+        FROM
+        business_order bo
+        LEFT JOIN business_order_items item ON bo.id = item.pid
+        WHERE
+        bo.is_deleted = '0'
+        AND bo.`status` != '0'
+        AND item.is_deleted = '0'
+        AND bo.tenant_id = #{tenantId}
+        AND bo.trade_type = #{tradeType}
+        AND bo.bill_type = #{billType}
+        AND item.item_id = #{itemId}
+        AND item.corp_id = #{corpId}
+        <if test='tenantId != null and tenantId != "" and tenantId == "681169"'>
+            and bo.actual_delivery_date is NULL
+            AND bo.order_status NOT IN ('录入')
+        </if>
+    </select>
 
     <update id="updateStockGoods" parameterType="org.springblade.stock.entity.StockGoods">
         UPDATE business_stock_goods SET surplus_route_quantity = #{surplusRouteQuantity},locking_quantity = #{lockingQuantity} WHERE tenant_id = #{tenantId} AND id = #{id} AND is_deleted = 0

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

@@ -167,6 +167,7 @@ public interface IOrderService extends IService<Order> {
 	 */
 	IPage<OrderVO> orderInventory(IPage<OrderVO> page, String tenantId, String tradeType, String billType, Long itemId, Long corpId);
 
+	List<OrderVO> orderInventoryList( String billType, Long itemId, Long corpId);
 	/**
 	 * 经销商确认销售订单
 	 * @param order

+ 16 - 4
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/BidingItemsServiceImpl.java

@@ -10,11 +10,14 @@ import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.feign.ICorpsAttnClient;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IWechatClient;
+import org.springblade.common.constant.LauncherConstant;
+import org.springblade.core.launch.BladeApplication;
 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.ObjectUtil;
 import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.purchase.sales.PurchaseSalesApplication;
 import org.springblade.purchase.sales.entity.Biding;
 import org.springblade.purchase.sales.entity.BidingAgent;
 import org.springblade.purchase.sales.entity.BidingItems;
@@ -26,6 +29,7 @@ import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Date;
@@ -97,7 +101,16 @@ public class BidingItemsServiceImpl extends ServiceImpl<BidingItemsMapper, Bidin
 		if (ObjectUtils.isNull(list) || list.size() == 0) {
 			return list;
 		}
+
 		if (1 == distinguish) {
+			//获得标书明细
+			LambdaQueryWrapper<BidingItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(BidingItems::getTenantId, AuthUtil.getTenantId());
+			lambdaQueryWrapper.eq(BidingItems::getIsDeleted, 0);
+			lambdaQueryWrapper.eq(BidingItems::getPid, pid);
+			lambdaQueryWrapper.eq(BidingItems::getDistinguish, distinguish);
+			List<BidingItems> bidingItemsList = baseMapper.selectList(lambdaQueryWrapper);
+			list.addAll(bidingItemsList);
 			List<BidingItems> sortedList = list.stream().filter(e -> ObjectUtils.isNotNull(e.getSeaFreight()))
 				.sorted(Comparator.comparing(BidingItems::getSeaFreight))
 				.collect(Collectors.toList());
@@ -106,14 +119,13 @@ public class BidingItemsServiceImpl extends ServiceImpl<BidingItemsMapper, Bidin
 			for (int i = 0; i < sortedList.size(); i++) {
 				if (i > 0) {
 					if (sortedList.get(i).getSeaFreight().equals(sortedList.get(i - 1).getSeaFreight())) {
-						sortedList.get(i).setRanking(sort);
+						sortedList.get(i).setRanking(sortedList.get(i - 1).getRanking());
 					} else {
-						sortedList.get(i).setRanking(sort + 1);
+						sort = sort + 1;
+						sortedList.get(i).setRanking(sort);
 					}
-					sort = sort + 1;
 				} else {
 					sortedList.get(i).setRanking(sort);
-					sort = sort + 1;
 				}
 				//id为空 新增
 				if (sortedList.get(i).getId() == null) {

+ 11 - 4
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -1937,6 +1937,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		return page.setRecords(baseMapper.orderInventory(page, tenantId, tradeType, billType, itemId, corpId));
 	}
 
+	@Override
+	public List<OrderVO> orderInventoryList( String billType, Long itemId, Long corpId) {
+		return baseMapper.orderInventoryList(AuthUtil.getTenantId(), "GN", billType, itemId, corpId);
+	}
+
 	/**
 	 * @param order
 	 * @return
@@ -5558,10 +5563,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						}
 					} else {
 						//更新对应销售单明细采购数量
-						OrderItems srcItems = new OrderItems();
-						srcItems.setId(orderItems.getSrcItemId());
-						srcItems.setPurchaseQuantity(orderItems.getActualQuantity());
-						orderItemsMapper.updateById(srcItems);
+						OrderItems srcItems = orderItemsMapper.selectById(orderItems.getSrcItemId());
+						if(null != srcItems){
+							BigDecimal quantity = ObjectUtils.isNotNull(srcItems.getPurchaseQuantity()) ?srcItems.getPurchaseQuantity() : new BigDecimal("0.00");
+							srcItems.setPurchaseQuantity(quantity.add(orderItems.getActualQuantity()));
+							orderItemsMapper.updateById(srcItems);
+						}
 					}
 				}
 

+ 10 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/controller/StockGoodsController.java

@@ -114,6 +114,16 @@ public class StockGoodsController extends BladeController {
 	}
 
 	/**
+	 * 重新计算锁定数量
+	 */
+	@GetMapping("/batchModifyLockingQuantity")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入stockGoods")
+	public R<Void> batchModifyLockingQuantity() {
+		return stockGoodsService.batchModifyLockingQuantity();
+	}
+
+	/**
 	 * 分页 库存账
 	 */
 	@GetMapping("/list")

+ 2 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/service/IStockGoodsService.java

@@ -141,4 +141,6 @@ public interface IStockGoodsService extends IService<StockGoods> {
 	AppStockPartsVO stockPartsDetails(AppStockPartsVO appStockPartsVO);
 
 	List<AppStockPartsVO> selectAppStockPartsList(AppStockPartsVO appStockPartsVO);
+
+	R<Void> batchModifyLockingQuantity();
 }

+ 22 - 1
blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java

@@ -38,6 +38,8 @@ import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.purchase.sales.feign.IOrderDescClient;
+import org.springblade.purchase.sales.vo.OrderVO;
 import org.springblade.stock.entity.StockGoods;
 import org.springblade.stock.excel.StockGoodsExcel;
 import org.springblade.stock.mapper.StockGoodsMapper;
@@ -53,6 +55,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 库存账 服务实现类
@@ -76,7 +79,10 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 	 */
 	private final IUserClient userClient;
 	private final IStorageClient storageClient;
-	private final IRedisClient redisClient;//redis缓存处理
+	//redis缓存处理
+	private final IRedisClient redisClient;
+
+	private final IOrderDescClient orderDescClient;
 
 	@Override
 	public IPage<StockGoodsVO> selectStockGoodsPage(IPage<StockGoodsVO> page, StockGoodsVO stockGoods) {
@@ -396,4 +402,19 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 		return baseMapper.selectAppStockPartsList(appStockPartsVO);
 	}
 
+	@Override
+	public R<Void> batchModifyLockingQuantity() {
+		List<StockGoods> list = baseMapper.selectList(new LambdaQueryWrapper<>());
+		for (StockGoods stockGoods : list) {
+			List<OrderVO> orderVOList = orderDescClient.orderInventoryList("XS", stockGoods.getGoodsId(), stockGoods.getCorpId());
+			if(ObjectUtils.isNull(orderVOList) || orderVOList.size() == 0){
+				continue;
+			}
+			stockGoods.setLockingQuantity(orderVOList.stream().map(OrderVO::getOrderQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			stockGoods.setSurplusRouteQuantity(stockGoods.getBalanceQuantity().subtract(stockGoods.getLockingQuantity()));
+		}
+		this.updateBatchById(list);
+		return R.success("操作成功");
+	}
+
 }