@ -2,6 +2,8 @@ package com.win.module.wms.service.location;
import cn.hutool.core.collection.CollUtil ;
import cn.hutool.core.collection.CollUtil ;
import cn.hutool.core.util.StrUtil ;
import cn.hutool.core.util.StrUtil ;
import cn.hutool.json.JSONObject ;
import cn.hutool.json.JSONUtil ;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper ;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper ;
import com.google.common.annotations.VisibleForTesting ;
import com.google.common.annotations.VisibleForTesting ;
import com.win.framework.common.exception.ServiceException ;
import com.win.framework.common.exception.ServiceException ;
@ -9,6 +11,7 @@ import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult ;
import com.win.framework.common.pojo.PageResult ;
import com.win.framework.datapermission.core.util.DataPermissionUtils ;
import com.win.framework.datapermission.core.util.DataPermissionUtils ;
import com.win.module.wms.controller.location.vo.* ;
import com.win.module.wms.controller.location.vo.* ;
import com.win.module.wms.controller.rule.vo.RuleRespVO ;
import com.win.module.wms.convert.location.LocationConvert ;
import com.win.module.wms.convert.location.LocationConvert ;
import com.win.module.wms.dal.dataobject.location.LocationDO ;
import com.win.module.wms.dal.dataobject.location.LocationDO ;
import com.win.module.wms.dal.mysql.balance.BalanceMapper ;
import com.win.module.wms.dal.mysql.balance.BalanceMapper ;
@ -20,9 +23,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated ;
import org.springframework.validation.annotation.Validated ;
import javax.annotation.Resource ;
import javax.annotation.Resource ;
import java.math.BigDecimal ;
import java.util.ArrayList ;
import java.util.ArrayList ;
import java.util.Collection ;
import java.util.List ;
import java.util.List ;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception ;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception ;
@ -287,13 +288,51 @@ public class LocationServiceImpl implements LocationService {
//调用公共方法查询库位信息
//调用公共方法查询库位信息
@Override
@Override
public LocationDO selectLocation ( String pcode ) {
public LocationDO selectLocation ( String pcode ) {
QueryWrapper queryWrapper = new QueryWrapper ( ) ;
QueryWrapper < LocationDO > queryWrapper = new QueryWrapper < > ( ) ;
queryWrapper . eq ( "code" , pcode ) ;
queryWrapper . eq ( "code" , pcode ) ;
LocationDO locationDO = locationMapper . selectOne ( queryWrapper ) ;
LocationDO locationDO = locationMapper . selectOne ( queryWrapper ) ;
if ( locationDO ! = null & & "TRUE" . equals ( locationDO . getAvailable ( ) ) ) {
if ( locationDO ! = null & & "TRUE" . equals ( locationDO . getAvailable ( ) ) ) {
return locationDO ;
return locationDO ;
} else {
} else {
throw exception ( LOCATION_NOT_EXISTS ) ;
throw exception ( LOCATION_NOT_EXISTS ) ;
}
}
}
}
//{"WarehouseCode":"W1","AreaCode":"A1","LocationGroupCode":"LG1","LocationCode":"H01","EmptyLocationFirst":"FALSE","NotEmptyLocationFirst":"FALSE",
// "EnableMixItem":"TRUE","EnableMixLot":"TRUE","EnableMixStatus":"TRUE"}
@Override
public LocationDO inspectLocation ( RuleRespVO ruleRespVO , String packingNumber , String itemCode , String batch ) {
JSONObject jsonObject = JSONUtil . parseObj ( ruleRespVO . getConfiguration ( ) ) ;
Object locationCode = jsonObject . get ( "LocationCode" ) ;
//设置了库位直接返回
if ( locationCode ! = null ) {
return this . selectLocation ( String . valueOf ( locationCode ) ) ;
}
QueryWrapper < LocationDO > queryWrapper = new QueryWrapper < > ( ) ;
List < String > locationTypeList = new ArrayList < > ( ) ;
locationTypeList . add ( "RAW" ) ;
locationTypeList . add ( "SEMI" ) ;
locationTypeList . add ( "FG" ) ;
queryWrapper . in ( "`type`" , locationTypeList ) ;
Object warehouseCode = jsonObject . get ( "WarehouseCode" ) ;
if ( warehouseCode ! = null ) {
queryWrapper . eq ( "warehouse_code" , warehouseCode ) ;
}
Object areaCode = jsonObject . get ( "AreaCode" ) ;
if ( areaCode ! = null ) {
queryWrapper . eq ( "area_code" , areaCode ) ;
}
Object locationGroupCode = jsonObject . get ( "LocationGroupCode" ) ;
if ( locationGroupCode ! = null ) {
queryWrapper . eq ( "location_group_code" , locationGroupCode ) ;
}
String emptyLocationFirst = String . valueOf ( jsonObject . get ( "EmptyLocationFirst" ) ) ;
if ( "TRUE" . equals ( emptyLocationFirst ) ) {
queryWrapper . notExists ( "SELECT id FROM transaction_balance WHERE packing_number=? AND item_code=? AND batch=? AND QTY > 0" , packingNumber , itemCode , batch ) ;
} else {
queryWrapper . exists ( "SELECT id FROM transaction_balance WHERE packing_number=? AND item_code=? AND batch=?" , packingNumber , itemCode , batch ) ;
}
queryWrapper . last ( "LIMIT 1" ) ;
return locationMapper . selectOne ( queryWrapper ) ;
}
}
}