执行及取消执行;nc推送客户nc编码查询逻辑修改;

This commit is contained in:
王奎兴
2026-06-26 18:27:24 +08:00
parent 293fedda12
commit 8893eda62d
28 changed files with 521 additions and 61 deletions
@@ -61,6 +61,10 @@ public class ExecutionStockInOrder extends BaseVOEntity {
@Excel(name = "入库单号")
private String inOrderNumber;
@ApiModelProperty("入库业务单号")
@Excel(name = "入库业务单号")
private String businessInOrderNumber;
@ApiModelProperty("入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭")
@Excel(name = "入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭")
private Integer status;
@@ -45,6 +45,12 @@ public interface ExecutionStockInOrderMapper extends BaseMapper<ExecutionStockIn
public void delWOrderDetail(@Param("inOrderNumber") String inOrderNumber);
public String getWShOrder(@Param("inOrderNumber") String inOrderNumber);
public void delWShOrder(@Param("inOrderNumber") String inOrderNumber);
public void delWShOrderDetail(@Param("receiptOrderNumber") String receiptOrderNumber);
List<ExecutionStockInOrderPO> queryNoticePrint(ExecutionStockInOrderDO stockInOrderDO);
List<ExecutionInMaterialDetailPO> queryNoticePrintDetail(ExecutionStockInOrderDO stockInOrderDO);
@@ -440,13 +440,16 @@ public class ExecutionStockInOrderDomainService {
//逻辑删除w入库单信息
List<Long> inOrderIds = stockInOrderDO.getInOrderIds();
if (inOrderIds == null || inOrderIds.isEmpty()) {
if (inOrderIds != null && !inOrderIds.isEmpty()) {
for (Long inOrderId : inOrderIds) {
ExecutionStockInOrder executionStockInOrder = reservationStockInOrderMapper.selectById(inOrderId);
if (executionStockInOrder != null) {
String inOrderNumber = executionStockInOrder.getInOrderNumber();
reservationStockInOrderMapper.delWOrder(inOrderNumber);
reservationStockInOrderMapper.delWOrderDetail(inOrderNumber);
String wShOrder = reservationStockInOrderMapper.getWShOrder(inOrderNumber);
reservationStockInOrderMapper.delWShOrder(inOrderNumber);
reservationStockInOrderMapper.delWShOrderDetail(wShOrder);
}
}
}
@@ -458,7 +461,7 @@ public class ExecutionStockInOrderDomainService {
.set(ExecutionStockInOrder::getUpdateBy, loginUser.getUserid())
.set(ExecutionStockInOrder::getUpdateByName, userRealName)
.set(ExecutionStockInOrder::getUpdateTime, new Date())
.set(ExecutionStockInOrder::getIssueStatus, issueStatus)
.set(ExecutionStockInOrder::getIssueStatus, 0)
.in(ExecutionStockInOrder::getInOrderId, stockInOrderDO.getInOrderIds()));
}
@@ -50,6 +50,10 @@ public class ExecutionStockOutOrder extends BaseVOEntity {
@Excel(name = "出库单号")
private String outOrderNumber;
@ApiModelProperty("出库单号")
@Excel(name = "出库单号")
private String businessOutOrderNumber;
@ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核")
@Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核")
private Integer status;
@@ -327,7 +327,7 @@ public class ExecutionStockOutOrderDomainService {
.set(ExecutionStockOutOrder::getUpdateBy, loginUser.getUserid())
.set(ExecutionStockOutOrder::getUpdateByName, userRealName)
.set(ExecutionStockOutOrder::getUpdateTime, new Date())
.set(ExecutionStockOutOrder::getIssueStatus, issueStatus)
.set(ExecutionStockOutOrder::getIssueStatus, 0)
.in(ExecutionStockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds()));
}
@@ -333,6 +333,10 @@ public class ReservationStockInOrderApplicationService {
return stockInOrderDomainService.issueOrder(stockInOrderDO);
}
public Boolean executeAndIssue(ReservationStockInOrderDO stockInOrderDO){
return stockInOrderDomainService.executeAndIssue(stockInOrderDO);
}
/**
* @description 取消入库单
* @author ZhouGY
@@ -17,6 +17,8 @@ import com.mhd.oms.domain.executionInMaterialDetail.entity.ExecutionInMaterialDe
import com.mhd.oms.domain.executionInMaterialDetail.repository.facade.IExecutionInMaterialDetailService;
import com.mhd.oms.domain.executionStockInOrder.entity.ExecutionStockInOrder;
import com.mhd.oms.domain.executionStockInOrder.repository.facade.IExecutionStockInOrderService;
import com.mhd.oms.domain.executionStockInOrder.repository.todo.ExecutionStockInOrderDO;
import com.mhd.oms.domain.executionStockInOrder.service.ExecutionStockInOrderApplicationService;
import com.mhd.oms.domain.reservationInMaterialDetail.entity.ReservationInMaterialDetail;
import com.mhd.oms.domain.reservationInMaterialDetail.repository.facade.IReservationInMaterialDetailService;
import com.mhd.oms.domain.reservationInMaterialDetail.repository.po.ReservationInMaterialDetailPO;
@@ -73,29 +75,16 @@ public class ReservationStockInOrderDomainService {
private IExecutionInMaterialDetailService executionInMaterialDetailService;
@Autowired
private IReservationStockOutOrderService stockOutOrderService;
// @Autowired
// private ReservationStockReceiptOrderDomainService stockReceiptOrderDomainService;
// @Autowired
// private ReservationStockShelfOrderDomainService stockShelfOrderDomainService;
// @Autowired
// private IMaterialBaseInfoService materialBaseInfoService;
// @Autowired
// private IMaterialGoodsRuleService materialGoodsRuleService;
// @Autowired
// private IMaterialWarehouseControlService materialWarehouseControlService;
@Autowired
private SystemServiceFeign systemServiceFeign;
@Autowired
private WmsServiceFeign wmsServiceFeign;
@Autowired
private ReservationStockInOrderMapper reservationStockInOrderMapper;
@Autowired
private ExecutionStockInOrderApplicationService stockInOrderApplicationService;
@Autowired
private BusinessDocumentOrderMapper businessDocumentOrderMapper;
// @Autowired
// private IReceiptMaterialDetailService receiptMaterialDetailService;
// @Autowired
// private IShelfMaterialDetailService shelfMaterialDetailService;
/**
* 分页查询入库单列表
@@ -514,6 +503,12 @@ public class ReservationStockInOrderDomainService {
reservationStockInOrder.setTopOrganizationId(topOrgId);
reservationStockInOrder.setWarehouseCode(warehouseCode);
reservationStockInOrder.setWarehouseName(warehouseName);
reservationStockInOrder.setBusinessInOrderNumber(inOrderNumber);
if (materialDetailGroupByWarehouse!=null&&materialDetailGroupByWarehouse.size()>1) {
reservationStockInOrder.setInOrderNumber(OrderSequence.getOrderCode("RK"));
} else {
reservationStockInOrder.setInOrderNumber(inOrderNumber);
}
List<ExecutionInMaterialDetail> inMaterialDetailList = new ArrayList<>();
int index = 1;
@@ -526,6 +521,7 @@ public class ReservationStockInOrderDomainService {
reservationInMaterialDetail.setTopOrganizationId(topOrgId);
reservationInMaterialDetail.setWarehouseCode(warehouseCode);
reservationInMaterialDetail.setWarehouseName(warehouseName);
reservationInMaterialDetail.setInOrderNumber(reservationStockInOrder.getInOrderNumber());
// String lot = generateDateSerialNumber();
// lot = lot+"-"+index;
// index++;
@@ -543,6 +539,115 @@ public class ReservationStockInOrderDomainService {
return update;
}
@Transactional(rollbackFor = Exception.class)
public Boolean executeAndIssue(ReservationStockInOrderDO stockInOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
// 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底)
String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null
? loginUser.getUserPo().getUserName()
: (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername());
boolean update = stockInOrderService.update(null, new UpdateWrapper<ReservationStockInOrder>().lambda()
.set(ReservationStockInOrder::getIssueId, loginUser.getUserid())
.set(ReservationStockInOrder::getIssueName, userRealName)
.set(ReservationStockInOrder::getIssueTime, new Date())
//.set(ReservationStockInOrder::getIssueStatus, 1)
.set(ReservationStockInOrder::getUpdateBy, loginUser.getUserid())
.set(ReservationStockInOrder::getUpdateByName, userRealName)
.set(ReservationStockInOrder::getUpdateTime, new Date())
.in(ReservationStockInOrder::getInOrderId, stockInOrderDO.getInOrderIds()));
//todo下发推送到wms
// List<Long> inOrderIds = stockInOrderDO.getInOrderIds();
// for (Long inOrderId : inOrderIds) {
// ReservationStockInOrder byId = stockInOrderService.getById(inOrderId);
// StockInOrder stockInOrder = new StockInOrder();
// BeanUtils.copyProperties(byId, stockInOrder,"inOrderId");
// stockInOrder.setOmsStockInOrderId(String.valueOf(byId.getInOrderId()));
// wmsServiceFeign.omsInOrderAdd(stockInOrder);
// String inOrderNumber = stockInOrder.getInOrderNumber();
// List<ReservationInMaterialDetail> materialDetailList = materialDetailService.list(new QueryWrapper<ReservationInMaterialDetail>().lambda().eq(ReservationInMaterialDetail::getInOrderNumber, inOrderNumber));
// List<InMaterialDetail> inMaterialDetailList = new ArrayList<>();
// for (ReservationInMaterialDetail reservationInMaterialDetail : materialDetailList) {
// InMaterialDetail inMaterialDetail = new InMaterialDetail();
// BeanUtils.copyProperties(reservationInMaterialDetail, inMaterialDetail,"materialDetailId");
// inMaterialDetail.setOmsInMaterialDetail(String.valueOf(reservationInMaterialDetail.getMaterialDetailId()));
// inMaterialDetailList.add(inMaterialDetail);
// }
// wmsServiceFeign.omsInOrderAddDetail(inMaterialDetailList);
// }
//todo下发推送到入库业务单
List<Long> inOrderIds = stockInOrderDO.getInOrderIds();
for (Long inOrderId : inOrderIds) {
// Long inOrderId = stockInOrderDO.getInOrderId();
ReservationStockInOrder byId = stockInOrderService.getById(inOrderId);
String inOrderNumber = byId.getInOrderNumber();
List<ReservationInMaterialDetail> materialDetailList = materialDetailService.list(new QueryWrapper<ReservationInMaterialDetail>().lambda().eq(ReservationInMaterialDetail::getInOrderNumber, inOrderNumber));
// 按照 warehouseId 分组
Map<Long, List<ReservationInMaterialDetail>> materialDetailGroupByWarehouse = materialDetailList.stream()
.collect(Collectors.groupingBy(ReservationInMaterialDetail::getWarehouseId));
materialDetailGroupByWarehouse.forEach((warehouseId, details) -> {
Long topOrgId = reservationStockInOrderMapper.getTopOrgId(warehouseId);
Long orgId = reservationStockInOrderMapper.getOrgId(warehouseId);
String orgName = reservationStockInOrderMapper.getOrgName(warehouseId);
String warehouseCode = reservationStockInOrderMapper.getWarehouseCode(warehouseId);
String warehouseName = reservationStockInOrderMapper.getWarehouseName(warehouseId);
ExecutionStockInOrder reservationStockInOrder = new ExecutionStockInOrder();
BeanUtils.copyProperties(byId, reservationStockInOrder,"inOrderId","issueStatus","issueTime","issueId","issueName","reservationAuditId","reservationAuditName","reservationAuditTime");
reservationStockInOrder.setIssueStatus(0);
reservationStockInOrder.setOrderTypeCode("pu_tong_ru_ku");
reservationStockInOrder.setOrderTypeName("普通入库");
reservationStockInOrder.setReservationOrderSource("客户预约");
reservationStockInOrder.setWarehouseId(warehouseId);
reservationStockInOrder.setOrganizationId(orgId);
reservationStockInOrder.setOrganizationName(orgName);
reservationStockInOrder.setTopOrganizationId(topOrgId);
reservationStockInOrder.setWarehouseCode(warehouseCode);
reservationStockInOrder.setWarehouseName(warehouseName);
reservationStockInOrder.setBusinessInOrderNumber(inOrderNumber);
if (materialDetailGroupByWarehouse!=null&&materialDetailGroupByWarehouse.size()>1) {
reservationStockInOrder.setInOrderNumber(OrderSequence.getOrderCode("RK"));
} else {
reservationStockInOrder.setInOrderNumber(inOrderNumber);
}
List<ExecutionInMaterialDetail> inMaterialDetailList = new ArrayList<>();
int index = 1;
for (ReservationInMaterialDetail reserveInMaterialDetail : details) {
ExecutionInMaterialDetail reservationInMaterialDetail = new ExecutionInMaterialDetail();
BeanUtils.copyProperties(reserveInMaterialDetail, reservationInMaterialDetail,"materialDetailId");
reservationInMaterialDetail.setQuantity(reserveInMaterialDetail.getQuantity());
reservationInMaterialDetail.setOrganizationId(orgId);
reservationInMaterialDetail.setOrganizationName(orgName);
reservationInMaterialDetail.setTopOrganizationId(topOrgId);
reservationInMaterialDetail.setWarehouseCode(warehouseCode);
reservationInMaterialDetail.setWarehouseName(warehouseName);
reservationInMaterialDetail.setInOrderNumber(reservationStockInOrder.getInOrderNumber());
// String lot = generateDateSerialNumber();
// lot = lot+"-"+index;
// index++;
// reservationInMaterialDetail.setLotNo(lot);
inMaterialDetailList.add(reservationInMaterialDetail);
}
BigDecimal quantity = details.stream().map(ReservationInMaterialDetail::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
reservationStockInOrder.setQuantity(quantity);
executionStockInOrderService.save(reservationStockInOrder);
ExecutionStockInOrderDO param = new ExecutionStockInOrderDO();
Long inOrderId1 = reservationStockInOrder.getInOrderId();
List<Long> inOrderIdList1 = new ArrayList<>();
inOrderIdList1.add(inOrderId1);
param.setInOrderIds(inOrderIdList1);
stockInOrderApplicationService.issueOrder(param);
executionInMaterialDetailService.saveBatch(inMaterialDetailList);
});
}
return update;
}
public String generateDateSerialNumber() {
// 1. 获取当前时间,格式化为:yyMMdd (2位年+2位月+2位日)
SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
@@ -854,6 +854,10 @@ public class ReservationStockOutOrderApplicationService {
return stockOutOrderDomainService.issueOrder(stockOutOrderDO);
}
public Boolean executeAndIssue(ReservationStockOutOrderDO stockOutOrderDO){
return stockOutOrderDomainService.executeAndIssue(stockOutOrderDO);
}
@@ -20,6 +20,15 @@ import com.mhd.oms.domain.businessDocumentOrder.entity.BusinessDocumentOrder;
import com.mhd.oms.domain.businessDocumentOrder.repository.mapper.BusinessDocumentOrderMapper;
import com.mhd.oms.domain.executeOrder.entity.ExecuteOrder;
import com.mhd.oms.domain.executeOrder.repository.mapper.ExecuteOrderMapper;
import com.mhd.oms.domain.executionInMaterialDetail.entity.ExecutionInMaterialDetail;
import com.mhd.oms.domain.executionInMaterialDetail.repository.facade.IExecutionInMaterialDetailService;
import com.mhd.oms.domain.executionOutMaterialDetail.entity.ExecutionOutMaterialDetail;
import com.mhd.oms.domain.executionOutMaterialDetail.repository.facade.IExecutionOutMaterialDetailService;
import com.mhd.oms.domain.executionStockInOrder.entity.ExecutionStockInOrder;
import com.mhd.oms.domain.executionStockOutOrder.entity.ExecutionStockOutOrder;
import com.mhd.oms.domain.executionStockOutOrder.repository.facade.IExecutionStockOutOrderService;
import com.mhd.oms.domain.executionStockOutOrder.repository.todo.ExecutionStockOutOrderDO;
import com.mhd.oms.domain.executionStockOutOrder.service.ExecutionStockOutOrderApplicationService;
import com.mhd.oms.domain.reservationDeliveryDetailsLink.entity.ReservationDeliveryDetailsLink;
import com.mhd.oms.domain.reservationDeliveryDetailsLink.repository.facade.IReservationDeliveryDetailsLinkService;
import com.mhd.oms.domain.reservationInMaterialDetail.entity.ReservationInMaterialDetail;
@@ -71,6 +80,10 @@ public class ReservationStockOutOrderDomainService {
@Autowired
private IReservationOutMaterialDetailService outMaterialDetailService;
@Autowired
private IExecutionStockOutOrderService executionStockOutOrderService;
@Autowired
private IExecutionOutMaterialDetailService executionOutMaterialDetailService;
@Autowired
private IReservationDeliveryDetailsLinkService deliveryDetailsLinkService;
@Autowired
private IReservationStockInOrderService reservationStockInOrderService;
@@ -80,7 +93,8 @@ public class ReservationStockOutOrderDomainService {
private BusinessDocumentOrderMapper businessDocumentOrderMapper;
@Autowired
private ExecuteOrderMapper executeOrderMapper;
@Autowired
private ExecutionStockOutOrderApplicationService stockOutOrderApplicationService;
@Resource
private SystemServiceFeign systemServiceFeign;
@Resource
@@ -331,32 +345,143 @@ public class ReservationStockOutOrderDomainService {
//todo下发推送到wms
List<Long> inOrderIds = stockOutOrderDO.getOutOrderIds();
for (Long inOrderId : inOrderIds) {
ReservationStockOutOrder byId = stockOutOrderService.getById(inOrderId);
StockOutOrder stockOutOrder = new StockOutOrder();
BeanUtils.copyProperties(byId, stockOutOrder,"outOrderId");
wmsServiceFeign.omsOutOrderAdd(stockOutOrder);
List<ReservationDeliveryDetailsLink> list = deliveryDetailsLinkService.list(new QueryWrapper<ReservationDeliveryDetailsLink>().lambda().eq(ReservationDeliveryDetailsLink::getOrderNumber, byId.getOutOrderNumber()));
List<DeliveryDetailsLink> deliveryDetailsLinkList = new ArrayList<>();
for (ReservationDeliveryDetailsLink reservationDeliveryDetailsLink : list) {
DeliveryDetailsLink deliveryDetailsLink = new DeliveryDetailsLink();
BeanUtils.copyProperties(reservationDeliveryDetailsLink, deliveryDetailsLink,"id");
deliveryDetailsLink.setOmsId(reservationDeliveryDetailsLink.getId());
deliveryDetailsLinkList.add(deliveryDetailsLink);
}
wmsServiceFeign.omsOutOrderAddDeliveryDetailsLink(deliveryDetailsLinkList);
String inOrderNumber = stockOutOrder.getOutOrderNumber();
String inOrderNumber = byId.getOutOrderNumber();
List<ReservationOutMaterialDetail> materialDetailList = outMaterialDetailService.list(new QueryWrapper<ReservationOutMaterialDetail>().lambda().eq(ReservationOutMaterialDetail::getOutOrderNumber, inOrderNumber));
List<OutMaterialDetail> outMaterialDetailList = new ArrayList<>();
for (ReservationOutMaterialDetail reservationOutMaterialDetail : materialDetailList) {
OutMaterialDetail outMaterialDetail = new OutMaterialDetail();
BeanUtils.copyProperties(reservationOutMaterialDetail, outMaterialDetail,"materialDetailId");
outMaterialDetailList.add(outMaterialDetail);
}
wmsServiceFeign.omsOutOrderAddDetail(outMaterialDetailList);
// 按照 warehouseId 分组
Map<Long, List<ReservationOutMaterialDetail>> materialDetailGroupByWarehouse = materialDetailList.stream()
.collect(Collectors.groupingBy(ReservationOutMaterialDetail::getWarehouseId));
materialDetailGroupByWarehouse.forEach((warehouseId, details) -> {
Long topOrgId = reservationStockInOrderMapper.getTopOrgId(warehouseId);
Long orgId = reservationStockInOrderMapper.getOrgId(warehouseId);
String orgName = reservationStockInOrderMapper.getOrgName(warehouseId);
String warehouseCode = reservationStockInOrderMapper.getWarehouseCode(warehouseId);
String warehouseName = reservationStockInOrderMapper.getWarehouseName(warehouseId);
ExecutionStockOutOrder reservationStockInOrder = new ExecutionStockOutOrder();
BeanUtils.copyProperties(byId, reservationStockInOrder,"outOrderId","issueStatus","issueTime","issueId","issueName","reservationAuditId","reservationAuditName","reservationAuditTime");
reservationStockInOrder.setIssueStatus(0);
reservationStockInOrder.setOrderTypeCode("pu_tong_chu_ku");
reservationStockInOrder.setOrderTypeName("普通出库");
reservationStockInOrder.setReservationOrderSource("客户预约");
reservationStockInOrder.setWarehouseId(warehouseId);
reservationStockInOrder.setOrganizationId(orgId);
reservationStockInOrder.setOrganizationName(orgName);
reservationStockInOrder.setTopOrganizationId(topOrgId);
reservationStockInOrder.setWarehouseCode(warehouseCode);
reservationStockInOrder.setWarehouseName(warehouseName);
reservationStockInOrder.setBusinessOutOrderNumber(inOrderNumber);
if (materialDetailGroupByWarehouse!=null&&materialDetailGroupByWarehouse.size()>1) {
reservationStockInOrder.setOutOrderNumber(OrderSequence.getOrderCode("CK"));
} else {
reservationStockInOrder.setOutOrderNumber(inOrderNumber);
}
List<ExecutionOutMaterialDetail> inMaterialDetailList = new ArrayList<>();
for (ReservationOutMaterialDetail reservationOutMaterialDetail : details) {
ExecutionOutMaterialDetail reservationInMaterialDetail = new ExecutionOutMaterialDetail();
BeanUtils.copyProperties(reservationOutMaterialDetail, reservationInMaterialDetail,"materialDetailId");
reservationInMaterialDetail.setQuantity(reservationOutMaterialDetail.getQuantity());
reservationInMaterialDetail.setOrganizationId(orgId);
reservationInMaterialDetail.setOrganizationName(orgName);
reservationInMaterialDetail.setTopOrganizationId(topOrgId);
reservationInMaterialDetail.setWarehouseCode(warehouseCode);
reservationInMaterialDetail.setWarehouseName(warehouseName);
reservationInMaterialDetail.setOutOrderNumber(reservationStockInOrder.getOutOrderNumber());
inMaterialDetailList.add(reservationInMaterialDetail);
}
BigDecimal quantity = details.stream().map(ReservationOutMaterialDetail::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
reservationStockInOrder.setQuantity(quantity);
executionStockOutOrderService.save(reservationStockInOrder);
executionOutMaterialDetailService.saveBatch(inMaterialDetailList);
});
}
return update;
}
@Transactional(rollbackFor = Exception.class)
public Boolean executeAndIssue(ReservationStockOutOrderDO stockOutOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
// 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底)
String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null
? loginUser.getUserPo().getUserName()
: (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername());
boolean update = stockOutOrderService.update(null, new UpdateWrapper<ReservationStockOutOrder>().lambda()
.set(ReservationStockOutOrder::getIssueId, loginUser.getUserid())
.set(ReservationStockOutOrder::getIssueName, userRealName)
.set(ReservationStockOutOrder::getIssueTime, new Date())
//.set(ReservationStockOutOrder::getIssueStatus, 1)
.set(ReservationStockOutOrder::getUpdateBy, loginUser.getUserid())
.set(ReservationStockOutOrder::getUpdateByName, userRealName)
.set(ReservationStockOutOrder::getUpdateTime, new Date())
.in(ReservationStockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds()));
//todo下发推送到wms
List<Long> inOrderIds = stockOutOrderDO.getOutOrderIds();
for (Long inOrderId : inOrderIds) {
ReservationStockOutOrder byId = stockOutOrderService.getById(inOrderId);
String inOrderNumber = byId.getOutOrderNumber();
List<ReservationOutMaterialDetail> materialDetailList = outMaterialDetailService.list(new QueryWrapper<ReservationOutMaterialDetail>().lambda().eq(ReservationOutMaterialDetail::getOutOrderNumber, inOrderNumber));
// 按照 warehouseId 分组
Map<Long, List<ReservationOutMaterialDetail>> materialDetailGroupByWarehouse = materialDetailList.stream()
.collect(Collectors.groupingBy(ReservationOutMaterialDetail::getWarehouseId));
materialDetailGroupByWarehouse.forEach((warehouseId, details) -> {
Long topOrgId = reservationStockInOrderMapper.getTopOrgId(warehouseId);
Long orgId = reservationStockInOrderMapper.getOrgId(warehouseId);
String orgName = reservationStockInOrderMapper.getOrgName(warehouseId);
String warehouseCode = reservationStockInOrderMapper.getWarehouseCode(warehouseId);
String warehouseName = reservationStockInOrderMapper.getWarehouseName(warehouseId);
ExecutionStockOutOrder reservationStockInOrder = new ExecutionStockOutOrder();
BeanUtils.copyProperties(byId, reservationStockInOrder,"outOrderId","issueStatus","issueTime","issueId","issueName","reservationAuditId","reservationAuditName","reservationAuditTime");
reservationStockInOrder.setIssueStatus(0);
reservationStockInOrder.setOrderTypeCode("pu_tong_chu_ku");
reservationStockInOrder.setOrderTypeName("普通出库");
reservationStockInOrder.setReservationOrderSource("客户预约");
reservationStockInOrder.setWarehouseId(warehouseId);
reservationStockInOrder.setOrganizationId(orgId);
reservationStockInOrder.setOrganizationName(orgName);
reservationStockInOrder.setTopOrganizationId(topOrgId);
reservationStockInOrder.setWarehouseCode(warehouseCode);
reservationStockInOrder.setWarehouseName(warehouseName);
reservationStockInOrder.setBusinessOutOrderNumber(inOrderNumber);
if (materialDetailGroupByWarehouse!=null&&materialDetailGroupByWarehouse.size()>1) {
reservationStockInOrder.setOutOrderNumber(OrderSequence.getOrderCode("CK"));
} else {
reservationStockInOrder.setOutOrderNumber(inOrderNumber);
}
List<ExecutionOutMaterialDetail> inMaterialDetailList = new ArrayList<>();
for (ReservationOutMaterialDetail reservationOutMaterialDetail : details) {
ExecutionOutMaterialDetail reservationInMaterialDetail = new ExecutionOutMaterialDetail();
BeanUtils.copyProperties(reservationOutMaterialDetail, reservationInMaterialDetail,"materialDetailId");
reservationInMaterialDetail.setQuantity(reservationOutMaterialDetail.getQuantity());
reservationInMaterialDetail.setOrganizationId(orgId);
reservationInMaterialDetail.setOrganizationName(orgName);
reservationInMaterialDetail.setTopOrganizationId(topOrgId);
reservationInMaterialDetail.setWarehouseCode(warehouseCode);
reservationInMaterialDetail.setWarehouseName(warehouseName);
reservationInMaterialDetail.setOutOrderNumber(reservationStockInOrder.getOutOrderNumber());
inMaterialDetailList.add(reservationInMaterialDetail);
}
BigDecimal quantity = details.stream().map(ReservationOutMaterialDetail::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
reservationStockInOrder.setQuantity(quantity);
executionStockOutOrderService.save(reservationStockInOrder);
executionOutMaterialDetailService.saveBatch(inMaterialDetailList);
//下发
Long outOrderId = reservationStockInOrder.getOutOrderId();
ExecutionStockOutOrderDO param = new ExecutionStockOutOrderDO();
List<Long> ids = new ArrayList<>();
ids.add(outOrderId);
param.setOutOrderIds(ids);
stockOutOrderApplicationService.issueOrder(param);
});
}
return update;
}
@@ -150,6 +150,13 @@ public class ReservationStockOutOrderApi extends BaseController {
return AjaxResult.success(stockOutOrderApplicationService.issueOrder(stockOutOrderDO));
}
@ApiOperation("下发出库单")
@PostMapping(value = "/executeAndIssue")
public AjaxResult executeAndIssue(@RequestBody ReservationStockOutOrderDTO stockOutOrderDTO) {
ReservationStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO);
return AjaxResult.success(stockOutOrderApplicationService.executeAndIssue(stockOutOrderDO));
}
@ApiOperation("关闭出库单")
@PostMapping("/close")
public AjaxResult close(@RequestBody ReservationStockOutOrderDTO stockOutOrderDTO)
@@ -129,6 +129,16 @@ public class ReservationStockInOrderApi extends BaseController {
return AjaxResult.success(stockInOrderApplicationService.issueOrder(stockInOrderDO));
}
/**
* 下发入库单
*/
@ApiOperation("下发入库单")
@PostMapping(value = "/executeAndIssue")
public AjaxResult executeAndIssue(@RequestBody ReservationStockInOrderDTO stockInOrderDTO) {
ReservationStockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
return AjaxResult.success(stockInOrderApplicationService.executeAndIssue(stockInOrderDO));
}
/**
* wms回传出入库结果