Browse Source

Merge remote-tracking branch 'origin/master'

master
赵雪冰 2 years ago
parent
commit
6b6c53263a
  1. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java
  2. 27
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/vo/LocationValidateVO.java
  3. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationService.java
  4. 56
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java
  5. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java
  6. 36
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java

@ -120,7 +120,7 @@ public class LocationController {
@PostMapping("/senior")
@Operation(summary = "高级搜索获得账期日历分页")
@PreAuthorize("@ss.hasPermission('wms:accountcalendar:query')")
@PreAuthorize("@ss.hasPermission('wms:location:query')")
public CommonResult<PageResult<LocationRespVO>> getLocationSenior(@Valid @RequestBody CustomConditions conditions) {
PageResult<LocationDO> pageResult = locationService.getLocationSenior(conditions);
PageResult<LocationRespVO> result = LocationConvert.INSTANCE.convertPage(pageResult);
@ -212,10 +212,18 @@ public class LocationController {
@PermitAll
@GetMapping("/inspectLocation")
@Operation(summary = "推荐库位(测试用)")
@PreAuthorize("@ss.hasPermission('wms:location:inspectLocation')")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
public CommonResult<LocationDO> inspectLocation(@RequestParam("supplierCode") String supplierCode,@RequestParam("itemCode") String itemCode, @RequestParam("batch") String batch, @RequestParam("batch") String inventoryStatus) {
RuleRespVO ruleRespVO = ruleService.grounding(supplierCode, null, itemCode, inventoryStatus, null, null, null, null, null);
return success(locationService.inspectLocation(ruleRespVO, itemCode, batch, inventoryStatus));
}
@PostMapping("/validate")
@Operation(summary = "校验库位和物品是否能上架")
@PreAuthorize("@ss.hasPermission('wms:location:validate')")
public CommonResult<List<Map<String, Object>>> validate(@Valid @RequestBody List<LocationValidateVO> locationValidateVOList) {
return success(locationService.validateLocationAndItem(locationValidateVOList));
}
}

27
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/vo/LocationValidateVO.java

@ -0,0 +1,27 @@
package com.win.module.wms.controller.location.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Schema(description = "APP直接上架校验库位和item")
@Data
public class LocationValidateVO {
@Schema(description = "物品代码")
@NotBlank(message = "物品代码不能为空")
private String itemCode;
@Schema(description = "库位代码")
@NotBlank(message = "库位代码不能为空")
private String locationCode;
@Schema(description = "批次")
@NotBlank(message = "批次不能为空")
private String batch;
@Schema(description = "库存状态")
@NotBlank(message = "库存状态不能为空")
private String inventoryStatus;
}

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

@ -8,6 +8,7 @@ import com.win.module.wms.dal.dataobject.location.LocationDO;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
* 库位 Service 接口
@ -116,4 +117,11 @@ public interface LocationService {
* @return 线边安全库存
*/
List<LocationRespVO> getSafeLocationList();
/**
* pda直接上架判断库位和item
* @param locationValidateVOList 库位和item
* @return 校验结果
*/
List<Map<String, Object>> validateLocationAndItem(List<LocationValidateVO> locationValidateVOList);
}

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

@ -24,7 +24,9 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
@ -408,6 +410,60 @@ public class LocationServiceImpl implements LocationService {
return LocationConvert.INSTANCE.convertList(locationDOList);
}
@Override
public List<Map<String, Object>> validateLocationAndItem(List<LocationValidateVO> locationValidateVOList) {
List<Map<String, Object>> result = new ArrayList<>();
for(LocationValidateVO locationValidateVO : locationValidateVOList) {
LocationDO locationDO = locationMapper.selectByCode(locationValidateVO.getLocationCode());
List<RuleRespVO> ruleRespVOList = ruleService.getGroundingList(locationValidateVO.getItemCode(), locationValidateVO.getInventoryStatus());
boolean validateResult = false;
String msg = "";
for(RuleRespVO ruleRespVO : ruleRespVOList) {
JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration());
String enableMixItem = jsonObject.getStr("EnableMixItem");
String enableMixLot = jsonObject.getStr("EnableMixLot");
String enableMixStatus = jsonObject.getStr("EnableMixStatus");
List<BalanceDO> balanceDOList = balanceMapper.getBalanceList(null, null, null, null, locationDO.getCode());
//库位上存在物品,判断可以混物品、可以混批次、可以混状态
boolean flag1 = false;
for (BalanceDO balanceDO : balanceDOList) {
boolean flag2 = true;
if ("TRUE".equals(enableMixItem) && !locationValidateVO.getItemCode().equals(balanceDO.getItemCode())) {
break;
}
if ("TRUE".equals(enableMixLot) && !locationValidateVO.getBatch().equals(balanceDO.getBatch())) {
flag2 = false;
if(!msg.contains("不能混批次;")) {
msg = msg + "不能混批次;";
}
}
if ("TRUE".equals(enableMixStatus) && !locationValidateVO.getInventoryStatus().equals(balanceDO.getInventoryStatus())) {
flag2 = false;
if(!msg.contains("不能混状态;")) {
msg = msg + "不能混状态;";
}
}
if(flag2) {
flag1 = true;
}
}
if(flag1) {
validateResult = true;
msg = "";
break;
}
}
Map<String, Object> map = new HashMap<>();
map.put("itemCode", locationValidateVO.getItemCode());
map.put("batch", locationValidateVO.getBatch());
map.put("inventoryStatus", locationValidateVO.getInventoryStatus());
map.put("result", validateResult);
map.put("msg", msg);
result.add(map);
}
return result;
}
/**
* 判断优先空库位和非空库位
*

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java

@ -217,4 +217,14 @@ public interface RuleService {
* @return
*/
List<HashMap<String, Object>> getPrecisionStrategy(List<PrecisionStrategyReqVO2> reqVO2List);
/**
* 获取上架列表
*
* @param itemCode 物品代码
* @param inventoryStatus 库存状态
* @return
*/
List<RuleRespVO> getGroundingList(String itemCode, String inventoryStatus);
}

36
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java

@ -504,8 +504,8 @@ public class RuleServiceImpl implements RuleService {
List<HashMap<String, Object>> list = new ArrayList<>();
for (String code : reqVO.getItemCodes()) {
HashMap<String, Object> map = new HashMap<>();
RuleRespVO RespVO = management(null, null, code, reqVO.getLocationCode(), null, null);
JSONObject entries = JSONUtil.parseObj(RespVO.getConfiguration());
RuleRespVO respVO = management(null, null, code, reqVO.getLocationCode(), null, null);
JSONObject entries = JSONUtil.parseObj(respVO.getConfiguration());
map.put("ManagementPrecision", entries.get("ManagementPrecision"));
map.put("itemCode", code);
list.add(map);
@ -518,8 +518,8 @@ public class RuleServiceImpl implements RuleService {
List<HashMap<String, Object>> list = new ArrayList<>();
for (PrecisionStrategyReqVO2 reqVO2 : reqVO2List) {
HashMap<String, Object> map = new HashMap<>();
RuleRespVO RespVO = management(null, null, reqVO2.getItemCode(), reqVO2.getLocationCode(), null, null);
JSONObject entries = JSONUtil.parseObj(RespVO.getConfiguration());
RuleRespVO respVO = management(null, null, reqVO2.getItemCode(), reqVO2.getLocationCode(), null, null);
JSONObject entries = JSONUtil.parseObj(respVO.getConfiguration());
map.put("ManagementPrecision", entries.get("ManagementPrecision"));
map.put("itemCode", reqVO2.getItemCode());
map.put("locationCode", reqVO2.getLocationCode());
@ -528,6 +528,34 @@ public class RuleServiceImpl implements RuleService {
return list;
}
@Override
public List<RuleRespVO> getGroundingList(String itemCode, String inventoryStatus) {
List<RuleRespVO> ruleRespVOList = new ArrayList<>();
QueryWrapper<RuleDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("strategy_code", "S005");
queryWrapper.orderByDesc("priority");
List<RuleDO> ruleDOList = ruleMapper.selectList(queryWrapper);
for (RuleDO ruleDO : ruleDOList) {
String condition = ruleDO.getCondition();
if (condition == null || condition.isEmpty()) {
ruleRespVOList.add(RuleConvert.INSTANCE.convert(ruleDO));
} else {
JSONArray conditionArray = JSONUtil.parseArray(condition);
Map<String, String> params = new HashMap<>();
if (itemCode != null && !itemCode.isEmpty()) {
params.put("ItemCode", itemCode);
}
if (inventoryStatus != null && !inventoryStatus.isEmpty()) {
params.put("InventoryStatus", inventoryStatus);
}
if (this.forEachParams(params, conditionArray)) {
ruleRespVOList.add(RuleConvert.INSTANCE.convert(ruleDO));
}
}
}
return ruleRespVOList;
}
/**
* 循环校验参数
*

Loading…
Cancel
Save