|
|
|
@ -9,6 +9,7 @@ import com.glxp.api.admin.constant.Constant;
|
|
|
|
|
import com.glxp.api.admin.constant.ConstantStatus;
|
|
|
|
|
import com.glxp.api.admin.constant.ConstantType;
|
|
|
|
|
import com.glxp.api.admin.dao.basic.BasicThirdSysBusApiDao;
|
|
|
|
|
import com.glxp.api.admin.dao.basic.BussinessLocalTypeDao;
|
|
|
|
|
import com.glxp.api.admin.dao.basic.BussinessTypeDao;
|
|
|
|
|
import com.glxp.api.admin.dao.business.StockOrderDao;
|
|
|
|
|
import com.glxp.api.admin.dao.business.StockOrderDetailDao;
|
|
|
|
@ -16,10 +17,7 @@ import com.glxp.api.admin.dao.inout.CodesDao;
|
|
|
|
|
import com.glxp.api.admin.dao.inout.CodesTempDao;
|
|
|
|
|
import com.glxp.api.admin.dao.inout.OrderDao;
|
|
|
|
|
import com.glxp.api.admin.dao.inout.OrderDetailDao;
|
|
|
|
|
import com.glxp.api.admin.dao.inventory.InvProductDao;
|
|
|
|
|
import com.glxp.api.admin.dao.inventory.InvProductDetailDao;
|
|
|
|
|
import com.glxp.api.admin.dao.inventory.InvSubWarehouseDao;
|
|
|
|
|
import com.glxp.api.admin.dao.inventory.InvWarehouseDao;
|
|
|
|
|
import com.glxp.api.admin.dao.inventory.*;
|
|
|
|
|
import com.glxp.api.admin.entity.basic.BasicThirdSysBusApiEntity;
|
|
|
|
|
import com.glxp.api.admin.entity.basic.BussinessTypeEntity;
|
|
|
|
|
import com.glxp.api.admin.entity.business.StockOrderEntity;
|
|
|
|
@ -65,15 +63,15 @@ public class OrderServiceImpl implements OrderService {
|
|
|
|
|
@Resource
|
|
|
|
|
InvWarehouseDao invWarehouseDao;
|
|
|
|
|
@Resource
|
|
|
|
|
InvSubWarehouseService invSubWarehouseService;
|
|
|
|
|
private InvSubWarehouseService invSubWarehouseService;
|
|
|
|
|
@Resource
|
|
|
|
|
CodesDao codesDao;
|
|
|
|
|
private CodesDao codesDao;
|
|
|
|
|
@Resource
|
|
|
|
|
CodesTempDao codesTempDao;
|
|
|
|
|
private CodesTempDao codesTempDao;
|
|
|
|
|
@Resource
|
|
|
|
|
SystemParamConfigService systemParamConfigService;
|
|
|
|
|
private SystemParamConfigService systemParamConfigService;
|
|
|
|
|
@Resource
|
|
|
|
|
GennerOrderUtils gennerOrderUtils;
|
|
|
|
|
private GennerOrderUtils gennerOrderUtils;
|
|
|
|
|
@Resource
|
|
|
|
|
private BasicThirdSysBusApiDao basicThirdSysBusApiDao;
|
|
|
|
|
@Resource
|
|
|
|
@ -86,6 +84,12 @@ public class OrderServiceImpl implements OrderService {
|
|
|
|
|
private OrderDetailDao orderDetailDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private InvSubWarehouseDao invSubWarehouseDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private BussinessLocalTypeDao bussinessLocalTypeDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private InvPreInProductDao invPreInProductDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private InvPreInProductDetailDao invPreInProductDetailDao;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<OrderEntity> listOrders(OrderQueryRequest orderQueryRequest) {
|
|
|
|
@ -275,7 +279,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
|
|
supplementOrder.setInvWarehouseCode(order.getFromSubInvCode());
|
|
|
|
|
} else {
|
|
|
|
|
List<InvSubWarehouseEntity> invSubWarehouseEntities = invSubWarehouseService.findByParentId(supplementOrder.getLocStorageCode());
|
|
|
|
|
if (CollUtil.isNotEmpty(invSubWarehouseEntities) && invSubWarehouseEntities.size() > 0) {
|
|
|
|
|
if (CollUtil.isNotEmpty(invSubWarehouseEntities) && invSubWarehouseEntities.size() > 0) {
|
|
|
|
|
supplementOrder.setInvWarehouseCode(invSubWarehouseEntities.get(0).getCode());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -487,59 +491,115 @@ public class OrderServiceImpl implements OrderService {
|
|
|
|
|
orderFilterRequest.setId(id);
|
|
|
|
|
OrderEntity orderEntity = orderDao.findOne(orderFilterRequest);
|
|
|
|
|
if (orderEntity.getStatus().equals(ConstantStatus.ORDER_STATUS_SUCCESS)) {
|
|
|
|
|
//查询库存详情
|
|
|
|
|
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
|
|
|
|
|
filterInvProductDetailRequest.setOrderIdFk(id);
|
|
|
|
|
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
|
|
|
|
|
Map<String, List<InvProductDetailEntity>> invProductDetailMap = invProductDetailEntities.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getProductIdFk));
|
|
|
|
|
|
|
|
|
|
List<InvProductEntity> invProductList = new ArrayList<>(invProductDetailMap.keySet().size());
|
|
|
|
|
|
|
|
|
|
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
|
|
|
|
|
FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest();
|
|
|
|
|
filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk());
|
|
|
|
|
filterInvProductRequest.setSupId(invProductDetailEntity.getSupId());
|
|
|
|
|
filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode());
|
|
|
|
|
filterInvProductRequest.setInvWarehouseCode(invProductDetailEntity.getInvWarehouseCode());
|
|
|
|
|
if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) {
|
|
|
|
|
filterInvProductRequest.setBatchNo("empty");
|
|
|
|
|
} else {
|
|
|
|
|
filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo());
|
|
|
|
|
}
|
|
|
|
|
List<InvProductEntity> invProductEntities = invProductDao.filterInvProduct(filterInvProductRequest);
|
|
|
|
|
InvProductEntity productEntity = invProductEntities.get(0);
|
|
|
|
|
if (ConstantType.TYPE_PUT.equals(invProductDetailEntity.getMainAction())) {
|
|
|
|
|
//入库,在原有库存基础上减库存
|
|
|
|
|
int count = productEntity.getInCount() - invProductDetailEntity.getCount();
|
|
|
|
|
productEntity.setInCount(count);
|
|
|
|
|
} else if (ConstantType.TYPE_OUT.equals(invProductDetailEntity.getMainAction())) {
|
|
|
|
|
//出库,在原有库存上增加库存
|
|
|
|
|
int count = productEntity.getOutCount() - invProductDetailEntity.getCount();
|
|
|
|
|
productEntity.setOutCount(count);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
invProductList.add(productEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//删除单据相关数据,更新库存
|
|
|
|
|
try {
|
|
|
|
|
//删除库存详情
|
|
|
|
|
invProductDetailDao.deleteByOrderId(id);
|
|
|
|
|
//更新库存
|
|
|
|
|
for (InvProductEntity invProductEntity : invProductList) {
|
|
|
|
|
//查询库存码详情,如果库存码详情为空,则删除此库存
|
|
|
|
|
FilterInvProductDetailRequest detailParams = new FilterInvProductDetailRequest();
|
|
|
|
|
detailParams.setBatchNo(invProductEntity.getBatchNo());
|
|
|
|
|
detailParams.setInvCodes(Collections.singletonList(invProductEntity.getInvStorageCode()));
|
|
|
|
|
detailParams.setProductIdFk(invProductEntity.getRelIdFk());
|
|
|
|
|
int count = invProductDetailDao.statCount(detailParams);
|
|
|
|
|
if (count == 0) {
|
|
|
|
|
//如果库存码详情为空,则删除此库存
|
|
|
|
|
invProductDao.deleteById(String.valueOf(invProductEntity.getId()));
|
|
|
|
|
} else {
|
|
|
|
|
invProductDao.updateInvProduct(invProductEntity);
|
|
|
|
|
//判断单据是否是预验收单据,如果是预验收单据,则删除预验收库库存
|
|
|
|
|
if (isPreInOrder(orderEntity)) {
|
|
|
|
|
//查询预验收库详情
|
|
|
|
|
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
|
|
|
|
|
filterInvProductDetailRequest.setOrderIdFk(id);
|
|
|
|
|
List<InvProductDetailEntity> invProductDetailEntities = invPreInProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
|
|
|
|
|
Map<String, List<InvProductDetailEntity>> invPreInProductDetailMap = invProductDetailEntities.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getProductIdFk));
|
|
|
|
|
|
|
|
|
|
List<InvProductEntity> invPreInProductList = new ArrayList<>(invPreInProductDetailMap.keySet().size());
|
|
|
|
|
|
|
|
|
|
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
|
|
|
|
|
FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest();
|
|
|
|
|
filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk());
|
|
|
|
|
filterInvProductRequest.setSupId(invProductDetailEntity.getSupId());
|
|
|
|
|
filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode());
|
|
|
|
|
filterInvProductRequest.setInvWarehouseCode(invProductDetailEntity.getInvWarehouseCode());
|
|
|
|
|
if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) {
|
|
|
|
|
filterInvProductRequest.setBatchNo("empty");
|
|
|
|
|
} else {
|
|
|
|
|
filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo());
|
|
|
|
|
}
|
|
|
|
|
List<InvProductEntity> invPerInProductEntities = invPreInProductDao.filterInvProduct(filterInvProductRequest);
|
|
|
|
|
InvProductEntity invProductEntity = invPerInProductEntities.get(0);
|
|
|
|
|
if (ConstantType.TYPE_PUT.equals(invProductDetailEntity.getMainAction())) {
|
|
|
|
|
//入库,在原有库存基础上减库存
|
|
|
|
|
int count = invProductEntity.getInCount() - invProductDetailEntity.getCount();
|
|
|
|
|
invProductEntity.setInCount(count);
|
|
|
|
|
} else if (ConstantType.TYPE_OUT.equals(invProductDetailEntity.getMainAction())) {
|
|
|
|
|
//出库,在原有库存上增加库存
|
|
|
|
|
int count = invProductEntity.getOutCount() - invProductDetailEntity.getCount();
|
|
|
|
|
invProductEntity.setOutCount(count);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
invPreInProductList.add(invProductEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//删除库存详情
|
|
|
|
|
invPreInProductDetailDao.deleteByOrderId(id);
|
|
|
|
|
//更新库存
|
|
|
|
|
for (InvProductEntity invProductEntity : invPreInProductList) {
|
|
|
|
|
//查询库存码详情,如果库存码详情为空,则删除此库存
|
|
|
|
|
FilterInvProductDetailRequest detailParams = new FilterInvProductDetailRequest();
|
|
|
|
|
detailParams.setBatchNo(invProductEntity.getBatchNo());
|
|
|
|
|
detailParams.setInvCodes(Collections.singletonList(invProductEntity.getInvStorageCode()));
|
|
|
|
|
detailParams.setProductIdFk(invProductEntity.getRelIdFk());
|
|
|
|
|
int count = invPreInProductDetailDao.statCount(detailParams);
|
|
|
|
|
if (count == 0) {
|
|
|
|
|
//如果库存码详情为空,则删除此库存
|
|
|
|
|
invPreInProductDao.deleteById(String.valueOf(invProductEntity.getId()));
|
|
|
|
|
} else {
|
|
|
|
|
invProductDao.updateInvProduct(invProductEntity);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//查询库存详情
|
|
|
|
|
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
|
|
|
|
|
filterInvProductDetailRequest.setOrderIdFk(id);
|
|
|
|
|
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
|
|
|
|
|
Map<String, List<InvProductDetailEntity>> invProductDetailMap = invProductDetailEntities.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getProductIdFk));
|
|
|
|
|
|
|
|
|
|
List<InvProductEntity> invProductList = new ArrayList<>(invProductDetailMap.keySet().size());
|
|
|
|
|
|
|
|
|
|
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
|
|
|
|
|
FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest();
|
|
|
|
|
filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk());
|
|
|
|
|
filterInvProductRequest.setSupId(invProductDetailEntity.getSupId());
|
|
|
|
|
filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode());
|
|
|
|
|
filterInvProductRequest.setInvWarehouseCode(invProductDetailEntity.getInvWarehouseCode());
|
|
|
|
|
if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) {
|
|
|
|
|
filterInvProductRequest.setBatchNo("empty");
|
|
|
|
|
} else {
|
|
|
|
|
filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo());
|
|
|
|
|
}
|
|
|
|
|
List<InvProductEntity> invProductEntities = invProductDao.filterInvProduct(filterInvProductRequest);
|
|
|
|
|
InvProductEntity productEntity = invProductEntities.get(0);
|
|
|
|
|
if (ConstantType.TYPE_PUT.equals(invProductDetailEntity.getMainAction())) {
|
|
|
|
|
//入库,在原有库存基础上减库存
|
|
|
|
|
int count = productEntity.getInCount() - invProductDetailEntity.getCount();
|
|
|
|
|
productEntity.setInCount(count);
|
|
|
|
|
} else if (ConstantType.TYPE_OUT.equals(invProductDetailEntity.getMainAction())) {
|
|
|
|
|
//出库,在原有库存上增加库存
|
|
|
|
|
int count = productEntity.getOutCount() - invProductDetailEntity.getCount();
|
|
|
|
|
productEntity.setOutCount(count);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
invProductList.add(productEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//删除库存详情
|
|
|
|
|
invProductDetailDao.deleteByOrderId(id);
|
|
|
|
|
//更新库存
|
|
|
|
|
for (InvProductEntity invProductEntity : invProductList) {
|
|
|
|
|
//查询库存码详情,如果库存码详情为空,则删除此库存
|
|
|
|
|
FilterInvProductDetailRequest detailParams = new FilterInvProductDetailRequest();
|
|
|
|
|
detailParams.setBatchNo(invProductEntity.getBatchNo());
|
|
|
|
|
detailParams.setInvCodes(Collections.singletonList(invProductEntity.getInvStorageCode()));
|
|
|
|
|
detailParams.setProductIdFk(invProductEntity.getRelIdFk());
|
|
|
|
|
int count = invProductDetailDao.statCount(detailParams);
|
|
|
|
|
if (count == 0) {
|
|
|
|
|
//如果库存码详情为空,则删除此库存
|
|
|
|
|
invProductDao.deleteById(String.valueOf(invProductEntity.getId()));
|
|
|
|
|
} else {
|
|
|
|
|
invProductDao.updateInvProduct(invProductEntity);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//删除码详情
|
|
|
|
|
codesDao.deleteByOrderId(id);
|
|
|
|
|
//查询业务单据
|
|
|
|
@ -590,6 +650,16 @@ public class OrderServiceImpl implements OrderService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 判断单据是否是预验收单据
|
|
|
|
|
*
|
|
|
|
|
* @param orderEntity
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private boolean isPreInOrder(OrderEntity orderEntity) {
|
|
|
|
|
return bussinessLocalTypeDao.selectPreInByOrderType(orderEntity.getAction());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean updateOrderInfo(String actDate, String auditTime, List<String> orderIds) {
|
|
|
|
|
return orderDao.updateOrderTime(actDate, auditTime, DateUtil.getDateTime(), orderIds);
|
|
|
|
|