|
|
|
@ -15,7 +15,9 @@ import com.glxp.api.admin.dao.basic.BussinessLocalTypeDao;
|
|
|
|
|
import com.glxp.api.admin.dao.business.StockOrderDao;
|
|
|
|
|
import com.glxp.api.admin.dao.business.StockOrderDetailDao;
|
|
|
|
|
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.InvPreInProductDao;
|
|
|
|
|
import com.glxp.api.admin.dao.inventory.InvPreInProductDetailDao;
|
|
|
|
|
import com.glxp.api.admin.dao.inventory.InvProductDao;
|
|
|
|
@ -30,6 +32,7 @@ import com.glxp.api.admin.entity.inout.OrderEntity;
|
|
|
|
|
import com.glxp.api.admin.entity.inout.WarehouseEntity;
|
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvProductDetailEntity;
|
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvProductEntity;
|
|
|
|
|
import com.glxp.api.admin.httpclient.SpGetHttpClient;
|
|
|
|
|
import com.glxp.api.admin.httpclient.req.UdiwmsOrderRequest;
|
|
|
|
|
import com.glxp.api.admin.req.basic.FilterBasicThirdSysDetailRequest;
|
|
|
|
|
import com.glxp.api.admin.req.business.StockOrderDetailFilterRequest;
|
|
|
|
@ -38,6 +41,7 @@ import com.glxp.api.admin.req.business.StockOrderQueryRequest;
|
|
|
|
|
import com.glxp.api.admin.req.business.StockOrderUploadRequest;
|
|
|
|
|
import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest;
|
|
|
|
|
import com.glxp.api.admin.req.inventory.FilterInvProductRequest;
|
|
|
|
|
import com.glxp.api.admin.req.sync.PostThirdSysUploadInfo;
|
|
|
|
|
import com.glxp.api.admin.res.business.StockOrderDetailEntityVo;
|
|
|
|
|
import com.glxp.api.admin.res.business.StockOrderExportResponse;
|
|
|
|
|
import com.glxp.api.admin.service.basic.BussinessTypeService;
|
|
|
|
@ -92,6 +96,13 @@ public class StockOrderServiceImpl implements StockOrderService {
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
BussinessTypeService bussinessTypeService;
|
|
|
|
|
@Resource
|
|
|
|
|
SpGetHttpClient spGetHttp;
|
|
|
|
|
@Resource
|
|
|
|
|
private OrderDetailDao orderDetailDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private CodesTempDao codesTempDao;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -249,20 +260,57 @@ public class StockOrderServiceImpl implements StockOrderService {
|
|
|
|
|
udiwmsOrderRequest.setId(id);
|
|
|
|
|
BasicThirdSysEntity basicThirdSysEntity = basicThirdSysDao.selectByThirdId(thirdSysBusApiEntity.getThirdSys());
|
|
|
|
|
String response = httpOkClient.uCloudPost(basicThirdSysEntity.getThridUrl() + "/udiwms/erp/submitOrders", udiwmsOrderRequest);
|
|
|
|
|
|
|
|
|
|
//查询扫码单据,更新上传第三方系统的状态值
|
|
|
|
|
Set<String> scanOrderIds = new HashSet<>(1);
|
|
|
|
|
scanOrderIds.add(stockOrderEntity.getOrderIdFk());
|
|
|
|
|
List<OrderEntity> orderEntities = orderDao.selectByIds(scanOrderIds);
|
|
|
|
|
OrderEntity orderEntity = orderEntities.get(0);
|
|
|
|
|
if (StrUtil.isEmpty(response)) {
|
|
|
|
|
log.error("单据提交失败");
|
|
|
|
|
orderEntity.setWzUploadStatus(2);
|
|
|
|
|
orderEntity.setWzUploadResult("单据提交失败");
|
|
|
|
|
syncOrderUploadStatus(orderEntity);
|
|
|
|
|
return ResultVOUtils.error(500, "提交失败");
|
|
|
|
|
}
|
|
|
|
|
BaseResponse baseResponse = JSONObject.parseObject(response, new TypeReference<BaseResponse>() {
|
|
|
|
|
});
|
|
|
|
|
if (baseResponse.getCode().equals(20000)) {
|
|
|
|
|
orderEntity.setWzUploadStatus(1);
|
|
|
|
|
orderEntity.setWzUploadResult("提交成功");
|
|
|
|
|
syncOrderUploadStatus(orderEntity);
|
|
|
|
|
return ResultVOUtils.success("提交成功");
|
|
|
|
|
} else {
|
|
|
|
|
orderEntity.setWzUploadStatus(2);
|
|
|
|
|
orderEntity.setWzUploadResult("单据提交失败,异常信息:" + baseResponse.getMessage());
|
|
|
|
|
syncOrderUploadStatus(orderEntity);
|
|
|
|
|
log.error("单据提交失败,异常信息:" + baseResponse.getMessage());
|
|
|
|
|
return ResultVOUtils.error(500, "提交失败");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 单据上传完成之后,主动同步到
|
|
|
|
|
* @param orderEntity
|
|
|
|
|
*/
|
|
|
|
|
private void syncOrderUploadStatus(OrderEntity orderEntity) {
|
|
|
|
|
//更新单据上传状态
|
|
|
|
|
orderDao.updateOrderUploadInfo(orderEntity);
|
|
|
|
|
//调用中继服务接口,同步单据上传状态
|
|
|
|
|
PostThirdSysUploadInfo postThirdSysUploadInfo = new PostThirdSysUploadInfo();
|
|
|
|
|
postThirdSysUploadInfo.setOrderId(orderEntity.getId());
|
|
|
|
|
postThirdSysUploadInfo.setWzUploadStatus(orderEntity.getWzUploadStatus());
|
|
|
|
|
postThirdSysUploadInfo.setWzUploadResult(orderEntity.getWzUploadResult());
|
|
|
|
|
BaseResponse<String> response = spGetHttp.postOrderUploadInfo(postThirdSysUploadInfo);
|
|
|
|
|
if (null == response) {
|
|
|
|
|
log.error("同步上传状态失败!");
|
|
|
|
|
} else if (response.getCode() != 20000) {
|
|
|
|
|
log.error(response.getMessage());
|
|
|
|
|
} else {
|
|
|
|
|
log.info("上传成功");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<StockOrderEntity> filter(StockOrderUploadRequest request) {
|
|
|
|
|
if (null == request) {
|
|
|
|
@ -297,7 +345,18 @@ public class StockOrderServiceImpl implements StockOrderService {
|
|
|
|
|
//查询业务单据
|
|
|
|
|
StockOrderEntity stockOrderEntity = stockOrderDao.selectByBillNo(billNo);
|
|
|
|
|
//查询扫码单据
|
|
|
|
|
OrderEntity orderEntity = orderDao.selectByBillNo(billNo);
|
|
|
|
|
OrderEntity orderEntity=new OrderEntity();
|
|
|
|
|
List<OrderEntity> orderEntityList = orderDao.selectByBillNoAndStatus(billNo);
|
|
|
|
|
if(orderEntityList.size()>1){
|
|
|
|
|
for (OrderEntity obj:orderEntityList){
|
|
|
|
|
if(obj.getErpFk().equals(billNo)){
|
|
|
|
|
orderEntity=obj;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
orderEntity=orderEntityList.get(0);
|
|
|
|
|
}
|
|
|
|
|
BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByAction(orderEntity.getAction());
|
|
|
|
|
if (stockOrderEntity.getStatus().equals(ConstantStatus.SORDER_CHECKED)) {
|
|
|
|
|
//回退未验收单据
|
|
|
|
@ -314,21 +373,24 @@ public class StockOrderServiceImpl implements StockOrderService {
|
|
|
|
|
stockOrderEntity.setStatus(ConstantStatus.SORDER_CHECK);
|
|
|
|
|
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK);
|
|
|
|
|
orderEntity.setErpFk("");
|
|
|
|
|
stockOrderEntity.setOrderIdFk("");
|
|
|
|
|
stockOrderDao.updateById(stockOrderEntity);
|
|
|
|
|
orderDao.updateOrder(orderEntity);
|
|
|
|
|
//置空扫码单据详情关联的业务单据号
|
|
|
|
|
orderDetailDao.updateErpOrderId(orderEntity.getId(), null);
|
|
|
|
|
} else {
|
|
|
|
|
orderEntity.setErpFk("");
|
|
|
|
|
stockOrderDao.deleteById(stockOrderEntity.getId());
|
|
|
|
|
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_PROCESS);
|
|
|
|
|
//删除正式码表的单据插入临时码表的数据
|
|
|
|
|
orderDao.updateOrder(orderEntity);
|
|
|
|
|
List<WarehouseEntity> warehouseEntityList = codesDao.findByReceiptId(orderEntity.getId());
|
|
|
|
|
if (CollUtil.isNotEmpty(warehouseEntityList)) {
|
|
|
|
|
codesTempService.insertCodesTemp(warehouseEntityList);
|
|
|
|
|
codesDao.deleteByOrderId(orderEntity.getId());
|
|
|
|
|
}
|
|
|
|
|
WarehouseEntity warehouseEntity=new WarehouseEntity();
|
|
|
|
|
warehouseEntity=codesDao.findOrderId(orderEntity.getId());
|
|
|
|
|
codesTempDao.insertCodesTempSingle(warehouseEntity);
|
|
|
|
|
codesDao.deleteById(warehouseEntity.getId());
|
|
|
|
|
//置空扫码单据详情关联的业务单据号
|
|
|
|
|
orderDetailDao.updateErpOrderId(orderEntity.getId(), null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
//回退已完成单据
|
|
|
|
|
|
|
|
|
@ -339,48 +401,51 @@ public class StockOrderServiceImpl implements StockOrderService {
|
|
|
|
|
不是预验收单据,则正常扣减库存,回滚业务单据状态
|
|
|
|
|
*/
|
|
|
|
|
if (isPreInOrder(orderEntity)) {
|
|
|
|
|
//查询预验收库库存详情
|
|
|
|
|
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
|
|
|
|
|
filterInvProductDetailRequest.setOrderIdFk(orderEntity.getId());
|
|
|
|
|
List<InvProductDetailEntity> invProductDetailEntities = invPreInProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
|
|
|
|
|
List<InvProductEntity> invPreInProductList = new ArrayList<>();
|
|
|
|
|
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
|
|
|
|
|
FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest();
|
|
|
|
|
filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk());
|
|
|
|
|
filterInvProductRequest.setSupId(invProductDetailEntity.getSupId());
|
|
|
|
|
filterInvProductRequest.setInvWarehouseCode(invProductDetailEntity.getInvWarehouseCode());
|
|
|
|
|
filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode());
|
|
|
|
|
if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) {
|
|
|
|
|
filterInvProductRequest.setBatchNo("empty");
|
|
|
|
|
} else {
|
|
|
|
|
filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo());
|
|
|
|
|
}
|
|
|
|
|
List<InvProductEntity> invProductEntities = invPreInProductDao.filterInvProduct(filterInvProductRequest);
|
|
|
|
|
if (CollUtil.isNotEmpty(invProductEntities) && invProductEntities.size() > 0) {
|
|
|
|
|
InvProductEntity invProductEntity = invProductEntities.get(0);
|
|
|
|
|
calculateInvCount(invProductEntity, invProductDetailEntity);
|
|
|
|
|
invPreInProductList.add(invProductEntity);
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//删除库存详情
|
|
|
|
|
|
|
|
|
|
invPreInProductDetailDao.deleteByOrderId(orderEntity.getId());
|
|
|
|
|
//更新库存
|
|
|
|
|
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 {
|
|
|
|
|
invPreInProductDao.updateInvProduct(invProductEntity);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
invPreInProductDao.deleteByOrderIdFk(orderEntity.getId());
|
|
|
|
|
//查询预验收库库存详情
|
|
|
|
|
// FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
|
|
|
|
|
// filterInvProductDetailRequest.setOrderIdFk(orderEntity.getId());
|
|
|
|
|
// List<InvProductDetailEntity> invProductDetailEntities = invPreInProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
|
|
|
|
|
// List<InvProductEntity> invPreInProductList = new ArrayList<>();
|
|
|
|
|
// for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
|
|
|
|
|
// FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest();
|
|
|
|
|
// filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk());
|
|
|
|
|
// filterInvProductRequest.setSupId(invProductDetailEntity.getSupId());
|
|
|
|
|
// filterInvProductRequest.setInvWarehouseCode(invProductDetailEntity.getInvWarehouseCode());
|
|
|
|
|
// filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode());
|
|
|
|
|
// if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) {
|
|
|
|
|
// filterInvProductRequest.setBatchNo("empty");
|
|
|
|
|
// } else {
|
|
|
|
|
// filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo());
|
|
|
|
|
// }
|
|
|
|
|
// List<InvProductEntity> invProductEntities = invPreInProductDao.filterInvProduct(filterInvProductRequest);
|
|
|
|
|
// if (CollUtil.isNotEmpty(invProductEntities) && invProductEntities.size() > 0) {
|
|
|
|
|
// InvProductEntity invProductEntity = invProductEntities.get(0);
|
|
|
|
|
// calculateInvCount(invProductEntity, invProductDetailEntity);
|
|
|
|
|
// invPreInProductList.add(invProductEntity);
|
|
|
|
|
// } else {
|
|
|
|
|
// return false;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// //删除库存详情
|
|
|
|
|
// invPreInProductDetailDao.deleteByOrderId(orderEntity.getId());
|
|
|
|
|
// //更新库存
|
|
|
|
|
// 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 {
|
|
|
|
|
// invPreInProductDao.updateInvProduct(invProductEntity);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
} else {
|
|
|
|
|
//非预验收单据库存,正常扣减库存
|
|
|
|
|
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
|
|
|
|
@ -444,7 +509,7 @@ public class StockOrderServiceImpl implements StockOrderService {
|
|
|
|
|
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK);
|
|
|
|
|
orderEntity.setErpFk("");
|
|
|
|
|
stockOrderDao.updateById(stockOrderEntity);
|
|
|
|
|
orderDao.updateOrder(orderEntity);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
orderEntity.setErpFk("");
|
|
|
|
|
stockOrderDao.deleteById(stockOrderEntity.getId());
|
|
|
|
@ -453,11 +518,10 @@ public class StockOrderServiceImpl implements StockOrderService {
|
|
|
|
|
List<WarehouseEntity> warehouseEntityList = codesDao.findByReceiptId(orderEntity.getId());
|
|
|
|
|
if (CollUtil.isNotEmpty(warehouseEntityList)) {
|
|
|
|
|
codesTempService.insertCodesTemp(warehouseEntityList);
|
|
|
|
|
codesDao.deleteByOrderId(orderEntity.getId());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//更新业务单据数据
|
|
|
|
|