You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-wms-java/src/main/java/com/glxp/api/controller/inv/InvPreinOrderController.java

153 lines
8.1 KiB
Java

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<InvPreinOrderResponse> list = invPreinOrderService.filterList(filterInvPreinRequest);
PageInfo<InvPreinOrderResponse> pageInfo = new PageInfo<>(list);
return ResultVOUtils.page(pageInfo);
}
@GetMapping("/udiwms/inv/prein/detail")
public BaseResponse filterDetail(FilterInvPreinDetailRequest filterInvPreinDetailRequest) {
List<InvPreinDetailResponse> list = invPreinDetailService.filterList(filterInvPreinDetailRequest);
PageInfo<InvPreinDetailResponse> 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<String> 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<InvPlaceDetailResponse> 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);
}
}