Jelajahi Sumber

1、中心仓bug优化
2、新增轮胎出库fegin接口

liyuan 2 bulan lalu
induk
melakukan
2027e6736c
13 mengubah file dengan 221 tambahan dan 21 penghapusan
  1. 37 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/feign/IPJCorpClient.java
  2. 12 5
      blade-service-api/tire-center-warehouse-api/src/main/java/com/ecp/tire/center/warehouse/api/stock/vo/CenterStockExportExcelVo.java
  3. 21 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/fegin/PJCorprClient.java
  4. 9 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/mapper/ShipItemsMapper.java
  5. 17 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/mapper/ShipItemsMapper.xml
  6. 8 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/IShipItemsService.java
  7. 5 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipItemsServiceImpl.java
  8. 18 0
      blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/plan/controller/CenterOrderPlanController.java
  9. 73 11
      blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/plan/impl/CenterOrderPlanServiceImpl.java
  10. 13 1
      blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/plan/service/ICenterOrderPlanService.java
  11. 4 0
      blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/stock/controller/CenterStockDescController.java
  12. 1 0
      blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/stock/impl/CenterStockDescServiceImpl.java
  13. 3 0
      blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/stock/mapper/CenterStockDescMapper.xml

+ 37 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/feign/IPJCorpClient.java

@@ -2,6 +2,8 @@ package org.springblade.salesPart.feign;
 
 import org.springblade.core.tool.api.R;
 import org.springblade.salesPart.entity.PjCorpsDesc;
+import org.springblade.salesPart.entity.PjGoodsDesc;
+import org.springblade.salesPart.entity.PjGoodsType;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.vo.PayRecoveredBalanceVo;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -31,6 +33,12 @@ public interface IPJCorpClient {
 
 	String UPDATE_CORPS_RECOVERED_BALANCE = API_PREFIX + "/updateRecoveredBalance";
 
+	String SELECT_CORP_LIST_BY_CENTER = API_PREFIX + "/selectCorpListByCenter";
+
+	String SELECT_GOODS_TYPE_LIST_BY_TENANT_ID = API_PREFIX + "/selectGoodsTypeListByTenantId";
+
+	String SELECT_GOODS_BY_CODE_AND_TENANT_ID = API_PREFIX + "/selectGoodsByCodeAndTenantId";
+
 	/**
 	 * 根据id查询订单
 	 *
@@ -57,4 +65,33 @@ public interface IPJCorpClient {
 	 */
 	@PostMapping(UPDATE_CORPS_RECOVERED_BALANCE)
 	R<String> updateRecoveredBalance(@RequestBody PayRecoveredBalanceVo payRecoveredBalanceVo);
+
+	/**
+	 * 中心仓查询客户
+	 *
+	 * @param tenantId 租户
+	 * @return 结果
+	 */
+	@PostMapping(SELECT_CORP_LIST_BY_CENTER)
+	List<PjCorpsDesc> selectCorpListByCenter(@RequestParam("tenantId") String tenantId);
+
+	/**
+	 * 查询商品类别
+	 *
+	 * @param tenantId 租户id
+	 * @return 商品类别
+	 */
+	@PostMapping(SELECT_GOODS_TYPE_LIST_BY_TENANT_ID)
+	List<PjGoodsType> selectGoodsTypeListByTenantId(@RequestParam("tenantId") String tenantId);
+
+
+	/**
+	 * 根据商品编码查询商品
+	 *
+	 * @param tenantId  租户id
+	 * @param codesList 商品编码
+	 * @return 结果
+	 */
+	@PostMapping(SELECT_GOODS_BY_CODE_AND_TENANT_ID)
+	List<PjGoodsDesc> selectGoodsByCodeAndTenantId(@RequestParam("tenantId") String tenantId, @RequestParam("codesList") List<String> codesList);
 }

+ 12 - 5
blade-service-api/tire-center-warehouse-api/src/main/java/com/ecp/tire/center/warehouse/api/stock/vo/CenterStockExportExcelVo.java

@@ -29,10 +29,11 @@ public class CenterStockExportExcelVo implements Serializable {
 	private String customerName;
 
 	/**
-	 * 商品编码
+	 * 采购计划单号
 	 */
-	@ExcelProperty(value = "商品编码")
-	private String code;
+	@ExcelProperty(value = "入库单号")
+	private String planNo;
+
 	/**
 	 * 商品名称
 	 */
@@ -40,6 +41,12 @@ public class CenterStockExportExcelVo implements Serializable {
 	private String cname;
 
 	/**
+	 * 商品编码
+	 */
+	@ExcelProperty(value = "商品编码")
+	private String code;
+
+	/**
 	 * 品牌名称
 	 */
 	@ExcelProperty(value = "品牌")
@@ -49,7 +56,7 @@ public class CenterStockExportExcelVo implements Serializable {
 	 * 规格型号
 	 */
 	@ExcelProperty(value = "规格型号")
-	private String typeno;
+	private String typeNo;
 	/**
 	 * 花纹
 	 */
@@ -64,7 +71,7 @@ public class CenterStockExportExcelVo implements Serializable {
 	/**
 	 * 商品类型名称
 	 */
-	@ExcelProperty(value = "商品类别")
+	@ExcelProperty(value = "分类")
 	private String goodsTypeName;
 
 	/**

+ 21 - 4
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/fegin/PJCorprClient.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import lombok.AllArgsConstructor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springblade.common.enums.NumberEnum;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tenant.annotation.TenantIgnore;
@@ -14,6 +15,7 @@ import org.springblade.salesPart.corps.service.ICorpsAttnService;
 import org.springblade.salesPart.entity.*;
 import org.springblade.salesPart.feign.IPJCorpClient;
 import org.springblade.salesPart.goods.mapper.GoodsDescMapper;
+import org.springblade.salesPart.goods.service.IGoodsTypeService;
 import org.springblade.salesPart.order.mapper.OrderItemsMapper;
 import org.springblade.salesPart.order.service.IPjIntegralDetailService;
 import org.springblade.salesPart.recycling.entity.GreenRecyclingRecord;
@@ -26,10 +28,7 @@ import springfox.documentation.annotations.ApiIgnore;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @NonDS
@@ -50,6 +49,8 @@ public class PJCorprClient implements IPJCorpClient {
 
 	private final IGreenRecyclingRecordService greenRecyclingRecordService;
 
+	private final IGoodsTypeService goodsTypeService;
+
 	private final Logger logger = LoggerFactory.getLogger(PJCorprClient.class);
 
 
@@ -312,4 +313,20 @@ public class PJCorprClient implements IPJCorpClient {
 		}
 		return R.success("支付回调修改余额成功");
 	}
+
+	@Override
+	public List<PjCorpsDesc> selectCorpListByCenter(String tenantId) {
+		return corpsDescMapper.selectCorpList(tenantId);
+	}
+
+	@Override
+	public List<PjGoodsType> selectGoodsTypeListByTenantId(String tenantId) {
+		return goodsTypeService.list(new LambdaQueryWrapper<PjGoodsType>().eq(PjGoodsType::getTenantId, tenantId));
+	}
+
+	@Override
+	public List<PjGoodsDesc> selectGoodsByCodeAndTenantId(String tenantId, List<String> codesList) {
+		return goodsDescMapper.selectList(new LambdaQueryWrapper<PjGoodsDesc>()
+			.eq(PjGoodsDesc::getTenantId, tenantId).in(PjGoodsDesc::getCode, codesList).eq(PjGoodsDesc::getIsDeleted, 0));
+	}
 }

+ 9 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/mapper/ShipItemsMapper.java

@@ -46,4 +46,13 @@ public interface ShipItemsMapper extends BaseMapper<PjShipItems> {
 	List<SaleFinancingDetailDto> saleFinancingDetail(IPage<SaleFinancingDetailDto> page, @Param("detail") SaleFinancingDetail saleDetailDto);
 
 	List<SaleFinancingDetailDto> saleFinancingList(@Param("detail") SaleFinancingDetail saleDetailDto);
+
+
+	/**
+	 * 根据商品id查询
+	 *
+	 * @param goodsId 商品id
+	 * @return 结果
+	 */
+    List<PjShipItems> selectShipItemByGoodsIdAndTkcg(@Param("goodsIdList") List<Long> goodsId);
 }

+ 17 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/mapper/ShipItemsMapper.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--suppress ALL -->
 <mapper namespace="org.springblade.salesPart.ship.mapper.ShipItemsMapper">
 
     <!-- 通用查询映射结果 -->
@@ -139,5 +140,21 @@
         ORDER BY
         ps.busines_date desc
     </select>
+    <select id="selectShipItemByGoodsIdAndTkcg" resultMap="shipItemsResultMap">
+        SELECT
+            psi.*
+        FROM
+            pjpf_ship ps
+                INNER JOIN pjpf_ship_items psi ON ps.id = psi.pid
+                AND ps.tenant_id = psi.tenant_id
+        WHERE
+            ps.biz_type_name = 'TKCG'
+          AND ps.is_deleted = 0
+          AND psi.is_deleted = 0
+          and psi.goods_id in
+        <foreach item="item" collection="goodsIdList" index="index" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
 
 </mapper>

+ 8 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/IShipItemsService.java

@@ -45,4 +45,12 @@ public interface IShipItemsService extends IService<PjShipItems> {
     IPage<SaleFinancingDetailDto> saleFinancingDetail(SaleFinancingDetail saleDetailDto, IPage<SaleFinancingDetailDto> page);
 
 	List<SaleFinancingDetailDto> saleFinancingList(SaleFinancingDetail saleDetailDto);
+
+	/**
+	 * 根据商品id查询
+	 *
+	 * @param goodsId 商品id
+	 * @return 结果
+	 */
+    List<PjShipItems> selectShipItemByGoodsIdAndTkcg(List<Long> goodsId);
 }

+ 5 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipItemsServiceImpl.java

@@ -52,4 +52,9 @@ public class ShipItemsServiceImpl extends ServiceImpl<ShipItemsMapper, PjShipIte
 		return baseMapper.saleFinancingList(saleDetailDto);
 	}
 
+	@Override
+	public List<PjShipItems> selectShipItemByGoodsIdAndTkcg(List<Long> goodsId) {
+		return baseMapper.selectShipItemByGoodsIdAndTkcg(goodsId);
+	}
+
 }

+ 18 - 0
blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/plan/controller/CenterOrderPlanController.java

@@ -1,6 +1,7 @@
 package com.ecp.tire.center.warehouse.plan.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.ecp.tire.center.warehouse.api.plan.entity.CenterOrderPlan;
 import com.ecp.tire.center.warehouse.api.plan.vo.CenterOrderPlanVo;
 import com.ecp.tire.center.warehouse.api.storage.vo.PlanAuditVo;
@@ -10,11 +11,15 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springblade.common.annotation.RepeatSubmit;
+import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
+import org.springblade.salesPart.excel.ShipItemImportXSCodeExcel;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * @author Rain
@@ -104,4 +109,17 @@ public class CenterOrderPlanController{
 		return centerOrderPlanService.submitOutPlan(centerOrderPlanVo);
 	}
 
+
+	@PostMapping("/import-item-code")
+	@ApiOperationSupport(order = 13)
+	@ApiOperation(value = "入库明细导入", notes = "传入excel")
+	@RepeatSubmit
+	public R importItemCode(@RequestParam("file") MultipartFile file, @RequestParam("storageId") Long storageId) {
+		List<ShipItemImportXSCodeExcel> excelList = ExcelUtil.read(file, ShipItemImportXSCodeExcel.class);
+		if (CollectionUtils.isEmpty(excelList)) {
+			throw new SecurityException("数据不能为空");
+		}
+		return centerOrderPlanService.importCenterPlanItemCode(excelList);
+	}
+
 }

+ 73 - 11
blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/plan/impl/CenterOrderPlanServiceImpl.java

@@ -26,7 +26,13 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.salesPart.entity.PjCorpsDesc;
+import org.springblade.salesPart.entity.PjGoodsDesc;
+import org.springblade.salesPart.entity.PjOrderItems;
+import org.springblade.salesPart.entity.PjProductLaunch;
+import org.springblade.salesPart.excel.ShipItemImportXSCodeExcel;
 import org.springblade.salesPart.feign.IPJCorpClient;
 import org.springblade.system.entity.Dept;
 import org.springblade.system.feign.ISysClient;
@@ -62,23 +68,23 @@ public class CenterOrderPlanServiceImpl extends ServiceImpl<CenterOrderPlanMappe
 
 	private final ICenterShipService centerShipService;
 
-	private final ICenterShipItemsService centerShipItemsService;
-
 	private final ICenterShipCostService centerShipCostService;
 
 	private final ICenterStockDescService centerStockDescService;
 
+	private final IPJCorpClient pjCorpClient;
+
 
 	public CenterOrderPlanServiceImpl(CenterOrderPlanItemMapper centerOrderPlanItemMapper, IPJCorpClient corpClient,
 									  ICenterOrderPlanItemService centerOrderPlanItemService, ISysClient sysClient,
-									  ICenterShipService centerShipService, ICenterShipItemsService centerShipItemsService,
-									  ICenterShipCostService centerShipCostService, ICenterStockDescService centerStockDescService) {
+									  ICenterShipService centerShipService, ICenterShipCostService centerShipCostService,
+									  ICenterStockDescService centerStockDescService, IPJCorpClient pjCorpClient) {
 		this.centerOrderPlanItemMapper = centerOrderPlanItemMapper;
 		this.corpClient = corpClient;
 		this.centerOrderPlanItemService = centerOrderPlanItemService;
 		this.sysClient = sysClient;
 		this.centerShipService = centerShipService;
-		this.centerShipItemsService = centerShipItemsService;
+		this.pjCorpClient = pjCorpClient;
 		this.centerShipCostService = centerShipCostService;
 		this.centerStockDescService = centerStockDescService;
 
@@ -198,16 +204,17 @@ public class CenterOrderPlanServiceImpl extends ServiceImpl<CenterOrderPlanMappe
 		// centerStockDescService
 		if(CommonEnum.ONE.info.equals(centerOrderPlanVo.getStatus())) {
 			// 提交生成库存
+			List<CenterOrderPlanItem> planItemsStockList = centerOrderPlanItemList.stream().filter(e -> !NumberEnum.ONE.number.equals(e.getIsDeleted())).collect(Collectors.toList());
 			List<CenterStockDesc> centerStockDescList = centerStockDescService.list(new LambdaQueryWrapper<CenterStockDesc>()
 				.eq(CenterStockDesc::getTenantId, bladeUser.getTenantId())
 				.eq(CenterStockDesc::getIsDeleted, 0)
+					.eq(CenterStockDesc::getCustomerId, insertCenterOrderPlan.getCustomerId())
 				.eq(CenterStockDesc::getStorageId, insertCenterOrderPlan.getStorageId())
-				.in(CenterStockDesc::getGoodsId, centerOrderPlanItemList.stream().map(CenterOrderPlanItem::getGoodsId).distinct().collect(Collectors.toList())));
+				.in(CenterStockDesc::getGoodsId, planItemsStockList.stream().map(CenterOrderPlanItem::getGoodsId).distinct().collect(Collectors.toList())));
 			List<CenterStockDesc> insertOrUpdateList = new ArrayList<>();
-			for (CenterOrderPlanItem planItem : centerOrderPlanItemList) {
-				CenterStockDesc desc = centerStockDescList.stream().filter(item -> item.getPlanId().equals(insertCenterOrderPlan.getId())
-						&& item.getRegionId().equals(planItem.getRegionId())
-						&& item.getGoodsId().equals(planItem.getGoodsId()) && item.getDot().equals(planItem.getDot())).findFirst().orElse(new CenterStockDesc());
+			for (CenterOrderPlanItem planItem : planItemsStockList) {
+				CenterStockDesc desc = centerStockDescList.stream().filter(item -> item.getPlanId().equals(insertCenterOrderPlan.getId()) && item.getRegionId().equals(planItem.getRegionId())
+					&& item.getGoodsId().equals(planItem.getGoodsId()) && item.getDot().equals(planItem.getDot())).findFirst().orElse(new CenterStockDesc());
 				// TODO: 应加一步redis锁,避免并发问题
 				insertOrUpdateList.add(desc);
 				if (Objects.isNull(desc.getId())) {
@@ -356,10 +363,11 @@ public class CenterOrderPlanServiceImpl extends ServiceImpl<CenterOrderPlanMappe
 			List<CenterStockDesc> centerStockDescList = centerStockDescService.list(new LambdaQueryWrapper<CenterStockDesc>()
 				.eq(CenterStockDesc::getTenantId, bladeUser.getTenantId())
 				.eq(CenterStockDesc::getIsDeleted, 0)
+					.eq(CenterStockDesc::getCustomerId, centerOrderPlanVo.getCustomerId())
 				.eq(CenterStockDesc::getStorageId, insertCenterOrderPlan.getStorageId())
 				.in(CenterStockDesc::getGoodsId, centerOrderPlanItemList.stream().map(CenterOrderPlanItem::getGoodsId).distinct().collect(Collectors.toList())));
 			List<CenterStockDesc> insertOrUpdateList = new ArrayList<>();
-			Map<String, List<CenterOrderPlanItem>> mapList = centerOrderPlanItemList.stream().filter(item -> NumberEnum.Zero.number.equals(item.getIsDeleted()))
+			Map<String, List<CenterOrderPlanItem>> mapList = centerOrderPlanItemList.stream().filter(item -> !NumberEnum.ONE.number.equals(item.getIsDeleted()))
 				.collect(Collectors.groupingBy(plan -> plan.getBillId() + "-" + plan.getGoodsId() + "-" + plan.getDot() + "-" + plan.getRegionId()));
 			for (Map.Entry<String, List<CenterOrderPlanItem>> mapData : mapList.entrySet()) {
 				String[] params = mapData.getKey().split("-");
@@ -387,11 +395,65 @@ public class CenterOrderPlanServiceImpl extends ServiceImpl<CenterOrderPlanMappe
 		return R.data(String.valueOf(insertCenterOrderPlan.getId()));
 	}
 
+	@Override
+	public R importCenterPlanItemCode(List<ShipItemImportXSCodeExcel> excelList) {
+		List<PjOrderItems> list = new ArrayList<>();
+		List<String> codesList = excelList.stream().map(ShipItemImportXSCodeExcel::getCode).distinct()
+			.filter(Objects::nonNull).collect(Collectors.toList());
+		if (excelList.size() != codesList.size()) {
+			throw new RuntimeException("导入数据存在重复商品编码,请处理后再导入");
+		}
+		BladeUser bladeUser = AuthUtil.getUser();
+		List<PjGoodsDesc> goodsDescList = pjCorpClient.selectGoodsByCodeAndTenantId(bladeUser.getTenantId(), codesList);
+		if (CollectionUtils.isEmpty(goodsDescList)) {
+			return R.fail("未找到商品数据,请核实后重试");
+		}
+		StringBuilder text = new StringBuilder();
+		int itemNum = 1;
+		for (ShipItemImportXSCodeExcel excelItem : excelList) {
+			boolean add = true;
+			if (!StringUtils.hasText(excelItem.getCode())) {
+				text.append("第").append(itemNum).append("行,编码为空").append("\n");
+				add = false;
+			}
+			if (ObjectUtil.isEmpty(excelItem.getGoodsNum())) {
+				text.append("第").append(itemNum).append("行,数量为空").append("\n");
+				add = false;
+			}
+			PjOrderItems item = new PjOrderItems();
+			item.setGoodsNum(excelItem.getGoodsNum());
+			item.setGoodsNo(excelItem.getCode());
+			item.setPrice(excelItem.getPrice());
+			PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getCode().equals(excelItem.getCode())).findFirst().orElse(null);
+			if (goodsDesc == null) {
+				text.append("第").append(itemNum).append("行,商品未找到").append("\n");
+				continue;
+			}
+			item.setUnits(goodsDesc.getUnit());
+			item.setGoodsId(goodsDesc.getId());
+			item.setGoodsName(goodsDesc.getCname());
+			item.setGoodsNo(goodsDesc.getCode());
+			item.setBrandId(goodsDesc.getBrandId());
+			item.setBrandName(goodsDesc.getBrandName());
+			item.setPropertyName(goodsDesc.getSpecificationAndModel());
+			item.setGoodsDescription(goodsDesc.getGoodsDescription());
+			item.setPattern(goodsDesc.getBrandItem());
+			item.setSendNum(BigDecimal.ZERO);
+			if (add) {
+				list.add(item);
+			}
+		}
+		return R.data(text.length() == 0 ? list : "导入失败:" + text);
+	}
+
 	private R<CenterOrderPlan> insertOrUpdatePlan (CenterOrderPlanVo centerOrderPlanVo, BladeUser bladeUser,
 												List<CenterOrderPlanItem> centerOrderPlanItemList) {
 		CenterOrderPlan insertCenterOrderPlan = new CenterOrderPlan();
 		BeanUtils.copyProperties(centerOrderPlanVo, insertCenterOrderPlan);
 		insertCenterOrderPlan.setNumberRows(centerOrderPlanItemList.size());
+		if (!CollectionUtils.isEmpty(centerOrderPlanItemList)) {
+			insertCenterOrderPlan.setGoodsTotalNum(centerOrderPlanItemList.stream().filter(item -> !NumberEnum.ONE.number.equals(item.getIsDeleted())).map(CenterOrderPlanItem::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		}
 		if (Objects.isNull(centerOrderPlanVo.getId())) {
 			R<Dept> dept = sysClient.getDept(Long.valueOf(bladeUser.getDeptId()));
 			if (!dept.isSuccess() || Objects.isNull(dept.getData())) {

+ 13 - 1
blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/plan/service/ICenterOrderPlanService.java

@@ -8,6 +8,9 @@ import com.ecp.tire.center.warehouse.api.plan.vo.CenterOrderPlanVo;
 import com.ecp.tire.center.warehouse.api.storage.vo.PlanAuditVo;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
+import org.springblade.salesPart.excel.ShipItemImportXSCodeExcel;
+
+import java.util.List;
 
 /**
  * @author Rain
@@ -49,8 +52,8 @@ public interface ICenterOrderPlanService extends IService<CenterOrderPlan> {
 	R<String> submitPlan(CenterOrderPlanVo centerOrderPlanVo);
 
 	/**
-	 *
 	 * 审核入库计划
+	 *
 	 * @param planAuditVo 计划审核信息
 	 * @return 结果
 	 */
@@ -58,8 +61,17 @@ public interface ICenterOrderPlanService extends IService<CenterOrderPlan> {
 
 	/**
 	 * 提交出库计划
+	 *
 	 * @param centerOrderPlanVo 出库计划参数
 	 * @return 结果
 	 */
 	R<String> submitOutPlan(CenterOrderPlanVo centerOrderPlanVo);
+
+	/**
+	 * 导入入库明细
+	 *
+	 * @param excelList 入库明细
+	 * @return 结果
+	 */
+	R importCenterPlanItemCode(List<ShipItemImportXSCodeExcel> excelList);
 }

+ 4 - 0
blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/stock/controller/CenterStockDescController.java

@@ -34,8 +34,10 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 
 /**
@@ -80,6 +82,7 @@ public class CenterStockDescController {
 			lambdaQueryWrapper.ne(CenterStockDesc::getBalanceQuantity, NumberEnum.Zero.number);
 		}
 		lambdaQueryWrapper.like(StringUtils.hasText(centerStockDescVo.getCname()), CenterStockDesc::getCname, centerStockDescVo.getCname());
+		lambdaQueryWrapper.orderByDesc(CenterStockDesc::getBalanceQuantity);
 		List<CenterStockDesc> list = centerStockDescService.list(lambdaQueryWrapper);
 		List<CenterStockExportExcelVo> centerStockExportExcelVos = new ArrayList<>();
 		if (!CollectionUtils.isEmpty(list)) {
@@ -92,6 +95,7 @@ public class CenterStockDescController {
 				centerStockExportExcelVo.setGoodsTypeName(goodsTypeList.stream().filter(goodsType -> goodsType.getId().equals(stockDesc.getGoodsTypeId())).findFirst().map(PjGoodsType::getCname).orElse(""));
 				centerStockExportExcelVos.add(centerStockExportExcelVo);
 			}
+			centerStockExportExcelVos = centerStockExportExcelVos.stream().sorted(Comparator.comparing(CenterStockExportExcelVo::getBalanceQuantity).reversed()).collect(Collectors.toList());
 		}
 		ExcelUtil.export(response, "库存信息", "库存信息", centerStockExportExcelVos, CenterStockExportExcelVo.class);
 	}

+ 1 - 0
blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/stock/impl/CenterStockDescServiceImpl.java

@@ -90,6 +90,7 @@ public class CenterStockDescServiceImpl extends ServiceImpl<CenterStockDescMappe
 			.like(StringUtils.hasText(stockDesc.getCname()), CenterStockDesc::getCname, stockDesc.getCname())
 			.like(StringUtils.hasText(stockDesc.getDot()), CenterStockDesc::getDot, stockDesc.getDot())
 			.like(StringUtils.hasText(stockDesc.getBrandItem()), CenterStockDesc::getBrandItem, stockDesc.getBrandItem());
+		descLambdaQueryWrapper.ne(CenterStockDesc::getBalanceQuantity, 0);
 		query.setDescs("balance_quantity");
 		IPage<CenterStockDesc> pages = baseMapper.selectPage(Condition.getPage(query), descLambdaQueryWrapper);
 		return pages.convert(centerStockDesc -> {

+ 3 - 0
blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/stock/mapper/CenterStockDescMapper.xml

@@ -75,6 +75,9 @@
           AND copi.dot = #{dot}
           AND copi.region_id = #{regionId}
           and col.customer_id = #{customerId}
+        and copi.is_deleted = 0
+        and col.is_deleted = 0
+        and (col.id = #{planId} or copi.bill_id = #{planId})
         ORDER BY copi.update_time desc
     </select>