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