Browse Source

修改采购收货推荐库位接口。

master
刘忱 2 years ago
parent
commit
d2eb57a2be
  1. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationService.java
  2. 89
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java
  3. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java
  4. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationService.java

@ -4,6 +4,7 @@ import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.location.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import javax.validation.Valid;
@ -92,10 +93,8 @@ public interface LocationService {
/**
* 上架推荐策略
* @param ruleRespVO 上架策略
* @param packingNumber 包装号
* @param itemCode 物料编码
* @param batch 批次
* @param itembasicDO 物品
* @return
*/
LocationDO inspectLocation(RuleRespVO ruleRespVO, String packingNumber, String itemCode, String batch);
LocationDO inspectLocation(RuleRespVO ruleRespVO, ItembasicDO itembasicDO);
}

89
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java

@ -12,16 +12,14 @@ import com.win.framework.common.pojo.PageResult;
import com.win.framework.datapermission.core.util.DataPermissionUtils;
import com.win.module.wms.controller.location.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.convert.bom.BomConvert;
import com.win.module.wms.convert.location.LocationConvert;
import com.win.module.wms.dal.dataobject.bom.BomDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
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.expectout.ExpectoutMapper;
import com.win.module.wms.dal.mysql.location.LocationMapper;
import com.win.module.wms.service.rule.RuleService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -306,38 +304,99 @@ public class LocationServiceImpl implements LocationService {
//{"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) {
public LocationDO inspectLocation(RuleRespVO ruleRespVO, ItembasicDO itembasicDO) {
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 = String.valueOf(jsonObject.get("WarehouseCode"));
if(!warehouseCode.equals("")) {
Object warehouseCode = jsonObject.get("WarehouseCode");
if(!"".equals(warehouseCode)) {
queryWrapper.eq("warehouse_code", warehouseCode);
}
Object areaCode = jsonObject.get("AreaCode");
if(!areaCode.equals("")) {
if(!"".equals(areaCode)) {
queryWrapper.eq("area_code", areaCode);
}
Object locationGroupCode = String.valueOf(jsonObject.get("LocationGroupCode"));
if(!locationGroupCode.equals("")) {
Object locationGroupCode = jsonObject.get("LocationGroupCode");
if(!"".equals(locationGroupCode)) {
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);
//排序
Object aisleOrder = jsonObject.get("AisleOrder");
if("DESC".equals(aisleOrder)) {
queryWrapper.orderByDesc("aisle");
} else {
queryWrapper.orderByAsc("aisle");
}
Object shelfOrder = jsonObject.get("ShelfOrder");
if("DESC".equals(shelfOrder)) {
queryWrapper.orderByDesc("shelf");
} else {
queryWrapper.exists("SELECT id FROM transaction_balance WHERE packing_number=? AND item_code=? AND batch=?", packingNumber, itemCode,batch);
queryWrapper.orderByAsc("shelf");
}
queryWrapper.last("LIMIT 1");
return locationMapper.selectOne(queryWrapper);
Object rowOrder = jsonObject.get("RowOrder");
if("DESC".equals(rowOrder)) {
queryWrapper.orderByDesc("location_row");
} else {
queryWrapper.orderByAsc("location_row");
}
Object columOrder = jsonObject.get("ColumOrder");
if("DESC".equals(columOrder)) {
queryWrapper.orderByDesc("location_colum");
} else {
queryWrapper.orderByAsc("location_colum");
}
List<LocationDO> locationDOList = locationMapper.selectList(queryWrapper);
//查询符合条件的库位之后过滤
//优先空库位
Object emptyLocationFirst = jsonObject.get("EmptyLocationFirst");
//优先非空库位
Object notEmptyLocationFirst = jsonObject.get("NotEmptyLocationFirst");
//可以混物品
Object enableMixItem = jsonObject.get("EnableMixItem");
//可以混批次
Object enableMixLot = jsonObject.get("EnableMixLot");
//可以混状态
Object enableMixStatus = jsonObject.get("EnableMixStatus");
if("TRUE".equals(emptyLocationFirst)) {
locationDOList = this.emptyLocationFirst(locationDOList, enableMixItem, enableMixLot, enableMixStatus);
} else if("TRUE".equals(notEmptyLocationFirst)) {
locationDOList = this.notEmptyLocationFirst(locationDOList, enableMixItem, enableMixLot, enableMixStatus);
}
return locationDOList.get(0);
}
/**
* 优先空库位过滤
* @param locationDOList 库位list
* @param enableMixItem 可以混物品
* @param enableMixLot 可以混批次
* @param enableMixStatus 可以混状态
* @return 过滤之后的库位list
*/
private List<LocationDO> emptyLocationFirst(List<LocationDO> locationDOList, Object enableMixItem, Object enableMixLot, Object enableMixStatus) {
return locationDOList;
}
/**
* 优先非空库位过滤
* @param locationDOList 库位list
* @param enableMixItem 可以混物品
* @param enableMixLot 可以混批次
* @param enableMixStatus 可以混状态
* @return 过滤之后的库位list
*/
private List<LocationDO> notEmptyLocationFirst(List<LocationDO> locationDOList, Object enableMixItem, Object enableMixLot, Object enableMixStatus) {
return locationDOList;
}
}

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java

@ -14,10 +14,8 @@ import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO;
import com.win.module.wms.controller.productionreturnRequest.vo.*;
import com.win.module.wms.controller.productionreturnRequest.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert;
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert;
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
@ -25,8 +23,6 @@ import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO;
import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.dataobject.packageMassage.PackageDO;
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO;
import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO;
@ -34,8 +30,6 @@ import com.win.module.wms.dal.dataobject.productionreturnRecord.Productionreturn
import com.win.module.wms.dal.dataobject.productionreturnRecord.ProductionreturnRecordMainDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO;
import com.win.module.wms.dal.dataobject.recordsetting.RecordsettingDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
@ -682,9 +676,10 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
productionreturnRecordDetailDO.setFromBatch(item.getBatch());
productionreturnRecordDetailDO.setToBatch(item.getBatch());
productionreturnRecordDetailDO.setFromLocationCode(item.getFromLocationCode());
ItembasicDO itembasicDO = itembasicService.selectItembasic(productionreturnRecordDetailDO.getItemCode());
// 获取上架策略 并赋值 to库位
RuleRespVO ruleRespVO = ruleService.grounding(null,null,null,null,null,null,productionreturnRecordDetailDO.getItemCode(),null,null,null,null,null,null);
LocationDO locationDO = locationService.inspectLocation(ruleRespVO,null,productionreturnRecordDetailDO.getItemCode(),null);
RuleRespVO ruleRespVO = ruleService.grounding(null,null,itembasicDO.getAbcClass(),itembasicDO.getType(),itembasicDO.getItemGroup(),itembasicDO.getProject(), itembasicDO.getCode(),null,null,null,null,null,null);
LocationDO locationDO = locationService.inspectLocation(ruleRespVO,itembasicDO);
productionreturnRecordDetailDO.setToLocationCode(locationDO.getCode());
// 获取库位信息 并赋值
LocationDO locationDOFrom = locationService.selectLocation(item.getFromLocationCode());
@ -791,6 +786,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>();
detailDO.forEach(item -> {
ProductionreturnJobDetailDO productionreturnJobDetailDO = new ProductionreturnJobDetailDO();
ItembasicDO itembasicDO = itembasicService.selectItembasic(item.getItemCode());
BeanUtils.copyProperties(item, productionreturnJobDetailDO);
productionreturnJobDetailDO.setId(null);
productionreturnJobDetailDO.setCreateTime(null);
@ -800,8 +796,8 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
productionreturnJobDetailDO.setMasterId(productionreturnJobMainDO.getId());
productionreturnJobDetailDO.setNumber(number);
// 获取上架策略 并赋值 to库位
RuleRespVO ruleRespVO = ruleService.grounding(null,null,null,null,null,null,productionreturnJobDetailDO.getItemCode(),null,null,null,null,null,null);
LocationDO locationDO = locationService.inspectLocation(ruleRespVO,null,productionreturnJobDetailDO.getItemCode(),null);
RuleRespVO ruleRespVO = ruleService.grounding(null,null, itembasicDO.getAbcClass(), itembasicDO.getType(), itembasicDO.getItemGroup(), itembasicDO.getProject(), productionreturnJobDetailDO.getItemCode(),null,null,null,null,null,null);
LocationDO locationDO = locationService.inspectLocation(ruleRespVO, itembasicDO);
productionreturnJobDetailDO.setToLocationCode(locationDO.getCode());
// 判断合格 不合格
if (!mainDO.getBusinessType().equals("ReturnToStore")) {

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java

@ -363,9 +363,11 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService
List<PutawayJobDetailDO> putawayJobDetailDOList = new ArrayList<>();
for(PutawayRequestDetailDO putawayRequestDetailDO : detailDOList) {
PutawayJobDetailDO putawayJobDetailDO = PutawayJobDetailConvert.INSTANCE.convert(putawayRequestDetailDO);
RuleRespVO ruleRespVO = ruleService.grounding(null, null, null, null, null, null,
ItembasicDO itembasicDO = itembasicService.selectItembasic(putawayRequestDetailDO.getItemCode());
RuleRespVO groundingRuleRespVO = ruleService.grounding(putawayJobMainDO.getSupplierCode(), null, itembasicDO.getAbcClass(), itembasicDO.getType(), itembasicDO.getItemGroup(), itembasicDO.getProject(),
putawayJobDetailDO.getItemCode(), putawayJobDetailDO.getInventoryStatus(), null, null, null, null, null);
LocationDO locationDO = locationService.inspectLocation(ruleRespVO, putawayJobDetailDO.getPackingNumber(), putawayJobDetailDO.getItemCode(), putawayJobDetailDO.getItemCode());
LocationDO locationDO = locationService.inspectLocation(groundingRuleRespVO, itembasicDO);
putawayJobDetailDO.setToLocationCode(locationDO.getCode());
putawayJobDetailDO.setNumber(number);
putawayJobDetailDO.setMasterId(putawayJobDetailDO.getId());

Loading…
Cancel
Save