Browse Source

2023年11月22日17:43:22

纪新园 2 years ago
parent
commit
2b6829c819

+ 6 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Bills.java

@@ -1417,6 +1417,12 @@ public class Bills implements Serializable {
 	@ApiModelProperty(value = "检验检疫 NO")
 	private String iqNo;
 
+	/**
+	 * 毛利率
+	 */
+	@TableField(exist = false)
+	private BigDecimal grossMargin;
+
 
 	/**
 	 * 预配箱型箱量

+ 11 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java

@@ -34,6 +34,7 @@ import org.springblade.los.finance.fee.service.IFeeCenterService;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -97,6 +98,16 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 		if ("SE".equals(reports.getBusinessType())) {
 			Bills bills = billsService.getById(billId);
 			if (bills != null) {
+				if (ObjectUtils.isNotNull(bills.getAmountProfitLoc()) && ObjectUtils.isNotNull(bills.getAmountDrLoc())) {
+					if (bills.getAmountProfitLoc().compareTo(new BigDecimal("0.00")) == 0 ||
+						bills.getAmountDrLoc().compareTo(new BigDecimal("0.00")) == 0) {
+						bills.setGrossMargin(new BigDecimal("0.00"));
+					} else {
+						bills.setGrossMargin(bills.getAmountProfitLoc().divide(bills.getAmountDrLoc(), 4, BigDecimal.ROUND_HALF_UP));
+					}
+				} else {
+					bills.setGrossMargin(new BigDecimal("0.00"));
+				}
 				List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getPid, bills.getId())
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml

@@ -390,7 +390,7 @@
             and (acc.amount_dr_loc = #{acc.queryAmount} or acc.amount_cr_loc = #{acc.queryAmount})
         </if>
         <if test="acc.businessType != null and acc.businessType != ''">
-            and fee.business_type = #{acc.businessType}
+            and find_in_set(fee.business_type,#{acc.businessType})
         </if>
         <if test="acc.invoiceStatus != null">
             and fee.invoice_status = #{acc.invoiceStatus}

+ 1 - 2
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

@@ -166,7 +166,6 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			finStlBills.setUpdateTime(new Date());
 			finStlBills.setUpdateUserName(AuthUtil.getUserName());
 		}
-		this.saveOrUpdate(finStlBills);
 		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
 			BigDecimal amountDrCNY = new BigDecimal("0.00");
 			BigDecimal amountCrCNY = new BigDecimal("0.00");
@@ -213,7 +212,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			finStlBills.setAmountCrLoc(amountCrCNY.add(bCurrencyService.converterCny("USD", amountCrUSD)));
 			finStlBills.setAmountDrLocNet(amountDrCNYTax.add(bCurrencyService.converterCny("USD", amountDrUSDTax)));
 			finStlBills.setAmountCrLocNet(amountCrCNYTax.add(bCurrencyService.converterCny("USD", amountCrUSDTax)));
-
+			this.saveOrUpdate(finStlBills);
 			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
 				//计算字段null值处理
 				item.setCurrentStlAmount(ObjectUtils.isNotNull(item.getCurrentStlAmount()) ? item.getCurrentStlAmount() : new BigDecimal("0.00"));

+ 15 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java

@@ -965,4 +965,19 @@ public class OrderController extends BladeController {
 		return R.data(orderService.page(Condition.getPage(query), lambdaQueryWrapper));
 	}
 
+
+	/**
+	 * 一键采购入库
+	 */
+	@PostMapping("/shortcutWarehousing")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "一键采购入库", notes = "传入order")
+	@RepeatSubmit
+	public R shortcutWarehousing(@Valid @RequestBody PjOrder order) {
+		if (order.getId() == null) {
+			throw new RuntimeException("来源信息错误");
+		}
+		return orderService.shortcutWarehousing(order);
+	}
+
 }

+ 7 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java

@@ -165,4 +165,11 @@ public interface IOrderService extends IService<PjOrder> {
 	 * @return
 	 */
 	R integralExchange(PjOrder order);
+
+	/**
+	 * 一键采购入库
+	 * @param order
+	 * @return
+	 */
+    R shortcutWarehousing(PjOrder order);
 }

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

@@ -26,9 +26,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
-import org.springblade.check.dto.AuditProecessDTO;
-import org.springblade.check.entity.AuditPathsActs;
-import org.springblade.check.entity.AuditPathsLevels;
 import org.springblade.client.entity.Message;
 import org.springblade.client.feign.IMessageClient;
 import org.springblade.client.feign.ISerialClient;
@@ -48,23 +45,22 @@ import org.springblade.salesPart.check.service.IAuditPathsActsService;
 import org.springblade.salesPart.check.service.IAuditPathsLevelsService;
 import org.springblade.salesPart.check.service.IAuditProecessService;
 import org.springblade.salesPart.corps.mapper.CorpsDescMapper;
-import org.springblade.salesPart.corps.service.ICorpsAttnService;
-import org.springblade.salesPart.corps.service.ICorpsDescService;
 import org.springblade.salesPart.entity.*;
 import org.springblade.salesPart.enums.OrderTypeEnum;
 import org.springblade.salesPart.excel.PjOrderStatisticsExcel;
 import org.springblade.salesPart.goods.mapper.GoodsDescMapper;
+import org.springblade.salesPart.goods.mapper.GoodsTypeMapper;
 import org.springblade.salesPart.goods.service.IGoodsFilesService;
 import org.springblade.salesPart.history.mapper.HistoryMapper;
-import org.springblade.salesPart.order.mapper.OrderItemsMapper;
 import org.springblade.salesPart.order.mapper.OrderMapper;
+import org.springblade.salesPart.order.service.IOrderItemsService;
 import org.springblade.salesPart.order.service.IOrderService;
 import org.springblade.salesPart.payMethod.PayService;
 import org.springblade.salesPart.productLaunch.service.IProductLaunchService;
 import org.springblade.salesPart.settlement.mapper.SettlementMapper;
 import org.springblade.salesPart.settlement.service.ISettlementItemsService;
-import org.springblade.salesPart.ship.mapper.ShipItemsMapper;
 import org.springblade.salesPart.ship.mapper.ShipMapper;
+import org.springblade.salesPart.ship.service.IShipItemsService;
 import org.springblade.salesPart.stock.service.IStockDescService;
 import org.springblade.salesPart.storage.mapper.StorageDescMapper;
 import org.springblade.salesPart.vo.OrderStatistics;
@@ -84,6 +80,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.math.MathContext;
+import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -108,11 +105,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	 * 生成系统编号
 	 */
 	private final ISerialClient serialClient;
-	private final OrderItemsMapper orderItemsMapper;
+	private final IOrderItemsService orderItemsService;
 	private final ShipMapper shipMapper;
-	private final ShipItemsMapper shipItemsMapper;
+	private final IShipItemsService shipItemsService;
 	private final CorpsDescMapper corpsDescMapper;
 	private final StorageDescMapper storageDescMapper;
+	private final GoodsTypeMapper goodsTypeMapper;
 	private final IStockDescService stockDescService;
 	private final IProductLaunchService productLaunchService;
 	private final GoodsDescMapper goodsDescMapper;
@@ -156,7 +154,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		itemsLambdaQueryWrapper.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrderItems::getIsDeleted, 0)
 			.eq(PjOrderItems::getPid, detail.getId());
-		List<PjOrderItems> list = orderItemsMapper.selectList(itemsLambdaQueryWrapper);
+		List<PjOrderItems> list = orderItemsService.list(itemsLambdaQueryWrapper);
 		/*for (PjOrderItems item : list) {
 			List<PjGoodsFiles> goodsFilesList = new ArrayList<>();
 			goodsFilesList = goodsFilesService.list(new LambdaQueryWrapper<PjGoodsFiles>()
@@ -370,7 +368,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				user = r.getData();
 			}
 		}
-		List<PjOrderItems> pjOrderItemsList = orderItemsMapper.selectList(new LambdaQueryWrapper<PjOrderItems>()
+		List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
 			.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrderItems::getIsDeleted, 0)
 			.eq(PjOrderItems::getPid, order.getId()));
@@ -408,7 +406,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			integralDetail.setIntegral(order.getTotalMoney());
 			integralDetail.setGoodsName(order.getGoodsNameJoin());
 			StringBuilder goodsId = new StringBuilder();
-			for (Long item: goodsIds){
+			for (Long item : goodsIds) {
 				goodsId.append(item).append(",");
 			}
 			if (goodsId.length() > 0) {
@@ -487,22 +485,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			for (PjOrderItems item : order.getOrderItemsList()) {
 				item.setBizType(order.getBsType());
 				item.setBillNo(order.getOrdNo());
-				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);
-				}
 				//计算小计
 				item.setSubTotalMoney(item.getGoodsNum().multiply(item.getPrice()));
-
 				//获得商品
 				PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
 				if (ObjectUtil.isEmpty(goodsDesc)) {
@@ -512,8 +496,19 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				goodsName = goodsName.append(goodsDesc.getCname()).append(",");
 				goodsIds = goodsIds.append(goodsDesc.getId()).append(",");
 				retrieval = retrieval.append(goodsDesc.getCnameInt()).append(",");
-				orderItemsMapper.updateById(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());
+				} else {
+					item.setUpdateTime(new Date());
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setPid(order.getId());
+				}
 			}
+			orderItemsService.saveOrUpdateBatch(order.getOrderItemsList());
 			if (goodsName.length() > 0) {
 				order.setGoodsNameJoin(goodsName.substring(0, goodsName.length() - 1));
 			}
@@ -559,6 +554,244 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		return R.data(order);
 	}
 
+	@Override
+	public R shortcutWarehousing(PjOrder order) {
+		PjOrder pjOrder = baseMapper.selectById(order.getId());
+
+		PjShip pjShip = new PjShip();
+		// 获取系统编号
+		R billNo = serialClient.getBillNo(OrderTypeEnum.SHRW.getType(), OrderTypeEnum.SHRW.getType(), OrderTypeEnum.SHRW.getType());
+		if (billNo.getCode() != 200) {
+			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+			return R.fail(500, "生成系统编号失败");
+		}
+		BeanUtil.copyProperties(pjOrder, pjShip);
+		pjShip.setId(null);
+		if (ObjectUtils.isNotNull(pjOrder.getStorageId())) {
+			//仓库名称
+			pjShip.setStorageName(storageDescMapper.selectById(pjOrder.getStorageId()).getCname());
+		}
+		pjShip.setBusinesDate(new Date());
+		pjShip.setBillno((String) billNo.getData());
+		pjShip.setOrdNo(pjOrder.getOrdNo());
+		pjShip.setOrdId(pjOrder.getId());
+		pjShip.setSrcOrdNo(pjOrder.getSrcOrdNo());
+		pjShip.setStatusName(OrderTypeEnum.SCRW.getType());
+		pjShip.setBsType(pjOrder.getBusinessSource());
+		pjShip.setTenantId(AuthUtil.getTenantId());
+		pjShip.setBizTypeName(OrderTypeEnum.SHRW.getType());
+		pjShip.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+		pjShip.setCreateUser(AuthUtil.getUserId());
+		pjShip.setCreateTime(new Date());
+		pjShip.setSendTotalNum(pjShip.getGoodsTotalNum());
+		shipMapper.insert(pjShip);
+		//新建入库工单
+		PjShip gdShip = new PjShip();
+		// 获取系统编号
+		R billNoGD = serialClient.getBillNo(OrderTypeEnum.SHGD.getType(), OrderTypeEnum.SHGD.getType(), OrderTypeEnum.SHGD.getType());
+		if (billNo.getCode() != 200) {
+			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+			return R.fail(500, "生成系统编号失败");
+		}
+		BeanUtil.copyProperties(pjShip, gdShip);
+
+		gdShip.setId(null);
+		gdShip.setBillno((String) billNoGD.getData());
+		gdShip.setStatusName(OrderTypeEnum.RECEIVED.getType());
+		gdShip.setTenantId(AuthUtil.getTenantId());
+		gdShip.setBizTypeName(OrderTypeEnum.SHGD.getType());
+		gdShip.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+		gdShip.setCreateUser(AuthUtil.getUserId());
+		gdShip.setCreateTime(new Date());
+		gdShip.setTaskId(pjShip.getId());
+		shipMapper.insert(gdShip);
+
+		//根据采购id获得采购明细数据
+		List<PjOrderItems> list = orderItemsService.list(new QueryWrapper<PjOrderItems>()
+			.eq("pid", pjShip.getOrdId())
+			.eq("is_deleted", 0)
+			.apply("goods_num != send_num")
+			.eq("tenant_id", AuthUtil.getTenantId()));
+		if (ObjectUtil.isNotEmpty(list)) {
+			List<PjShipItems> shipItemsList = new ArrayList<>();
+			List<PjProductLaunch> pjProductLaunchList = new ArrayList<>();
+			List<PjProductLaunch> pjProductLaunch = new ArrayList<>();
+			List<Long> goodsIds = list.stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+			List<PjGoodsDesc> pjGoodsDescList = new ArrayList<>();
+			List<PjStockDesc> pjStockDescList = new ArrayList<>();
+			if (goodsIds.size() > 0) {
+				pjGoodsDescList = goodsDescMapper.selectList(new LambdaQueryWrapper<PjGoodsDesc>()
+					.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+					.eq(PjGoodsDesc::getIsDeleted, 0)
+					.in(PjGoodsDesc::getId, goodsIds)
+					.eq(PjGoodsDesc::getEnableOrNot, 0));
+				pjStockDescList = stockDescService.list(new LambdaQueryWrapper<PjStockDesc>()
+					.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
+					.eq(PjStockDesc::getIsDeleted, 0)
+					.eq(PjStockDesc::getSalesCompanyId, gdShip.getSalesCompanyId())
+					.in(PjStockDesc::getGoodsId, goodsIds)
+					.eq(PjStockDesc::getStorageId, gdShip.getStorageId()));
+				//查询所有上架商品
+				LambdaQueryWrapper<PjProductLaunch> productLaunchQueryWrapper = new LambdaQueryWrapper<>();
+				productLaunchQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+					.eq(PjProductLaunch::getIsDeleted, 0)
+					.isNull(PjProductLaunch::getSourceId)
+					.eq(PjProductLaunch::getSalesCompanyId, gdShip.getSalesCompanyId())
+					.in(PjProductLaunch::getGoodsId, goodsIds);
+				pjProductLaunch = productLaunchService.list(new LambdaQueryWrapper<PjProductLaunch>()
+					.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+					.eq(PjProductLaunch::getIsDeleted, 0)
+					.isNull(PjProductLaunch::getSourceId)
+					.eq(PjProductLaunch::getSalesCompanyId, gdShip.getSalesCompanyId())
+					.in(PjProductLaunch::getGoodsId, goodsIds));
+			}
+			PjStorageDesc storageDesc = storageDescMapper.selectById(gdShip.getStorageId());
+			List<PjGoodsDesc> finalPjGoodsDescList = pjGoodsDescList;
+			List<PjStockDesc> finalPjStockDescList = pjStockDescList;
+			List<PjProductLaunch> finalPjProductLaunch = pjProductLaunch;
+			list.forEach(e -> {
+				//获得商品
+				PjGoodsDesc goodsDesc = finalPjGoodsDescList.stream().filter(i -> i.getId().equals(e.getGoodsId())).findFirst().orElse(null);
+				if (ObjectUtil.isEmpty(goodsDesc)) {
+					throw new RuntimeException("商品数据异常");
+				}
+				e.setSendNum(e.getGoodsNum());
+				//根据采购明细创建入库工单明细
+				PjShipItems shipItems = new PjShipItems();
+				BeanUtil.copyProperties(e, shipItems);
+				shipItems.setId(null);
+				shipItems.setPid(gdShip.getId());
+				shipItems.setSrcItemId(e.getId());
+				shipItems.setCreateTime(new Date());
+				shipItems.setCreateUser(AuthUtil.getUserId());
+				shipItems.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+				shipItems.setSendNum(e.getGoodsNum().subtract(e.getSendNum()));
+				shipItemsList.add(shipItems);
+				//生成库存账
+				PjStockDesc stockDesc = new PjStockDesc();
+
+				stockDesc.setSalesCompanyId(gdShip.getSalesCompanyId());
+				stockDesc.setSalesCompanyName(gdShip.getSalesCompanyName());
+				stockDesc.setGoodsTypeId(goodsDesc.getGoodsTypeId());
+				if (ObjectUtils.isNotNull(goodsDesc.getGoodsTypeId())) {
+					PjGoodsType goodsType = goodsTypeMapper.selectById(goodsDesc.getGoodsTypeId());
+					if (ObjectUtils.isNotNull(goodsType)) {
+						stockDesc.setGoodsTypeName(goodsType.getCname());
+					}
+				}
+				//获得仓库
+				if (ObjectUtil.isNotEmpty(storageDesc)) {
+					stockDesc.setStorageId(storageDesc.getId());
+					stockDesc.setStorageName(storageDesc.getCname());
+				} else {
+					throw new RuntimeException("仓库数据异常");
+				}
+				stockDesc.setGoodsId(goodsDesc.getId());
+				stockDesc.setCode(e.getGoodsNo());
+				stockDesc.setCname(goodsDesc.getCname());
+				stockDesc.setInventoryAlert(goodsDesc.getInventoryAlert());
+				stockDesc.setBrandId(e.getBrandId());
+				stockDesc.setBrandName(e.getBrandName());
+				stockDesc.setTypeno(e.getPropertyName());
+				stockDesc.setBrandItem(e.getPattern());
+				stockDesc.setProductDescription(e.getGoodsDescription());
+				stockDesc.setDot(e.getDot());
+				stockDesc.setTenantId(AuthUtil.getTenantId());
+				PjStockDesc stockOne = null;
+				if (finalPjStockDescList.size() <= 0) {
+					throw new RuntimeException(goodsDesc.getCname() + "未查到库存信息");
+				}
+				if (ObjectUtil.isNotEmpty(goodsDesc.getWhether()) && "1".equals(goodsDesc.getWhether())) {//管理批次号
+					if (ObjectUtil.isEmpty(e.getDot())) {
+						throw new RuntimeException(goodsDesc.getCname() + "已开启批次号管理,请填写批次号");
+					}
+					stockOne = finalPjStockDescList.stream().filter(i -> i.getDot().equals(e.getDot())).findFirst().orElse(null);
+				} else {
+					stockOne = finalPjStockDescList.stream().filter(i -> "".equals(i.getDot()) || i.getDot() == null).findFirst().orElse(null);
+				}
+				if (ObjectUtil.isEmpty(stockOne)) {
+					stockDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+					stockDesc.setCreateTime(new Date());
+					stockDesc.setCreateUser(AuthUtil.getUserId());
+					stockDesc.setBalanceQuantity(e.getSendNum());
+					stockDesc.setStoreInventory(e.getSendNum());
+					stockDesc.setInventoryAmount(e.getSendNum().multiply(e.getPrice()));
+					if (stockDesc.getBalanceQuantity().compareTo(new BigDecimal("0")) != 0) {
+						stockDesc.setInventoryCostPrice(stockDesc.getInventoryAmount().divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+					} else {
+						stockDesc.setInventoryCostPrice(e.getPrice());
+					}
+				} else {
+					stockDesc.setId(stockOne.getId());
+					stockDesc.setUpdateTime(new Date());
+					stockDesc.setUpdateUser(AuthUtil.getUserId());
+					stockDesc.setBalanceQuantity(stockOne.getBalanceQuantity().add(e.getSendNum()));
+					stockDesc.setStoreInventory(stockDesc.getBalanceQuantity());
+					stockDesc.setInventoryAmount(e.getSendNum().multiply(e.getPrice()));
+					stockDesc.setInventoryAmount(stockDesc.getInventoryAmount().add(stockOne.getInventoryAmount()));
+					if (stockDesc.getBalanceQuantity().compareTo(new BigDecimal("0")) != 0) {
+						stockDesc.setInventoryCostPrice(stockDesc.getInventoryAmount().divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+					}
+					stockDesc.setVersion(stockOne.getVersion());
+				}
+				boolean count = stockDescService.saveOrUpdate(stockDesc);
+				if (!count) {
+					throw new RuntimeException(stockOne.getCname() + "该产品库存正在操作,请稍后刷新在进行操作!");
+				}
+				/** ----------------------修改上架库存---------------------- */
+
+				if (finalPjStockDescList.size() <= 0) {
+					throw new RuntimeException(goodsDesc.getCname() + "未查到库存信息");
+				}
+				//查询所有该商品的库存
+				List<PjStockDesc> stockDescList = finalPjStockDescList.stream().filter(i -> goodsIds.contains(i.getGoodsId())).collect(Collectors.toList());
+				if (stockDescList.size() <= 0) {
+					throw new RuntimeException(goodsDesc.getCname() + "未查到库存结余");
+				}
+				//库存总数量
+				BigDecimal balanceQuantity = stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				balanceQuantity = balanceQuantity.add(e.getGoodsNum());
+				//查询所有上架商品
+				List<PjProductLaunch> productLaunch = finalPjProductLaunch.stream().filter(i -> i.getGoodsId().equals(e.getGoodsId())).collect(Collectors.toList());
+				//修改上架数量
+				if (ObjectUtil.isNotEmpty(productLaunch)) {
+					BigDecimal finalBalanceQuantity = balanceQuantity;
+					productLaunch.forEach(item -> {
+						item.setInventory(finalBalanceQuantity);
+						pjProductLaunchList.add(item);
+					});
+				}
+
+				/** ----------------------修改上架库存---------------------- */
+			});
+			R res = productLaunchService.updateBatchById(pjProductLaunchList);
+			if (!res.isSuccess()) {
+				throw new RuntimeException(res.getMsg());
+			}
+			gdShip.setNumberRows(list.size());
+			shipItemsService.saveBatch(shipItemsList);
+			orderItemsService.updateBatchById(list);
+
+			gdShip.setNumberRows(list.size());
+		}
+
+		//修改入库任务状态
+		pjShip.setStatusName(OrderTypeEnum.DISPATCHED.getType());
+		shipMapper.updateById(pjShip);
+		shipMapper.updateById(gdShip);
+
+		//生成入库工单历史记录
+		saveHistory(gdShip.getId(), OrderTypeEnum.RECEIVED.getType());
+		//生成出库工单历史记录
+		saveHistory(pjShip.getId(), OrderTypeEnum.DISPATCHED.getType());
+		//修改采购状态
+		pjOrder.setGenerateTask(OrderTypeEnum.SCRW.getType());
+		pjOrder.setStatus(OrderTypeEnum.RECEIVEDGOODS.getType());
+		pjOrder.setXcxStatus(OrderTypeEnum.RECEIVEDGOODS.getType());
+		baseMapper.updateById(pjOrder);
+		return R.data(pjOrder);
+	}
+
 	/**
 	 * 保存订单信息
 	 *
@@ -647,12 +880,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						item.setCreateUser(AuthUtil.getUserId());
 						item.setPid(order.getId());
 						item.setTenantId(AuthUtil.getTenantId());
-						orderItemsMapper.insert(item);
+						orderItemsService.save(item);
 					} else {
 						item.setUpdateTime(new Date());
 						item.setUpdateUser(AuthUtil.getUserId());
 						item.setPid(order.getId());
-						orderItemsMapper.updateById(item);
+						orderItemsService.updateById(item);
 					}
 
 					//计算小计
@@ -708,7 +941,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					//计算毛利
 					item.setGrossProfit(item.getSubTotalMoney().subtract(item.getCostprie()));
 
-					orderItemsMapper.updateById(item);
+					orderItemsService.updateById(item);
 
 				}
 				if (goodsName.length() > 0) {
@@ -781,12 +1014,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						item.setCreateUser(AuthUtil.getUserId());
 						item.setPid(order.getId());
 						item.setTenantId(AuthUtil.getTenantId());
-						orderItemsMapper.insert(item);
+						orderItemsService.save(item);
 					} else {
 						item.setUpdateTime(new Date());
 						item.setUpdateUser(AuthUtil.getUserId());
 						item.setPid(order.getId());
-						orderItemsMapper.updateById(item);
+						orderItemsService.updateById(item);
 					}
 				});
 
@@ -884,7 +1117,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			itemsLambdaQueryWrapper.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrderItems::getIsDeleted, 0)
 				.eq(PjOrderItems::getPid, pjOrder.getId());
-			List<PjOrderItems> itemsList = orderItemsMapper.selectList(itemsLambdaQueryWrapper);
+			List<PjOrderItems> itemsList = orderItemsService.list(itemsLambdaQueryWrapper);
 			if (ObjectUtil.isNotEmpty(itemsList)) {
 				itemsList.forEach(e -> {
 					LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
@@ -1035,7 +1268,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			itemsLambdaQueryWrapper.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrderItems::getIsDeleted, 0)
 				.eq(PjOrderItems::getPid, pjOrder.getId());
-			List<PjOrderItems> itemsList = orderItemsMapper.selectList(itemsLambdaQueryWrapper);
+			List<PjOrderItems> itemsList = orderItemsService.list(itemsLambdaQueryWrapper);
 			if (ObjectUtil.isNotEmpty(itemsList)) {
 				itemsList.forEach(e -> {
 					LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
@@ -1186,7 +1419,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		itemsLambdaQueryWrapper.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrderItems::getIsDeleted, 0)
 			.eq(PjOrderItems::getPid, detail.getId());
-		List<PjOrderItems> orderItems = orderItemsMapper.selectList(itemsLambdaQueryWrapper);
+		List<PjOrderItems> orderItems = orderItemsService.list(itemsLambdaQueryWrapper);
 		for (PjOrderItems item : orderItems) {
 			List<PjGoodsFiles> pjGoodsFiles = goodsFilesService.list(new LambdaQueryWrapper<PjGoodsFiles>()
 				.eq(PjGoodsFiles::getTenantId, AuthUtil.getTenantId())
@@ -1323,11 +1556,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				}
 			}
 			//根据主表id获得明细数据
-			List<PjOrderItems> list = orderItemsMapper.selectList(new QueryWrapper<PjOrderItems>()
+			List<PjOrderItems> list = orderItemsService.list(new QueryWrapper<PjOrderItems>()
 				.eq("pid", order.getId())
 				.eq("is_deleted", 0)
 				.eq("tenant_id", AuthUtil.getTenantId()));
-			 goodsIds = list.stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+			goodsIds = list.stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 			List<PjGoodsDesc> pjGoodsDescList = goodsDescMapper.selectList(new LambdaQueryWrapper<PjGoodsDesc>()
 				.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
 				.eq(PjGoodsDesc::getIsDeleted, 0)
@@ -1423,7 +1656,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							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);
+							shipItemsService.save(shipItems);
 						}
 					}
 				}
@@ -1452,12 +1685,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							item.setCreateUser(AuthUtil.getUserId());
 							item.setPid(order.getId());
 							item.setTenantId(AuthUtil.getTenantId());
-							orderItemsMapper.insert(item);
+							orderItemsService.save(item);
 						} else {
 							item.setUpdateTime(new Date());
 							item.setUpdateUser(AuthUtil.getUserId());
 							item.setPid(order.getId());
-							orderItemsMapper.updateById(item);
+							orderItemsService.updateById(item);
 						}
 
 						//获得商品
@@ -1552,7 +1785,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			integralDetail.setIntegral(order.getTotalMoney());
 			integralDetail.setGoodsName(order.getGoodsNameJoin());
 			StringBuilder goodsId = new StringBuilder();
-			for (Long item: goodsIds){
+			for (Long item : goodsIds) {
 				goodsId.append(item).append(",");
 			}
 			if (goodsId.length() > 0) {
@@ -1621,7 +1854,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			orderId.append(id).append(",");
 		}
 		BigDecimal amount = orderList.stream().map(PjOrder::getTotalMoney).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-		List<PjOrderItems> pjOrderItems = orderItemsMapper.selectList(new LambdaQueryWrapper<PjOrderItems>().in(PjOrderItems::getPid, ids));
+		List<PjOrderItems> pjOrderItems = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>().in(PjOrderItems::getPid, ids));
 		String goodsNames = pjOrderItems.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining());
 		return payService.payPrepay(orderId.substring(0, orderId.length() - 1), amount, srcOrderNo, 1, goodsNames, null);
 	}

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

@@ -320,7 +320,6 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					}
 
 				}
-				;
 				shipItemsService.saveBatch(shipItemsList);
 				gdShip.setNumberRows(list.size());
 			}