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