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

+ 2 - 1
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IWechatClient.java

@@ -73,6 +73,7 @@ public interface IWechatClient {
 						  @RequestParam(value = "telW",required = false) String telW,
 						  @RequestParam(value = "telW",required = false) String telW,
 						  @RequestParam(value = "deviceDescription",required = false) String deviceDescription,
 						  @RequestParam(value = "deviceDescription",required = false) String deviceDescription,
 						  @RequestParam(value = "amount",required = false) BigDecimal amount,
 						  @RequestParam(value = "amount",required = false) BigDecimal amount,
-						@RequestParam(value = "type",required = false) String type
+						@RequestParam(value = "type",required = false) String type,
+						@RequestParam(value = "tenantId",required = false) String tenantId
 						);
 						);
 }
 }

+ 43 - 10
blade-service/blade-client/src/main/java/org/springblade/client/wechat/feign/WechatClient.java

@@ -151,10 +151,10 @@ public class WechatClient implements IWechatClient {
 
 
 	@Override
 	@Override
 	public String sendMessage(String openid, String title, String projectName, String date, String name, String device, String tel, String telW,
 	public String sendMessage(String openid, String title, String projectName, String date, String name, String device, String tel, String telW,
-							  String deviceDescription, BigDecimal amount, String type) {
+							  String deviceDescription, BigDecimal amount, String type, String tenantId) {
 		WechatMessageTemplate wechatMessageTemplate = wechatMessageTemplateService.getOne(new LambdaQueryWrapper<WechatMessageTemplate>()
 		WechatMessageTemplate wechatMessageTemplate = wechatMessageTemplateService.getOne(new LambdaQueryWrapper<WechatMessageTemplate>()
 			.eq(WechatMessageTemplate::getIsDeleted, 0)
 			.eq(WechatMessageTemplate::getIsDeleted, 0)
-			.eq(WechatMessageTemplate::getTenantId, AuthUtil.getTenantId())
+			.eq(WechatMessageTemplate::getTenantId, ObjectUtils.isNotNull(tenantId) ? tenantId : AuthUtil.getTenantId())
 			.eq(WechatMessageTemplate::getType, type));
 			.eq(WechatMessageTemplate::getType, type));
 		if (wechatMessageTemplate == null) {
 		if (wechatMessageTemplate == null) {
 			throw new RuntimeException("未找到模板信息");
 			throw new RuntimeException("未找到模板信息");
@@ -173,15 +173,48 @@ public class WechatClient implements IWechatClient {
 		}
 		}
 		List<WxMpTemplateData> data = null;
 		List<WxMpTemplateData> data = null;
 		if ("1".equals(type)) {
 		if ("1".equals(type)) {
-			data = Arrays.asList(
-				new WxMpTemplateData("first", title),
-				new WxMpTemplateData("thing2", name + "/" + tel),
-				new WxMpTemplateData("thing4", projectName),
-				new WxMpTemplateData("time8", date),
-				new WxMpTemplateData("phone_number7", telW)
-			);
+			System.out.println("======装填数据开始==========" + type);
+			String corpName = "";
+			String goodsName = "";
+			if ("792368".equals(wechatMessageTemplate.getTenantId())) {
+				System.out.println("======装填数据中==792368=========="+ type);
+				if (ObjectUtils.isNotNull(name) && name.length() > 8) {
+					corpName = name.substring(0, 8);
+				} else {
+					if (ObjectUtils.isNull(name)) {
+						corpName = "无";
+					} else {
+						corpName = name;
+					}
+				}
+				if (ObjectUtils.isNotNull(deviceDescription) && deviceDescription.length() > 8) {
+					goodsName = deviceDescription.substring(0, 8);
+				} else {
+					if (ObjectUtils.isNull(deviceDescription)) {
+						goodsName = "无";
+					} else {
+						goodsName = deviceDescription;
+					}
+				}
+				data = Arrays.asList(
+					new WxMpTemplateData("first", title),
+					new WxMpTemplateData("character_string3", device),
+					new WxMpTemplateData("thing8", corpName),
+					new WxMpTemplateData("thing6", goodsName),
+					new WxMpTemplateData("time4", date)
+				);
+				System.out.println(type + "======装填完成数据==792368==========" + data.toString());
+			} else {
+				data = Arrays.asList(
+					new WxMpTemplateData("first", title),
+					new WxMpTemplateData("thing2", name + "/" + tel),
+					new WxMpTemplateData("thing4", projectName),
+					new WxMpTemplateData("time8", date),
+					new WxMpTemplateData("phone_number7", telW)
+				);
+			}
 		} else if ("2".equals(type)) {
 		} else if ("2".equals(type)) {
-			System.out.println("======装填数据开始==========");
+			System.out.println("======装填数据开始==========" + type);
 			String corpName = "";
 			String corpName = "";
 
 
 			if (ObjectUtils.isNull(amount)) {
 			if (ObjectUtils.isNull(amount)) {

+ 3 - 3
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java

@@ -527,7 +527,7 @@ public class PaymentServiceImpl implements IPaymentService {
 						if (",".equals(openIds.toString())) {
 						if (",".equals(openIds.toString())) {
 						} else {
 						} else {
 							wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "结算通知", "设备报修-已支付", date1, maintenance.getCorpName(), maintenance.getDeviceName(),
 							wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "结算通知", "设备报修-已支付", date1, maintenance.getCorpName(), maintenance.getDeviceName(),
-								maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1");
+								maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1",AuthUtil.getTenantId());
 						}
 						}
 						wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
 						wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
 						wechatMark.setStatus(1);
 						wechatMark.setStatus(1);
@@ -677,13 +677,13 @@ public class PaymentServiceImpl implements IPaymentService {
 							}
 							}
 							ipjOrderClient.updateOrder(re.getData());
 							ipjOrderClient.updateOrder(re.getData());
 						}
 						}
-						SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+						SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
 						String date1 = format.format(new Date());
 						String date1 = format.format(new Date());
 
 
 						System.out.println("=========发送人openIds=========" + openIds);
 						System.out.println("=========发送人openIds=========" + openIds);
 						if (ObjectUtils.isNotNull(openIds)) {
 						if (ObjectUtils.isNotNull(openIds)) {
 							String rest = wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "订单通知", "订单通知", date1, re.getData().size() == 0 ? "" : re.getData().get(0).getSalerName(), serialNumber,
 							String rest = wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "订单通知", "订单通知", date1, re.getData().size() == 0 ? "" : re.getData().get(0).getSalerName(), serialNumber,
-								"", "", "", amount, "2");
+								"", "", "", amount, "2",re.getData().size() == 0 ? "" : re.getData().get(0).getTenantId());
 							System.out.println("=========发送返回值=========" + rest);
 							System.out.println("=========发送返回值=========" + rest);
 						}
 						}
 						wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
 						wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");

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

@@ -4739,7 +4739,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				}
 				}
 			}
 			}
 			wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "订单通知", "订单通知", date1, order.getCorpsName(), order.getSysNo(),
 			wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "订单通知", "订单通知", date1, order.getCorpsName(), order.getSysNo(),
-				order.getSalesName(), null, null, order.getBalanceAmount(), "2");
+				order.getSalesName(), null, null, order.getBalanceAmount(), "2",AuthUtil.getTenantId());
 		}
 		}
 		return R.data(order);
 		return R.data(order);
 	}
 	}
@@ -6518,7 +6518,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				}
 				}
 			}
 			}
 			wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "订单通知", "订单通知", date1, order.getCorpsName(), order.getSysNo(),
 			wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "订单通知", "订单通知", date1, order.getCorpsName(), order.getSysNo(),
-				order.getSalesName(), null, null, order.getBalanceAmount(), "2");
+				order.getSalesName(), null, null, order.getBalanceAmount(), "2",AuthUtil.getTenantId());
 		}
 		}
 		//通联支付下单处理
 		//通联支付下单处理
 		R r = this.payPrepay(order);
 		R r = this.payPrepay(order);
@@ -7774,7 +7774,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 							}
 							}
 						}
 						}
 						wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "订单通知", "订单通知", date1, order.getCorpsName(), order.getSysNo(),
 						wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "订单通知", "订单通知", date1, order.getCorpsName(), order.getSysNo(),
-							order.getSalesName(), null, null, order.getBalanceAmount(), "2");
+							order.getSalesName(), null, null, order.getBalanceAmount(), "2",AuthUtil.getTenantId());
 
 
 					}
 					}
 				}
 				}

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

@@ -50,7 +50,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
 import java.util.regex.Matcher;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.Pattern;
 
 
@@ -304,6 +307,17 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 			}
 			}
 		}
 		}
 		data.forEach(e -> {
 		data.forEach(e -> {
+			Integer count = baseMapper.selectCount(Wrappers.<PjGoodsDesc>lambdaQuery()
+				.eq(PjGoodsDesc::getCode, e.getCode())
+				.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+				.eq(PjGoodsDesc::getIsDeleted, 0)
+			);
+
+			Integer countName = baseMapper.selectCount(Wrappers.<PjGoodsDesc>lambdaQuery()
+				.eq(PjGoodsDesc::getCname, e.getCname())
+				.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+				.eq(PjGoodsDesc::getIsDeleted, 0)
+			);
 			String type = e.getGoodsTypeName();
 			String type = e.getGoodsTypeName();
 			PjGoodsType goodsType = goodsTypeMapper.selectGoodsTypeCname(type, AuthUtil.getTenantId());
 			PjGoodsType goodsType = goodsTypeMapper.selectGoodsTypeCname(type, AuthUtil.getTenantId());
 			if (goodsType != null) {
 			if (goodsType != null) {
@@ -382,6 +396,12 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 				queryWrapper.eq(PjGoodsDesc::getIsDeleted, 0);
 				queryWrapper.eq(PjGoodsDesc::getIsDeleted, 0);
 				PjGoodsDesc one = baseMapper.selectOne(queryWrapper);
 				PjGoodsDesc one = baseMapper.selectOne(queryWrapper);
 				if (one == null) {
 				if (one == null) {
+					if (count > 0) {
+						throw new ServiceException(goodsDesc.getCode() + "编码已存在");
+					}
+					if (countName > 0) {
+						throw new ServiceException(goodsDesc.getCname() + "名称已存在");
+					}
 					goodsDesc.setTenantId(AuthUtil.getTenantId());
 					goodsDesc.setTenantId(AuthUtil.getTenantId());
 					goodsDesc.setCreateTime(new Date());
 					goodsDesc.setCreateTime(new Date());
 					goodsDesc.setCreateUser(AuthUtil.getUserId());
 					goodsDesc.setCreateUser(AuthUtil.getUserId());
@@ -397,6 +417,12 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 					goodsTypeDes.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 					goodsTypeDes.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 					goodsTypeDescMapper.insert(goodsTypeDes);
 					goodsTypeDescMapper.insert(goodsTypeDes);
 				} else {
 				} else {
+					if (count > 1) {
+						throw new ServiceException(goodsDesc.getCode() + "编码已存在");
+					}
+					if (countName > 1) {
+						throw new ServiceException(goodsDesc.getCname() + "名称已存在");
+					}
 					goodsDesc.setUpdateTime(new Date());
 					goodsDesc.setUpdateTime(new Date());
 					goodsDesc.setUpdateUser(AuthUtil.getUserId());
 					goodsDesc.setUpdateUser(AuthUtil.getUserId());
 					baseMapper.updateById(goodsDesc);
 					baseMapper.updateById(goodsDesc);

+ 5 - 5
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/maintenance/service/impl/MaintenanceServiceImpl.java

@@ -177,7 +177,7 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 
 
 					} else {
 					} else {
 						wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "报修通知", "设备报修", date, maintenance.getCorpName(), maintenance.getDeviceName(),
 						wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "报修通知", "设备报修", date, maintenance.getCorpName(), maintenance.getDeviceName(),
-							maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1");
+							maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1",AuthUtil.getTenantId());
 
 
 					}
 					}
 				}
 				}
@@ -300,7 +300,7 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 			}
 			}
 		}
 		}
 		wechatClient.sendMessage(openIds.toString(), "派工通知", "设备报修-派工", date, maintenance.getCorpName(), maintenance.getDeviceName(),
 		wechatClient.sendMessage(openIds.toString(), "派工通知", "设备报修-派工", date, maintenance.getCorpName(), maintenance.getDeviceName(),
-			maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1");
+			maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1",AuthUtil.getTenantId());
 		return R.data(maintenance);
 		return R.data(maintenance);
 	}
 	}
 
 
@@ -339,7 +339,7 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 				}
 				}
 			}
 			}
 			wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "派工通知", "设备维修-撤销派工", date, maintenance.getCorpName(), maintenance.getDeviceName(),
 			wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "派工通知", "设备维修-撤销派工", date, maintenance.getCorpName(), maintenance.getDeviceName(),
-				maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1");
+				maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1",AuthUtil.getTenantId());
 
 
 			maintenance.setDispatchingWorkers("1");
 			maintenance.setDispatchingWorkers("1");
 			maintenance.setStatus(1);
 			maintenance.setStatus(1);
@@ -660,7 +660,7 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 		if (",".equals(openIds.toString())) {
 		if (",".equals(openIds.toString())) {
 		} else {
 		} else {
 			wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "结算通知", "设备报修-待付款", date1, maintenance.getCorpName(), maintenance.getDeviceName(),
 			wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "结算通知", "设备报修-待付款", date1, maintenance.getCorpName(), maintenance.getDeviceName(),
-				maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1");
+				maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1",AuthUtil.getTenantId());
 		}
 		}
 		return R.data(maintenance);
 		return R.data(maintenance);
 	}
 	}
@@ -811,7 +811,7 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 		if (",".equals(openIds.toString())) {
 		if (",".equals(openIds.toString())) {
 		} else {
 		} else {
 			wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "结算通知", "设备报修-费用撤销", date1, maintenance.getCorpName(), maintenance.getDeviceName(),
 			wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "结算通知", "设备报修-费用撤销", date1, maintenance.getCorpName(), maintenance.getDeviceName(),
-				maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1");
+				maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1",AuthUtil.getTenantId());
 		}
 		}
 		return R.data(maintenance);
 		return R.data(maintenance);
 	}
 	}

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

@@ -28,6 +28,7 @@ import lombok.AllArgsConstructor;
 import org.springblade.client.entity.Message;
 import org.springblade.client.entity.Message;
 import org.springblade.client.feign.IMessageClient;
 import org.springblade.client.feign.IMessageClient;
 import org.springblade.client.feign.ISerialClient;
 import org.springblade.client.feign.ISerialClient;
+import org.springblade.client.feign.IWechatClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.BeanUtil;
@@ -61,6 +62,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.math.MathContext;
 import java.math.RoundingMode;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.ArrayList;
@@ -98,6 +100,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 	//消息
 	//消息
 	private final IMessageClient messageClient;
 	private final IMessageClient messageClient;
 
 
+	private final IWechatClient wechatClient;
+
 	/**
 	/**
 	 * 获取收发货订单详情
 	 * 获取收发货订单详情
 	 *
 	 *
@@ -282,6 +286,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			gdShip.setTaskId(rwShip.getId());
 			gdShip.setTaskId(rwShip.getId());
 			gdShip.setSendTotalNum(new BigDecimal("0.00"));
 			gdShip.setSendTotalNum(new BigDecimal("0.00"));
 			baseMapper.insert(gdShip);
 			baseMapper.insert(gdShip);
+			StringBuilder goodsNames = new StringBuilder();
 
 
 			//根据销售id获得销售明细数据
 			//根据销售id获得销售明细数据
 			List<PjOrderItems> list = orderItemsService.list(new QueryWrapper<PjOrderItems>()
 			List<PjOrderItems> list = orderItemsService.list(new QueryWrapper<PjOrderItems>()
@@ -291,7 +296,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				.eq("tenant_id", AuthUtil.getTenantId()));
 				.eq("tenant_id", AuthUtil.getTenantId()));
 			if (ObjectUtil.isNotEmpty(list)) {
 			if (ObjectUtil.isNotEmpty(list)) {
 				List<PjShipItems> shipItemsList = new ArrayList<>();
 				List<PjShipItems> shipItemsList = new ArrayList<>();
-				list.forEach(e -> {
+				for (PjOrderItems e : list) {
+					goodsNames.append(e.getGoodsName()).append(",");
 					//根据销售明细创建出库工单明细
 					//根据销售明细创建出库工单明细
 					PjShipItems shipItems = new PjShipItems();
 					PjShipItems shipItems = new PjShipItems();
 					BeanUtil.copyProperties(e, shipItems);
 					BeanUtil.copyProperties(e, shipItems);
@@ -307,7 +313,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						shipItemsList.add(shipItems);
 						shipItemsList.add(shipItems);
 					}
 					}
 
 
-				});
+				}
+				;
 				shipItemsService.saveBatch(shipItemsList);
 				shipItemsService.saveBatch(shipItemsList);
 				gdShip.setNumberRows(list.size());
 				gdShip.setNumberRows(list.size());
 			}
 			}
@@ -374,6 +381,37 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					}
 					}
 				}
 				}
 			}
 			}
+
+			//给角色为财务的人发送消息
+			R<String> clientDeptIds = sysClient.getRoleIds(AuthUtil.getTenantId(), "客服");
+			StringBuilder openIds = new StringBuilder();
+			if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+				R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()), AuthUtil.getTenantId(), rwShip.getSalesCompanyId());
+				if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+					for (User datum : userList.getData()) {
+						if (ObjectUtils.isNotNull(datum.getOaOpenId())) {
+							openIds.append(datum.getOaOpenId()).append(",");
+						}
+					}
+				}
+			}
+			if (ObjectUtils.isNotNull(rwShip.getStockClerkId())) {
+				R<User> resUser = userClient.userInfoById(rwShip.getStockClerkId());
+				if (resUser.isSuccess() && ObjectUtils.isNotNull(resUser.getData())) {
+					if (ObjectUtils.isNotNull(resUser.getData().getOaOpenId())) {
+						openIds.append(resUser.getData().getOaOpenId()).append(",");
+					}
+				}
+			}
+			SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
+			String date1 = format.format(new Date());
+
+			System.out.println("=========发送人openIds=========" + openIds);
+			if (ObjectUtils.isNotNull(openIds)) {
+				String rest = wechatClient.sendMessage(openIds.substring(0, openIds.length() - 1), "订单出库通知", "订单出库通知", date1, rwShip.getCustomerName(), gdShip.getBillno(),
+					"", "", goodsNames.toString(), new BigDecimal("0.00"), "1", AuthUtil.getTenantId());
+				System.out.println("=========发送返回值=========" + rest);
+			}
 		}
 		}
 		return R.success("操作成功");
 		return R.success("操作成功");
 	}
 	}
@@ -417,6 +455,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		if (ObjectUtils.isNull(ship.getStorageId())) {
 		if (ObjectUtils.isNull(ship.getStorageId())) {
 			throw new RuntimeException("请先选择仓库");
 			throw new RuntimeException("请先选择仓库");
 		}
 		}
+		ship.setGoodsTotalNum(ship.getShipItemsList().stream().map(PjShipItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		ship.setSendTotalNum(ship.getShipItemsList().stream().map(PjShipItems::getSendNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		if (ship.getId() == null) {
 		if (ship.getId() == null) {
 			// 获取系统编号
 			// 获取系统编号
 			R billNo = serialClient.getBillNo(OrderTypeEnum.FHGD.getType(), OrderTypeEnum.FHGD.getType(), OrderTypeEnum.FHGD.getType());
 			R billNo = serialClient.getBillNo(OrderTypeEnum.FHGD.getType(), OrderTypeEnum.FHGD.getType(), OrderTypeEnum.FHGD.getType());
@@ -1376,8 +1416,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		return baseMapper.stockDataDetails(pjShipStockDetails);
 		return baseMapper.stockDataDetails(pjShipStockDetails);
 	}
 	}
 
 
-    @Override
-    public R shipments(PjShip pjShip) {
+	@Override
+	public R shipments(PjShip pjShip) {
 		int i = baseMapper.updateById(pjShip);
 		int i = baseMapper.updateById(pjShip);
 		if (i > 0) {
 		if (i > 0) {
 			return R.success("ok");
 			return R.success("ok");
@@ -1386,7 +1426,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		}
 		}
 	}
 	}
 
 
-    /**
+	/**
 	 * 生成工单历史记录
 	 * 生成工单历史记录
 	 */
 	 */
 	public void saveHistory(Long pid, String status) {
 	public void saveHistory(Long pid, String status) {