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.framework.common.pojo.PageResult;
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.controller.rule.vo.RuleRespVO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.dataobject.location.LocationDO;
import javax.validation.Valid; import javax.validation.Valid;
@ -92,10 +93,8 @@ public interface LocationService {
/** /**
* 上架推荐策略 * 上架推荐策略
* @param ruleRespVO 上架策略 * @param ruleRespVO 上架策略
* @param packingNumber 包装号 * @param itembasicDO 物品
* @param itemCode 物料编码
* @param batch 批次
* @return * @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.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.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.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.dataobject.location.LocationDO;
import com.win.module.wms.dal.mysql.balance.BalanceMapper; 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.expectout.ExpectoutMapper;
import com.win.module.wms.dal.mysql.location.LocationMapper; import com.win.module.wms.dal.mysql.location.LocationMapper;
import com.win.module.wms.service.rule.RuleService; import com.win.module.wms.service.rule.RuleService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
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;
@ -306,38 +304,99 @@ public class LocationServiceImpl implements LocationService {
//{"WarehouseCode":"W1","AreaCode":"A1","LocationGroupCode":"LG1","LocationCode":"H01","EmptyLocationFirst":"FALSE","NotEmptyLocationFirst":"FALSE", //{"WarehouseCode":"W1","AreaCode":"A1","LocationGroupCode":"LG1","LocationCode":"H01","EmptyLocationFirst":"FALSE","NotEmptyLocationFirst":"FALSE",
// "EnableMixItem":"TRUE","EnableMixLot":"TRUE","EnableMixStatus":"TRUE"} // "EnableMixItem":"TRUE","EnableMixLot":"TRUE","EnableMixStatus":"TRUE"}
@Override @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()); JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration());
Object locationCode = jsonObject.get("LocationCode"); Object locationCode = jsonObject.get("LocationCode");
//设置了库位直接返回 //设置了库位直接返回
if(locationCode != null) { if(locationCode != null) {
return this.selectLocation(String.valueOf(locationCode)); return this.selectLocation(String.valueOf(locationCode));
} }
//增加过滤条件
QueryWrapper<LocationDO> queryWrapper = new QueryWrapper<>(); QueryWrapper<LocationDO> queryWrapper = new QueryWrapper<>();
List<String> locationTypeList = new ArrayList<>(); List<String> locationTypeList = new ArrayList<>();
locationTypeList.add("RAW"); locationTypeList.add("RAW");
locationTypeList.add("SEMI"); locationTypeList.add("SEMI");
locationTypeList.add("FG"); locationTypeList.add("FG");
queryWrapper.in("`type`", locationTypeList); queryWrapper.in("`type`", locationTypeList);
Object warehouseCode = String.valueOf(jsonObject.get("WarehouseCode")); Object warehouseCode = jsonObject.get("WarehouseCode");
if(!warehouseCode.equals("")) { if(!"".equals(warehouseCode)) {
queryWrapper.eq("warehouse_code", warehouseCode); queryWrapper.eq("warehouse_code", warehouseCode);
} }
Object areaCode = jsonObject.get("AreaCode"); Object areaCode = jsonObject.get("AreaCode");
if(!areaCode.equals("")) { if(!"".equals(areaCode)) {
queryWrapper.eq("area_code", areaCode); queryWrapper.eq("area_code", areaCode);
} }
Object locationGroupCode = String.valueOf(jsonObject.get("LocationGroupCode")); Object locationGroupCode = jsonObject.get("LocationGroupCode");
if(!locationGroupCode.equals("")) { if(!"".equals(locationGroupCode)) {
queryWrapper.eq("location_group_code", locationGroupCode); queryWrapper.eq("location_group_code", locationGroupCode);
} }
String emptyLocationFirst = String.valueOf(jsonObject.get("EmptyLocationFirst")); //排序
if("TRUE".equals(emptyLocationFirst)) { Object aisleOrder = jsonObject.get("AisleOrder");
queryWrapper.notExists("SELECT id FROM transaction_balance WHERE packing_number=? AND item_code=? AND batch=? AND QTY > 0", packingNumber, itemCode,batch); if("DESC".equals(aisleOrder)) {
queryWrapper.orderByDesc("aisle");
} else { } else {
queryWrapper.exists("SELECT id FROM transaction_balance WHERE packing_number=? AND item_code=? AND batch=?", packingNumber, itemCode,batch); queryWrapper.orderByAsc("aisle");
} }
queryWrapper.last("LIMIT 1"); Object shelfOrder = jsonObject.get("ShelfOrder");
return locationMapper.selectOne(queryWrapper); if("DESC".equals(shelfOrder)) {
queryWrapper.orderByDesc("shelf");
} else {
queryWrapper.orderByAsc("shelf");
} }
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.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO; 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.productionreturnRequest.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO; import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; 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.ProductionreturnRequestDetailConvert;
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; 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.itempackaging.ItempackagingDO;
import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO; 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.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.productionlineitem.ProductionlineitemDO;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO; import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobDetailDO;
import com.win.module.wms.dal.dataobject.productionreturnJob.ProductionreturnJobMainDO; 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.productionreturnRecord.ProductionreturnRecordMainDO;
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; 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.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.recordsetting.RecordsettingDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO;
@ -682,9 +676,10 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
productionreturnRecordDetailDO.setFromBatch(item.getBatch()); productionreturnRecordDetailDO.setFromBatch(item.getBatch());
productionreturnRecordDetailDO.setToBatch(item.getBatch()); productionreturnRecordDetailDO.setToBatch(item.getBatch());
productionreturnRecordDetailDO.setFromLocationCode(item.getFromLocationCode()); productionreturnRecordDetailDO.setFromLocationCode(item.getFromLocationCode());
ItembasicDO itembasicDO = itembasicService.selectItembasic(productionreturnRecordDetailDO.getItemCode());
// 获取上架策略 并赋值 to库位 // 获取上架策略 并赋值 to库位
RuleRespVO ruleRespVO = ruleService.grounding(null,null,null,null,null,null,productionreturnRecordDetailDO.getItemCode(),null,null,null,null,null,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,null,productionreturnRecordDetailDO.getItemCode(),null); LocationDO locationDO = locationService.inspectLocation(ruleRespVO,itembasicDO);
productionreturnRecordDetailDO.setToLocationCode(locationDO.getCode()); productionreturnRecordDetailDO.setToLocationCode(locationDO.getCode());
// 获取库位信息 并赋值 // 获取库位信息 并赋值
LocationDO locationDOFrom = locationService.selectLocation(item.getFromLocationCode()); LocationDO locationDOFrom = locationService.selectLocation(item.getFromLocationCode());
@ -791,6 +786,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>(); List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>();
detailDO.forEach(item -> { detailDO.forEach(item -> {
ProductionreturnJobDetailDO productionreturnJobDetailDO = new ProductionreturnJobDetailDO(); ProductionreturnJobDetailDO productionreturnJobDetailDO = new ProductionreturnJobDetailDO();
ItembasicDO itembasicDO = itembasicService.selectItembasic(item.getItemCode());
BeanUtils.copyProperties(item, productionreturnJobDetailDO); BeanUtils.copyProperties(item, productionreturnJobDetailDO);
productionreturnJobDetailDO.setId(null); productionreturnJobDetailDO.setId(null);
productionreturnJobDetailDO.setCreateTime(null); productionreturnJobDetailDO.setCreateTime(null);
@ -800,8 +796,8 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR
productionreturnJobDetailDO.setMasterId(productionreturnJobMainDO.getId()); productionreturnJobDetailDO.setMasterId(productionreturnJobMainDO.getId());
productionreturnJobDetailDO.setNumber(number); productionreturnJobDetailDO.setNumber(number);
// 获取上架策略 并赋值 to库位 // 获取上架策略 并赋值 to库位
RuleRespVO ruleRespVO = ruleService.grounding(null,null,null,null,null,null,productionreturnJobDetailDO.getItemCode(),null,null,null,null,null,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,null,productionreturnJobDetailDO.getItemCode(),null); LocationDO locationDO = locationService.inspectLocation(ruleRespVO, itembasicDO);
productionreturnJobDetailDO.setToLocationCode(locationDO.getCode()); productionreturnJobDetailDO.setToLocationCode(locationDO.getCode());
// 判断合格 不合格 // 判断合格 不合格
if (!mainDO.getBusinessType().equals("ReturnToStore")) { 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<>(); List<PutawayJobDetailDO> putawayJobDetailDOList = new ArrayList<>();
for(PutawayRequestDetailDO putawayRequestDetailDO : detailDOList) { for(PutawayRequestDetailDO putawayRequestDetailDO : detailDOList) {
PutawayJobDetailDO putawayJobDetailDO = PutawayJobDetailConvert.INSTANCE.convert(putawayRequestDetailDO); 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); 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.setToLocationCode(locationDO.getCode());
putawayJobDetailDO.setNumber(number); putawayJobDetailDO.setNumber(number);
putawayJobDetailDO.setMasterId(putawayJobDetailDO.getId()); putawayJobDetailDO.setMasterId(putawayJobDetailDO.getId());

Loading…
Cancel
Save