|
|
@@ -17,7 +17,9 @@ import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
|
|
|
import okhttp3.*;
|
|
|
import org.springblade.client.entity.Message;
|
|
|
import org.springblade.client.feign.IMessageClient;
|
|
|
+import org.springblade.common.enums.AppPushPathEnum;
|
|
|
import org.springblade.common.enums.NumberEnum;
|
|
|
+import org.springblade.core.secure.BladeUser;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.jackson.JsonUtil;
|
|
|
@@ -46,6 +48,8 @@ import org.springblade.salesPart.order.mapper.OrderMapper;
|
|
|
import org.springblade.salesPart.order.service.IOrderItemsService;
|
|
|
import org.springblade.salesPart.order.service.IOrderRecordService;
|
|
|
import org.springblade.salesPart.productLaunch.service.IProductLaunchService;
|
|
|
+import org.springblade.salesPart.push.dto.AppMsgPushDto;
|
|
|
+import org.springblade.salesPart.push.vo.PushUserVo;
|
|
|
import org.springblade.salesPart.serial.service.IPjpfSerialService;
|
|
|
import org.springblade.salesPart.share.service.ISharePutOnShelvesService;
|
|
|
import org.springblade.salesPart.ship.mapper.ShipMapper;
|
|
|
@@ -60,6 +64,7 @@ import org.springblade.salesPart.storage.entity.ReservoirArea;
|
|
|
import org.springblade.salesPart.storage.mapper.StorageDescMapper;
|
|
|
import org.springblade.salesPart.storage.service.IReservoirAreaService;
|
|
|
import org.springblade.salesPart.util.ParameterUtils;
|
|
|
+import org.springblade.salesPart.util.PushUtil;
|
|
|
import org.springblade.salesPart.vo.OrderRecordVO;
|
|
|
import org.springblade.salesPart.vo.ShipVO;
|
|
|
import org.springblade.system.entity.Dept;
|
|
|
@@ -130,6 +135,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
|
|
|
private final IReservoirAreaService reservoirAreaService;
|
|
|
|
|
|
+ private final PushUtil pushUtil;
|
|
|
+
|
|
|
/**
|
|
|
* 获取收发货订单详情
|
|
|
*
|
|
|
@@ -6739,9 +6746,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public R outboundWorkOrderV1(String ids) {
|
|
|
+ BladeUser nowOutBoundWorkUser = AuthUtil.getUser();
|
|
|
List<Long> shipIds = Func.toLongList(ids);
|
|
|
List<PjShip> pjShipList = baseMapper.selectList(new LambdaQueryWrapper<PjShip>()
|
|
|
- .eq(PjShip::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjShip::getTenantId, nowOutBoundWorkUser.getTenantId())
|
|
|
.eq(PjShip::getIsDeleted, 0)
|
|
|
.apply("find_in_set(id,'" + ids + "')"));
|
|
|
List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
|
|
|
@@ -6755,13 +6763,13 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
.in("pid", ordIds)
|
|
|
.eq("is_deleted", 0)
|
|
|
.apply("goods_num != send_num")
|
|
|
- .eq("tenant_id", AuthUtil.getTenantId()));
|
|
|
+ .eq("tenant_id", nowOutBoundWorkUser.getTenantId()));
|
|
|
}
|
|
|
if (!pjOrderItemsList.isEmpty()) {
|
|
|
List<Long> goodsId = pjOrderItemsList.stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
if (!goodsId.isEmpty() && !storageId.isEmpty()) {
|
|
|
stockDescList = iStockDescService.list(new LambdaQueryWrapper<PjStockDesc>()
|
|
|
- .eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjStockDesc::getTenantId, nowOutBoundWorkUser.getTenantId())
|
|
|
.eq(PjStockDesc::getIsDeleted, 0)
|
|
|
.in(PjStockDesc::getGoodsId, goodsId)
|
|
|
.in(PjStockDesc::getStorageId, storageId));
|
|
|
@@ -6787,10 +6795,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
gdShip.setId(null);
|
|
|
gdShip.setBillno(billNo);
|
|
|
gdShip.setStatusName(OrderTypeEnum.TOBESHIPPEDOUT.getType());
|
|
|
- gdShip.setTenantId(AuthUtil.getTenantId());
|
|
|
+ gdShip.setTenantId(nowOutBoundWorkUser.getTenantId());
|
|
|
gdShip.setBizTypeName(OrderTypeEnum.FHGD.getType());
|
|
|
- gdShip.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
- gdShip.setCreateUser(AuthUtil.getUserId());
|
|
|
+ gdShip.setCreateDept(Long.valueOf(nowOutBoundWorkUser.getDeptId()));
|
|
|
+ gdShip.setCreateUser(nowOutBoundWorkUser.getUserId());
|
|
|
gdShip.setCreateTime(new Date());
|
|
|
gdShip.setTaskId(rwShip.getId());
|
|
|
gdShip.setSendTotalNum(new BigDecimal("0.00"));
|
|
|
@@ -6828,8 +6836,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
shipItems.setPid(item.getId());
|
|
|
shipItems.setSrcItemId(e.getId());
|
|
|
shipItems.setCreateTime(new Date());
|
|
|
- shipItems.setCreateUser(AuthUtil.getUserId());
|
|
|
- shipItems.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
+ shipItems.setCreateUser(nowOutBoundWorkUser.getUserId());
|
|
|
+ shipItems.setCreateDept(Long.valueOf(nowOutBoundWorkUser.getDeptId()));
|
|
|
BigDecimal sendNum = e.getGoodsNum().subtract(e.getSendNum());
|
|
|
if (balanceQuantity.compareTo(sendNum) >= 0) {
|
|
|
shipItems.setSendNum(sendNum);
|
|
|
@@ -6861,61 +6869,59 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
saveHistory(item.getId(), OrderTypeEnum.TOBESHIPPEDOUT.getType());
|
|
|
|
|
|
//给角色为派工的人发送消息
|
|
|
- if (ObjectUtils.isNotNull(rwShip.getStockClerkId())) {
|
|
|
- Message sendMessage = new Message();
|
|
|
- sendMessage.setParameter(item.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("您有新的出库工单请及时处理!单号:" + item.getBillno() + "时间:" + formatted);
|
|
|
- R save = messageClient.save(sendMessage);
|
|
|
+ List<PushUserVo> sendMsgUserIds = new ArrayList<>();
|
|
|
+ send: if (ObjectUtils.isNotNull(rwShip.getStockClerkId())) {
|
|
|
+ sendMsgUserIds.add(new PushUserVo(rwShip.getStockClerkId(), rwShip.getStockClerkName()));
|
|
|
+ } else {
|
|
|
+ R<String> clientRoleIds = sysClient.getRoleIds(nowOutBoundWorkUser.getTenantId(), "库管");
|
|
|
+ if (!clientRoleIds.isSuccess() || StringUtils.isBlank(clientRoleIds.getData())) {
|
|
|
+ break send;
|
|
|
+ }
|
|
|
+ Long sendUserStorageId = null;
|
|
|
+ if (ParameterUtils.whetherDatabaseSharding()) {
|
|
|
+ sendUserStorageId = item.getStorageId();
|
|
|
+ }
|
|
|
+ R<List<User>> userList = userClient.listUserByRoleId(clientRoleIds.getData(), nowOutBoundWorkUser.getTenantId(),
|
|
|
+ item.getSalesCompanyId() + "", sendUserStorageId);
|
|
|
+ if (!userList.isSuccess() || CollectionUtils.isEmpty(userList.getData())) {
|
|
|
+ break send;
|
|
|
+ }
|
|
|
+ sendMsgUserIds = userList.getData().stream().map(usr -> new PushUserVo(usr.getId(), usr.getRealName())).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(sendMsgUserIds)) {
|
|
|
+ List<Message> sendMessageList = new ArrayList<>();
|
|
|
+ Date sendMsgDate = new Date();
|
|
|
+ String msgBody = "您有新的出库工单请及时处理!单号:" + item.getBillno() + "时间:" + formatted;
|
|
|
+ for (PushUserVo e : sendMsgUserIds) {
|
|
|
+ Message sendMessage = new Message();
|
|
|
+ sendMessageList.add(sendMessage);
|
|
|
+ sendMessage.setParameter(item.getId() + "");
|
|
|
+ sendMessage.setUserName(nowOutBoundWorkUser.getUserName());
|
|
|
+ sendMessage.setUserId(null);
|
|
|
+ sendMessage.setMessageType(1);
|
|
|
+ sendMessage.setTenantId(nowOutBoundWorkUser.getTenantId());
|
|
|
+ sendMessage.setCreateUser(null);
|
|
|
+ sendMessage.setCreateTime(sendMsgDate);
|
|
|
+ sendMessage.setUrl("/tirePartsMall/salesManagement/outboundWorkOrder/index");
|
|
|
+ sendMessage.setPageLabel("出库工单");
|
|
|
+ sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
|
|
|
+ sendMessage.setMessageBody(msgBody);
|
|
|
+ sendMessage.setToUserId(e.getUserId());
|
|
|
+ sendMessage.setToUserName(e.getUserName());
|
|
|
+ }
|
|
|
+ R save = messageClient.saveList(sendMessageList);
|
|
|
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())) {
|
|
|
- Long storage_id = null;
|
|
|
- if (ParameterUtils.whetherDatabaseSharding()) {
|
|
|
- storage_id = item.getStorageId();
|
|
|
- }
|
|
|
- R<List<User>> userList = userClient.listUserByRoleId(clientDeptIds.getData(), AuthUtil.getTenantId(),
|
|
|
- item.getSalesCompanyId() + "", storage_id);
|
|
|
- if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
|
|
|
- for (User datum : userList.getData()) {
|
|
|
- //循环发送消息
|
|
|
- Message sendMessage = new Message();
|
|
|
- sendMessage.setParameter(item.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("您有新的出库工单请及时处理!单号:" + item.getBillno() + "时间:" + formatted);
|
|
|
- R save = messageClient.save(sendMessage);
|
|
|
- System.out.println("发送结果:" + save);
|
|
|
- if (!save.isSuccess()) {
|
|
|
- throw new SecurityException("发送消息失败");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ List<Long> userIds = sendMsgUserIds.stream().map(PushUserVo::getUserId).collect(Collectors.toList());
|
|
|
+ AppMsgPushDto pushDto = new AppMsgPushDto();
|
|
|
+ pushDto.setTitle(AppPushPathEnum.WAREHOUSE_DELIVERY_NOTIFICATION.title);
|
|
|
+ pushDto.setContent(msgBody);
|
|
|
+ pushDto.setPagePath(AppPushPathEnum.WAREHOUSE_DELIVERY_NOTIFICATION.path);
|
|
|
+ pushDto.setPageQuery("{\"id\":\"" + item.getId() + "\"}");
|
|
|
+ pushUtil.sendAppTitleMsgByList(userIds, pushDto);
|
|
|
}
|
|
|
//给角色为财务的人发送消息
|
|
|
StringBuilder openIds = new StringBuilder();
|