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