|
|
@@ -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);
|