1.添加库存摆放功能接口
parent
69e0f65b61
commit
e0b1296f0c
@ -0,0 +1,71 @@
|
||||
package com.glxp.api.controller.inv;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.glxp.api.common.enums.ResultEnum;
|
||||
import com.glxp.api.common.res.BaseResponse;
|
||||
import com.glxp.api.common.util.ResultVOUtils;
|
||||
import com.glxp.api.req.inv.FilterInvPlaceRequest;
|
||||
import com.glxp.api.res.inv.BindInvSpaceRequest;
|
||||
import com.glxp.api.res.inv.InvPlaceDetailResponse;
|
||||
import com.glxp.api.service.inv.InvPlaceService;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 库存摆放接口
|
||||
*/
|
||||
@RestController
|
||||
public class InvPlaceController {
|
||||
|
||||
@Resource
|
||||
private InvPlaceService invPlaceService;
|
||||
|
||||
/**
|
||||
* 查询库存摆放记录
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/spms/inv/product/getPlaceDetailList")
|
||||
public BaseResponse getPlaceDetailList(FilterInvPlaceRequest filterInvPlaceRequest) {
|
||||
List<InvPlaceDetailResponse> list = invPlaceService.getPlaceDetailList(filterInvPlaceRequest);
|
||||
PageInfo<InvPlaceDetailResponse> pageInfo = new PageInfo<>(list);
|
||||
return ResultVOUtils.page(pageInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 绑定货位接口
|
||||
*
|
||||
* @param bindInvSpaceRequest
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/spms/inv/product/bindInvSpace")
|
||||
public BaseResponse bindInvSpace(@RequestBody @Valid BindInvSpaceRequest bindInvSpaceRequest) {
|
||||
if (null == bindInvSpaceRequest) {
|
||||
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
|
||||
}
|
||||
invPlaceService.bindInvSpace(bindInvSpaceRequest);
|
||||
return ResultVOUtils.success("绑定成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验库存详情绑定货位信息
|
||||
*
|
||||
* @param bindInvSpaceRequest
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/spms/inv/product/checkCodeSpace")
|
||||
public BaseResponse checkCodeSpace(@RequestBody BindInvSpaceRequest bindInvSpaceRequest) {
|
||||
if (null == bindInvSpaceRequest || StrUtil.isBlank(bindInvSpaceRequest.getInvCode()) || StrUtil.isBlank(bindInvSpaceRequest.getInvSpaceCode()) || StrUtil.isBlank(bindInvSpaceRequest.getCode())) {
|
||||
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
|
||||
}
|
||||
return invPlaceService.checkCodeSpace(bindInvSpaceRequest);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.glxp.api.req.inv;
|
||||
|
||||
import com.glxp.api.util.page.ListPageRequest;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 库存摆放接口参数
|
||||
*/
|
||||
@Data
|
||||
public class FilterInvPlaceRequest extends ListPageRequest {
|
||||
|
||||
/**
|
||||
* 部门编码
|
||||
*/
|
||||
private String deptCode;
|
||||
|
||||
/**
|
||||
* 仓库编码
|
||||
*/
|
||||
private String invCode;
|
||||
|
||||
/**
|
||||
* 货位编码
|
||||
*/
|
||||
private String invSpaceCode;
|
||||
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package com.glxp.api.res.inv;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 库存条码绑定货位参数
|
||||
*/
|
||||
@Data
|
||||
public class BindInvSpaceRequest {
|
||||
|
||||
/**
|
||||
* 部门编码
|
||||
*/
|
||||
private String deptCode;
|
||||
|
||||
/**
|
||||
* 仓库编码
|
||||
*/
|
||||
@NotBlank(message = "请选择仓库")
|
||||
private String invCode;
|
||||
|
||||
/**
|
||||
* 货位编码
|
||||
*/
|
||||
@NotBlank(message = "请选择货位")
|
||||
private String invSpaceCode;
|
||||
|
||||
/**
|
||||
* 条码列表
|
||||
*/
|
||||
@NotEmpty(message = "请扫描货物条码")
|
||||
private List<String> codeArray;
|
||||
|
||||
/**
|
||||
* UDI码
|
||||
*/
|
||||
private String code;
|
||||
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package com.glxp.api.service.inv;
|
||||
|
||||
import com.glxp.api.common.res.BaseResponse;
|
||||
import com.glxp.api.req.inv.FilterInvPlaceRequest;
|
||||
import com.glxp.api.res.inv.BindInvSpaceRequest;
|
||||
import com.glxp.api.res.inv.InvPlaceDetailResponse;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 库存摆放Service
|
||||
*/
|
||||
public interface InvPlaceService {
|
||||
|
||||
/**
|
||||
* 查询库存摆放记录列表
|
||||
*
|
||||
* @param filterInvPlaceRequest
|
||||
* @return
|
||||
*/
|
||||
List<InvPlaceDetailResponse> getPlaceDetailList(FilterInvPlaceRequest filterInvPlaceRequest);
|
||||
|
||||
/**
|
||||
* 绑定货位
|
||||
*
|
||||
* @param bindInvSpaceRequest
|
||||
*/
|
||||
void bindInvSpace(BindInvSpaceRequest bindInvSpaceRequest);
|
||||
|
||||
/**
|
||||
* 校验库存详情绑定货位信息
|
||||
*
|
||||
* @param bindInvSpaceRequest
|
||||
* @return
|
||||
*/
|
||||
BaseResponse checkCodeSpace(BindInvSpaceRequest bindInvSpaceRequest);
|
||||
}
|
@ -0,0 +1,85 @@
|
||||
package com.glxp.api.service.inv.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.glxp.api.common.enums.ResultEnum;
|
||||
import com.glxp.api.common.res.BaseResponse;
|
||||
import com.glxp.api.common.util.ResultVOUtils;
|
||||
import com.glxp.api.dao.auth.InvSpaceDao;
|
||||
import com.glxp.api.dao.auth.InvSubWarehouseDao;
|
||||
import com.glxp.api.dao.inv.InvProductDetailDao;
|
||||
import com.glxp.api.entity.inv.InvProductDetailEntity;
|
||||
import com.glxp.api.req.inv.FilterInvPlaceRequest;
|
||||
import com.glxp.api.res.inv.BindInvSpaceRequest;
|
||||
import com.glxp.api.res.inv.InvPlaceDetailResponse;
|
||||
import com.glxp.api.service.inv.InvPlaceService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class InvPlaceServiceImpl implements InvPlaceService {
|
||||
|
||||
@Resource
|
||||
private InvProductDetailDao invProductDetailDao;
|
||||
@Resource
|
||||
private InvSubWarehouseDao invSubWarehouseDao;
|
||||
@Resource
|
||||
private InvSpaceDao invSpaceDao;
|
||||
|
||||
@Override
|
||||
public List<InvPlaceDetailResponse> getPlaceDetailList(FilterInvPlaceRequest filterInvPlaceRequest) {
|
||||
if (null == filterInvPlaceRequest) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
if (null != filterInvPlaceRequest.getPage() && null != filterInvPlaceRequest.getLimit()) {
|
||||
PageHelper.offsetPage((filterInvPlaceRequest.getPage() - 1) * filterInvPlaceRequest.getLimit(), filterInvPlaceRequest.getLimit());
|
||||
}
|
||||
return invProductDetailDao.selectPlaceDetailList(filterInvPlaceRequest);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bindInvSpace(BindInvSpaceRequest bindInvSpaceRequest) {
|
||||
//查询仓库的部门ID
|
||||
String deptCode = invSubWarehouseDao.selectParentIdByCode(bindInvSpaceRequest.getInvCode());
|
||||
List<InvProductDetailEntity> list = invProductDetailDao.selectList(new QueryWrapper<InvProductDetailEntity>()
|
||||
.select("id")
|
||||
.eq("deptCode", deptCode)
|
||||
.eq("invCode", bindInvSpaceRequest.getInvCode())
|
||||
.in("code", bindInvSpaceRequest.getCodeArray())
|
||||
);
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
List<Integer> ids = list.stream().map(InvProductDetailEntity::getId).collect(Collectors.toList());
|
||||
log.info("本次绑定货位的库存详情数量为:{} 条", ids.size());
|
||||
invProductDetailDao.batchBindSpace(ids, bindInvSpaceRequest.getInvSpaceCode());
|
||||
} else {
|
||||
log.info("绑定货位列表查询无数据");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseResponse checkCodeSpace(BindInvSpaceRequest bindInvSpaceRequest) {
|
||||
//查询仓库的部门ID
|
||||
String deptCode = invSubWarehouseDao.selectParentIdByCode(bindInvSpaceRequest.getInvCode());
|
||||
bindInvSpaceRequest.setDeptCode(deptCode);
|
||||
//查询此库存详情的信息
|
||||
InvProductDetailEntity invProductDetailEntity = invProductDetailDao.selectByInvAndCode(bindInvSpaceRequest);
|
||||
if (null == invProductDetailEntity) {
|
||||
return ResultVOUtils.error(ResultEnum.DATA_ERROR, "此货物非当前仓库物品,无法绑定货位");
|
||||
}
|
||||
if (StrUtil.isNotBlank(invProductDetailEntity.getInvSpaceCode()) && !bindInvSpaceRequest.getInvSpaceCode().equals(invProductDetailEntity.getInvSpaceCode())) {
|
||||
String invSpaceName = invSpaceDao.selectNameByCode(invProductDetailEntity.getDeptCode(), invProductDetailEntity.getInvCode(), invProductDetailEntity.getInvSpaceCode());
|
||||
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "此货物已绑定 " + invSpaceName + " 货位,是否重新绑定?");
|
||||
}
|
||||
return ResultVOUtils.success();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue