|
|
|
@ -17,6 +17,7 @@ import com.glxp.sale.admin.entity.info.CompanyEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.info.CompanyProductRelevanceEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.inout.*;
|
|
|
|
|
import com.glxp.sale.admin.entity.inventory.InvProductDetailEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.inventory.InvProductEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.inventory.InvWarehouseEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.param.SystemParamConfigEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.udid.UdiEntity;
|
|
|
|
@ -25,6 +26,8 @@ import com.glxp.sale.admin.req.basic.FilterUdiInfoRequest;
|
|
|
|
|
import com.glxp.sale.admin.req.info.FilterCompanyProductRelevanceRequest;
|
|
|
|
|
import com.glxp.sale.admin.req.inout.*;
|
|
|
|
|
import com.glxp.sale.admin.req.inventory.FilterInvProductDetailRequest;
|
|
|
|
|
import com.glxp.sale.admin.req.inventory.FilterInvProductRequest;
|
|
|
|
|
import com.glxp.sale.admin.req.inventory.FilterInvWarehouseRequest;
|
|
|
|
|
import com.glxp.sale.admin.res.basic.UdiRelevanceResponse;
|
|
|
|
|
import com.glxp.sale.admin.service.basic.BasicUnitMaintainService;
|
|
|
|
|
import com.glxp.sale.admin.service.basic.BussinessTypeService;
|
|
|
|
@ -33,7 +36,9 @@ import com.glxp.sale.admin.service.basic.UdiRelevanceService;
|
|
|
|
|
import com.glxp.sale.admin.service.info.CompanyProductRelevanceService;
|
|
|
|
|
import com.glxp.sale.admin.service.info.CompanyService;
|
|
|
|
|
import com.glxp.sale.admin.service.inout.*;
|
|
|
|
|
import com.glxp.sale.admin.service.inventory.InvPreProductService;
|
|
|
|
|
import com.glxp.sale.admin.service.inventory.InvProductDetailService;
|
|
|
|
|
import com.glxp.sale.admin.service.inventory.InvProductService;
|
|
|
|
|
import com.glxp.sale.admin.service.inventory.InvWarehouseService;
|
|
|
|
|
import com.glxp.sale.admin.service.param.SystemParamConfigService;
|
|
|
|
|
import com.glxp.sale.admin.service.thrsys.ThrDataService;
|
|
|
|
@ -102,6 +107,10 @@ public class IoTransInoutService {
|
|
|
|
|
private CheckOrderUtils checkOrderUtils;
|
|
|
|
|
@Resource
|
|
|
|
|
InvProductDetailService invProductDetailService;
|
|
|
|
|
@Resource
|
|
|
|
|
InvProductService invProductService;
|
|
|
|
|
@Resource
|
|
|
|
|
InvPreProductService invPreProductService;
|
|
|
|
|
|
|
|
|
|
//web端新增订单,
|
|
|
|
|
@Async
|
|
|
|
@ -309,10 +318,11 @@ public class IoTransInoutService {
|
|
|
|
|
return;
|
|
|
|
|
} else if (orderEntity.getFromCorpId() == null) {
|
|
|
|
|
|
|
|
|
|
if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INPUT) {
|
|
|
|
|
if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INPUT && bussinessTypeEntity.isGenUnit()) {
|
|
|
|
|
BasicUnitMaintainEntity basicUnitMaintainEntity = new BasicUnitMaintainEntity();
|
|
|
|
|
basicUnitMaintainEntity.setErpId(CustomUtil.getUnitId());
|
|
|
|
|
basicUnitMaintainEntity.setCorpType(ConstantStatus.CORP_SICK);
|
|
|
|
|
basicUnitMaintainEntity.setOutType(ConstantStatus.CORP_SICK_SICK);
|
|
|
|
|
basicUnitMaintainEntity.setName(orderEntity.getFromCorp());
|
|
|
|
|
orderEntity.setFromCorpId(basicUnitMaintainEntity.getErpId());
|
|
|
|
|
orderService.updateOrder(orderEntity);
|
|
|
|
@ -401,6 +411,20 @@ public class IoTransInoutService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//产品是否已维护已关联
|
|
|
|
|
if (StrUtil.isEmpty(warehouseEntity.getRelId())) {
|
|
|
|
|
orderService.updateOrderStatus(warehouseEntity.getOrderId(), ConstantStatus.ORDER_STATUS_FAIL);
|
|
|
|
|
orderService.updateRemark(orderEntity.getId(), "udi码:" + warehouseEntity.getCode() + "绑定多个产品ID!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//产品是否指定供应商
|
|
|
|
|
if (StrUtil.isEmpty(warehouseEntity.getSupId())) {
|
|
|
|
|
orderService.updateOrderStatus(warehouseEntity.getOrderId(), ConstantStatus.ORDER_STATUS_FAIL);
|
|
|
|
|
orderService.updateRemark(orderEntity.getId(), "udi码:" + warehouseEntity.getCode() + "未指定供应商!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.selectAllByNameCode(warehouseEntity.getNameCode());
|
|
|
|
|
if (udiRelevanceResponses.size() == 1) {
|
|
|
|
|
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceResponses.get(0);
|
|
|
|
@ -413,14 +437,14 @@ public class IoTransInoutService {
|
|
|
|
|
orderService.updateRemark(orderEntity.getId(), "udi码:" + warehouseEntity.getCode() + "该产品不允许以使用单元入库!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_PUT)) {
|
|
|
|
|
CompanyProductRelevanceEntity companyProductRelevanceEntity = companyProductRelevanceService.findByUdiRlIdUnitFk(udiRelevanceResponse.getId() + "", warehouseEntity.getFromCorpId());
|
|
|
|
|
if (companyProductRelevanceEntity == null) {
|
|
|
|
|
orderService.updateOrderStatus(warehouseEntity.getOrderId(), ConstantStatus.ORDER_STATUS_FAIL);
|
|
|
|
|
orderService.updateRemark(orderEntity.getId(), udiRelevanceResponse.getCpmctymc() + "该产品非此供应商配送");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_PUT)) {
|
|
|
|
|
// CompanyProductRelevanceEntity companyProductRelevanceEntity = companyProductRelevanceService.findByUdiRlIdUnitFk(udiRelevanceResponse.getId() + "", warehouseEntity.getFromCorpId());
|
|
|
|
|
// if (companyProductRelevanceEntity == null) {
|
|
|
|
|
// orderService.updateOrderStatus(warehouseEntity.getOrderId(), ConstantStatus.ORDER_STATUS_FAIL);
|
|
|
|
|
// orderService.updateRemark(orderEntity.getId(), udiRelevanceResponse.getCpmctymc() + "该产品非此供应商配送");
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@ -449,6 +473,7 @@ public class IoTransInoutService {
|
|
|
|
|
BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByAction(action);
|
|
|
|
|
List<WarehouseEntity> warehouseEntityList = warehouseService.findByReceiptId(orderId);
|
|
|
|
|
myErpOrderService.deleteByOrderId(orderEntity.getId());
|
|
|
|
|
orderEntity.setContrastStatus(ConstantStatus.ORDER_CHECK_UN);
|
|
|
|
|
//为所有条码关联基础信息关联表ID
|
|
|
|
|
for (WarehouseEntity warehouseEntity : warehouseEntityList) {
|
|
|
|
|
FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest();
|
|
|
|
@ -456,12 +481,10 @@ public class IoTransInoutService {
|
|
|
|
|
List<UdiRelevanceResponse> udiRelevanceEntities = udiRelevanceService.filterUdiRelevance(filterUdiInfoRequest);
|
|
|
|
|
|
|
|
|
|
//默认或已选中供应商
|
|
|
|
|
String originSupId = checkOriginExitSup(warehouseEntity);
|
|
|
|
|
String originSupId = checkOriginExitSup(bussinessTypeEntity, warehouseEntity);
|
|
|
|
|
if (originSupId != null) {
|
|
|
|
|
warehouseEntity.setSupId(originSupId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (udiRelevanceEntities != null && udiRelevanceEntities.size() > 1 && warehouseEntity.getRelId() == null) {//同一个DI绑定多个产品西信息
|
|
|
|
|
warehouseEntity.setRelId(null);
|
|
|
|
|
warehouseEntity.setStatus(ConstantStatus.ORDER_DETAIL_DI_MUTI);
|
|
|
|
@ -498,7 +521,7 @@ public class IoTransInoutService {
|
|
|
|
|
}
|
|
|
|
|
warehouseService.updateCode(warehouseEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
orderService.updateOrder(orderEntity);
|
|
|
|
|
|
|
|
|
|
if (!bussinessTypeEntity.isCheckEnable()) {
|
|
|
|
|
orderEntity = orderService.findById(orderEntity.getId());
|
|
|
|
@ -542,7 +565,7 @@ public class IoTransInoutService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
genOrderDetail(warehouseEntityList);
|
|
|
|
|
checkMutiDi(orderEntity.getId(), bussinessTypeEntity); //校验一个DI是否绑定多个产品ID
|
|
|
|
|
// checkMutiDi(orderEntity.getId(), bussinessTypeEntity); //校验一个DI是否绑定多个产品ID
|
|
|
|
|
orderEntity = orderService.findById(orderEntity.getId());
|
|
|
|
|
if (orderEntity.getContrastStatus() != ConstantStatus.ORDER_CHECK_FAIL) {
|
|
|
|
|
orderService.updateOrderStatus(orderEntity.getId(), ConstantStatus.ORDER_STATUS_CHECK);
|
|
|
|
@ -553,7 +576,7 @@ public class IoTransInoutService {
|
|
|
|
|
public void unCheckFinish(OrderEntity orderEntity, List<WarehouseEntity> warehouseEntityList) {
|
|
|
|
|
BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByAction(orderEntity.getAction());
|
|
|
|
|
genOrderDetail(warehouseEntityList);
|
|
|
|
|
checkMutiDi(orderEntity.getId(), bussinessTypeEntity); //校验一个DI是否绑定多个产品ID
|
|
|
|
|
// checkMutiDi(orderEntity.getId(), bussinessTypeEntity); //校验一个DI是否绑定多个产品ID
|
|
|
|
|
orderEntity = orderService.findById(orderEntity.getId());
|
|
|
|
|
if (orderEntity.getContrastStatus() != ConstantStatus.ORDER_CHECK_FAIL) {
|
|
|
|
|
List<ErpOrderEntity> erpOrderEntities = myErpOrderService.filterAllByOrderIdFk(orderEntity.getId());
|
|
|
|
@ -574,10 +597,10 @@ public class IoTransInoutService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String checkOriginExitSup(WarehouseEntity warehouseEntity) {
|
|
|
|
|
public String checkOriginExitSup(BussinessTypeEntity bussinessTypeEntity, WarehouseEntity warehouseEntity) {
|
|
|
|
|
if (warehouseEntity.getSupId() != null && !"".equals(warehouseEntity.getSupId())) {
|
|
|
|
|
return warehouseEntity.getSupId();
|
|
|
|
|
} else if (ConstantType.TYPE_PUT.equals(warehouseEntity.getMainAction())) {
|
|
|
|
|
} else if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT && ConstantType.TYPE_PUT.equals(warehouseEntity.getMainAction())) {
|
|
|
|
|
return warehouseEntity.getFromCorpId();
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
@ -612,14 +635,77 @@ public class IoTransInoutService {
|
|
|
|
|
|
|
|
|
|
public String checkInvExitSup(WarehouseEntity warehouseEntity) {
|
|
|
|
|
|
|
|
|
|
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
|
|
|
|
|
filterInvProductDetailRequest.setProductIdFk(warehouseEntity.getRelId());
|
|
|
|
|
String supId = checkNorInv(warehouseEntity);
|
|
|
|
|
if (supId == null) {
|
|
|
|
|
return checkPreInv(warehouseEntity);
|
|
|
|
|
}
|
|
|
|
|
return supId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//查普通库存
|
|
|
|
|
public String checkNorInv(WarehouseEntity warehouseEntity) {
|
|
|
|
|
|
|
|
|
|
FilterInvWarehouseRequest filterInvWarehouseRequest = new FilterInvWarehouseRequest();
|
|
|
|
|
filterInvWarehouseRequest.setLevel(1);
|
|
|
|
|
filterInvWarehouseRequest.setAdvanceType(false);
|
|
|
|
|
List<InvWarehouseEntity> invWarehouseEntities = invWarehouseService.filterInvWarehouse(filterInvWarehouseRequest);
|
|
|
|
|
List<String> codes = new ArrayList<>();
|
|
|
|
|
if (!invWarehouseEntities.isEmpty()) {
|
|
|
|
|
for (InvWarehouseEntity invWarehouseEntity : invWarehouseEntities) {
|
|
|
|
|
codes.add(invWarehouseEntity.getCode());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
FilterInvProductRequest filterInvProductDetailRequest = new FilterInvProductRequest();
|
|
|
|
|
filterInvProductDetailRequest.setRelIdFk(warehouseEntity.getRelId());
|
|
|
|
|
filterInvProductDetailRequest.setBatchNo(warehouseEntity.getBatchNo());
|
|
|
|
|
filterInvProductDetailRequest.setInvCodes(codes);
|
|
|
|
|
List<InvProductEntity> invProductEntities = invProductService.filterInvProduct(filterInvProductDetailRequest);
|
|
|
|
|
if (invProductEntities.size() > 0) {
|
|
|
|
|
String supId = invProductEntities.get(0).getSupId();
|
|
|
|
|
int count = 0;
|
|
|
|
|
for (InvProductEntity invProductEntity : invProductEntities) {
|
|
|
|
|
if (!supId.equals(invProductEntity.getSupId())) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
count = count + (invProductEntity.getInCount() - invProductEntity.getOutCount());
|
|
|
|
|
}
|
|
|
|
|
if (count > 0)
|
|
|
|
|
return supId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//查寄售库存
|
|
|
|
|
public String checkPreInv(WarehouseEntity warehouseEntity) {
|
|
|
|
|
FilterInvWarehouseRequest filterInvWarehouseRequest = new FilterInvWarehouseRequest();
|
|
|
|
|
filterInvWarehouseRequest.setLevel(1);
|
|
|
|
|
filterInvWarehouseRequest.setAdvanceType(true);
|
|
|
|
|
List<InvWarehouseEntity> invWarehouseEntities = invWarehouseService.filterInvWarehouse(filterInvWarehouseRequest);
|
|
|
|
|
List<String> codes = new ArrayList<>();
|
|
|
|
|
if (!invWarehouseEntities.isEmpty()) {
|
|
|
|
|
for (InvWarehouseEntity invWarehouseEntity : invWarehouseEntities) {
|
|
|
|
|
codes.add(invWarehouseEntity.getCode());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
FilterInvProductRequest filterInvProductDetailRequest = new FilterInvProductRequest();
|
|
|
|
|
filterInvProductDetailRequest.setRelIdFk(warehouseEntity.getRelId());
|
|
|
|
|
filterInvProductDetailRequest.setBatchNo(warehouseEntity.getBatchNo());
|
|
|
|
|
filterInvProductDetailRequest.setInvStorageCode(warehouseEntity.getLocStorageCode());
|
|
|
|
|
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest);
|
|
|
|
|
if (invProductDetailEntities.size() > 0) {
|
|
|
|
|
return invProductDetailEntities.get(0).getSupId();
|
|
|
|
|
filterInvProductDetailRequest.setInvCodes(codes);
|
|
|
|
|
List<InvProductEntity> invProductEntities = invPreProductService.filterInvProduct(filterInvProductDetailRequest);
|
|
|
|
|
if (invProductEntities.size() > 0) {
|
|
|
|
|
String supId = invProductEntities.get(0).getSupId();
|
|
|
|
|
int count = 0;
|
|
|
|
|
for (InvProductEntity invProductEntity : invProductEntities) {
|
|
|
|
|
if (!supId.equals(invProductEntity.getSupId())) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
count = count + (invProductEntity.getInCount() - invProductEntity.getOutCount());
|
|
|
|
|
}
|
|
|
|
|
if (count > 0)
|
|
|
|
|
return supId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|