fix(oms):入库预约App提交后各端不显示,落库回填仓库/组织/货主并支持货主维度查询
根因:App提交的预约单organization_id/shipper_id落库为空、warehouse_code全空,列表按组织与仓码过滤必然查不到 1.ReserveStockInOrderDomainService.insert: -新增明细非空校验,App不传明细时返回'请添加货物明细'而非NPE -按warehouseId查仓库档案回填组织(仓码2841/谷丰2842按仓库归属)/一级组织(2827)/仓库编码名称,仓库缺失时兜底登录人一级组织+2841 -委托方(有货主档案)未传shipper时回填登录人userId至shipperId/customerId -订单状态默认'新增'/status默认1(配合App端订单状态改只读) 2.ReserveStockInOrderApplicationService: -detailsList增加货主直查旁路(对齐queryList既有逻辑),委托方按shipperId查询不再被组织过滤拦截 -inAndOutList原无任何数据权限,委托方登录强制注入本人shipperId,防止传错组织(如通宇2830)导致列表滤空并防越权
This commit is contained in:
+9
@@ -153,6 +153,10 @@ public class ReserveStockInOrderApplicationService {
|
||||
|
||||
|
||||
public List<ReserveInMaterialDetailPO> detailsList(ReserveStockInOrderDO stockInOrderDO) {
|
||||
// 与 queryList(:96-99) 对齐:委托方按货主直查
|
||||
if (stockInOrderDO.getShipperId() != null && stockInOrderDO.getShipperId() != 0L) {
|
||||
return stockInOrderDomainService.detailsList(stockInOrderDO);
|
||||
}
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null && loginUser.getUserPo() != null){
|
||||
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
|
||||
@@ -195,6 +199,11 @@ public class ReserveStockInOrderApplicationService {
|
||||
|
||||
public List<InAndOutListVo> inAndOutList(ReserveStockInOrderDO stockInOrderDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
// 委托方(货主)登录:强制只看本人货主数据;运营人员不注入(XML :667-669 支持 shipperId)
|
||||
if (stockInOrderDO.getShipperId() == null
|
||||
&& loginUser != null && loginUser.getUserShipperPo() != null) {
|
||||
stockInOrderDO.setShipperId(loginUser.getUserPo().getUserId());
|
||||
}
|
||||
return stockInOrderDomainService.inAndOutList(stockInOrderDO);
|
||||
}
|
||||
|
||||
|
||||
+43
-3
@@ -142,6 +142,9 @@ public class ReserveStockInOrderDomainService {
|
||||
// //设置物料信息
|
||||
// setMaterialDetailInfo(stockInOrderDO);
|
||||
// //统计总物料种数
|
||||
if (CollectionUtils.isEmpty(stockInOrderDO.getMaterialDetailList())) {
|
||||
throw new ServiceException("请添加货物明细");
|
||||
}
|
||||
stockInOrderDO.setMaterialQuantity(stockInOrderDO.getMaterialDetailList().size());
|
||||
// //统计总计划数
|
||||
BigDecimal quantity = stockInOrderDO.getMaterialDetailList().stream().map(ReserveInMaterialDetailDO::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
@@ -155,9 +158,46 @@ public class ReserveStockInOrderDomainService {
|
||||
BigDecimal volumeLimit = stockInOrderDO.getMaterialDetailList().stream().map(ReserveInMaterialDetailDO::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
stockInOrderDO.setVolumeLimit(volumeLimit);
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
stockInOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
// stockInOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
|
||||
// stockInOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
|
||||
// 仓库档案回填:组织(仓码2841/谷丰2842按仓库归属)/一级组织(2827)/仓库编码名称
|
||||
if (stockInOrderDO.getWarehouseId() != null) {
|
||||
AjaxResult wr = systemServiceFeign.getWarehouseInfoByWarehouseId(stockInOrderDO.getWarehouseId());
|
||||
if ("200".equals(String.valueOf(wr.get("code")))) {
|
||||
WarehouseFeignPO wh = JSON.parseObject(JSONObject.toJSONString(wr.get("data")), WarehouseFeignPO.class);
|
||||
if (stockInOrderDO.getOrganizationId() == null && wh.getOrganizationId() != null) {
|
||||
stockInOrderDO.setOrganizationId(wh.getOrganizationId());
|
||||
stockInOrderDO.setOrganizationName(wh.getOrganizationName());
|
||||
}
|
||||
if (wh.getTopOrganizationId() != null) {
|
||||
stockInOrderDO.setTopOrganizationId(wh.getTopOrganizationId());
|
||||
}
|
||||
if (StringUtils.isBlank(stockInOrderDO.getWarehouseCode())) {
|
||||
stockInOrderDO.setWarehouseCode(wh.getWarehouseCode());
|
||||
stockInOrderDO.setWarehouseName(wh.getWarehouseName());
|
||||
}
|
||||
}
|
||||
}
|
||||
// 兜底:仓库没带组织时用登录人一级组织 + 2841(与存量导入 :2226-2228 口径一致)
|
||||
if (stockInOrderDO.getTopOrganizationId() == null) {
|
||||
stockInOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
if (stockInOrderDO.getOrganizationId() == null) {
|
||||
stockInOrderDO.setOrganizationId(2841L);
|
||||
stockInOrderDO.setOrganizationName("仓码");
|
||||
}
|
||||
// 委托方(货主)身份回填:App未传且登录人有货主档案时=登录人(模式同 importInData :1992-1997)
|
||||
if (stockInOrderDO.getShipperId() == null && loginUser.getUserShipperPo() != null) {
|
||||
stockInOrderDO.setShipperId(loginUser.getUserPo().getUserId());
|
||||
stockInOrderDO.setShipperName(loginUser.getUserPo().getUserName());
|
||||
stockInOrderDO.setCustomerId(loginUser.getUserPo().getUserId());
|
||||
stockInOrderDO.setCustomerName(loginUser.getUserPo().getUserName());
|
||||
}
|
||||
// 状态默认值(App端订单状态不可编辑)
|
||||
if (StringUtils.isBlank(stockInOrderDO.getOrderStatus())) {
|
||||
stockInOrderDO.setOrderStatus("新增");
|
||||
}
|
||||
if (stockInOrderDO.getStatus() == null) {
|
||||
stockInOrderDO.setStatus(1);
|
||||
}
|
||||
stockInOrderService.insert(stockInOrderDO);
|
||||
return materialDetailService.batchInsert(stockInOrderDO.getInOrderNumber(), stockInOrderDO.getMaterialDetailList());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user