Browse Source

2024年7月11日17:26:36

纪新园 1 year ago
parent
commit
a789ac9ee8

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

@@ -188,5 +188,59 @@ public class PreContainers implements Serializable {
 	@ApiModelProperty(value = "租户")
 	private String tenantId;
 
+	/**
+	 * 品名
+	 */
+	@ApiModelProperty(value = "品名")
+	private Long goodsId;
+
+	/**
+	 * 品名
+	 */
+	@ApiModelProperty(value = "品名")
+	private String goodsName;
+
+	/**
+	 * 包装
+	 */
+	@ApiModelProperty(value = "包装")
+	private String packing;
+
+	/**
+	 * 单价
+	 */
+	@ApiModelProperty(value = "单价")
+	private BigDecimal price;
+
+	/**
+	 * 查验时间
+	 */
+	@ApiModelProperty(value = "查验时间")
+	private Date inspectionDate;
+
+	/**
+	 * 是否取样
+	 */
+	@ApiModelProperty(value = "是否取样")
+	private Integer whetherSampling;
+
+	/**
+	 * 是否机检
+	 */
+	@ApiModelProperty(value = "是否机检")
+	private Integer whetherMachineInspection;
+
+	/**
+	 * 是否入库
+	 */
+	@ApiModelProperty(value = "是否入库")
+	private Integer whetherWarehousing;
+
+	/**
+	 * 是否返场
+	 */
+	@ApiModelProperty(value = "是否返场")
+	private Integer whetherReturnSite;
+
 
 }

+ 25 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FeeCenter.java

@@ -880,6 +880,31 @@ public class FeeCenter implements Serializable {
 	@ApiModelProperty(value = "amend费用明细来源id")
 	private Long amendSrcItemId;
 
+	/**
+	 * 收费标准
+	 */
+	@ApiModelProperty(value = "收费标准")
+	private String feeStandards;
+	/**
+	 * 优惠汇率
+	 */
+	@ApiModelProperty(value = "优惠汇率")
+	private BigDecimal discountExrate;
+	/**
+	 * 天数
+	 */
+	@ApiModelProperty(value = "天数")
+	private Integer days;
+	/**
+	 * 入库日期
+	 */
+	@ApiModelProperty(value = "入库日期")
+	private Date storageDate;
+	/**
+	 * 出库日期
+	 */
+	@ApiModelProperty(value = "出库日期")
+	private Date outboundDate;
 
 }
 

+ 6 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderFees.java

@@ -210,5 +210,11 @@ public class OrderFees implements Serializable {
 	@ApiModelProperty(value = "费用来源")
 	private String srcType;
 
+	/**
+	 * 是否生成账单
+	 */
+	@ApiModelProperty(value = "是否生成账单")
+	private Integer whetherGenerateBills;
+
 
 }

+ 9 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/OrderController.java

@@ -1095,4 +1095,13 @@ public class OrderController extends BladeController {
 		return orderService.synchronization(billId,ordNo,primaryOrdNo);
 	}
 
+	/**
+	 * 生成账单
+	 */
+	@GetMapping("/generateBills")
+	public R generateBills(@RequestParam("ids") String ids,@RequestParam("billId") String billId) {
+
+		return orderService.generateBills(ids,billId);
+	}
+
 }

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

@@ -544,4 +544,6 @@ public interface IOrderService extends IService<Order> {
 	List<OrderItemsExport> export(OrderVO order);
 
 	R synchronization(Long billId, String ordNo,String primaryOrdNo);
+
+	R generateBills(String ids,String billId);
 }

+ 159 - 44
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -294,19 +294,19 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 							}
 							documentRecoveryService.removeById(documentRecovery.get(0).getId());
 						} else {*/
-							R clientBillNo;
-							DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
-							String date2 = dateFormat.format(order.getBusinesDate());
-							clientBillNo = serialClient.getBillNoByDate(substring, order.getTradeType(), order.getBillType(), date2);
-							if (!clientBillNo.isSuccess()) {
-								TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-								return R.fail(500, "生成订单编号失败");
-							}
-							order.setOrderNo((String) clientBillNo.getData());
-							// 进口的orgOrderNo 存的是采购订单号  出口国内存的是本身的订单号码
-							if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
-								order.setOrgOrderNo((String) clientBillNo.getData());
-							}
+						R clientBillNo;
+						DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+						String date2 = dateFormat.format(order.getBusinesDate());
+						clientBillNo = serialClient.getBillNoByDate(substring, order.getTradeType(), order.getBillType(), date2);
+						if (!clientBillNo.isSuccess()) {
+							TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+							return R.fail(500, "生成订单编号失败");
+						}
+						order.setOrderNo((String) clientBillNo.getData());
+						// 进口的orgOrderNo 存的是采购订单号  出口国内存的是本身的订单号码
+						if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
+							order.setOrgOrderNo((String) clientBillNo.getData());
+						}
 //						}
 					}
 					if ("CG".equals(order.getBillType()) && ObjectUtils.isNotNull(order.getSrcIds())) {
@@ -1640,7 +1640,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		} else if (OrderTypeEnum.EXPORT.getType().equals(order.getTradeType())) {
 			if (OrderTypeEnum.SALES.getType().equals(order.getBillType())) {
 				this.paymentApplyFD(order, "收费", "销售");
-				if(ObjectUtils.isNotNull(order.getProductionScheduling())){
+				if (ObjectUtils.isNotNull(order.getProductionScheduling())) {
 					LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 					lambdaQueryWrapper.eq(OrderItems::getPid, order.getId()).eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getTenantId, AuthUtil.getTenantId());
 					// 获取销售单明细数据
@@ -1695,7 +1695,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						throw new SecurityException("发送消息失败");
 					}
 				}
-				if (ObjectUtils.isNotNull(order.getDocumentaryDate()) && ObjectUtils.isNotNull(order.getDeliverQuantity())){
+				if (ObjectUtils.isNotNull(order.getDocumentaryDate()) && ObjectUtils.isNotNull(order.getDeliverQuantity())) {
 					LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 					lambdaQueryWrapper.eq(OrderItems::getPid, order.getId()).eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getTenantId, AuthUtil.getTenantId());
 					// 获取销售单明细数据
@@ -5664,7 +5664,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		}
 		Order selectOrder = baseMapper.selectById(order.getId());
 		if (ObjectUtils.isNotNull(selectOrder)) {
-			if(ObjectUtils.isNotNull(selectOrder.getProductionScheduling())){
+			if (ObjectUtils.isNotNull(selectOrder.getProductionScheduling())) {
 				LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 				lambdaQueryWrapper.eq(OrderItems::getPid, selectOrder.getId()).eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getTenantId, AuthUtil.getTenantId());
 				// 获取销售单明细数据
@@ -6156,7 +6156,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		}
 		baseMapper.updateById(detail);
 		String[] arrs = new String[0];
-		if(ObjectUtils.isNotNull(detail.getSrcIds())){
+		if (ObjectUtils.isNotNull(detail.getSrcIds())) {
 			arrs = detail.getSrcIds().split(",");
 
 		}
@@ -6194,7 +6194,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "正在排产中,请查看");
 					} else if (2 == order.getPurchaseStatusType()) {
 						sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "已预计货好,请查看");
-					} else*/ if (3 == order.getPurchaseStatusType()) {
+					} else*/
+					if (3 == order.getPurchaseStatusType()) {
 						sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "已采购完成,请查看");
 					}
 					R save = messageClient.save(sendMessage);
@@ -6318,19 +6319,19 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				sendMessage.setCreateTime(new Date());
 				sendMessage.setPageLabel(selectOrder.getPageLabel());
 				sendMessage.setPageStatus(selectOrder.getPageStatus());
-					sendMessage.setUrl("/exportTrade/salesContract/index");
-					sendMessage.setToUserId(selectOrder.getCreateUser());
-					sendMessage.setToUserName(selectOrder.getCreateUserName());
-					sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "已撤销排产,请查看");
+				sendMessage.setUrl("/exportTrade/salesContract/index");
+				sendMessage.setToUserId(selectOrder.getCreateUser());
+				sendMessage.setToUserName(selectOrder.getCreateUserName());
+				sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "已撤销排产,请查看");
 
-					selectOrder.setProductionScheduling("待采购");
-					selectOrder.setOrderStatus("待采购");
-					selectOrder.setProductionSchedulingDate(null);
+				selectOrder.setProductionScheduling("待采购");
+				selectOrder.setOrderStatus("待采购");
+				selectOrder.setProductionSchedulingDate(null);
 
-					R save = messageClient.save(sendMessage);
-					if (!save.isSuccess()) {
-						throw new SecurityException("发送消息失败");
-					}
+				R save = messageClient.save(sendMessage);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
 				/*if (true) {
 					sendMessage.setUrl("/exportTrade/invoice/index");
 					sendMessage.setToUserId(selectOrder.getDocumenterId());
@@ -7995,18 +7996,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
-	public R synchronization(Long billId, String ordNo,String primaryOrdNo) {
-		Order order= new Order();
+	public R synchronization(Long billId, String ordNo, String primaryOrdNo) {
+		Order order = new Order();
 		order.setId(billId);
 		order.setOrgOrderNo(ordNo);
 		order.setOrderNo(ordNo);
 		order.setOldOrderNo(primaryOrdNo);
 		baseMapper.updateById(order);
 		List<Order> orderList = baseMapper.selectList(new LambdaQueryWrapper<Order>()
-			.eq(Order::getTenantId,AuthUtil.getTenantId())
-			.eq(Order::getIsDeleted,0)
-			.eq(Order::getSrcId,billId)
-			.eq(Order::getBillType,"CG"));
+			.eq(Order::getTenantId, AuthUtil.getTenantId())
+			.eq(Order::getIsDeleted, 0)
+			.eq(Order::getSrcId, billId)
+			.eq(Order::getBillType, "CG"));
 		for (Order item : orderList) {
 			if (ObjectUtils.isNotNull(ordNo)) {
 				item.setOrgOrderNo(ordNo);
@@ -8027,10 +8028,126 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (!accList.isEmpty()) {
 			financeClient.submitList(accList);
 		}
-		deliveryClient.updateOrdNo(billId,ordNo);
+		deliveryClient.updateOrdNo(billId, ordNo);
 		return R.success("操作成功");
 	}
 
+	@Override
+	public R generateBills(String ids, String billId) {
+		Order order = baseMapper.selectById(billId);
+		if (order.getBelongToCorpId() != null) {
+			R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getBelongToCorpId());
+			if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+				order.setBelongToCorpName(corpMessage.getData().getCname());
+			}
+		}
+		//获取客户中文名
+		if (order.getCorpId() != null) {
+			R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getCorpId());
+			if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+				order.setCorpsName(corpMessage.getData().getCname());
+			}
+		}
+		BigDecimal amount = BigDecimal.ZERO;//对账金额   销售订单生成的金额  销售金额-本次使用返利金额+费用明细
+		BigDecimal price = BigDecimal.ZERO;//对账单价
+		ApplyDTO applyDTO = new ApplyDTO();
+		applyDTO.setBillType("收费");
+		applyDTO.setTradeType(order.getTradeType());
+		applyDTO.setDc("D");
+		applyDTO.setBelongCompany(order.getBelongToCorpName());
+		applyDTO.setUrl(order.getUrl());
+		applyDTO.setPageStatus(order.getPageStatus());
+		applyDTO.setPageLabel(order.getPageLabel());
+		applyDTO.setCheckType(order.getCheckType());
+		applyDTO.setAccDate(order.getBusinesDate());
+		List<Items> itemsList = new ArrayList<>();
+		List<OrderFees> orderFeesList = orderFeesService.list(new LambdaQueryWrapper<OrderFees>()
+			.eq(OrderFees::getIsDeleted, 0)
+			.eq(OrderFees::getWhetherGenerateBills, 0)
+			.eq(OrderFees::getTenantId, AuthUtil.getTenantId())
+			.apply("find_in_set(id,'" + ids + "')"));
+		if (CollectionUtils.isNotEmpty(orderFeesList)) {
+			for (OrderFees item : orderFeesList) {
+				item.setWhetherGenerateBills(1);
+			}
+			orderFeesService.updateBatchById(orderFeesList);
+			BigDecimal amountCnyD = orderFeesList.stream().filter(e -> "CNY".equals(e.getCurrency()) && 1 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountUsdD = orderFeesList.stream().filter(e -> "USD".equals(e.getCurrency()) && 1 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			if ("CNY".equals(order.getCurrency())) {
+				amountUsdD = amountUsdD.multiply(order.getExchangeRate());
+				amount = amount.add(amountCnyD).add(amountUsdD);
+			} else {
+				amountCnyD = amountCnyD.divide(order.getExchangeRate(), 2, BigDecimal.ROUND_HALF_UP);
+				amount = amount.add(amountCnyD).add(amountUsdD);
+			}
+		}
+		price = amount;
+		Items items = new Items();
+		items.setBelongToCorpId(order.getBelongToCorpId());
+		if (ObjectUtils.isNotNull(order.getOrgOrderNo())) {
+			items.setSrcOrderno(order.getOrgOrderNo());
+		} else {
+			items.setSrcOrderno(order.getOrderNo());
+		}
+		items.setItemType("销售");
+		items.setCorpId(order.getCorpId());
+		items.setSrcParentId(order.getId());
+		items.setCurrency(order.getCurrency());
+		items.setExchangeRate(new BigDecimal(1));
+		items.setTaxRate(BigDecimal.ZERO);
+		items.setSrcType(1);
+		items.setTradeType(order.getTradeType());
+		items.setChargeMember(order.getChargeMember());
+		items.setAmount(amount);
+		items.setQuantity(new BigDecimal(1));
+		items.setPrice(price);
+		items.setUnit("条");
+		items.setRemarks(order.getPaymentTypeDescription());
+		//获取费用id
+		R<FeesDesc> fees = feesDescClient.getFeesByName("货款");
+		if (fees.isSuccess() && fees.getData() != null) {
+			items.setCostType(fees.getData().getId().toString());
+		}
+		itemsList.add(items);
+		applyDTO.setItemsList(itemsList);
+		if (CollectionUtils.isNotEmpty(itemsList)) {
+			//生成账单
+			R paymentApply = financeClient.paymentApply(applyDTO);
+			if (!paymentApply.isSuccess()) {
+				throw new RuntimeException(paymentApply.getMsg());
+			}
+			//给角色为财务的人发送消息
+			R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
+			if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+				R<List<User>> userList = userClient.listUserByRoleId(clientDeptIds.getData(), null, null);
+				if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+					for (User datum : userList.getData()) {
+						//循环发送消息
+						Message sendMessage = new Message();
+						sendMessage.setParameter(String.valueOf(order.getId()));
+						sendMessage.setUserName(AuthUtil.getUserName());
+						sendMessage.setUserId(AuthUtil.getUserId());
+						sendMessage.setToUserId(datum.getId());
+						sendMessage.setToUserName(datum.getName());
+						sendMessage.setMessageType(1);
+						sendMessage.setTenantId(AuthUtil.getTenantId());
+						sendMessage.setCreateUser(AuthUtil.getUserId());
+						sendMessage.setCreateTime(new Date());
+						sendMessage.setUrl(order.getUrl());
+						sendMessage.setPageLabel(order.getPageLabel());
+						sendMessage.setPageStatus(order.getPageStatus());
+						sendMessage.setMessageBody(order.getBelongToCorpName() + " 您的客户:" + order.getCorpsName() + "的销售订单 " + order.getOrderNo() + "审核通过,请查看");
+						R save = messageClient.save(sendMessage);
+						if (!save.isSuccess()) {
+							throw new SecurityException("发送消息失败");
+						}
+					}
+				}
+			}
+		}
+		return null;
+	}
+
 	/**
 	 * 状态统计
 	 * <p>
@@ -8647,28 +8764,26 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			.eq(OrderFees::getTenantId, AuthUtil.getTenantId())
 			.eq(OrderFees::getPid, order.getId()));
 		if (CollectionUtils.isNotEmpty(orderFeesList)) {
-//			BigDecimal amountCnyC = orderFeesList.stream().filter(e -> "CNY".equals(e.getCurrency()) && 2 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-//			BigDecimal amountUsdC = orderFeesList.stream().filter(e -> "USD".equals(e.getCurrency()) && 2 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			for (OrderFees item : orderFeesList) {
+				item.setWhetherGenerateBills(1);
+			}
+			orderFeesService.updateBatchById(orderFeesList);
 			BigDecimal amountCnyD = orderFeesList.stream().filter(e -> "CNY".equals(e.getCurrency()) && 1 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 			BigDecimal amountUsdD = orderFeesList.stream().filter(e -> "USD".equals(e.getCurrency()) && 1 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 			if ("CNY".equals(order.getCurrency())) {
-//				amountUsdC = amountUsdC.multiply(order.getExchangeRate());
 				amountUsdD = amountUsdD.multiply(order.getExchangeRate());
-//				amount = amount.add(amountCnyD).add(amountUsdD).subtract(amountCnyC).subtract(amountUsdC);
 				amount = amount.add(amountCnyD).add(amountUsdD);
 			} else {
-//				amountCnyC = amountCnyC.divide(order.getExchangeRate(), 2, BigDecimal.ROUND_HALF_UP);
 				amountCnyD = amountCnyD.divide(order.getExchangeRate(), 2, BigDecimal.ROUND_HALF_UP);
-//				amount = amount.add(amountCnyD).add(amountUsdD).subtract(amountCnyC).subtract(amountUsdC);
 				amount = amount.add(amountCnyD).add(amountUsdD);
 			}
 		}
 		price = amount;
 		Items items = new Items();
 		items.setBelongToCorpId(order.getBelongToCorpId());
-		if(ObjectUtils.isNotNull(order.getOrgOrderNo())){
+		if (ObjectUtils.isNotNull(order.getOrgOrderNo())) {
 			items.setSrcOrderno(order.getOrgOrderNo());
-		}else{
+		} else {
 			items.setSrcOrderno(order.getOrderNo());
 		}
 		items.setItemType(itemType);

+ 4 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java

@@ -211,6 +211,10 @@ public class GoodsDescController extends BladeController {
 		if (StringUtils.isBlank(goodsDesc.getCname())) {
 			return R.fail(500, "商品名称不能为空");
 		}
+		goodsDesc.setCname(goodsDesc.getCname().trim());
+		goodsDesc.setSpecificationAndModel(goodsDesc.getSpecificationAndModel().trim());
+		goodsDesc.setBrandItem(goodsDesc.getBrandItem().trim());
+		goodsDesc.setGoodsSize(goodsDesc.getGoodsSize().trim());
 		PjGoodsDesc goodsDesc1 = goodsDescService.saveMessage(goodsDesc);
 		return R.data(goodsDesc1);
 	}

+ 7 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/impl/GoodsDescServiceImpl.java

@@ -301,6 +301,13 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 		if (CollectionUtils.isEmpty(data)) {
 			throw new SecurityException("导入数据不能为空");
 		}
+		for (GoodsExcel e : data) {
+			e.setCname(e.getCname().trim());
+			e.setCode(e.getCode().trim());
+			e.setSpecificationAndModel(e.getSpecificationAndModel().trim());
+			e.setBrandItem(e.getBrandItem().trim());
+			e.setGoodsSize(e.getGoodsSize().trim());
+		}
 		String goodsTypeNames = data.stream().map(GoodsExcel::getGoodsTypeName).distinct().filter(Objects::nonNull).collect(Collectors.joining(","));
 		List<PjGoodsType> goodsTypeList = goodsTypeMapper.selectList(new LambdaQueryWrapper<PjGoodsType>()
 			.eq(PjGoodsType::getIsDeleted, 0)

+ 3 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/impl/ProductLaunchServiceImpl.java

@@ -304,7 +304,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 				productLaunch.setSelfRecovery(pjGoodsDesc.getSelfRecovery());
 				productLaunch.setCnameInt(pjGoodsDesc.getCnameInt());
 				productLaunch.setSpecificationAndModel(pjGoodsDesc.getSpecificationAndModel());
-
+				productLaunch.setDetailsText(pjGoodsDesc.getGoodsDescription());
 				List<PjStockDesc> stockDescList = pjStockDescList.stream().filter(i -> i.getGoodsId().equals(pjGoodsDesc.getId())).collect(Collectors.toList());
 				if ("1".equals(status)) {
 					if (!stockDescList.isEmpty()) {
@@ -786,6 +786,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 				productLaunch.setOriginalFactory(pjGoodsDesc.getOriginalFactory());
 				productLaunch.setSelfRecovery(pjGoodsDesc.getSelfRecovery());
 				productLaunch.setCnameInt(pjGoodsDesc.getCnameInt());
+				productLaunch.setDetailsText(pjGoodsDesc.getGoodsDescription());
 				productLaunch.setSpecificationAndModel(pjGoodsDesc.getSpecificationAndModel());
 				List<PjStockDesc> stockDescList = pjStockDescList.stream().filter(i -> i.getGoodsId().equals(pjGoodsDesc.getId())).collect(Collectors.toList());
 				if ("1".equals(status)) {
@@ -1017,7 +1018,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 				productLaunch.setSelfRecovery(pjGoodsDesc.getSelfRecovery());
 				productLaunch.setCnameInt(pjGoodsDesc.getCnameInt());
 				productLaunch.setSpecificationAndModel(pjGoodsDesc.getSpecificationAndModel());
-
+				productLaunch.setDetailsText(pjGoodsDesc.getGoodsDescription());
 				List<PjStockDesc> stockDescList = pjStockDescList.stream().filter(i -> i.getGoodsId().equals(pjGoodsDesc.getId())).collect(Collectors.toList());
 				if ("1".equals(status)) {
 					if (!stockDescList.isEmpty()) {

+ 6 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

@@ -1097,6 +1097,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		//库区
 		List<StorageDesc> storageDescList = iStorageClient.selectStorageDescAll();
 		for (CMYWarehousingExcel cMYWarehousingExcel : excelList) {
+			if (ObjectUtils.isNotNull(cMYWarehousingExcel.getBillNo())){
+				if (cMYWarehousingExcel.getBillNo().contains("/") || cMYWarehousingExcel.getBillNo().contains(".")
+				||cMYWarehousingExcel.getBillNo().contains(":")){
+					throw new RuntimeException("捆包号存在‘/’‘.’‘:’特殊字符,导入失败请修改");
+				}
+			}
 			cMYWarehousingExcel.setContainerNo(cMYWarehousingExcel.getContainerNo());//箱号
 			if (ObjectUtils.isNotNull(cMYWarehousingExcel.getReservoirAreaName())) {
 				//库区