高值出库明细生成库存校验等

dev_ksck
anthonywj 1 year ago
parent 38257800c0
commit 17c2f222e5

@ -21,7 +21,6 @@ import com.glxp.api.controller.BaseController;
import com.glxp.api.entity.auth.AuthAdmin;
import com.glxp.api.entity.auth.InvWarehouseEntity;
import com.glxp.api.entity.inout.*;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
import com.glxp.api.req.basic.CompanyProductRelevanceRequest;
import com.glxp.api.req.inout.*;
import com.glxp.api.res.PageSimpleResponse;
@ -39,8 +38,6 @@ import com.glxp.api.util.*;
import com.glxp.api.util.udi.FilterUdiUtils;
import com.glxp.api.util.udi.UdiCalCountUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.regexp.RE;
import org.springframework.beans.BeanUtils;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
@ -93,6 +90,8 @@ public class IoCodeTempController extends BaseController {
IoAddInoutService ioAddInoutService;
@Resource
IoOrderDetailCodeService ioOrderDetailCodeService;
@Resource
IoCheckInvService checkInvService;
/**
* PDA-----
@ -555,21 +554,21 @@ public class IoCodeTempController extends BaseController {
BaseResponse invRes = null;
if (IntUtil.value(bussinessTypeEntity.getUseDyCount()) == 2) {
if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 2)) { //校验预验收库存
invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false);
invRes = checkInvService.checkPreInInv(bussinessTypeEntity, genDetaiEntity, false);
}
if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 3)) { //校验寄售库存
invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false);
invRes = checkInvService.checkPreInv(bussinessTypeEntity, genDetaiEntity, false);
}
if (bussinessTypeEntity.isVailInv() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 1)) {
invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false);
invRes = checkInvService.checkInv(bussinessTypeEntity, genDetaiEntity, false);
}
} else {
if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存
invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false);
invRes = checkInvService.checkPreInInv(bussinessTypeEntity, genDetaiEntity, false);
} else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存
invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false);
invRes = checkInvService.checkPreInv(bussinessTypeEntity, genDetaiEntity, false);
} else {
invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false);
invRes = checkInvService.checkInv(bussinessTypeEntity, genDetaiEntity, false);
}
}
@ -745,21 +744,21 @@ public class IoCodeTempController extends BaseController {
if (IntUtil.value(bussinessTypeEntity.getUseDyCount()) == 2) {
if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse.getId(), 2)) { //校验预验收库存
BaseResponse invRes = checkPreInInv(bussinessTypeEntity, codeEnttity, false);
BaseResponse invRes = checkInvService.checkPreInInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
}
if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse.getId(), 3)) { //校验寄售库存
BaseResponse invRes = checkPreInv(bussinessTypeEntity, codeEnttity, false);
BaseResponse invRes = checkInvService.checkPreInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
}
if (bussinessTypeEntity.isVailInv() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse.getId(), 1)) {
BaseResponse invRes = checkInv(bussinessTypeEntity, codeEnttity, false);
BaseResponse invRes = checkInvService.checkInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
@ -767,19 +766,19 @@ public class IoCodeTempController extends BaseController {
}
} else {
if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存
BaseResponse invRes = checkPreInInv(bussinessTypeEntity, codeEnttity, false);
BaseResponse invRes = checkInvService.checkPreInInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
} else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存
BaseResponse invRes = checkPreInv(bussinessTypeEntity, codeEnttity, false);
BaseResponse invRes = checkInvService.checkPreInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
} else {
BaseResponse invRes = checkInv(bussinessTypeEntity, codeEnttity, false);
BaseResponse invRes = checkInvService.checkInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
@ -825,201 +824,6 @@ public class IoCodeTempController extends BaseController {
}
public BaseResponse checkInv(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity, boolean isEdit) {
if (bussinessTypeEntity.isVailInv() && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
String outInvCode = codeTempEntity.getInvCode();
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findNoInvTypeInv(bussinessTypeEntity.getDeptNoInvType(), outInvCode);
if (invWarehouseEntity != null) {
outInvCode = invWarehouseEntity.getCode();
}
int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, outInvCode, null);
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) {
count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), codeTempEntity.getDeptCode(), codeTempEntity.getInvCode(), codeTempEntity.getWarehouseCode());
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) {
//按指定货位出库
if (StrUtil.isEmpty(codeTempEntity.getWarehouseCode())) {
List<InvPlaceDetailResponse> invProductDetailEntities = invProductDetailService.findByGroupCode(codeTempEntity.getInvCode(), codeTempEntity.getCode(), true);
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();
} else {
return ResultVOUtils.error(500, "添加失败,该产品未上架货位!");
}
} else {
count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), codeTempEntity.getDeptCode(), codeTempEntity.getInvCode(), codeTempEntity.getWarehouseCode());
}
}
if (count <= 0) {
if (count == -1) {
return ResultVOUtils.error(500, "该产品未入库");
} else
return ResultVOUtils.error(500, "当前库存不足");
} else {
//查询此单据已扫描的条码数量
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) {
int exitCount = IntUtil.value(codeTempService.selectExitCount(codeTempEntity.getOrderId(), codeTempEntity.getCode()));
if (isEdit) {
if (exitCount > count) {
return ResultVOUtils.error(500, "当前库存不足");
}
} else {
if ((codeTempEntity.getMyReCount() + exitCount) > count) {
return ResultVOUtils.error(500, "当前库存不足");
}
}
} else {
int exitCount = IntUtil.value(codeTempService.selectExitCount(codeTempEntity.getOrderId(), codeTempEntity.getBatchNo(), codeTempEntity.getRelId(), codeTempEntity.getSupId()));
if (isEdit) {
if (exitCount > count) {
return ResultVOUtils.error(500, "当前库存不足");
}
} else {
if ((codeTempEntity.getMyReCount() + exitCount) > count) {
return ResultVOUtils.error(500, "当前库存不足");
}
}
}
}
}
return null;
}
/**
*
*/
public BaseResponse checkPreInv(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity, boolean isEdit) {
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_ADVANCE);
int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
count = invPreProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), null);
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) {
count = invPreProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreSpaceCode());
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) {
//按指定货位出库
if (StrUtil.isEmpty(codeTempEntity.getPreSpaceCode())) {
List<InvPlaceDetailResponse> invProductDetailEntities = invPreProductDetailService.findByGroupCode(invWarehouseEntity.getCode(), codeTempEntity.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();
codeTempEntity.setPreSpaceCode(invPlaceDetailResponse.getInvSpaceCode());
} else {
return ResultVOUtils.error(500, "添加失败,该产品未上架货位!");
}
} else {
count = invPreProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreSpaceCode());
}
}
if (count <= 0) {
if (count == -1) {
return ResultVOUtils.error(500, "该产品未入库");
} else
return ResultVOUtils.error(500, "寄售库存数量不足!");
} else {
int exitCount = IntUtil.value(codeTempService.selectExitCount(codeTempEntity.getOrderId(), codeTempEntity.getBatchNo(), codeTempEntity.getRelId(), codeTempEntity.getSupId()));
if (isEdit) {
if (exitCount > count) {
return ResultVOUtils.error(500, "寄售库存数量不足");
}
} else {
if ((codeTempEntity.getMyReCount() + exitCount) > count) {
return ResultVOUtils.error(500, "寄售库存数量不足");
}
}
}
return null;
}
// 校验预验收库存
public BaseResponse checkPreInInv(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity, boolean isEdit) {
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_PREIN);
int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) {
count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), null, codeTempEntity.getCode());
} else
count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), null);
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) {
if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) {
count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode());
} else
count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode());
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) {
//按指定货位出库
if (StrUtil.isEmpty(codeTempEntity.getPreSpaceCode())) {
List<InvPlaceDetailResponse> invProductDetailEntities = invPreinProductDetailService.findByGroupCode(invWarehouseEntity.getCode(), codeTempEntity.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();
codeTempEntity.setPreSpaceCode(invPlaceDetailResponse.getInvSpaceCode());
} else {
return ResultVOUtils.error(500, "添加失败,该产品未上架货位!");
}
} else {
if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) {
count = invPreinProductDetailService.vailStockCountByCode(null, codeTempEntity.getInvCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode());
} else
count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, codeTempEntity.getInvCode(), codeTempEntity.getPreInSpaceCode());
}
}
// InvPreInProductDetailEntity invPreinDetailEntity = invPreinProductDetailService.findUseOneByCode(codeTempEntity.getCode());
if (count <= 0) {
if (count == -1) {
return ResultVOUtils.error(500, "该产品未入库");
} else
return ResultVOUtils.error(500, "预验收库存数量不足!");
} else {
// if (StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(codeTempEntity.getBatchNo())
// && !invPreinDetailEntity.getBatchNo().equals(codeTempEntity.getBatchNo())) {
// return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!");
// }
if (StrUtil.isNotEmpty(codeTempEntity.getOrderId())) {//非首次添加
if (StrUtil.isEmpty(codeTempEntity.getSerialNo())) {//该单据已有该产品
//无序列号,则可能存在多个预验收入库单
IoCodeTempEntity tempEntity = codeTempService.findByUnique(codeTempEntity.getOrderId(), codeTempEntity.getCode());
if (tempEntity != null) {
if (isEdit) {
if (count < (tempEntity.getReCount())) {
return ResultVOUtils.error(500, "超出预验收存数量");
}
} else {
if (count < (tempEntity.getReCount() + codeTempEntity.getReCount())) {
return ResultVOUtils.error(500, "超出预验收存数量");
}
}
}
} else {
if (count < 1) {
return ResultVOUtils.error(500, "预验收库存数量不足");
}
}
}
}
return null;
}
//校验条码完整性
public BaseResponse checkOriginCode(UdiEntity udiEntity) {
//校验条码的完整性
@ -1356,11 +1160,11 @@ public class IoCodeTempController extends BaseController {
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(tempEntity.getAction());
BaseResponse invRes = null;
if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, codeTempEntity.getRelId(), 2)) { //校验预验收库存
invRes = checkPreInInv(bussinessTypeEntity, codeTempEntity, true);
invRes = checkInvService.checkPreInInv(bussinessTypeEntity, codeTempEntity, true);
} else if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, codeTempEntity.getRelId(), 3)) { //校验寄售库存
invRes = checkPreInv(bussinessTypeEntity, codeTempEntity, true);
invRes = checkInvService.checkPreInv(bussinessTypeEntity, codeTempEntity, true);
} else if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, codeTempEntity.getRelId(), 1)) {
invRes = checkInv(bussinessTypeEntity, codeTempEntity, true);
invRes = checkInvService.checkInv(bussinessTypeEntity, codeTempEntity, true);
}
if (invRes != null) {
codeTempService.updateById(tempEntity);
@ -1650,11 +1454,11 @@ public class IoCodeTempController extends BaseController {
BaseResponse invRes = null;
if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存
invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false);
invRes = checkInvService.checkPreInInv(bussinessTypeEntity, genDetaiEntity, false);
} else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存
invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false);
invRes = checkInvService.checkPreInv(bussinessTypeEntity, genDetaiEntity, false);
} else {
invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false);
invRes = checkInvService.checkInv(bussinessTypeEntity, genDetaiEntity, false);
}
if (invRes != null) {
return invRes;
@ -1805,19 +1609,19 @@ public class IoCodeTempController extends BaseController {
if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存
BaseResponse invRes = checkPreInInv(bussinessTypeEntity, codeEnttity, false);
BaseResponse invRes = checkInvService.checkPreInInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
} else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存
BaseResponse invRes = checkPreInv(bussinessTypeEntity, codeEnttity, false);
BaseResponse invRes = checkInvService.checkPreInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
} else {
BaseResponse invRes = checkInv(bussinessTypeEntity, codeEnttity, false);
BaseResponse invRes = checkInvService.checkInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;

@ -272,6 +272,9 @@ public class IoOrderController extends BaseController {
return ResultVOUtils.success("提交成功!");
}
@Resource
IoCheckInvService checkInvService;
//新增扫码单据-立即提交
@RepeatSubmit()
@AuthRuleAnnotation("")
@ -291,12 +294,9 @@ public class IoOrderController extends BaseController {
BaseResponse tempResponse = checkSubmitEnable(orderEntity);
if (tempResponse != null)
return tempResponse;
//todo 目前先去掉因为不能改变状态 有问题可以看一下这个方法
// if (orderEntity.getStatus() != ConstantStatus.ORDER_STATUS_TEMP_SAVE){
ioAddInoutService.dealProcess(orderEntity);
// }
BaseResponse baseResponse = ioAddInoutService.dealProcess(orderEntity);
if (baseResponse != null)
return baseResponse;
//不需要手动校验,则走正常单据校验处理流程
if (!ioCheckInoutService.checkManual(orderEntity.getBillNo())) {
ioCheckInoutService.check(orderEntity.getBillNo());

@ -79,9 +79,11 @@ public class IoAddInoutService {
InvWarehouseService invWarehouseService;
@Resource
InvProductService invProductService;
@Resource
IoCheckInvService checkInvService;
//新增扫码单据处理
public void dealProcess(IoOrderEntity orderEntity) {
public BaseResponse dealProcess(IoOrderEntity orderEntity) {
orderEntity.setErrMsg("正在处理!");
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_PROCESSING);
@ -96,7 +98,7 @@ public class IoAddInoutService {
orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR);
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
return;
return ResultVOUtils.error(orderEntity.getErrMsg());
}
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction());
@ -105,14 +107,14 @@ public class IoAddInoutService {
orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR);
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
return;
return ResultVOUtils.error(orderEntity.getErrMsg());
}
if (StrUtil.isEmpty(orderEntity.getFromCorp()) && StrUtil.isEmpty(orderEntity.getFromInvCode())) {
orderEntity.setErrMsg("未选择往来单位");
orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR);
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
return;
return ResultVOUtils.error(orderEntity.getErrMsg());
} else if (StrUtil.isNotEmpty(orderEntity.getFromCorp())) {
updateCorp(bussinessTypeEntity, orderEntity.getFromCorp(), orderEntity.getSickerAdNum());
}
@ -123,7 +125,7 @@ public class IoAddInoutService {
orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR);
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
return;
return ResultVOUtils.error(orderEntity.getErrMsg());
}
@ -141,7 +143,7 @@ public class IoAddInoutService {
orderEntity.setErrMsg(result);
orderService.update(orderEntity);
insertList.clear();
return;
return ResultVOUtils.error(orderEntity.getErrMsg());
}
if (bussinessTypeEntity.isCodeFillCheck()) {
@ -153,7 +155,7 @@ public class IoAddInoutService {
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
insertList.clear();
return;
return ResultVOUtils.error(orderEntity.getErrMsg());
}
}
@ -164,7 +166,7 @@ public class IoAddInoutService {
orderEntity.setUpdateTime(new Date());
orderEntity.setErrMsg("udi码" + warehouseEntity.getCode() + "上传时对照数据丢失!");
orderService.update(orderEntity);
return;
return ResultVOUtils.error(orderEntity.getErrMsg());
}
//产品是否指定供应商
@ -173,7 +175,7 @@ public class IoAddInoutService {
orderEntity.setUpdateTime(new Date());
orderEntity.setErrMsg("udi码" + warehouseEntity.getCode() + "未指定供应商!");
orderService.update(orderEntity);
return;
return ResultVOUtils.error(orderEntity.getErrMsg());
}
//校验是否是当前供应商
@ -184,7 +186,7 @@ public class IoAddInoutService {
orderEntity.setUpdateTime(new Date());
orderEntity.setErrMsg("udi码" + warehouseEntity.getCode() + "当前供应商不存在此配送产品");
orderService.update(orderEntity);
return;
return ResultVOUtils.error(orderEntity.getErrMsg());
}
}
@ -195,16 +197,26 @@ public class IoAddInoutService {
orderEntity.setUpdateTime(new Date());
orderEntity.setErrMsg("udi码" + warehouseEntity.getCode() + "该产品信息未维护");
orderService.update(orderEntity);
return;
return ResultVOUtils.error(orderEntity.getErrMsg());
} else if (!udiRelevanceResponse.getUseDy() && udiRelevanceResponse.getDiType() == ConstantStatus.DITYPE_SYDY) {
orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR);
orderEntity.setUpdateTime(new Date());
orderEntity.setErrMsg("udi码" + warehouseEntity.getCode() + "该产品不允许以使用单元入库");
orderService.update(orderEntity);
return;
return ResultVOUtils.error(orderEntity.getErrMsg());
}
BaseResponse baseResponse = checkInvService.check(bussinessTypeEntity, warehouseEntity, udiRelevanceResponse);
if (baseResponse != null) {
orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR);
orderEntity.setUpdateTime(new Date());
orderEntity.setErrMsg(baseResponse.getMessage());
orderService.update(orderEntity);
return baseResponse;
}
}
if (CollUtil.isNotEmpty(insertList)) {
@ -218,11 +230,13 @@ public class IoAddInoutService {
orderEntity.setUpdateTime(new Date());
orderEntity.setErrMsg("");
orderService.update(orderEntity);
return null;
} else {
orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR);
orderEntity.setUpdateTime(new Date());
orderEntity.setErrMsg("未添加UDI码");
orderService.update(orderEntity);
return ResultVOUtils.error(orderEntity.getErrMsg());
}
}
@ -244,7 +258,7 @@ public class IoAddInoutService {
orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR);
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
return ResultVOUtils.error(500, "单据重复上传");
return ResultVOUtils.error(orderEntity.getErrMsg());
}
@ -253,7 +267,7 @@ public class IoAddInoutService {
orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR);
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
return ResultVOUtils.error(500, "未选择往来单位");
return ResultVOUtils.error(orderEntity.getErrMsg());
}
if (StrUtil.isEmpty(orderEntity.getInvCode())) {
@ -261,7 +275,7 @@ public class IoAddInoutService {
orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR);
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
return ResultVOUtils.error(500, "未选择当前仓库信息");
return ResultVOUtils.error(orderEntity.getErrMsg());
}
@ -283,7 +297,7 @@ public class IoAddInoutService {
orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR);
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
return ResultVOUtils.error(500, "errMsg");
return ResultVOUtils.error(orderEntity.getErrMsg());
}
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK);
orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST);

@ -0,0 +1,292 @@
package com.glxp.api.service.inout;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.entity.auth.InvWarehouseEntity;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.inout.IoCodeTempEntity;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.res.inv.InvPlaceDetailResponse;
import com.glxp.api.service.auth.InvWarehouseService;
import com.glxp.api.service.inv.InvPreProductDetailService;
import com.glxp.api.service.inv.InvPreinProductDetailService;
import com.glxp.api.service.inv.impl.InvProductDetailService;
import com.glxp.api.util.IntUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class IoCheckInvService {
@Resource
private IoCodeTempService codeTempService;
@Resource
InvWarehouseService invWarehouseService;
@Resource
InvProductDetailService invProductDetailService;
@Resource
InvPreinProductDetailService invPreinProductDetailService;
@Resource
InvPreProductDetailService invPreProductDetailService;
public BaseResponse check(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity genDetaiEntity, UdiRelevanceResponse udiRelevanceResponse) {
BaseResponse invRes = null;
if (IntUtil.value(bussinessTypeEntity.getUseDyCount()) == 2) {
if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 2)) { //校验预验收库存
invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false);
}
if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 3)) { //校验寄售库存
invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false);
}
if (bussinessTypeEntity.isVailInv() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 1)) {
invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false);
}
} else {
if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存
invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false);
} else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存
invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false);
} else {
invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false);
}
}
return invRes;
}
/**
*
*
* @param bussinessTypeEntity
* @param codeTempEntity
* @param isEdit
* @return
*/
public BaseResponse checkInv(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity, boolean isEdit) {
if (bussinessTypeEntity.isVailInv() && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
String outInvCode = codeTempEntity.getInvCode();
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findNoInvTypeInv(bussinessTypeEntity.getDeptNoInvType(), outInvCode);
if (invWarehouseEntity != null) {
outInvCode = invWarehouseEntity.getCode();
}
int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, outInvCode, null);
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) {
count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), codeTempEntity.getDeptCode(), codeTempEntity.getInvCode(), codeTempEntity.getWarehouseCode());
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) {
//按指定货位出库
if (StrUtil.isEmpty(codeTempEntity.getWarehouseCode())) {
List<InvPlaceDetailResponse> invProductDetailEntities = invProductDetailService.findByGroupCode(codeTempEntity.getInvCode(), codeTempEntity.getCode(), true);
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();
} else {
return ResultVOUtils.error(500, "添加失败,该产品未上架货位!");
}
} else {
count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), codeTempEntity.getDeptCode(), codeTempEntity.getInvCode(), codeTempEntity.getWarehouseCode());
}
}
if (count <= 0) {
if (count == -1) {
return ResultVOUtils.error(500, "该产品未入库");
} else
return ResultVOUtils.error(500, "当前库存不足");
} else {
//查询此单据已扫描的条码数量
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) {
int exitCount = IntUtil.value(codeTempService.selectExitCount(codeTempEntity.getOrderId(), codeTempEntity.getCode()));
if (isEdit) {
if (exitCount > count) {
return ResultVOUtils.error(500, "当前库存不足");
}
} else {
if ((codeTempEntity.getMyReCount() + exitCount) > count) {
return ResultVOUtils.error(500, "当前库存不足");
}
}
} else {
int exitCount = IntUtil.value(codeTempService.selectExitCount(codeTempEntity.getOrderId(), codeTempEntity.getBatchNo(), codeTempEntity.getRelId(), codeTempEntity.getSupId()));
if (isEdit) {
if (exitCount > count) {
return ResultVOUtils.error(500, "当前库存不足");
}
} else {
if ((codeTempEntity.getMyReCount() + exitCount) > count) {
return ResultVOUtils.error(500, "当前库存不足");
}
}
}
}
}
return null;
}
/**
*
*
* @param bussinessTypeEntity
* @param codeTempEntity
* @param isEdit
* @return
*/
public BaseResponse checkPreInInv(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity, boolean isEdit) {
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_PREIN);
int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) {
count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), null, codeTempEntity.getCode());
} else
count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), null);
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) {
if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) {
count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode());
} else
count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode());
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) {
//按指定货位出库
if (StrUtil.isEmpty(codeTempEntity.getPreSpaceCode())) {
List<InvPlaceDetailResponse> invProductDetailEntities = invPreinProductDetailService.findByGroupCode(invWarehouseEntity.getCode(), codeTempEntity.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();
codeTempEntity.setPreSpaceCode(invPlaceDetailResponse.getInvSpaceCode());
} else {
return ResultVOUtils.error(500, "添加失败,该产品未上架货位!");
}
} else {
if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) {
count = invPreinProductDetailService.vailStockCountByCode(null, codeTempEntity.getInvCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode());
} else
count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, codeTempEntity.getInvCode(), codeTempEntity.getPreInSpaceCode());
}
}
// InvPreInProductDetailEntity invPreinDetailEntity = invPreinProductDetailService.findUseOneByCode(codeTempEntity.getCode());
if (count <= 0) {
if (count == -1) {
return ResultVOUtils.error(500, "该产品未入库");
} else
return ResultVOUtils.error(500, "预验收库存数量不足!");
} else {
// if (StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(codeTempEntity.getBatchNo())
// && !invPreinDetailEntity.getBatchNo().equals(codeTempEntity.getBatchNo())) {
// return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!");
// }
if (StrUtil.isNotEmpty(codeTempEntity.getOrderId())) {//非首次添加
if (StrUtil.isEmpty(codeTempEntity.getSerialNo())) {//该单据已有该产品
//无序列号,则可能存在多个预验收入库单
IoCodeTempEntity tempEntity = codeTempService.findByUnique(codeTempEntity.getOrderId(), codeTempEntity.getCode());
if (tempEntity != null) {
if (isEdit) {
if (count < (tempEntity.getReCount())) {
return ResultVOUtils.error(500, "超出预验收存数量");
}
} else {
if (count < (tempEntity.getReCount() + codeTempEntity.getReCount())) {
return ResultVOUtils.error(500, "超出预验收存数量");
}
}
}
} else {
if (count < 1) {
return ResultVOUtils.error(500, "预验收库存数量不足");
}
}
}
}
return null;
}
/**
*
*
* @param bussinessTypeEntity
* @param codeTempEntity
* @param isEdit
* @return
*/
public BaseResponse checkPreInv(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity, boolean isEdit) {
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_ADVANCE);
int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
count = invPreProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), null);
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) {
count = invPreProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreSpaceCode());
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) {
//按指定货位出库
if (StrUtil.isEmpty(codeTempEntity.getPreSpaceCode())) {
List<InvPlaceDetailResponse> invProductDetailEntities = invPreProductDetailService.findByGroupCode(invWarehouseEntity.getCode(), codeTempEntity.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();
codeTempEntity.setPreSpaceCode(invPlaceDetailResponse.getInvSpaceCode());
} else {
return ResultVOUtils.error(500, "添加失败,该产品未上架货位!");
}
} else {
count = invPreProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreSpaceCode());
}
}
if (count <= 0) {
if (count == -1) {
return ResultVOUtils.error(500, "该产品未入库");
} else
return ResultVOUtils.error(500, "寄售库存数量不足!");
} else {
int exitCount = IntUtil.value(codeTempService.selectExitCount(codeTempEntity.getOrderId(), codeTempEntity.getBatchNo(), codeTempEntity.getRelId(), codeTempEntity.getSupId()));
if (isEdit) {
if (exitCount > count) {
return ResultVOUtils.error(500, "寄售库存数量不足");
}
} else {
if ((codeTempEntity.getMyReCount() + exitCount) > count) {
return ResultVOUtils.error(500, "寄售库存数量不足");
}
}
}
return null;
}
/**
* @param purType 1:23
*/
public boolean checkDiAttribute(BasicBussinessTypeEntity bussinessTypeEntity, UdiRelevanceResponse udiRelevanceEntity, Integer purType) {
if (bussinessTypeEntity.getUseDyCount() == 2) {
if (IntUtil.value(udiRelevanceEntity.getPurType()) == IntUtil.value(purType)) {
return true;
} else
return false;
}
return true;
}
}

@ -439,7 +439,8 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
IoOrderEntity ioOrderEntity = new IoOrderEntity();
ioOrderEntity.setBillNo(newBillNo);
ioOrderEntity.setMainAction(thrInvOrder.getMainAction());
ioOrderEntity.setFromCorp(generateOrderRequest.getFromCorp());
String fromCorp = addInoutService.updateCorp(bussinessTypeEntity, entry.getValue().get(0).getSickerName(), entry.getKey());
ioOrderEntity.setFromCorp(fromCorp);
ioOrderEntity.setInvCode(thrInvOrder.getInvCode());
ioOrderEntity.setDeptCode(thrInvOrder.getDeptCode());
ioOrderEntity.setAction(generateOrderRequest.getAction());
@ -462,7 +463,7 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
return false;
}
if (!copyIoCodeTemps(thrInvOrderDetails, newIoCodeTemps, newBillNo, generateOrderRequest)) {
if (!copyIoCodeTemps(entry.getValue(), newIoCodeTemps, newBillNo, generateOrderRequest)) {
return false;
}
@ -472,6 +473,9 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService {
thrInvOrder.setUpdateUser(userId + "");
thrInvOrderMapper.updateByPrimaryKey(thrInvOrder);
ioCodeTempDao.insertBatch(newIoCodeTemps);
for (IoCodeTempEntity codeTempEntity : newIoCodeTemps) {
addInoutService.genOrderDetailCode(ioOrderEntity, codeTempEntity);
}
}

Loading…
Cancel
Save