Browse Source

2025年3月10日16:50:15

纪新园 8 months ago
parent
commit
a6008c353a

+ 16 - 5
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java

@@ -141,16 +141,27 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 		}
 		List<Bills> billsList = new ArrayList<>();
 		List<Long> ids = finAccBills.getFeeCenterList().stream().map(FeeCenter::getPid).collect(Collectors.toList());
+		String status = sysClient.getParamService("generate.billing.rules");
 		for (FeeCenter item : finAccBills.getFeeCenterList()) {
 			if (1 == item.getAccStatus()) {
 				throw new RuntimeException("费用:" + item.getFeeCnName() + "已生成账单");
 			}
-			if (ObjectUtils.isNotNull(item.getPid()) && ObjectUtils.isNotNull(item.getCorpId()) &&
-				ObjectUtils.isNotNull(item.getDc()) && ObjectUtils.isNotNull(item.getElementsId()) && ObjectUtils.isNotNull(item.getCurCode())) {
-				item.setBillKey(item.getPid() + "-" + item.getCorpId() + "-" + item.getDc() + "-" + item.getElementsCode() + "-" + item.getCurCode());
-			} else {
-				throw new RuntimeException("单据号、单位、费用类型、核算要素不能为空");
+			if ("1".equals(status)){
+				if (ObjectUtils.isNotNull(item.getPid()) && ObjectUtils.isNotNull(item.getCorpId()) &&
+					ObjectUtils.isNotNull(item.getDc()) && ObjectUtils.isNotNull(item.getElementsId()) && ObjectUtils.isNotNull(item.getCurCode())) {
+					item.setBillKey(item.getPid() + "-" + item.getCorpId() + "-" + item.getDc() + "-" + item.getElementsCode() + "-" + item.getCurCode());
+				} else {
+					throw new RuntimeException("单据号、单位、费用类型、核算要素不能为空");
+				}
+			}else{
+				if (ObjectUtils.isNotNull(item.getPid()) && ObjectUtils.isNotNull(item.getCorpId()) &&
+					ObjectUtils.isNotNull(item.getDc()) && ObjectUtils.isNotNull(item.getFeeId()) && ObjectUtils.isNotNull(item.getCurCode())) {
+					item.setBillKey(item.getPid() + "-" + item.getCorpId() + "-" + item.getDc() + "-" + item.getFeeCode() + "-" + item.getCurCode());
+				} else {
+					throw new RuntimeException("单据号、单位、费用类型、费用名称不能为空");
+				}
 			}
+
 		}
 		BusinessType businessType = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
 			.eq(BusinessType::getTenantId, AuthUtil.getTenantId())

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

@@ -1469,7 +1469,7 @@ public class OrderController extends BladeController {
 		LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
-			.eq(PjOrder::getBsType, "XS")
+			.apply("FIND_IN_SET( bs_type, 'XS,GX' )")
 			.eq(PjOrder::getCustomerId, order.getCustomerId())
 			.eq(PjOrder::getBusinessSource, "额度支付")
 			.apply("FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )")

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

@@ -1375,20 +1375,6 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 			throw new RuntimeException("生成系统编号失败");
 		}
-		R<List<User>> res = userSearchClient.getWarehouseKeeper("业务员", AuthUtil.getDeptId());
-		List<PjOrder> pjOrderList = new ArrayList<>();
-		List<PjOrderItems> orderItemsList = new ArrayList<>();
-		List<PjOrderItems> orderItemsListShare = new ArrayList<>();
-		//保存销售主表信息-本地销售单
-		PjOrder order = new PjOrder();
-		if (list.size() == 1) {//如果只有一个公司,订单编号和主编号一致
-			order.setOrdNo(SrcOrdNo);
-		} else {
-			order.setOrdNo(SrcOrdNo + "-" + 1);
-		}
-		order.setBusinesDate(new Date());
-		order.setSrcOrdNo(billNo);
-		order.setCreateUser(AuthUtil.getUserId());
 		//处理部门
 		int index = AuthUtil.getDeptId().indexOf(",");
 		Long deptId = null;
@@ -1397,44 +1383,11 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 		} else {
 			deptId = (Long.valueOf(AuthUtil.getDeptId()));
 		}
-		//根据客户账期计算应结日期
-		if (ObjectUtil.isNotEmpty(corpsDesc.getAccountPeriod())) {
-			Date now = new Date(); // 获取当前时间
-			long sevenDays = corpsDesc.getAccountPeriod() * 24 * 60 * 60 * 1000L;
-			Date afterSevenDays = new Date(now.getTime() + sevenDays);
-			order.setDueDate(afterSevenDays);
-		} else {
-			order.setDueDate(new Date());
-		}
-		order.setCreateTime(new Date());
-		order.setCreateDept(deptId);
-		order.setTenantId(AuthUtil.getTenantId());
-		order.setCustomerId(corpsDesc.getId());
-		order.setCustomerName(corpsDesc.getCname());
-		if (ObjectUtils.isNotNull(corpsDesc.getSalesmanId())) {
-			order.setSalerId(corpsDesc.getSalesmanId());
-			order.setSalerName(corpsDesc.getSalesmanName());
-		} else {
-			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData()) && !res.getData().isEmpty()) {
-				order.setSalerId(res.getData().get(0).getId());
-				order.setSalerName(res.getData().get(0).getAccount());
-			}
-		}
-		if (ObjectUtils.isNotNull(corpsDesc.getDeliveryWarehouseId())) {
-			order.setStorageId(corpsDesc.getDeliveryWarehouseId());
-			order.setStorageName(corpsDesc.getDeliveryWarehouseName());
-		}
-		order.setSalesCompanyId(deptId);
-		order.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
-		order.setRecAddress(address);
-		order.setContacts(corpsAttn.getCname());
-		order.setPhone(corpsAttn.getTel());
-		order.setBsType(OrderTypeEnum.SALES.getType());
-		order.setBusinessSource("额度支付");
-		order.setReceivableType("网络支付");
-		order.setBillType(0);
-		orderService.save(order);
-		pjOrderList.add(order);
+		R<List<User>> res = userSearchClient.getWarehouseKeeper("业务员", AuthUtil.getDeptId());
+		List<PjOrder> pjOrderList = new ArrayList<>();
+		List<PjOrderItems> orderItemsList = new ArrayList<>();
+		List<PjOrderItems> orderItemsListShare = new ArrayList<>();
+
 		for (PjShoppingCart item : list) {
 			if (item.getInventory().compareTo(item.getGoodsNum()) < 0) {
 				throw new RuntimeException("库存不足");
@@ -1451,17 +1404,15 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 				orderItems.setId(null);
 				orderItems.setSendNum(new BigDecimal("0.00"));
 				orderItems.setCreateUser(AuthUtil.getUserId());
-				orderItems.setCreateDept(order.getCreateDept());
+				orderItems.setCreateDept(deptId);
 				orderItems.setCreateTime(new Date());
-				orderItems.setPid(order.getId());
 				orderItems.setTenantId(AuthUtil.getTenantId());
-				orderItems.setBillNo(order.getOrdNo());
-				orderItems.setBizType(order.getBsType());
+				orderItems.setBillNo(billNo);
+				orderItems.setBizType("XS");
 				orderItems.setInventory(item.getInventory());
 				orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
 				orderItems.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
 				orderItems.setGoodsName(item.getGoodsName());
-				orderItemsMapper.insert(orderItems);
 				orderItemsList.add(orderItems);
 				productLaunch.setInventory(productLaunch.getInventory().subtract(orderItems.getGoodsNum()));
 				productLaunchMapper.updateById(productLaunch);
@@ -1472,7 +1423,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					items.setUpdateUser(AuthUtil.getUserId());
 					sharePutOnShelvesMapper.updateSharePutOnShelves(items);
 				}
-			} else {
+			} else {//共享销售
 				//保存销售明细信息
 				PjOrderItems orderItems = new PjOrderItems();
 				BeanUtils.copyProperties(item, orderItems);
@@ -1482,12 +1433,11 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 				orderItems.setId(null);
 				orderItems.setSendNum(new BigDecimal("0.00"));
 				orderItems.setCreateUser(AuthUtil.getUserId());
-				orderItems.setCreateDept(order.getCreateDept());
+				orderItems.setCreateDept(deptId);
 				orderItems.setCreateTime(new Date());
-				orderItems.setPid(order.getId());
 				orderItems.setTenantId(AuthUtil.getTenantId());
-				orderItems.setBillNo(order.getOrdNo());
-				orderItems.setBizType(order.getBsType());
+				orderItems.setBillNo(billNo);
+				orderItems.setBizType("GX");
 				orderItems.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
 				orderItems.setGoodsName(item.getGoodsName());
 
@@ -1500,10 +1450,10 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 				orderItemsShare.setId(null);
 				orderItemsShare.setSendNum(new BigDecimal("0.00"));
 				orderItemsShare.setCreateUser(AuthUtil.getUserId());
-				orderItemsShare.setCreateDept(order.getCreateDept());
+				orderItemsShare.setCreateDept(deptId);
 				orderItemsShare.setCreateTime(new Date());
 				orderItemsShare.setTenantId(AuthUtil.getTenantId());
-				orderItemsShare.setBillNo(order.getOrdNo());
+				orderItemsShare.setBillNo(billNo);
 				orderItemsShare.setBizType("GX");
 				orderItemsShare.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
 				orderItemsShare.setGoodsName(item.getGoodsName());
@@ -1512,8 +1462,16 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					orderItems.setGoodsNum(productLaunch.getInventory());
 					orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
 					orderItems.setNextDayNum(item.getGoodsNum().subtract(productLaunch.getInventory()));
-					orderItemsMapper.insert(orderItems);
 					orderItemsList.add(orderItems);
+					productLaunch.setInventory(productLaunch.getInventory().subtract(orderItems.getGoodsNum()));
+					productLaunchMapper.updateById(productLaunch);
+					List<SharePutOnShelves> sharePutOnShelvesList = sharePutOnShelvesMapper.selectListShare(productLaunch.getId() + "");
+					for (SharePutOnShelves items : sharePutOnShelvesList) {
+						items.setInventory(productLaunch.getInventory());
+						items.setUpdateTime(new Date());
+						items.setUpdateUser(AuthUtil.getUserId());
+						sharePutOnShelvesMapper.updateSharePutOnShelves(items);
+					}
 					orderItemsShare.setInventory(item.getInventory());
 					orderItemsShare.setGoodsNum(item.getGoodsNum().subtract(productLaunch.getInventory()));
 					orderItemsShare.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
@@ -1582,50 +1540,111 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 			}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
 			orderShare.setSalesAmount(totalMoney);
 			orderShare.setTotalMoney(totalMoney);
+			orderShare.setPaymentAmountTl(orderShare.getTotalMoney());
+			orderShare.setActualPaymentStatus(2);
+			orderShare.setPaymentDate(new Date());
+			orderShare.setStatus(OrderTypeEnum.XSDQR.getType());
+			orderShare.setXcxStatus(OrderTypeEnum.XSDFH.getType());
 			orderShare.setGoodsNameJoin(orderItemsListShare.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
 			orderShare.setShortcutJoin(orderItemsListShare.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
-			corpsDesc.setLimitAmount(corpsDesc.getLimitAmount().subtract(totalMoney));
 			pjOrderList.add(orderShare);
 			orderService.save(orderShare);
-			pjOrderList.add(orderShare);
 			for (PjOrderItems item : orderItemsListShare) {
 				item.setPid(orderShare.getId());
 				orderItemsMapper.insert(item);
 			}
+			corpsDesc.setLimitAmount(corpsDesc.getLimitAmount().subtract(totalMoney));
+			corpsDescService.updateById(corpsDesc);
 		}
-		BigDecimal totalMoney = BigDecimal.ZERO;
-		order.setNumberRows(orderItemsList.size());//行数
-		//明细总数量
-		order.setGoodsTotalNum(orderItemsList.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-		//明细总金额
-		totalMoney = orderItemsList.stream().reduce(BigDecimal.ZERO, (x, y) -> {
-			return x.add(y.getGoodsNum().multiply(y.getPrice()));
-		}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-		order.setSalesAmount(totalMoney);
-		order.setTotalMoney(totalMoney);
-		if (order.getGoodsTotalNum().compareTo(new BigDecimal(1)) == 0) {
-			String freight = sysClient.getParamServiceDWT("freight", corpsDesc.getTenantId());
-			if (ObjectUtils.isNotNull(freight)) {
-				try {
-					BigDecimal freightAmount = new BigDecimal(freight);
-					order.setTotalMoney(totalMoney.add(freightAmount));
-					order.setFreight(freightAmount);
-				} catch (Exception ignored) {
-					order.setFreight(new BigDecimal(0));
+		if (!orderItemsList.isEmpty()){
+			//保存销售主表信息-本地销售单
+			PjOrder order = new PjOrder();
+			if (list.size() == 1) {//如果只有一个公司,订单编号和主编号一致
+				order.setOrdNo(SrcOrdNo);
+			} else {
+				order.setOrdNo(SrcOrdNo + "-" + 1);
+			}
+			order.setBusinesDate(new Date());
+			order.setSrcOrdNo(billNo);
+			order.setCreateUser(AuthUtil.getUserId());
+			//根据客户账期计算应结日期
+			if (ObjectUtil.isNotEmpty(corpsDesc.getAccountPeriod())) {
+				Date now = new Date(); // 获取当前时间
+				long sevenDays = corpsDesc.getAccountPeriod() * 24 * 60 * 60 * 1000L;
+				Date afterSevenDays = new Date(now.getTime() + sevenDays);
+				order.setDueDate(afterSevenDays);
+			} else {
+				order.setDueDate(new Date());
+			}
+			order.setCreateTime(new Date());
+			order.setCreateDept(deptId);
+			order.setTenantId(AuthUtil.getTenantId());
+			order.setCustomerId(corpsDesc.getId());
+			order.setCustomerName(corpsDesc.getCname());
+			if (ObjectUtils.isNotNull(corpsDesc.getSalesmanId())) {
+				order.setSalerId(corpsDesc.getSalesmanId());
+				order.setSalerName(corpsDesc.getSalesmanName());
+			} else {
+				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData()) && !res.getData().isEmpty()) {
+					order.setSalerId(res.getData().get(0).getId());
+					order.setSalerName(res.getData().get(0).getAccount());
+				}
+			}
+			if (ObjectUtils.isNotNull(corpsDesc.getDeliveryWarehouseId())) {
+				order.setStorageId(corpsDesc.getDeliveryWarehouseId());
+				order.setStorageName(corpsDesc.getDeliveryWarehouseName());
+			}
+			order.setSalesCompanyId(deptId);
+			order.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
+			order.setRecAddress(address);
+			order.setContacts(corpsAttn.getCname());
+			order.setPhone(corpsAttn.getTel());
+			order.setBsType(OrderTypeEnum.SALES.getType());
+			order.setBusinessSource("额度支付");
+			order.setReceivableType("网络支付");
+			order.setBillType(0);
+			BigDecimal totalMoney = BigDecimal.ZERO;
+			order.setNumberRows(orderItemsList.size());//行数
+			//明细总数量
+			order.setGoodsTotalNum(orderItemsList.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			//明细总金额
+			totalMoney = orderItemsList.stream().reduce(BigDecimal.ZERO, (x, y) -> {
+				return x.add(y.getGoodsNum().multiply(y.getPrice()));
+			}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
+			order.setSalesAmount(totalMoney);
+			order.setTotalMoney(totalMoney);
+			if (order.getGoodsTotalNum().compareTo(new BigDecimal(1)) == 0) {
+				String freight = sysClient.getParamServiceDWT("freight", corpsDesc.getTenantId());
+				if (ObjectUtils.isNotNull(freight)) {
+					try {
+						BigDecimal freightAmount = new BigDecimal(freight);
+						order.setTotalMoney(totalMoney.add(freightAmount));
+						order.setFreight(freightAmount);
+					} catch (Exception ignored) {
+						order.setFreight(new BigDecimal(0));
+					}
 				}
 			}
+			order.setGoodsNameJoin(orderItemsList.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
+			order.setShortcutJoin(orderItemsList.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
+			order.setPaymentDate(new Date());
+			order.setActualPaymentStatus(2);
+			order.setPaymentAmountTl(order.getTotalMoney());
+			order.setPaymentDate(new Date());
+			order.setStatus(OrderTypeEnum.XSDQR.getType());
+			order.setXcxStatus(OrderTypeEnum.XSDFH.getType());
+			corpsDesc.setLimitAmount(corpsDesc.getLimitAmount().subtract(order.getTotalMoney()));
+			orderService.save(order);
+			pjOrderList.add(order);
+			corpsDescService.updateById(corpsDesc);
+			for (PjOrderItems item : orderItemsList) {
+				item.setCreateDept(order.getCreateDept());
+				item.setPid(order.getId());
+				item.setBillNo(order.getOrdNo());
+				item.setBizType(order.getBsType());
+				orderItemsMapper.insert(item);
+			}
 		}
-		order.setGoodsNameJoin(orderItemsList.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
-		order.setShortcutJoin(orderItemsList.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
-		order.setPaymentDate(new Date());
-		order.setActualPaymentStatus(1);
-		order.setPaymentAmountTl(order.getTotalMoney());
-		order.setStatus(OrderTypeEnum.XSDQR.getType());
-		order.setXcxStatus(OrderTypeEnum.XSDFH.getType());
-		corpsDesc.setLimitAmount(corpsDesc.getLimitAmount().subtract(order.getTotalMoney()));
-		pjOrderList.add(order);
-		orderService.updateBatchById(pjOrderList);
-		corpsDescService.updateById(corpsDesc);
 		for (PjOrder item : pjOrderList) {
 			LocalDateTime now = LocalDateTime.now();
 			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");