소스 검색

2023年7月12日11:30:37

纪新园 2 년 전
부모
커밋
b9b77d7acf

+ 1 - 1
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjGoodsDesc.java

@@ -51,7 +51,7 @@ public class PjGoodsDesc implements Serializable {
 	 * 租户id
 	 */
 	@ApiModelProperty(value = "租户id")
-	private String tenantId = AuthUtil.getTenantId();;
+	private String tenantId;
 
 	/**
 	 * 创建人

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

@@ -376,17 +376,15 @@ public class PaymentServiceImpl implements IPaymentService {
 							selectOrder.setXcxStatus(OrderTypeEnum.XSDFH.getType());
 							wechatMark.setBillNo(selectOrder.getOrdNo());
 							ipjOrderClient.updateBySrcOrgId(selectOrder.getId() + "");
+							LocalDateTime now = LocalDateTime.now();
+							DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+							String formatted = now.format(formatter);
 							//给角色为财务的人发送消息
-							R<String> clientDeptIds = sysClient.getRoleIds(parametersDetails.getTenantId(), "销售");
+							R<String> clientDeptIds = sysClient.getRoleIds(parametersDetails.getTenantId(), "客服");
 							if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
-								System.out.println("获取角色id:" + clientDeptIds.getData());
-								LocalDateTime now = LocalDateTime.now();
-								DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-								String formatted = now.format(formatter);
 								R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()), parametersDetails.getTenantId(), selectOrder.getSalesCompanyId());
 								if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
 									for (User datum : userList.getData()) {
-										System.out.println("接收人:" + datum.getName());
 										//循环发送消息
 										Message sendMessage = new Message();
 										sendMessage.setParameter(selectOrder.getId() + "");
@@ -410,6 +408,28 @@ public class PaymentServiceImpl implements IPaymentService {
 									}
 								}
 							}
+							if(ObjectUtils.isNotNull(selectOrder.getSalerId())){
+								Message sendMessage = new Message();
+								sendMessage.setParameter(selectOrder.getId() + "");
+								sendMessage.setUserName("外部用户");
+								sendMessage.setUserId(null);
+								sendMessage.setToUserId(selectOrder.getSalerId());
+								sendMessage.setToUserName(selectOrder.getSalerName());
+								sendMessage.setMessageType(1);
+								sendMessage.setTenantId(parametersDetails.getTenantId());
+								sendMessage.setCreateUser(null);
+								sendMessage.setCreateTime(new Date());
+								sendMessage.setUrl("/tirePartsMall/salesManagement/saleOrder/index");
+								sendMessage.setPageLabel("销售订单");
+								sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+								sendMessage.setMessageBody("您有新的外部销售订单请及时处理!单号:" + selectOrder.getOrdNo() + "时间:" + formatted);
+								R save = messageClient.save(sendMessage);
+								System.out.println("发送结果:" + save);
+								if (!save.isSuccess()) {
+									throw new SecurityException("发送消息失败");
+								}
+							}
+
 						}
 						ipjOrderClient.updateOrder(re.getData());
 						wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
@@ -607,7 +627,10 @@ public class PaymentServiceImpl implements IPaymentService {
 										}
 									}
 									if (list.size() > 0) {
-										stockGoodsClient.updateStockListYCP(BeanUtil.copy(list, StockGoods.class));
+										R ress = stockGoodsClient.updateStockListYCP(BeanUtil.copy(list, StockGoods.class));
+										if (!ress.isSuccess()){
+											throw new RuntimeException(ress.getMsg());
+										}
 									}
 									if (stockGoodsList.size() > 0) {
 										stockGoodsClient.saveStockListYCP(stockGoodsList);

+ 0 - 29
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/config/CustomInterceptor.java

@@ -1,29 +0,0 @@
-package org.springblade.salesPart.config;
-
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.apache.ibatis.plugin.Intercepts;
-import org.apache.ibatis.plugin.Signature;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * @author :jixinyuan
- * @date : 2023/7/10
- */
-/*@Intercepts({
-	@Signature(type = MyBatisPlusConfig.class, method = "MybatisPlusInterceptor", args = {})
-})
-public class CustomInterceptor extends MybatisPlusInterceptor {
-
-	// 在构造函数中添加自定义的拦截器
-	public CustomInterceptor() {
-		this.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
-		this.addInnerInterceptor(new PaginationInnerInterceptor());
-		this.addInnerInterceptor(new BlockAttackInnerInterceptor());
-	}
-}*/

+ 20 - 17
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/config/MyBatisPlusConfig.java

@@ -1,9 +1,14 @@
 package org.springblade.salesPart.config;
 
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
+import com.baomidou.mybatisplus.extension.plugins.inner.*;
+import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.StringValue;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
@@ -18,23 +23,21 @@ public class MyBatisPlusConfig {
 	@Bean
 	public MybatisPlusInterceptor MybatisPlusInterceptor() {
 		MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
+		TenantLineHandler tenantLineHandler = new TenantLineHandler() {
+			@Override
+			public Expression getTenantId() {
+				return new StringValue(Func.toStr(AuthUtil.getTenantId(), "000000"));
+			}
+		};
+		mybatisPlusInterceptor.addInnerInterceptor(new TenantLineInnerInterceptor(tenantLineHandler));//自动填充租户插件
 		mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());//乐观锁插件
-		mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());//自动分页插件
+		mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//自动分页插件
 		mybatisPlusInterceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());//防止全表更新或删除
 		return mybatisPlusInterceptor;
-//		return new CustomInterceptor();
 	}
 
-	/*@Bean
-	public MybatisPlusInterceptor MybatisPlusInterceptor() {
-		MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
-
-		// 创建乐观锁插件
-		OptimisticLockerInnerInterceptor optimisticLockerInterceptor = new OptimisticLockerInnerInterceptor();
-
-		// 添加乐观锁插件到 Mybatis Plus 拦截器链中
-		interceptor.addInnerInterceptor(optimisticLockerInterceptor);
-
-		return interceptor;
-	}*/
+	@Bean
+	public ConfigurationCustomizer configurationCustomizer() {
+		return configuration -> configuration.setUseDeprecatedExecutor(false);
+	}
 }

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

@@ -185,9 +185,9 @@ public class GoodsDescController extends BladeController {
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入goods")
 	public R submit(@Valid @RequestBody PjGoodsDesc goodsDesc) {
-		if (StringUtils.isBlank(goodsDesc.getTenantId())) {
+		/*if (StringUtils.isBlank(goodsDesc.getTenantId())) {
 			goodsDesc.setTenantId(SecureUtil.getTenantId());
-		}
+		}*/
 		if (StringUtils.isBlank(goodsDesc.getCode())) {
 			return R.fail(500, "商品编码不能为空");
 		}

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

@@ -145,7 +145,7 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 			goodsDesc.setCreateUser(AuthUtil.getUserId());
 			goodsDesc.setCreateTime(new Date());
 			goodsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-			goodsDesc.setTenantId(AuthUtil.getTenantId());
+//			goodsDesc.setTenantId(AuthUtil.getTenantId());
 			String[] deptId = AuthUtil.getDeptId().split(",");
 			if (deptId.length > 0) {
 				goodsDesc.setSalesCompanyId(Long.parseLong(deptId[0]));

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

@@ -76,6 +76,7 @@ public class OrderController extends BladeController {
 	 */
 	@GetMapping("/detail")
 	@ApiOperationSupport(order = 1)
+
 	@ApiOperation(value = "详情", notes = "传入order")
 	public R<PjOrder> detail(PjOrder order) {
 		order.setTenantId(AuthUtil.getTenantId());
@@ -104,12 +105,7 @@ public class OrderController extends BladeController {
 			.like(ObjectUtils.isNotEmpty(order.getSrcOrdNo()), PjOrder::getSrcOrdNo, order.getSrcOrdNo())//来源单号
 			.like(ObjectUtils.isNotEmpty(order.getOrdNo()), PjOrder::getOrdNo, order.getOrdNo())//来源单号
 			.like(ObjectUtils.isNotEmpty(order.getBusinessSource()), PjOrder::getBusinessSource, order.getBusinessSource())//来源
-			.apply(ObjectUtils.isNotEmpty(order.getStatus()),"find_in_set(status,'"+order.getStatus()+"')");
-		if (ObjectUtils.isNotNull(order.getActualPaymentType())) {
-			lambdaQueryWrapper.eq(PjOrder::getActualPaymentStatus, order.getActualPaymentType());
-		}else{
-			lambdaQueryWrapper.ne(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), PjOrder::getActualPaymentStatus, order.getActualPaymentStatus());//来源单号
-		}
+			.apply(ObjectUtils.isNotEmpty(order.getStatus()), "find_in_set(status,'" + order.getStatus() + "')");
 		if (order.getDueDateList() != null && order.getDueDateList().size() > 1) {//创建日期
 			lambdaQueryWrapper.ge(PjOrder::getDueDate, order.getDueDateList().get(0));
 			lambdaQueryWrapper.le(PjOrder::getDueDate, order.getDueDateList().get(1));
@@ -118,14 +114,19 @@ public class OrderController extends BladeController {
 			lambdaQueryWrapper.ge(PjOrder::getBusinesDate, order.getBusinesDateList().get(0));
 			lambdaQueryWrapper.le(PjOrder::getBusinesDate, order.getBusinesDateList().get(1));
 		}
+		if (ObjectUtils.isNotNull(order.getActualPaymentType())) {
+			lambdaQueryWrapper.eq(PjOrder::getActualPaymentStatus, order.getActualPaymentType());
+		} else {
+			lambdaQueryWrapper.ne(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), PjOrder::getActualPaymentStatus, order.getActualPaymentStatus());//来源单号
+		}
 		lambdaQueryWrapper.apply("(( business_source = '外部销售' AND actual_payment_status = 2 ) OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))");
 		lambdaQueryWrapper.orderByDesc(PjOrder::getCreateTime);
 
 		if (AuthUtil.getUserRole().contains("业务员")) {
 			lambdaQueryWrapper.eq(PjOrder::getSalerId, AuthUtil.getUserId());
-		}else if (AuthUtil.getUserRole().contains("客户")){
+		} else if (AuthUtil.getUserRole().contains("客户")) {
 			lambdaQueryWrapper.eq(PjOrder::getCustomerId, AuthUtil.getUserId());
-		}else if (AuthUtil.getUserRole().contains("销售")){
+		} else if (AuthUtil.getUserRole().contains("销售")) {
 			lambdaQueryWrapper.eq(PjOrder::getCreateUser, AuthUtil.getUserId());
 		}
 		IPage<PjOrder> pages = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
@@ -311,7 +312,7 @@ public class OrderController extends BladeController {
 		lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
 			.eq(PjOrder::getBsType, "XS")
-			.eq(PjOrder::getBusinessSource, OrderTypeEnum.XCX.getType())
+//			.eq(PjOrder::getBusinessSource, OrderTypeEnum.XCX.getType())
 			.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())//公司
 			.eq(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), PjOrder::getActualPaymentStatus, order.getActualPaymentStatus())//状态
 			.eq(ObjectUtils.isNotEmpty(order.getSalesCompanyName()), PjOrder::getSalesCompanyName, order.getSalesCompanyName())//所属公司
@@ -373,7 +374,8 @@ public class OrderController extends BladeController {
 		return R.data(declare);
 	}
 
-	/**退款审核通过
+	/**
+	 * 退款审核通过
 	 */
 	@PostMapping("/passCheck")
 	@ApiOperationSupport(order = 14)

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml

@@ -129,7 +129,7 @@
             pjpf_order po
                 LEFT JOIN blade_user bu ON po.saler_id = bu.id
         WHERE
-            po.tenant_id = = #{order.tenantId}
+            po.tenant_id = #{order.tenantId}
           AND po.is_deleted = 0
         <if test="order.businesDateList != null and order.businesDateList[0] != null and order.businesDateList[0]!= ''">
             and po.busines_date &gt;= #{order.businesDateList[0]}

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

@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
@@ -28,6 +29,8 @@ import org.springblade.check.dto.AuditProecessDTO;
 import org.springblade.check.entity.AuditPathsActs;
 import org.springblade.check.entity.AuditPathsLevels;
 import org.springblade.check.feign.ICheckClient;
+import org.springblade.client.entity.Message;
+import org.springblade.client.feign.IMessageClient;
 import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -57,6 +60,8 @@ import org.springblade.salesPart.vo.OrderStatistics;
 import org.springblade.salesPart.vo.OrderVO;
 import org.springblade.system.entity.Dept;
 import org.springblade.system.feign.ISysClient;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -64,7 +69,9 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.YearMonth;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -100,6 +107,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	private final ISettlementItemsService settlementItemsService;
 	private final SettlementMapper settlementMapper;
 	private final IPaymentClient paymentClient;
+	//消息
+	private final IMessageClient messageClient;
+	/**
+	 * 获取用户信息
+	 */
+	private IUserClient userClient;
 
 	/**
 	 * 获取销售订单详情
@@ -565,7 +578,38 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				});
 			}
 		}
-
+		LocalDateTime now = LocalDateTime.now();
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+		String formatted = now.format(formatter);
+		//给角色为派工的人发送消息
+		R<String> clientDeptIds = sysClient.getRoleIds(AuthUtil.getTenantId(), "派工");
+		if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+			R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()), AuthUtil.getTenantId(), pjShip.getSalesCompanyId());
+			if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+				for (User datum : userList.getData()) {
+					//循环发送消息
+					Message sendMessage = new Message();
+					sendMessage.setParameter(pjShip.getId() + "");
+					sendMessage.setUserName(AuthUtil.getUserName());
+					sendMessage.setUserId(null);
+					sendMessage.setToUserId(datum.getId());
+					sendMessage.setToUserName(datum.getName());
+					sendMessage.setMessageType(1);
+					sendMessage.setTenantId(AuthUtil.getTenantId());
+					sendMessage.setCreateUser(null);
+					sendMessage.setCreateTime(new Date());
+					sendMessage.setUrl("/tirePartsMall/salesManagement/outboundTask/index");
+					sendMessage.setPageLabel("出库任务");
+					sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+					sendMessage.setMessageBody("您有新的出库任务请及时处理!单号:" + pjShip.getBillno() + "时间:" + formatted);
+					R save = messageClient.save(sendMessage);
+					System.out.println("发送结果:" + save);
+					if (!save.isSuccess()) {
+						throw new SecurityException("发送消息失败");
+					}
+				}
+			}
+		}
 		return R.data(pjOrder);
 	}
 
@@ -634,6 +678,38 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				});
 			}
 		}
+		LocalDateTime now = LocalDateTime.now();
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+		String formatted = now.format(formatter);
+		//给角色为派工的人发送消息
+		R<String> clientDeptIds = sysClient.getRoleIds(AuthUtil.getTenantId(), "派工");
+		if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+			R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()), AuthUtil.getTenantId(), pjShip.getSalesCompanyId());
+			if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+				for (User datum : userList.getData()) {
+					//循环发送消息
+					Message sendMessage = new Message();
+					sendMessage.setParameter(pjShip.getId() + "");
+					sendMessage.setUserName(AuthUtil.getUserName());
+					sendMessage.setUserId(null);
+					sendMessage.setToUserId(datum.getId());
+					sendMessage.setToUserName(datum.getName());
+					sendMessage.setMessageType(1);
+					sendMessage.setTenantId(AuthUtil.getTenantId());
+					sendMessage.setCreateUser(null);
+					sendMessage.setCreateTime(new Date());
+					sendMessage.setUrl("/tirePartsMall/salesManagement/outboundTask/index");
+					sendMessage.setPageLabel("出库任务");
+					sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+					sendMessage.setMessageBody("单号:" + pjShip.getBillno() +"的出库任务已撤销!"+ "时间:" + formatted);
+					R save = messageClient.save(sendMessage);
+					System.out.println("发送结果:" + save);
+					if (!save.isSuccess()) {
+						throw new SecurityException("发送消息失败");
+					}
+				}
+			}
+		}
 		return R.data(pjOrder);
 	}
 
@@ -681,6 +757,38 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		pjOrder.setGenerateTask(OrderTypeEnum.SCRW.getType());
 		baseMapper.updateById(pjOrder);
 
+		LocalDateTime now = LocalDateTime.now();
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+		String formatted = now.format(formatter);
+		//给角色为派工的人发送消息
+		R<String> clientDeptIds = sysClient.getRoleIds(AuthUtil.getTenantId(), "派工");
+		if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+			R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()), AuthUtil.getTenantId(), pjShip.getSalesCompanyId());
+			if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+				for (User datum : userList.getData()) {
+					//循环发送消息
+					Message sendMessage = new Message();
+					sendMessage.setParameter(pjShip.getId() + "");
+					sendMessage.setUserName(AuthUtil.getUserName());
+					sendMessage.setUserId(null);
+					sendMessage.setToUserId(datum.getId());
+					sendMessage.setToUserName(datum.getName());
+					sendMessage.setMessageType(1);
+					sendMessage.setTenantId(AuthUtil.getTenantId());
+					sendMessage.setCreateUser(null);
+					sendMessage.setCreateTime(new Date());
+					sendMessage.setUrl("/tirePartsMall/salesManagement/inboundTask/index");
+					sendMessage.setPageLabel("入库任务");
+					sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+					sendMessage.setMessageBody("您有新的入库任务请及时处理!单号:" + pjShip.getBillno() + "时间:" + formatted);
+					R save = messageClient.save(sendMessage);
+					System.out.println("发送结果:" + save);
+					if (!save.isSuccess()) {
+						throw new SecurityException("发送消息失败");
+					}
+				}
+			}
+		}
 		return R.data(pjOrder);
 	}
 
@@ -1191,6 +1299,38 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		pjOrder.setStatus(OrderTypeEnum.XSDQR.getType());
 		pjOrder.setGenerateTask(OrderTypeEnum.NSCRW.getType());
 		baseMapper.updateById(pjOrder);
+		LocalDateTime now = LocalDateTime.now();
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+		String formatted = now.format(formatter);
+		//给角色为派工的人发送消息
+		R<String> clientDeptIds = sysClient.getRoleIds(AuthUtil.getTenantId(), "派工");
+		if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+			R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()), AuthUtil.getTenantId(), pjShip.getSalesCompanyId());
+			if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+				for (User datum : userList.getData()) {
+					//循环发送消息
+					Message sendMessage = new Message();
+					sendMessage.setParameter(pjShip.getId() + "");
+					sendMessage.setUserName(AuthUtil.getUserName());
+					sendMessage.setUserId(null);
+					sendMessage.setToUserId(datum.getId());
+					sendMessage.setToUserName(datum.getName());
+					sendMessage.setMessageType(1);
+					sendMessage.setTenantId(AuthUtil.getTenantId());
+					sendMessage.setCreateUser(null);
+					sendMessage.setCreateTime(new Date());
+					sendMessage.setUrl("/tirePartsMall/salesManagement/inboundTask/index");
+					sendMessage.setPageLabel("入库任务");
+					sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+					sendMessage.setMessageBody("单号:" + pjShip.getBillno() +"的入库任务已撤销!"+ "时间:" + formatted);
+					R save = messageClient.save(sendMessage);
+					System.out.println("发送结果:" + save);
+					if (!save.isSuccess()) {
+						throw new SecurityException("发送消息失败");
+					}
+				}
+			}
+		}
 		return R.data(pjOrder);
 	}
 

+ 8 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/controller/ProductLaunchController.java

@@ -275,12 +275,19 @@ public class ProductLaunchController extends BladeController {
 			.eq(PjProductLaunch::getUpAndDownShelves, 1)
 			.eq(PjProductLaunch::getSalesCompanyId, AuthUtil.getDeptId())//公司
 			.eq(ObjectUtils.isNotEmpty(productLaunch.getBrandId()), PjProductLaunch::getBrandId, productLaunch.getBrandId())//品牌
+			.eq(ObjectUtils.isNotEmpty(productLaunch.getExplosionProof()), PjProductLaunch::getExplosionProof, productLaunch.getExplosionProof())//防爆
+			.eq(ObjectUtils.isNotEmpty(productLaunch.getOriginalFactory()), PjProductLaunch::getOriginalFactory, productLaunch.getOriginalFactory())//原厂
+			.eq(ObjectUtils.isNotEmpty(productLaunch.getSelfRecovery()), PjProductLaunch::getSelfRecovery, productLaunch.getSelfRecovery())//自修补
 			.like(ObjectUtils.isNotEmpty(productLaunch.getBrandName()), PjProductLaunch::getBrandName, productLaunch.getBrandName())
 			.ne(PjProductLaunch::getWhetherShare, 1)
 			.orderByAsc(PjProductLaunch::getBillType);
 
 		if (ObjectUtil.isNotEmpty(productLaunch.getCname())) {
-			lambdaQueryWrapper.and(i -> i.like(PjProductLaunch::getCname, productLaunch.getCname()).or().like(PjProductLaunch::getCnameInt, productLaunch.getCname()));
+			lambdaQueryWrapper.and(i -> i.like(PjProductLaunch::getCname, productLaunch.getCname())
+				.or().like(PjProductLaunch::getCnameInt, productLaunch.getCname())
+				.or().like(PjProductLaunch::getBrandItem, productLaunch.getCname())
+				.or().like(PjProductLaunch::getSpecificationAndModel, productLaunch.getCname())
+			);
 		}
 		IPage<PjProductLaunch> pages = productLaunchService.page(Condition.getPage(query), lambdaQueryWrapper);
 

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

@@ -21,9 +21,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
+import org.springblade.client.entity.Message;
+import org.springblade.client.feign.IMessageClient;
 import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -43,12 +46,12 @@ import org.springblade.salesPart.productLaunch.service.IProductLaunchService;
 import org.springblade.salesPart.ship.mapper.ShipMapper;
 import org.springblade.salesPart.ship.service.IShipItemsService;
 import org.springblade.salesPart.ship.service.IShipService;
-import org.springblade.salesPart.stock.mapper.StockDescMapper;
 import org.springblade.salesPart.stock.service.IStockDescService;
 import org.springblade.salesPart.storage.mapper.StorageDescMapper;
 import org.springblade.salesPart.vo.ShipVO;
 import org.springblade.system.entity.Dept;
 import org.springblade.system.feign.ISysClient;
+import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -57,13 +60,12 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.math.RoundingMode;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
-import java.util.concurrent.atomic.AtomicReference;
-
-import static org.springblade.core.secure.utils.AuthUtil.getUser;
 
 /**
  * 配件收发货表 服务实现类
@@ -90,6 +92,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 	private final HistoryMapper historyMapper;
 	private final IUserClient userClient;
 	private final StorageDescMapper storageDescMapper;
+	//消息
+	private final IMessageClient messageClient;
 
 	/**
 	 * 获取收发货订单详情
@@ -285,8 +289,63 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 
 			//生成出库工单历史记录
 			saveHistory(gdShip.getId(), OrderTypeEnum.TOBESHIPPEDOUT.getType());
-		}
 
+			LocalDateTime now = LocalDateTime.now();
+			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+			String formatted = now.format(formatter);
+			//给角色为派工的人发送消息
+			if (ObjectUtils.isNotNull(rwShip.getStockClerkId())) {
+				Message sendMessage = new Message();
+				sendMessage.setParameter(gdShip.getId() + "");
+				sendMessage.setUserName(AuthUtil.getUserName());
+				sendMessage.setUserId(null);
+				sendMessage.setToUserId(rwShip.getStockClerkId());
+				sendMessage.setToUserName(rwShip.getStockClerkName());
+				sendMessage.setMessageType(1);
+				sendMessage.setTenantId(AuthUtil.getTenantId());
+				sendMessage.setCreateUser(null);
+				sendMessage.setCreateTime(new Date());
+				sendMessage.setUrl("/tirePartsMall/salesManagement/outboundWorkOrder/index");
+				sendMessage.setPageLabel("出库工单");
+				sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+				sendMessage.setMessageBody("您有新的出库工单请及时处理!单号:" + gdShip.getBillno() + "时间:" + formatted);
+				R save = messageClient.save(sendMessage);
+				System.out.println("发送结果:" + save);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}else{
+				//给角色为派工的人发送消息
+				R<String> clientDeptIds = sysClient.getRoleIds(AuthUtil.getTenantId(), "库管");
+				if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+					R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()), AuthUtil.getTenantId(), gdShip.getSalesCompanyId());
+					if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+						for (User datum : userList.getData()) {
+							//循环发送消息
+							Message sendMessage = new Message();
+							sendMessage.setParameter(gdShip.getId() + "");
+							sendMessage.setUserName(AuthUtil.getUserName());
+							sendMessage.setUserId(null);
+							sendMessage.setToUserId(datum.getId());
+							sendMessage.setToUserName(datum.getName());
+							sendMessage.setMessageType(1);
+							sendMessage.setTenantId(AuthUtil.getTenantId());
+							sendMessage.setCreateUser(null);
+							sendMessage.setCreateTime(new Date());
+							sendMessage.setUrl("/tirePartsMall/salesManagement/outboundWorkOrder/index");
+							sendMessage.setPageLabel("出库工单");
+							sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+							sendMessage.setMessageBody("您有新的出库工单请及时处理!单号:" + gdShip.getBillno() + "时间:" + formatted);
+							R save = messageClient.save(sendMessage);
+							System.out.println("发送结果:" + save);
+							if (!save.isSuccess()) {
+								throw new SecurityException("发送消息失败");
+							}
+						}
+					}
+				}
+			}
+		}
 		return R.success("操作成功");
 	}
 
@@ -385,8 +444,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(item.getSendNum().multiply(stockOne.getInventoryCostPrice())));
 					stockOne.setVersion(stockOne.getVersion());
 					boolean count = iStockDescService.updateById(stockOne);
-					if (!count){
-						throw new RuntimeException(stockOne.getCname()+"该产品库存正在操作,请稍后刷新在进行操作!");
+					if (!count) {
+						throw new RuntimeException(stockOne.getCname() + "该产品库存正在操作,请稍后刷新在进行操作!");
 					}
 					pjStockDescArrayList.add(stockOne);
 				} else {
@@ -406,9 +465,9 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				} else {
 					rwShip.setSendTotalNum(number);
 				}
-				if (rwShip.getSendTotalNum().compareTo(rwShip.getGoodsTotalNum()) == 0){
+				if (rwShip.getSendTotalNum().compareTo(rwShip.getGoodsTotalNum()) == 0) {
 					rwShip.setStatusName("已完成");
-				}else{
+				} else {
 					rwShip.setStatusName("未完成");
 				}
 				rwShip.setUpdateUser(AuthUtil.getUserId());
@@ -495,8 +554,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOne.setVersion(stockOne.getVersion());
 					pjStockDescArrayList.add(stockOne);
 					boolean count = iStockDescService.updateById(stockOne);
-					if (!count){
-						throw new RuntimeException(stockOne.getCname()+"该产品库存正在操作,请稍后刷新在进行操作!");
+					if (!count) {
+						throw new RuntimeException(stockOne.getCname() + "该产品库存正在操作,请稍后刷新在进行操作!");
 					}
 				} else {
 					throw new RuntimeException("未查到库存账");
@@ -513,9 +572,9 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			PjShip rwShip = baseMapper.selectById(ship.getTaskId());
 			if (ObjectUtils.isNotNull(rwShip)) {
 				rwShip.setSendTotalNum(rwShip.getSendTotalNum().subtract(number));
-				if (rwShip.getSendTotalNum().compareTo(rwShip.getGoodsTotalNum()) == 0){
+				if (rwShip.getSendTotalNum().compareTo(rwShip.getGoodsTotalNum()) == 0) {
 					rwShip.setStatusName("已完成");
-				}else{
+				} else {
 					rwShip.setStatusName("未完成");
 				}
 				rwShip.setUpdateUser(AuthUtil.getUserId());
@@ -608,6 +667,62 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 
 			//生成入库工单历史记录
 			saveHistory(gdShip.getId(), OrderTypeEnum.TREATWAREHOUSING.getType());
+
+			LocalDateTime now = LocalDateTime.now();
+			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+			String formatted = now.format(formatter);
+			//给角色为派工的人发送消息
+			if (ObjectUtils.isNotNull(rwShip.getStockClerkId())) {
+				Message sendMessage = new Message();
+				sendMessage.setParameter(gdShip.getId() + "");
+				sendMessage.setUserName(AuthUtil.getUserName());
+				sendMessage.setUserId(null);
+				sendMessage.setToUserId(rwShip.getStockClerkId());
+				sendMessage.setToUserName(rwShip.getStockClerkName());
+				sendMessage.setMessageType(1);
+				sendMessage.setTenantId(AuthUtil.getTenantId());
+				sendMessage.setCreateUser(null);
+				sendMessage.setCreateTime(new Date());
+				sendMessage.setUrl("/tirePartsMall/purchasingManagement/warehouseEntryOrder/index");
+				sendMessage.setPageLabel("采购入库");
+				sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+				sendMessage.setMessageBody("您有新的采购入库请及时处理!单号:" + gdShip.getBillno() + "时间:" + formatted);
+				R save = messageClient.save(sendMessage);
+				System.out.println("发送结果:" + save);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}else{
+				//给角色为派工的人发送消息
+				R<String> clientDeptIds = sysClient.getRoleIds(AuthUtil.getTenantId(), "库管");
+				if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+					R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()), AuthUtil.getTenantId(), gdShip.getSalesCompanyId());
+					if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+						for (User datum : userList.getData()) {
+							//循环发送消息
+							Message sendMessage = new Message();
+							sendMessage.setParameter(gdShip.getId() + "");
+							sendMessage.setUserName(AuthUtil.getUserName());
+							sendMessage.setUserId(null);
+							sendMessage.setToUserId(datum.getId());
+							sendMessage.setToUserName(datum.getName());
+							sendMessage.setMessageType(1);
+							sendMessage.setTenantId(AuthUtil.getTenantId());
+							sendMessage.setCreateUser(null);
+							sendMessage.setCreateTime(new Date());
+							sendMessage.setUrl("/tirePartsMall/purchasingManagement/warehouseEntryOrder/index");
+							sendMessage.setPageLabel("采购入库");
+							sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+							sendMessage.setMessageBody("您有新的采购入库请及时处理!单号:" + gdShip.getBillno() + "时间:" + formatted);
+							R save = messageClient.save(sendMessage);
+							System.out.println("发送结果:" + save);
+							if (!save.isSuccess()) {
+								throw new SecurityException("发送消息失败");
+							}
+						}
+					}
+				}
+			}
 		}
 
 		return R.success("操作成功");
@@ -748,8 +863,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 
 				}
 				boolean count = iStockDescService.saveOrUpdate(stockDesc);
-				if (!count){
-					throw new RuntimeException(stockOne.getCname()+"该产品库存正在操作,请稍后刷新在进行操作!");
+				if (!count) {
+					throw new RuntimeException(stockOne.getCname() + "该产品库存正在操作,请稍后刷新在进行操作!");
 				}
 				pjStockDescArrayList.add(stockDesc);
 			});
@@ -812,9 +927,9 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			} else {
 				rwShip.setSendTotalNum(number);
 			}
-			if (rwShip.getSendTotalNum().compareTo(rwShip.getGoodsTotalNum()) == 0){
+			if (rwShip.getSendTotalNum().compareTo(rwShip.getGoodsTotalNum()) == 0) {
 				rwShip.setStatusName("已完成");
-			}else{
+			} else {
 				rwShip.setStatusName("未完成");
 			}
 			rwShip.setUpdateUser(AuthUtil.getUserId());
@@ -1052,7 +1167,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		BigDecimal number = new BigDecimal("0.00");
 		if (CollectionUtils.isNotEmpty(ship.getShipItemsList())) {
 			List<PjStockDesc> pjStockDescArrayList = new ArrayList<>();
-			for(PjShipItems item :ship.getShipItemsList()){
+			for (PjShipItems item : ship.getShipItemsList()) {
 				number = number.add(item.getSendNum());
 				//获得商品
 				PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
@@ -1089,12 +1204,13 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOne.setVersion(stockOne.getVersion());
 //					iStockDescService.updateById(stockOne);
 					boolean count = iStockDescService.updateById(stockOne);
-					if (!count){
-						throw new RuntimeException(stockOne.getCname()+"该产品库存正在操作,请稍后刷新在进行操作!");
+					if (!count) {
+						throw new RuntimeException(stockOne.getCname() + "该产品库存正在操作,请稍后刷新在进行操作!");
 					}
 					pjStockDescArrayList.add(stockOne);
 				}
-			};
+			}
+			;
 //			iStockDescService.updateBatchById(pjStockDescArrayList);
 			List<PjProductLaunch> pjProductLaunchList = new ArrayList<>();
 			List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
@@ -1150,9 +1266,9 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		PjShip rwShip = baseMapper.selectById(ship.getTaskId());
 		if (ObjectUtils.isNotNull(rwShip)) {
 			rwShip.setSendTotalNum(rwShip.getSendTotalNum().subtract(number));
-			if (rwShip.getSendTotalNum().compareTo(rwShip.getGoodsTotalNum()) == 0){
+			if (rwShip.getSendTotalNum().compareTo(rwShip.getGoodsTotalNum()) == 0) {
 				rwShip.setStatusName("已完成");
-			}else{
+			} else {
 				rwShip.setStatusName("未完成");
 			}
 			rwShip.setUpdateUser(AuthUtil.getUserId());
@@ -1187,7 +1303,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		history.setCreateTime(new Date());
 		history.setPid(pid);
 		history.setOperatorId(AuthUtil.getUserId());
-		history.setOperatorName(getUser().getUserName());
+		history.setOperatorName(AuthUtil.getUser().getUserName());
 		history.setOperateTime(new Date());
 		history.setOperateStatus(status);
 		historyMapper.insert(history);