纪新园 2 лет назад
Родитель
Сommit
a452f919ff

+ 3 - 1
blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/feign/IDeliveryClient.java

@@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.Date;
 import java.util.List;
 
 @FeignClient(
@@ -111,5 +112,6 @@ public interface IDeliveryClient {
 	@GetMapping(SAVE_DELIVERY_DATA)
 	void saveDeliveryData(@RequestParam("orderId") Long orderId,
 						 @RequestParam("orderNo") String orderNo,
-						 @RequestParam("deliveryStatus") String deliveryStatus);
+						 @RequestParam("deliveryStatus") String deliveryStatus,
+						 @RequestParam("estimateGoodGoodsDate") String estimateGoodGoodsDate);
 }

+ 12 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBills.java

@@ -425,5 +425,17 @@ public class FinStlBills implements Serializable {
 	@TableField(exist = false)
 	private List<FinStlBillsVoucherItems> finStlBillsVoucherItemsList;
 
+	/**
+	 * 编码生成code
+	 */
+	@TableField(exist = false)
+	private String billNoFormat;
+
+	/**
+	 * 业务类型表 code
+	 */
+	@TableField(exist = false)
+	private String businessTypeCode;
+
 
 }

+ 12 - 1
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/feign/DeliveryClient.java

@@ -24,6 +24,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -332,7 +334,7 @@ public class DeliveryClient implements IDeliveryClient {
 	 * @return
 	 */
 	@Override
-	public void saveDeliveryData(Long orderId, String orderNo, String deliveryStatus) {
+	public void saveDeliveryData(Long orderId, String orderNo, String deliveryStatus,String estimateGoodGoodsDate) {
 		LambdaQueryWrapper<Delivery> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(Delivery::getIsDeleted, 0)
 			.eq(Delivery::getTenantId, AuthUtil.getTenantId())
@@ -345,6 +347,15 @@ public class DeliveryClient implements IDeliveryClient {
 		Delivery delivery = deliveryService.getOne(lambdaQueryWrapper);
 		if (ObjectUtils.isNotNull(delivery)) {
 			delivery.setDeliveryStatus(deliveryStatus);
+			if (ObjectUtils.isNotNull(estimateGoodGoodsDate)){
+				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+				try {
+					Date date = sdf.parse(estimateGoodGoodsDate);
+					delivery.setPlannedDeliveryDate(date);
+				} catch (ParseException e) {
+					e.printStackTrace();
+				}
+			}
 		}
 		deliveryService.updateById(delivery);
 	}

+ 65 - 6
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -243,9 +243,9 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		if (ObjectUtils.isNotNull(bills.getFeeCenterListC())) {
 			for (FeeCenter item : bills.getFeeCenterListC()) {
 				if ("USD".equals(item.getCurCode())) {
-					amountCrUsd = amountDrUsd.add(item.getAmount());
+					amountCrUsd = amountCrUsd.add(item.getAmount());
 				} else if ("CNY".equals(item.getCurCode())) {
-					amountCr = amountDrUsd.add(item.getAmount());
+					amountCr = amountCr.add(item.getAmount());
 				} else {
 					BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount());
 					amountCrUsd = amountCrUsd.add(usd);
@@ -260,10 +260,10 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				if ("USD".equals(item.getCurCode())) {
 					amountDrUsd = amountDrUsd.add(item.getAmount());
 				} else if ("CNY".equals(item.getCurCode())) {
-					amountDrUsd = amountDrUsd.add(item.getAmount());
+					amountDr = amountDr.add(item.getAmount());
 				} else {
 					BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount());
-					amountDrUsd = amountCrUsd.add(usd);
+					amountDrUsd = amountDrUsd.add(usd);
 				}
 			}
 			if (!charData.equals(bills.getCharData())) {
@@ -290,8 +290,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		amountProfit = amountDr.subtract(amountCr);
 		amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
 
-		amountDrLoc = amountDrLoc.add(bCurrencyService.converterCny("USD", amountDrUsd));
-		amountCrLoc = amountDrLoc.add(bCurrencyService.converterCny("USD", amountCrUsd));
+		amountDrLoc = amountDrLoc.add(bCurrencyService.converterCny("USD", amountDrUsd)).add(amountDr);
+		amountCrLoc = amountCrLoc.add(bCurrencyService.converterCny("USD", amountCrUsd)).add(amountCr);
 		amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
 
 		bills.setAmountDr(amountDr);
@@ -458,6 +458,36 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				item.setUpdateUserName(AuthUtil.getUserName());
 			}
 			this.updateBatchById(billsList);
+
+			BigDecimal amountDr = bills.getAmountDr();
+			BigDecimal amountCr = bills.getAmountCr();
+			BigDecimal amountProfit = bills.getAmountProfit();
+			BigDecimal amountDrUsd = bills.getAmountDrUsd();
+			BigDecimal amountCrUsd = bills.getAmountCrUsd();
+			BigDecimal amountProfitUsd = bills.getAmountProfitUsd();
+			BigDecimal amountDrLoc = bills.getAmountDrLoc();
+			BigDecimal amountCrLoc = bills.getAmountCrLoc();
+			BigDecimal amountProfitLoc = bills.getAmountProfitLoc();
+			if (billsList.size() > 0) {
+				amountDr = amountDr.add(billsList.stream().map(Bills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountCr = amountCr.add(billsList.stream().map(Bills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountProfit = amountProfit.add(billsList.stream().map(Bills::getAmountProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountDrUsd = amountDrUsd.add(billsList.stream().map(Bills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountCrUsd = amountCrUsd.add(billsList.stream().map(Bills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountProfitUsd = amountProfitUsd.add(billsList.stream().map(Bills::getAmountProfitUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountDrLoc = amountDrLoc.add(billsList.stream().map(Bills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountCrLoc = amountCrLoc.add(billsList.stream().map(Bills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountProfitLoc = amountProfitLoc.add(billsList.stream().map(Bills::getAmountProfitLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			}
+			bills.setAmountDr(amountDr);
+			bills.setAmountCr(amountCr);
+			bills.setAmountProfit(amountProfit);
+			bills.setAmountDrUsd(amountDrUsd);
+			bills.setAmountCrUsd(amountCrUsd);
+			bills.setAmountProfitUsd(amountProfitUsd);
+			bills.setAmountDrLoc(amountDrLoc);
+			bills.setAmountCrLoc(amountCrLoc);
+			bills.setAmountProfitLoc(amountProfitLoc);
 			baseMapper.updateById(bills);
 		}
 		return R.data("操作成功");
@@ -485,6 +515,35 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				item.setUpdateUserName(AuthUtil.getUserName());
 			}
 			this.updateBatchById(billsList);
+			BigDecimal amountDr = bills.getAmountDr();
+			BigDecimal amountCr = bills.getAmountCr();
+			BigDecimal amountProfit = bills.getAmountProfit();
+			BigDecimal amountDrUsd = bills.getAmountDrUsd();
+			BigDecimal amountCrUsd = bills.getAmountCrUsd();
+			BigDecimal amountProfitUsd = bills.getAmountProfitUsd();
+			BigDecimal amountDrLoc = bills.getAmountDrLoc();
+			BigDecimal amountCrLoc = bills.getAmountCrLoc();
+			BigDecimal amountProfitLoc = bills.getAmountProfitLoc();
+			if (billsList.size() > 0) {
+				amountDr = amountDr.subtract(billsList.stream().map(Bills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountCr = amountCr.subtract(billsList.stream().map(Bills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountProfit = amountProfit.subtract(billsList.stream().map(Bills::getAmountProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountDrUsd = amountDrUsd.subtract(billsList.stream().map(Bills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountCrUsd = amountCrUsd.subtract(billsList.stream().map(Bills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountProfitUsd = amountProfitUsd.subtract(billsList.stream().map(Bills::getAmountProfitUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountDrLoc = amountDrLoc.subtract(billsList.stream().map(Bills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountCrLoc = amountCrLoc.subtract(billsList.stream().map(Bills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				amountProfitLoc = amountProfitLoc.subtract(billsList.stream().map(Bills::getAmountProfitLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			}
+			bills.setAmountDr(amountDr);
+			bills.setAmountCr(amountCr);
+			bills.setAmountProfit(amountProfit);
+			bills.setAmountDrUsd(amountDrUsd);
+			bills.setAmountCrUsd(amountCrUsd);
+			bills.setAmountProfitUsd(amountProfitUsd);
+			bills.setAmountDrLoc(amountDrLoc);
+			bills.setAmountCrLoc(amountCrLoc);
+			bills.setAmountProfitLoc(amountProfitLoc);
 			bills.setMasterBillNo("");
 			bills.setMasterId(0L);
 			baseMapper.updateById(bills);

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

@@ -24,6 +24,10 @@ import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.los.basic.business.entity.BusinessType;
+import org.springblade.los.basic.business.service.IBusinessTypeService;
+import org.springblade.los.billno.entity.BusinessBillNo;
+import org.springblade.los.billno.service.IBusinessBillNoService;
 import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.mapper.BillsMapper;
 import org.springblade.los.finance.fee.entity.FinAccBills;
@@ -39,6 +43,7 @@ import org.springblade.los.finance.stl.vo.FinStlBillsVO;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -66,6 +71,10 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 
 	private final BillsMapper billsMapper;
 
+	private final IBusinessBillNoService businessBillNoService;
+
+	private final IBusinessTypeService bBusinessTypeService;
+
 	@Override
 	public IPage<FinStlBillsVO> selectFinStlBillsPage(IPage<FinStlBillsVO> page, FinStlBillsVO finStlBills) {
 		return page.setRecords(baseMapper.selectFinStlBillsPage(page, finStlBills));
@@ -105,6 +114,23 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			}
 		}
 		if (finStlBills.getId() == null) {
+			BusinessType businessType = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
+				.eq(BusinessType::getTenantId, AuthUtil.getTenantId())
+				.eq(BusinessType::getIsDeleted, 0)
+				.eq(BusinessType::getStatus, 0)
+				.eq(BusinessType::getCode, finStlBills.getBusinessTypeCode()));
+			if (businessType == null) {
+				throw new RuntimeException("未找到可用业务类型");
+			}
+			BusinessBillNo businessBillNo = new BusinessBillNo();
+			businessBillNo.setBusinessTypeId(businessType.getId());
+			businessBillNo.setCode(finStlBills.getBillNoFormat());
+			R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
+			if (!clientBillNo.isSuccess()) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成订单编号失败");
+			}
+			finStlBills.setBillNo((String) clientBillNo.getData());
 			finStlBills.setCreateTime(new Date());
 			finStlBills.setCreateUser(AuthUtil.getUserId());
 			finStlBills.setCreateUserName(AuthUtil.getUserName());

+ 14 - 9
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -1271,7 +1271,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 							throw new SecurityException("锁定库存失败:未查询到库存信息");
 						}
 						// 原单据的订货数量(和)
-						BigDecimal orderQuantity = orderItems.stream().filter(e->e.getItemId().equals(item.getItemId()))
+						BigDecimal orderQuantity = orderItems.stream().filter(e -> e.getItemId().equals(item.getItemId()))
 							.collect(Collectors.toList()).stream().map(OrderItems::getOrderQuantity)
 							.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 						// 可用库存
@@ -1795,7 +1795,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						throw new SecurityException("撤销失败:未查询到库存信息");
 					}
 					// 原单据的订货数量
-					BigDecimal orderQuantity = orderItems.stream().filter(i->i.getItemId().equals(e.getItemId()))
+					BigDecimal orderQuantity = orderItems.stream().filter(i -> i.getItemId().equals(e.getItemId()))
 						.collect(Collectors.toList()).stream().map(OrderItems::getOrderQuantity)
 						.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 					// 可用库存
@@ -2050,7 +2050,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 							throw new SecurityException("编号:" + e.getCode() + "撤销失败:未查询到库存信息");
 						}
 						// 原单据的订货数量
-						BigDecimal orderQuantity = orderItems.stream().filter(i->i.getItemId().equals(e.getItemId()))
+						BigDecimal orderQuantity = orderItems.stream().filter(i -> i.getItemId().equals(e.getItemId()))
 							.collect(Collectors.toList()).stream().map(OrderItems::getOrderQuantity)
 							.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 						// 可用库存
@@ -5628,7 +5628,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				throw new SecurityException("发送消息失败");
 			}
 			//修改跟单状态为待采购
-			deliveryClient.saveDeliveryData(selectOrder.getId(), selectOrder.getOrderNo(), "待采购");
+			deliveryClient.saveDeliveryData(selectOrder.getId(), selectOrder.getOrderNo(), "待采购", null);
 
 		}
 
@@ -5973,7 +5973,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			List<OrderParts> srcItemsList = new ArrayList<>();
 			List<OrderItems> srcOrderItemsList = new ArrayList<>();
 			for (OrderItems orderItems : orderItemsList) {
-				if (ObjectUtils.isNotNull(orderItems.getSrcItemId())){
+				if (ObjectUtils.isNotNull(orderItems.getSrcItemId())) {
 					if (1 == order.getPurchaseStatusType()) {//排产中
 						if (ObjectUtils.isNotEmpty(orderItems.getDetailType())) {
 							if (OrderTypeEnum.PARTSTYPE.getType().equals(orderItems.getDetailType())) {
@@ -6030,12 +6030,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						order1.setProductionSchedulingDate(order.getProductionSchedulingDate());
 						order1.setPurchaseQuantity(order1.getPurchaseQuantity().add(purchaseQuantity));
 						order1.setPurchaseQuantityPj(order1.getPurchaseQuantityPj().add(purchaseQuantityPj));
-						deliveryClient.saveDeliveryData(order1.getId(), order1.getOrderNo(), "排产中");
+						deliveryClient.saveDeliveryData(order1.getId(), order1.getOrderNo(), "排产中", null);
 					} else if (2 == order.getPurchaseStatusType()) {
 						order1.setProductionScheduling("预计货好");
 						order1.setOrderStatus("预计货好");
 						order1.setProductionSchedulingDate(order.getEstimateGoodGoodsDate());
-						deliveryClient.saveDeliveryData(order1.getId(), order1.getOrderNo(), "预计货好");
+						SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+						String date = "";
+						if (ObjectUtils.isNotNull(detail.getPlannedDeliveryDate())) {
+							date = sdf.format(detail.getPlannedDeliveryDate());
+						}
+						deliveryClient.saveDeliveryData(order1.getId(), order1.getOrderNo(), "预计货好", date);
 					} else if (3 == order.getPurchaseStatusType()) {
 						List<Order> orderList1 = baseMapper.selectList(new LambdaQueryWrapper<Order>()
 							.eq(Order::getTenantId, AuthUtil.getTenantId())
@@ -6047,7 +6052,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 							order1.setProductionScheduling("货备齐");
 							order1.setOrderStatus("货备齐");
 							order1.setProductionSchedulingDate(new Date());
-							deliveryClient.saveDeliveryData(order1.getId(), order1.getOrderNo(), "货备齐");
+							deliveryClient.saveDeliveryData(order1.getId(), order1.getOrderNo(), "货备齐", null);
 						}
 					}
 					orderList.add(order1);
@@ -6193,7 +6198,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					order1.setPurchaseQuantity(order1.getPurchaseQuantity().subtract(purchaseQuantity));
 					order1.setPurchaseQuantityPj(order1.getPurchaseQuantityPj().subtract(purchaseQuantityPj));
 //					baseMapper.updateById(order1);
-					deliveryClient.saveDeliveryData(order1.getId(), order1.getOrderNo(), "待采购");
+					deliveryClient.saveDeliveryData(order1.getId(), order1.getOrderNo(), "待采购", null);
 					orderList.add(order1);
 				}
 			}