执行及取消执行;nc推送客户nc编码查询逻辑修改;
This commit is contained in:
+4
@@ -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;
|
||||
|
||||
+6
@@ -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);
|
||||
|
||||
+5
-2
@@ -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()));
|
||||
}
|
||||
|
||||
|
||||
+4
@@ -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;
|
||||
|
||||
+1
-1
@@ -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()));
|
||||
}
|
||||
|
||||
|
||||
+4
@@ -333,6 +333,10 @@ public class ReservationStockInOrderApplicationService {
|
||||
return stockInOrderDomainService.issueOrder(stockInOrderDO);
|
||||
}
|
||||
|
||||
public Boolean executeAndIssue(ReservationStockInOrderDO stockInOrderDO){
|
||||
return stockInOrderDomainService.executeAndIssue(stockInOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 取消入库单
|
||||
* @author ZhouGY
|
||||
|
||||
+120
-15
@@ -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");
|
||||
|
||||
+4
@@ -854,6 +854,10 @@ public class ReservationStockOutOrderApplicationService {
|
||||
return stockOutOrderDomainService.issueOrder(stockOutOrderDO);
|
||||
}
|
||||
|
||||
public Boolean executeAndIssue(ReservationStockOutOrderDO stockOutOrderDO){
|
||||
return stockOutOrderDomainService.executeAndIssue(stockOutOrderDO);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+149
-24
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user