|
|
|
@ -20,6 +20,7 @@ import com.gaotao.modules.trans.service.ValidateInventoryPartInStockService; |
|
|
|
import com.gaotao.modules.warehouse.entity.InventoryStock; |
|
|
|
import com.gaotao.modules.warehouse.service.InventoryStockService; |
|
|
|
import com.gaotao.modules.base.entity.PartData; |
|
|
|
import com.gaotao.modules.factory.dao.SiteMapper; |
|
|
|
import com.gaotao.modules.handlingunit.service.HandlingUnitService; |
|
|
|
import com.gaotao.modules.warehouse.service.WmsAvailabilityControlIdService; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
@ -32,6 +33,7 @@ import java.math.BigDecimal; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.LinkedHashSet; |
|
|
|
import java.util.List; |
|
|
|
import java.util.UUID; |
|
|
|
|
|
|
|
@ -49,6 +51,9 @@ public class HandlingUnitServiceImpl extends ServiceImpl<HandlingUnitMapper, Han |
|
|
|
@Autowired |
|
|
|
private WmsAvailabilityControlIdService wmsAvailabilityControlIdService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private SiteMapper siteMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private ValidateInventoryPartInStockService validateInventoryPartInStockService; |
|
|
|
@Override |
|
|
|
@ -92,6 +97,47 @@ public class HandlingUnitServiceImpl extends ServiceImpl<HandlingUnitMapper, Han |
|
|
|
return unit; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description PDA标签查询。请求 site 是登录大工厂,标签 handling_unit.site 是小工厂。先取 site_sub 全部小工厂,再按标签号限定在这些小工厂内。未配置小工厂时退回大工厂本身,避免其它工厂查空。同一标签落在多个小工厂时不猜测返回。- rqrq |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public HandlingUnit queryPdaLabelByBigSite(String bigSite, String unitId) { |
|
|
|
if (StringUtils.isBlank(bigSite)) { |
|
|
|
throw new XJException("工厂编码不能为空"); |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(unitId)) { |
|
|
|
throw new XJException("标签编码不能为空"); |
|
|
|
} |
|
|
|
String site = bigSite.trim(); |
|
|
|
String code = unitId.trim(); |
|
|
|
// 按大工厂取小工厂清单。54 会得到 54/54A/54B/54C;查询失败则中断,避免漏掉小工厂后误报标签不存在。- rqrq |
|
|
|
List<String> configuredSubSites = siteMapper.listSubSiteIds(site); |
|
|
|
LinkedHashSet<String> siteScope = new LinkedHashSet<String>(); |
|
|
|
if (configuredSubSites != null) { |
|
|
|
for (String subSite : configuredSubSites) { |
|
|
|
if (StringUtils.isNotBlank(subSite)) { |
|
|
|
siteScope.add(subSite.trim()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (siteScope.isEmpty()) { |
|
|
|
siteScope.add(site); |
|
|
|
} |
|
|
|
// 标签号加小工厂范围查询。多条时不能任取一条,否则打印和拆分会用错工厂。- rqrq |
|
|
|
List<HandlingUnit> handlingUnits = this.lambdaQuery() |
|
|
|
.in(HandlingUnit::getSite, siteScope) |
|
|
|
.eq(HandlingUnit::getUnitId, code) |
|
|
|
.list(); |
|
|
|
if (handlingUnits == null || handlingUnits.isEmpty()) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
if (handlingUnits.size() > 1) { |
|
|
|
throw new XJException("同一标签编码在多个小工厂存在,无法确定"); |
|
|
|
} |
|
|
|
return handlingUnits.get(0); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public HandlingUnit getHandlingUnit(String site, String unitId) { |
|
|
|
return baseMapper.selectByUnitIdNoLock(unitId); |
|
|
|
|