|
|
|
@ -5,26 +5,37 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.util.ReflectUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
|
|
import com.glxp.api.common.res.BaseResponse;
|
|
|
|
|
import com.glxp.api.common.util.ResultVOUtils;
|
|
|
|
|
import com.glxp.api.constant.Constant;
|
|
|
|
|
import com.glxp.api.constant.ConstantStatus;
|
|
|
|
|
import com.glxp.api.constant.ConstantType;
|
|
|
|
|
import com.glxp.api.dao.auth.DeptDao;
|
|
|
|
|
import com.glxp.api.dao.auth.InvWarehouseDao;
|
|
|
|
|
import com.glxp.api.dao.basic.BasicBussinessTypeDao;
|
|
|
|
|
import com.glxp.api.dao.basic.BasicCorpDao;
|
|
|
|
|
import com.glxp.api.dao.inout.IoOrderDao;
|
|
|
|
|
import com.glxp.api.dao.thrsys.ThrSystemBusApiDao;
|
|
|
|
|
import com.glxp.api.dao.thrsys.ThrSystemDao;
|
|
|
|
|
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
|
|
|
|
|
import com.glxp.api.entity.inout.*;
|
|
|
|
|
import com.glxp.api.entity.inv.*;
|
|
|
|
|
import com.glxp.api.entity.system.SyncDataBustypeEntity;
|
|
|
|
|
import com.glxp.api.entity.thrsys.ThrSystemBusApiEntity;
|
|
|
|
|
import com.glxp.api.entity.thrsys.ThrSystemEntity;
|
|
|
|
|
import com.glxp.api.http.HttpOkClient;
|
|
|
|
|
import com.glxp.api.req.inout.FilterOrderRequest;
|
|
|
|
|
import com.glxp.api.req.inout.FilterUploadOrderRequest;
|
|
|
|
|
import com.glxp.api.req.inout.OrderEditRequest;
|
|
|
|
|
import com.glxp.api.req.thrsys.UdiwmsOrderRequest;
|
|
|
|
|
import com.glxp.api.res.inout.IoOrderResponse;
|
|
|
|
|
import com.glxp.api.res.inout.OrderNoResult;
|
|
|
|
|
import com.glxp.api.service.basic.IBasicBussinessTypeService;
|
|
|
|
|
import com.glxp.api.service.inout.*;
|
|
|
|
|
import com.glxp.api.service.inv.*;
|
|
|
|
|
import com.glxp.api.service.system.SyncUploadDataBustypeService;
|
|
|
|
|
import com.glxp.api.util.DateUtil;
|
|
|
|
|
import com.glxp.api.util.udi.UdiCalCountUtil;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
@ -34,6 +45,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import java.lang.reflect.Field;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
|
@Service
|
|
|
|
@ -44,8 +56,6 @@ public class IoOrderServiceImpl implements IoOrderService {
|
|
|
|
|
@Resource
|
|
|
|
|
private BasicBussinessTypeDao basicBussinessTypeDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private BasicCorpDao basicCorpDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private DeptDao deptDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private InvWarehouseDao invWarehouseDao;
|
|
|
|
@ -73,6 +83,14 @@ public class IoOrderServiceImpl implements IoOrderService {
|
|
|
|
|
IoOrderDetailCodeService ioOrderDetailCodeService;
|
|
|
|
|
@Resource
|
|
|
|
|
IoOrderDetailResultService ioOrderDetailResultService;
|
|
|
|
|
@Resource
|
|
|
|
|
private SyncUploadDataBustypeService syncUploadDataBustypeService;
|
|
|
|
|
@Resource
|
|
|
|
|
private ThrSystemBusApiDao thrSystemBusApiDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private ThrSystemDao thrSystemDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private HttpOkClient httpOkClient;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<IoOrderEntity> selectAll() {
|
|
|
|
@ -116,6 +134,7 @@ public class IoOrderServiceImpl implements IoOrderService {
|
|
|
|
|
@Override
|
|
|
|
|
public int insertOrder(IoOrderEntity orderEntity) {
|
|
|
|
|
orderEntity.setId(null);
|
|
|
|
|
orderEntity.setExportStatus(0); //上传状态:未上传
|
|
|
|
|
return orderDao.insert(orderEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -124,6 +143,7 @@ public class IoOrderServiceImpl implements IoOrderService {
|
|
|
|
|
public int insertOrUpdate(IoOrderEntity orderEntity) {
|
|
|
|
|
IoOrderEntity temp = orderDao.selectOne(new QueryWrapper<IoOrderEntity>().eq("billNo", orderEntity.getBillNo()));
|
|
|
|
|
if (temp == null) {
|
|
|
|
|
orderEntity.setExportStatus(0); //上传状态:未上传
|
|
|
|
|
return orderDao.insert(orderEntity);
|
|
|
|
|
} else {
|
|
|
|
|
return orderDao.updateById(orderEntity);
|
|
|
|
@ -443,7 +463,7 @@ public class IoOrderServiceImpl implements IoOrderService {
|
|
|
|
|
result.add(response);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
log.error(orderEntity.getBillNo() + "平衡补单出错\n" );
|
|
|
|
|
log.error(orderEntity.getBillNo() + "平衡补单出错\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
@ -544,6 +564,87 @@ public class IoOrderServiceImpl implements IoOrderService {
|
|
|
|
|
orderDao.update(order, new QueryWrapper<IoOrderEntity>().in("billNo", orderEditRequest.getOrderIds()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<IoOrderResponse> filterUploadOrderList(FilterUploadOrderRequest uploadOrderRequest) {
|
|
|
|
|
if (null == uploadOrderRequest) {
|
|
|
|
|
return Collections.emptyList();
|
|
|
|
|
}
|
|
|
|
|
//判断是否查询指定的单据类型,如果没指定则查询配置的所有可以上传的类型
|
|
|
|
|
if (StrUtil.isBlank(uploadOrderRequest.getBillType())) {
|
|
|
|
|
List<SyncDataBustypeEntity> busTypes = syncUploadDataBustypeService.findAll();
|
|
|
|
|
if (CollUtil.isNotEmpty(busTypes)) {
|
|
|
|
|
Iterator<SyncDataBustypeEntity> iterator = busTypes.iterator();
|
|
|
|
|
while (iterator.hasNext()) {
|
|
|
|
|
Long count = thrSystemBusApiDao.selectCount(new QueryWrapper<ThrSystemBusApiEntity>()
|
|
|
|
|
.eq("code", iterator.next().getAction()));
|
|
|
|
|
if (count == 0) {
|
|
|
|
|
//单据类型不在上传单据类型列表中配置
|
|
|
|
|
iterator.remove();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (CollUtil.isNotEmpty(busTypes)) {
|
|
|
|
|
List<String> busCodes = busTypes.stream().map(SyncDataBustypeEntity::getAction).collect(Collectors.toList());
|
|
|
|
|
uploadOrderRequest.setBillTypes(busCodes);
|
|
|
|
|
} else {
|
|
|
|
|
log.info("未在接口设置中配置,无可以上传的单据数据");
|
|
|
|
|
return Collections.emptyList();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
log.info("上传设置中未配置可以上传的单据类型");
|
|
|
|
|
return Collections.emptyList();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//查询此单据类型在上传第三方系统单据类型中是否有配置,若未配置则查询无数据
|
|
|
|
|
boolean exists = syncUploadDataBustypeService.findExists(uploadOrderRequest.getBillType());
|
|
|
|
|
if (exists) {
|
|
|
|
|
//查询此单据类型有无关联
|
|
|
|
|
Long count = thrSystemBusApiDao.selectCount(new QueryWrapper<ThrSystemBusApiEntity>()
|
|
|
|
|
.eq("code", uploadOrderRequest.getBillType()));
|
|
|
|
|
if (count == 0) {
|
|
|
|
|
log.info("未在接口设置中配置,无可以上传的单据数据");
|
|
|
|
|
return Collections.emptyList();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
log.info("查询的单据类型未在单据上传设置中配置");
|
|
|
|
|
return Collections.emptyList();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (null != uploadOrderRequest.getPage() && null != uploadOrderRequest.getLimit()) {
|
|
|
|
|
PageHelper.offsetPage((uploadOrderRequest.getPage() - 1) * uploadOrderRequest.getLimit(), uploadOrderRequest.getLimit());
|
|
|
|
|
}
|
|
|
|
|
return orderDao.selectUploadOrder(uploadOrderRequest);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public BaseResponse submitToThrSys(String billNo) {
|
|
|
|
|
//查询单据类型
|
|
|
|
|
String billType = orderDao.selectActionByBillNo(billNo);
|
|
|
|
|
|
|
|
|
|
//查询此单据类型对应的第三方系统ID
|
|
|
|
|
ThrSystemBusApiEntity thrSystemBusApiEntity = thrSystemBusApiDao.selectByCode(billType);
|
|
|
|
|
//查询第三方系统
|
|
|
|
|
ThrSystemEntity thrSystemEntity = thrSystemDao.selectByThirdId(thrSystemBusApiEntity.getThirdSys());
|
|
|
|
|
if (null == thrSystemEntity || StrUtil.isBlank(thrSystemEntity.getThridUrl())) {
|
|
|
|
|
return ResultVOUtils.error(500, "提交失败,未配置第三方服务IP地址");
|
|
|
|
|
}
|
|
|
|
|
UdiwmsOrderRequest udiwmsOrderRequest = new UdiwmsOrderRequest();
|
|
|
|
|
udiwmsOrderRequest.setBillNo(billNo);
|
|
|
|
|
udiwmsOrderRequest.setBillType(billType);
|
|
|
|
|
String response = httpOkClient.uCloudPost(thrSystemEntity.getThridUrl() + "/udiwms/erp/submitOrders", udiwmsOrderRequest);
|
|
|
|
|
if (StrUtil.isBlank(response)) {
|
|
|
|
|
log.info("单据提交失败,无返回信息");
|
|
|
|
|
return ResultVOUtils.error(500, "提交失败");
|
|
|
|
|
} else {
|
|
|
|
|
BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
|
|
|
|
|
if (baseResponse.getCode() == 20000) {
|
|
|
|
|
return ResultVOUtils.success("提交成功");
|
|
|
|
|
} else {
|
|
|
|
|
log.error("单据提交失败,错误信息:{}", baseResponse.getMessage());
|
|
|
|
|
return ResultVOUtils.error(500, "提交失败");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询此单据关联的所有单据
|
|
|
|
|