package com.glxp.api.controller.inv; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.controller.BaseController; import com.glxp.api.entity.auth.InvWarehouseEntity; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.req.inout.CheckPreInInvRequest; import com.glxp.api.req.inv.FilterInvPreinDetailRequest; import com.glxp.api.req.inv.FilterInvPreinRequest; import com.glxp.api.req.system.DeleteRequest; import com.glxp.api.res.inv.InvPlaceDetailResponse; import com.glxp.api.res.inv.InvPreinDetailResponse; import com.glxp.api.res.inv.InvPreinOrderResponse; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.inout.IoCodeTempService; import com.glxp.api.service.inout.impl.IoCodeService; import com.glxp.api.service.inv.InvPreinDetailService; import com.glxp.api.service.inv.InvPreinOrderService; import com.glxp.api.service.inv.InvPreinProductDetailService; import lombok.extern.slf4j.Slf4j; 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 java.util.List; @Slf4j @RestController public class InvPreinOrderController extends BaseController { @Resource InvWarehouseService invWarehouseService; @Resource InvPreinProductDetailService invPreinProductDetailService; @Resource private IBasicBussinessTypeService basicBussinessTypeService; @Resource InvPreinOrderService invPreinOrderService; @Resource InvPreinDetailService invPreinDetailService; @GetMapping("/udiwms/inv/prein/filter") public BaseResponse filterOrder(FilterInvPreinRequest filterInvPreinRequest) { List list = invPreinOrderService.filterList(filterInvPreinRequest); PageInfo pageInfo = new PageInfo<>(list); return ResultVOUtils.page(pageInfo); } @GetMapping("/udiwms/inv/prein/detail") public BaseResponse filterDetail(FilterInvPreinDetailRequest filterInvPreinDetailRequest) { List list = invPreinDetailService.filterList(filterInvPreinDetailRequest); PageInfo pageInfo = new PageInfo<>(list); return ResultVOUtils.page(pageInfo); } @AuthRuleAnnotation("") @PostMapping("udiwms/inv/prein/delete") public BaseResponse deletById(@RequestBody DeleteRequest deleteRequest) { if (StrUtil.isEmpty(deleteRequest.getBillNo())) return ResultVOUtils.error(500, "单据号不能为空"); invPreinOrderService.deleteByOrderId(deleteRequest.getBillNo()); invPreinDetailService.deleteByOrderId(deleteRequest.getBillNo()); return ResultVOUtils.success("删除成功!"); } @Resource IoCodeTempService codeTempService; @Resource IoCodeService codeService; @AuthRuleAnnotation("") @PostMapping("spms/prein/inv/products/getDetaiByCode") public BaseResponse getDetaiByCode(@RequestBody CheckPreInInvRequest checkPreInInvRequest) { InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_PREIN); BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(checkPreInInvRequest.getAction()); if (bussinessTypeEntity.getBackPreinType() == 1 && bussinessTypeEntity.isPreInBack()) {//按单出库&& bussinessTypeEntity.isPreInBack() String orderIds = checkPreInInvRequest.getCheckPreInOrders(); if (StrUtil.isNotEmpty(orderIds)) { String[] orderIdArray = orderIds.split(","); List orderList = CollUtil.toList(orderIdArray); int count = codeService.findByOrderIdsCount(orderList, checkPreInInvRequest.getCode()); if (count <= 0) { return ResultVOUtils.error(500, "非预验收单产品或预验收库存数量不足!"); } } else { return ResultVOUtils.error(500, "未选择预验收入库单,请先选择预验收入库单!"); } } int count = 0; if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { if (StrUtil.isNotEmpty(checkPreInInvRequest.getSerialNo())) { count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), null, checkPreInInvRequest.getCode()); } else count = invPreinProductDetailService.vailStockCount(checkPreInInvRequest.getRelId(), checkPreInInvRequest.getBatchNo(), checkPreInInvRequest.getSupId(), null, invWarehouseEntity.getCode(), null); } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) { if (StrUtil.isNotEmpty(checkPreInInvRequest.getSerialNo())) { count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), checkPreInInvRequest.getPreInSpaceCode(), checkPreInInvRequest.getCode()); } else count = invPreinProductDetailService.vailStockCount(checkPreInInvRequest.getRelId(), checkPreInInvRequest.getBatchNo(), checkPreInInvRequest.getSupId(), null, invWarehouseEntity.getCode(), checkPreInInvRequest.getPreInSpaceCode()); } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) { //按指定货位出库 if (StrUtil.isEmpty(checkPreInInvRequest.getPreSpaceCode())) { List invProductDetailEntities = invPreinProductDetailService.findByGroupCode(invWarehouseEntity.getCode(), checkPreInInvRequest.getCode()); if (CollUtil.isNotEmpty(invProductDetailEntities) && invProductDetailEntities.size() > 1) { BaseResponse baseResponse = ResultVOUtils.error(511, "存在多个货位,请指定当前货位!"); baseResponse.setData(invProductDetailEntities); return baseResponse; } else if (invProductDetailEntities.size() == 1) { InvPlaceDetailResponse invPlaceDetailResponse = invProductDetailEntities.get(0); count = invPlaceDetailResponse.getReCount(); checkPreInInvRequest.setPreSpaceCode(invPlaceDetailResponse.getInvSpaceCode()); } else { return ResultVOUtils.error(500, "添加失败,该产品未上架货位!"); } } else { if (StrUtil.isNotEmpty(checkPreInInvRequest.getSerialNo())) { count = invPreinProductDetailService.vailStockCountByCode(null, checkPreInInvRequest.getInvCode(), checkPreInInvRequest.getPreInSpaceCode(), checkPreInInvRequest.getCode()); } else count = invPreinProductDetailService.vailStockCount(checkPreInInvRequest.getRelId(), checkPreInInvRequest.getBatchNo(), checkPreInInvRequest.getSupId(), null, checkPreInInvRequest.getInvCode(), checkPreInInvRequest.getPreInSpaceCode()); } } // InvPreInProductDetailEntity invPreinDetailEntity = invPreinProductDetailService.findUseOneByCode(checkPreInInvRequest.getCode()); if (count <= 0) { return ResultVOUtils.error(500, "预验收库存数量不足!"); } else { // if (invPreinDetailEntity != null && StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(checkPreInInvRequest.getBatchNo()) // && !invPreinDetailEntity.getBatchNo().equals(checkPreInInvRequest.getBatchNo())) { // return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!"); // } } return ResultVOUtils.success(count); } }