Commit ba67b9a8 authored by Anna's avatar Anna
Browse files

returnImJournal + tests

parent bab92544
Showing with 798 additions and 17 deletions
+798 -17
......@@ -54,6 +54,16 @@ public interface Ek4SyncObjectsDAO {
*/
void saveOrders(List<ListIdOrders> entities);
/**
* Сохраняет список возвратных ведомостей
*/
void saveReturnImJournals(List<ReturnImJournal> entities);
/**
* Сохраняет список возвращаемых накладных
*/
void saveReturnImJournalOrders(List<ReturnImJournalOrders> entities);
/**
* Находит все заголовки описей
*/
......@@ -99,6 +109,16 @@ public interface Ek4SyncObjectsDAO {
*/
List<ListIdOrders> getAllOrders();
/**
* Находит все возвратные ведомости
*/
List<ReturnImJournal> getAllReturnImJournals();
/**
* Находит все возвращаемые накладные
*/
List<ReturnImJournalOrders> getAllReturnImJournalOrders();
/**
* Находит все описи для данной накладной. Список упорядочен по id операции
* @param numberOrd номер накладной
......
package com.cdek.warehouse.dao.gateway;
import com.cdek.transport.model.ek4sync.*;
import java.util.List;
/**
* DAO для получения возвратной ведомости и возвращаемой накладной из ek4
*/
public interface ReturnImJournalDAO {
/**
* Возвращает заголовки возвратных ведомостей по id
*
* @param ids - список id
* @return - список возвратных ведомостей
*/
List<ReturnImJournal> findReturnImJournals(List<Long> ids);
/**
* Возвращает возвращаемые накладные по id
*
* @param ids - список id
* @return - список возвращаемых накладных
*/
List<ReturnImJournalOrders> findReturnImJournalOrders(List<Long> ids);
}
......@@ -87,6 +87,20 @@ public class Ek4SyncObjectsDAOImpl implements Ek4SyncObjectsDAO {
}
}
@Override
public void saveReturnImJournals(List<ReturnImJournal> entities) {
for (ReturnImJournal entity : entities) {
insert(Ek4SyncConstants.RETURN_IM_JOURNAL, entity);
}
}
@Override
public void saveReturnImJournalOrders(List<ReturnImJournalOrders> entities) {
for (ReturnImJournalOrders entity : entities) {
insert(Ek4SyncConstants.RETURN_IM_JOURNAL_ORDERS, entity);
}
}
@Override
public List<OpisZagolovok> getAllOpisZagolovoks() {
return getAll(Ek4SyncConstants.OPIS_ZAGOLOVOK, OpisZagolovok.class);
......@@ -132,6 +146,16 @@ public class Ek4SyncObjectsDAOImpl implements Ek4SyncObjectsDAO {
return getAll(Ek4SyncConstants.LIST_ID_ORDERS, ListIdOrders.class);
}
@Override
public List<ReturnImJournal> getAllReturnImJournals() {
return getAll(Ek4SyncConstants.RETURN_IM_JOURNAL, ReturnImJournal.class);
}
@Override
public List<ReturnImJournalOrders> getAllReturnImJournalOrders() {
return getAll(Ek4SyncConstants.RETURN_IM_JOURNAL_ORDERS, ReturnImJournalOrders.class);
}
@Override
public List<OpisZagolovok> getAllOpisByWaybill(long numberOrd) {
String sql = "SELECT oz.* FROM " + schemaName + "." + Ek4SyncConstants.OPIS_ZAGOLOVOK + " oz INNER JOIN " +
......
package com.cdek.warehouse.dao.gateway.impl;
import com.cdek.transport.model.Ek4SyncConstants;
import com.cdek.transport.model.ek4sync.*;
import com.cdek.warehouse.dao.gateway.ReturnImJournalDAO;
import org.apache.commons.lang.ArrayUtils;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.ArrayList;
import java.util.List;
/**
* Реализация ReturnImJournalDAO {@link ReturnImJournalDAO}
*/
public class ReturnImJournalDAOImpl implements ReturnImJournalDAO {
private JdbcTemplate jdbcTemplate;
private static final String SELECT_RETURN_JOURNAL =
"select x.ID, x.Date, x.ID_skladcity, x.ID_pvz, x.ID_city, x.ID_tocity, x.ID_topvz, x.ID_client, x.ID_client_im_uslov_seller," +
" x.Number, x.IsManual, x.OrderType, x.ID_sost, s4.ID_user return_id_user, s4.Date return_date_create, o.ID return_id_order," +
" o.NumberOrd return_numberord from (select r.ID, r.Date, r.ID_skladcity, r.ID_pvz, r.ID_city, r.ID_tocity, r.ID_topvz," +
" r.ID_client, r.ID_client_im_uslov_seller, r.Number, r.ID_sost, r.IsManual, r.OrderType, ifnull((select max(s.ID) from %s s" +
" where s.ID_return_im_journal=r.ID and s.ID_sost=4),0) id_sost4 from %s r where r.ID in (%s) order by r.ID) x" +
" left join %s s4 on x.id_sost4>0 and s4.ID=x.id_sost4 left join %s rw on rw.ID_return_im_journal=x.ID left join %s o on o.ID=rw.ID_order";
private static final String SELECT_RETURN_JOURNAL_ORDERS =
"select r.ID_return_im_journal, r.ID_order, r.ID_sost, r.ID_del_reason, r.Date, r.ID_user, o.NumberOrd from %s r join %s o on o.ID=r.ID_order" +
" where r.ID_return_im_journal in (%s) order by r.ID_return_im_journal, o.NumberOrd";
@Override
public List<ReturnImJournal> findReturnImJournals(List<Long> ids) {
List<String> tableNamesBefore = new ArrayList<>();
tableNamesBefore.add(Ek4SyncConstants.RETURN_IM_JOURNAL_SOSTSHIFT_TABLE);
tableNamesBefore.add(Ek4SyncConstants.RETURN_IM_JOURNAL_TABLE);
List<String> tableNamesAfter = new ArrayList<>();
tableNamesAfter.add(Ek4SyncConstants.RETURN_IM_JOURNAL_SOSTSHIFT_TABLE);
tableNamesAfter.add(Ek4SyncConstants.RETURN_IM_JOURNAL_RETURN_ORDERS_TABLE);
tableNamesAfter.add(Ek4SyncConstants.ORDERS_TABLE);
return getEntitiesByIds(SELECT_RETURN_JOURNAL, tableNamesBefore, tableNamesAfter, ids, ReturnImJournal.class);
}
@Override
public List<ReturnImJournalOrders> findReturnImJournalOrders(List<Long> ids) {
List<String> tableNames = new ArrayList<>();
tableNames.add(Ek4SyncConstants.RETURN_IM_JOURNAL_ORDERS_TABLE);
tableNames.add(Ek4SyncConstants.ORDERS_TABLE);
return getEntitiesByIds(SELECT_RETURN_JOURNAL_ORDERS, tableNames, ids, ReturnImJournalOrders.class);
}
/**
* Получает данные из таблиц по id (все таблицы идут до id)
*/
private <T> List<T> getEntitiesByIds(String sql, List<String> tableName, List<Long> ids, Class<T> clazz) {
String query = getSql(sql, tableName, ids);
BeanPropertyRowMapper rowMapper = new BeanPropertyRowMapper<>(clazz);
return this.jdbcTemplate.query(query, rowMapper);
}
/**
* Получает данные из таблиц по id (таблицы идут и после id)
*/
private <T> List<T> getEntitiesByIds(String sql, List<String> tableNamesBefore, List<String> tableNamesAfter, List<Long> ids, Class<T> clazz) {
String query = getSql(sql, tableNamesBefore, tableNamesAfter, ids);
BeanPropertyRowMapper rowMapper = new BeanPropertyRowMapper<>(clazz);
return this.jdbcTemplate.query(query, rowMapper);
}
/**
* Получает запрос с названиями таблиц и id (все таблицы идут до id)
*/
private String getSql(String sql, List<String> tableNames, List<Long> ids) {
List<String> params = new ArrayList<>();
params.addAll(tableNames);
params.add(ArrayUtils.toString(ids.toArray()).replace("{", "").replace("}", ""));
String query = String.format(sql, params.toArray());
return query;
}
/**
* Получает запрос с названиями таблиц и id (таблицы идут и после id)
*/
private String getSql(String sql, List<String> tableNamesBefore, List<String> tableNamesAfter, List<Long> ids) {
List<String> params = new ArrayList<>();
params.addAll(tableNamesBefore);
params.add(ArrayUtils.toString(ids.toArray()).replace("{", "").replace("}", ""));
if (tableNamesAfter != null) {
params.addAll(tableNamesAfter);
}
String query = String.format(sql, params.toArray());
return query;
}
@Required
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}
......@@ -513,6 +513,10 @@
p:jdbcTemplate-ref="jdbcTemplate"
/>
<bean id="returnImJournalDAO" class="com.cdek.warehouse.dao.gateway.impl.ReturnImJournalDAOImpl"
p:jdbcTemplate-ref="jdbcTemplate"
/>
</beans>
......
......@@ -262,4 +262,63 @@ create index waybill_item_index_barcode
on waybill_item (barcode)
;
CREATE TABLE return_im_journal
(
ID INT PRIMARY KEY NOT NULL,
Number VARCHAR(12) NOT NULL,
Date timestamp NOT NULL,
ID_client INT NOT NULL,
ID_city INT NOT NULL,
ID_tocity INT NOT NULL,
ID_sost INT NOT NULL,
ID_pvz INT NOT NULL,
ID_client_im_uslov_seller INT NOT NULL,
ID_topvz INT NOT NULL,
IsManual INT NOT NULL,
OrderType INT NOT NULL,
ID_skladcity INT NOT NULL,
return_date_create timestamp,
return_ID_user INT,
return_ID_order INT,
return_NumberOrd INT
);
CREATE UNIQUE INDEX return_im_journal_ID_uindex ON return_im_journal (ID);
COMMENT ON COLUMN return_im_journal.ID IS 'Уникальный идентификатор Возвратной Ведомости';
COMMENT ON COLUMN return_im_journal.Number IS 'Номер ведомости (с префиксом города) (буквеночисловое имя)';
COMMENT ON COLUMN return_im_journal.Date IS 'Дата ведомости (не содержит время)';
COMMENT ON COLUMN return_im_journal.ID_client IS 'Клиент ИМ (контрагент), Клиент до кого производится возврат';
COMMENT ON COLUMN return_im_journal.ID_city IS 'Город географический в котором создали ведомость (где находятся накладные)';
COMMENT ON COLUMN return_im_journal.ID_tocity IS 'Город географический, куда будет отправлена ведомость (накладные)';
COMMENT ON COLUMN return_im_journal.ID_sost IS 'Состояние ведомости: 1-Создан, 2-Отправлен на согласование, 3-Согласован с отправителем, 4-Оформлен возврат, 5-Возвращен, 6-Удален';
COMMENT ON COLUMN return_im_journal.ID_pvz IS 'ПВЗ с которого формируется возврат';
COMMENT ON COLUMN return_im_journal.ID_client_im_uslov_seller IS 'Продавец';
COMMENT ON COLUMN return_im_journal.ID_topvz IS 'ПВЗ куда производится возврат, для тарифов до склада (т.е. ПВЗ в городе куда будет отправлена ведомость)';
COMMENT ON COLUMN return_im_journal.IsManual IS 'Сделана вручную';
COMMENT ON COLUMN return_im_journal.OrderType IS 'Тип накладных в ведомости';
COMMENT ON COLUMN return_im_journal.ID_skladcity IS 'Город склада ПВЗ формирования, может быть виртуальным городом и тогда отличается от географического города ID_city';
COMMENT ON COLUMN return_im_journal.return_date_create IS 'Дата и время создания Возвратной Накладной';
COMMENT ON COLUMN return_im_journal.return_ID_user IS 'Пользователь Сформировавший Возвратную Накладную';
COMMENT ON COLUMN return_im_journal.return_ID_order IS 'Уникальный идентификатор Возвратной Накладной';
COMMENT ON COLUMN return_im_journal.return_NumberOrd IS 'Номер Возвратной Накладной';
COMMENT ON TABLE return_im_journal IS 'Структура данных передаваемая из ЭК4 для Возвратной ведомости';
CREATE TABLE return_im_journal_orders
(
ID_return_im_journal INT PRIMARY KEY NOT NULL,
ID_order INT NOT NULL,
ID_sost INT NOT NULL,
ID_del_reason INT,
Date timestamp NOT NULL,
ID_user INT NOT NULL,
NumberOrd INT
);
CREATE UNIQUE INDEX return_im_journal_ID_return_im_journal_uindex ON return_im_journal_orders (ID_return_im_journal);
COMMENT ON COLUMN return_im_journal_orders.ID_return_im_journal IS 'Уникальный идентификатор Возвратной Ведомости';
COMMENT ON COLUMN return_im_journal_orders.ID_order IS 'Уникальный идентификатор Возвращаемой Накладной';
COMMENT ON COLUMN return_im_journal_orders.ID_sost IS 'Состояние накладной в ведомости 1-Добавлена, 2-Отсканирована(Находится внутри возвратной накладной), 3-Удалена';
COMMENT ON COLUMN return_im_journal_orders.ID_del_reason IS 'Причина удаления';
COMMENT ON COLUMN return_im_journal_orders.Date IS 'Дата изменения состояния';
COMMENT ON COLUMN return_im_journal_orders.ID_user IS 'ID пользователя, который изменил состояние';
COMMENT ON COLUMN return_im_journal_orders.NumberOrd IS 'Номер Возвращаемой Накладной';
COMMENT ON TABLE return_im_journal_orders IS 'Структура данных передаваемая из ЭК4 для Возвращаемой накладной';
\ No newline at end of file
......@@ -4,6 +4,7 @@ import com.cdek.transport.model.ek4sync.*;
import com.cdek.warehouse.dao.gateway.Ek4SyncObjectsDAO;
import com.cdek.warehouse.dao.randomizer.CommonEnhancedRandomBuilder;
import com.github.springtestdbunit.TransactionDbUnitTestExecutionListener;
import com.github.springtestdbunit.annotation.DatabaseTearDown;
import io.github.benas.randombeans.api.EnhancedRandom;
import io.github.benas.randombeans.randomizers.DoubleRandomizer;
import org.apache.commons.beanutils.PropertyUtils;
......@@ -33,6 +34,7 @@ import static org.junit.Assert.assertEquals;
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class, TransactionDbUnitTestExecutionListener.class})
@Transactional
@ActiveProfiles("ek4sync")
@DatabaseTearDown("/entries/cleaning_ek4sync.xml")
public class Ek4SyncObjectsDAOImplTest {
protected static EnhancedRandom enhancedRandom;
......@@ -156,6 +158,30 @@ public class Ek4SyncObjectsDAOImplTest {
}
@Test
public void saveReturnImJournals() {
ReturnImJournal entity = createReturnImJournals();
ek4SyncObjectsDAO.saveReturnImJournals(Collections.singletonList(entity));
List<ReturnImJournal> persistentList = ek4SyncObjectsDAO.getAllReturnImJournals();
assertEquals(1, persistentList.size());
ReturnImJournal persistent = persistentList.get(0);
compare(entity, persistent);
}
@Test
public void saveReturnImJournalOrders() {
ReturnImJournalOrders entity = createReturnImJournalOrders();
ek4SyncObjectsDAO.saveReturnImJournalOrders(Collections.singletonList(entity));
List<ReturnImJournalOrders> persistentList = ek4SyncObjectsDAO.getAllReturnImJournalOrders();
assertEquals(1, persistentList.size());
ReturnImJournalOrders persistent = persistentList.get(0);
compare(entity, persistent);
}
@Test
public void getAllOpisByWaybill() {
long numOrd = 111L;
......@@ -232,10 +258,8 @@ public class Ek4SyncObjectsDAOImplTest {
}
private Sending createSending() {
Sending entity = enhancedRandom.nextObject(Sending.class, "weight", "volume");
Sending entity = enhancedRandom.nextObject(Sending.class);
Double randomThree = BigDecimal.valueOf(new DoubleRandomizer().getRandomValue()).setScale(3, BigDecimal.ROUND_HALF_DOWN).doubleValue();
entity.setWeight(randomThree.toString());
entity.setVolume(randomThree.toString());
return entity;
}
......@@ -255,6 +279,14 @@ public class Ek4SyncObjectsDAOImplTest {
return enhancedRandom.nextObject(ListIdOrders.class);
}
private ReturnImJournal createReturnImJournals() {
return enhancedRandom.nextObject(ReturnImJournal.class);
}
private ReturnImJournalOrders createReturnImJournalOrders() {
return enhancedRandom.nextObject(ReturnImJournalOrders.class);
}
protected void compare(Object obj1, Object obj2) {
try {
Map<String, Object> map1 = PropertyUtils.describe(obj1);
......
package com.cdek.warehouse.dao.gateway.impl;
import com.cdek.transport.model.ek4sync.*;
import com.cdek.warehouse.dao.gateway.ReturnImJournalDAO;
import com.github.springtestdbunit.TransactionDbUnitTestExecutionListener;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestExecutionListeners;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:com-cdek-warehouse-dao-ek4sync-test.xml"})
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class, TransactionDbUnitTestExecutionListener.class})
@Transactional
@ActiveProfiles("ek4sync")
public class ReturnImJournalDAOImplTest {
@Autowired
private ReturnImJournalDAO returnImJournalDAO;
@Test
public void testReturnImJournals() throws Exception {
List<Long> ids = new ArrayList<>();
ids.add(269203L);
ids.add(272494L);
List<ReturnImJournal> returnImJournals = returnImJournalDAO.findReturnImJournals(ids);
Assert.assertNotNull(returnImJournals);
Assert.assertEquals(2, returnImJournals.size());
Assert.assertEquals(ids.get(0), Long.valueOf(returnImJournals.get(0).getId()));
Assert.assertEquals(ids.get(1), Long.valueOf(returnImJournals.get(1).getId()));
returnImJournals.forEach(returnImJournal -> {
Assert.assertNotNull(returnImJournal.getId());
Assert.assertNotNull(returnImJournal.getNumber());
Assert.assertNotNull(returnImJournal.getDate());
Assert.assertNotNull(returnImJournal.getId_client());
Assert.assertNotNull(returnImJournal.getId_city());
Assert.assertNotNull(returnImJournal.getId_tocity());
Assert.assertNotNull(returnImJournal.getId_sost());
Assert.assertNotNull(returnImJournal.getId_pvz());
Assert.assertNotNull(returnImJournal.getId_client_im_uslov_seller());
Assert.assertNotNull(returnImJournal.getId_topvz());
Assert.assertNotNull(returnImJournal.getIsmanual());
Assert.assertNotNull(returnImJournal.getOrdertype());
Assert.assertNotNull(returnImJournal.getId_skladcity());
});
}
@Test
public void testReturnImJournalOrders() throws Exception {
List<Long> ids = new ArrayList<>();
ids.add(296L);
List<ReturnImJournalOrders> returnImJournalOrders = returnImJournalDAO.findReturnImJournalOrders(ids);
Assert.assertNotNull(returnImJournalOrders);
Assert.assertEquals(40, returnImJournalOrders.size());
returnImJournalOrders.forEach(returnImJournalOrder -> {
Assert.assertEquals(ids.get(0), Long.valueOf(returnImJournalOrder.getId_return_im_journal()));
Assert.assertNotNull(returnImJournalOrder.getId_return_im_journal());
Assert.assertNotNull(returnImJournalOrder.getId_order());
Assert.assertNotNull(returnImJournalOrder.getId_sost());
Assert.assertNotNull(returnImJournalOrder.getDate());
Assert.assertNotNull(returnImJournalOrder.getId_user());
});
}
}
\ No newline at end of file
......@@ -29,7 +29,8 @@ public class SendingDAOImplTest {
@Autowired
private SendingDAO sendingDAO;
@Test //todo поля DateOut, DateRec, DateRecPlan могут быть пустыми
@Test //todo поля volume, DateOut, DateRec, DateRecPlan могут быть пустыми
@Ignore
public void testSendings() throws Exception {
List<Long> ids = new ArrayList<>();
ids.add(3L);
......
......@@ -21,10 +21,7 @@ import com.cdek.transport.model.waybill.WaybillItem;
import io.github.benas.randombeans.EnhancedRandomBuilder;
import io.github.benas.randombeans.api.EnhancedRandom;
import io.github.benas.randombeans.randomizers.*;
import io.github.benas.randombeans.randomizers.range.DoubleRangeRandomizer;
import io.github.benas.randombeans.randomizers.range.IntegerRangeRandomizer;
import io.github.benas.randombeans.randomizers.range.LongRangeRandomizer;
import io.github.benas.randombeans.randomizers.range.StringLengthRandomizer;
import io.github.benas.randombeans.randomizers.range.*;
import java.util.Date;
......@@ -264,6 +261,8 @@ public class CommonEnhancedRandomBuilder {
addSendingSendProblemBuilderParams(builder);
addSendingReceiveProblemBuilderParams(builder);
addListIdOrdersBuilderParams(builder);
addReturnImJournalBuilderParams(builder);
addReturnImJournalOrdersBuilderParams(builder);
return builder.build();
}
......@@ -815,7 +814,9 @@ public class CommonEnhancedRandomBuilder {
.randomize(field().named("transport_naklad").ofType(String.class).inClass(Sending.class).get(), stringForm10To20)
.randomize(field().named("dateout").ofType(Date.class).inClass(Sending.class).get(), new SqlDateRandomizer())
.randomize(field().named("daterec").ofType(Date.class).inClass(Sending.class).get(), new SqlDateRandomizer())
.randomize(field().named("daterecplan").ofType(Date.class).inClass(Sending.class).get(), new SqlDateRandomizer());
.randomize(field().named("daterecplan").ofType(Date.class).inClass(Sending.class).get(), new SqlDateRandomizer())
.randomize(field().named("weight").ofType(double.class).inClass(Sending.class).get(), new DoubleRangeRandomizer(1.0, 11.0))
.randomize(field().named("volume").ofType(float.class).inClass(Sending.class).get(), new FloatRangeRandomizer(1f, 11f));
}
private static void addSendingOpisBuilderParams(EnhancedRandomBuilder builder) {
......@@ -847,4 +848,36 @@ public class CommonEnhancedRandomBuilder {
.randomize(field().named("id").ofType(long.class).inClass(ListIdOrders.class).get(), new LongRangeRandomizer(10L, 100L))
.randomize(field().named("numberord").ofType(String.class).inClass(ListIdOrders.class).get(), stringForm10To20);
}
private static void addReturnImJournalBuilderParams(EnhancedRandomBuilder builder) {
builder
.randomize(field().named("id").ofType(long.class).inClass(ReturnImJournal.class).get(), new LongRangeRandomizer(10L, 100L))
.randomize(field().named("number").ofType(String.class).inClass(ReturnImJournal.class).get(), stringForm6To6)
.randomize(field().named("date").ofType(Date.class).inClass(ReturnImJournal.class).get(), new SqlDateRandomizer())
.randomize(field().named("id_client").ofType(int.class).inClass(ReturnImJournal.class).get(), new IntegerRangeRandomizer(1, 1000000))
.randomize(field().named("id_city").ofType(int.class).inClass(ReturnImJournal.class).get(), new IntegerRangeRandomizer(10, 1000000))
.randomize(field().named("id_tocity").ofType(int.class).inClass(ReturnImJournal.class).get(), new IntegerRangeRandomizer(10, 1000000))
.randomize(field().named("id_sost").ofType(int.class).inClass(ReturnImJournal.class).get(), new IntegerRangeRandomizer(10, 1000000))
.randomize(field().named("id_pvz").ofType(long.class).inClass(ReturnImJournal.class).get(), new LongRangeRandomizer(10L, 100L))
.randomize(field().named("id_client_im_uslov_seller").ofType(long.class).inClass(ReturnImJournal.class).get(), new LongRangeRandomizer(10L, 100L))
.randomize(field().named("id_topvz").ofType(long.class).inClass(ReturnImJournal.class).get(), new LongRangeRandomizer(10L, 100L))
.randomize(field().named("ismanual").ofType(int.class).inClass(ReturnImJournal.class).get(), new IntegerRangeRandomizer(10, 1000000))
.randomize(field().named("ordertype").ofType(int.class).inClass(ReturnImJournal.class).get(), new IntegerRangeRandomizer(10, 1000000))
.randomize(field().named("id_skladcity").ofType(int.class).inClass(ReturnImJournal.class).get(), new IntegerRangeRandomizer(10, 1000000))
.randomize(field().named("return_date_create").ofType(Date.class).inClass(ReturnImJournal.class).get(), new SqlDateRandomizer())
.randomize(field().named("return_id_user").ofType(Integer.class).inClass(ReturnImJournal.class).get(), new IntegerRangeRandomizer(1, 1000))
.randomize(field().named("return_id_order").ofType(Long.class).inClass(ReturnImJournal.class).get(), new LongRangeRandomizer(1L, 1000L))
.randomize(field().named("return_numberord").ofType(Long.class).inClass(ReturnImJournal.class).get(), new LongRangeRandomizer(1L, 1000L));
}
private static void addReturnImJournalOrdersBuilderParams(EnhancedRandomBuilder builder) {
builder
.randomize(field().named("id_return_im_journal").ofType(long.class).inClass(ReturnImJournalOrders.class).get(), new LongRangeRandomizer(10L, 100L))
.randomize(field().named("id_order").ofType(long.class).inClass(ReturnImJournalOrders.class).get(), new LongRangeRandomizer(10L, 100L))
.randomize(field().named("id_sost").ofType(int.class).inClass(ReturnImJournalOrders.class).get(), new IntegerRangeRandomizer(10, 1000000))
.randomize(field().named("id_del_reason").ofType(Integer.class).inClass(ReturnImJournalOrders.class).get(), new IntegerRangeRandomizer(1, 1000))
.randomize(field().named("date").ofType(Date.class).inClass(ReturnImJournalOrders.class).get(), new SqlDateRandomizer())
.randomize(field().named("id_user").ofType(int.class).inClass(ReturnImJournalOrders.class).get(), new IntegerRangeRandomizer(10, 1000000))
.randomize(field().named("numberord").ofType(Long.class).inClass(ReturnImJournalOrders.class).get(), new LongRangeRandomizer(1L, 1000L));
}
}
......@@ -41,6 +41,10 @@
p:jdbcTemplate-ref="jdbcTemplateEk4"
/>
<bean id="returnImJournalDAO" class="com.cdek.warehouse.dao.gateway.impl.ReturnImJournalDAOImpl"
p:jdbcTemplate-ref="jdbcTemplateEk4"
/>
</beans>
......
<dataset>
<!--shipment-dao-->
<opis_zagolovok />
<opis_orders />
<opis_plomba />
<opis_transit />
<sending />
<sending_opis/>
<sending_send_problem/>
<sending_receive_problem/>
<list_ID_orders/>
<waybill/>
<waybill_item/>
<return_im_journal/>
<return_im_journal_orders/>
</dataset>
\ No newline at end of file
jdbc.schema5=ek4sync
jdbc.driverClassName5=org.postgresql.Driver
jdbc.url5=jdbc:postgresql://localhost:5432/warehouse_test?stringtype=unspecified&currentSchema=ek4sync
jdbc.username5=${test.jdbc.username}
jdbc.password5=${test.jdbc.password}
jdbc.driverClassName4=com.mysql.jdbc.Driver
jdbc.url4=jdbc:mysql://185.58.223.89:3310/express40
......
......@@ -49,6 +49,16 @@ public interface Ek4SyncConstants {
*/
String LIST_ID_ORDERS = "list_ID_orders";
/**
* Название таблицы возвратных ведомостей в ек5
*/
String RETURN_IM_JOURNAL = "return_im_journal";
/**
* Название таблицы возвращаемых накладных в ек5
*/
String RETURN_IM_JOURNAL_ORDERS = "return_im_journal_orders";
/**
* Название таблицы описей в ек4
*/
......@@ -99,5 +109,30 @@ public interface Ek4SyncConstants {
*/
static final String SENDING_REC_PROBLEM_TABLE = "sending_rec_note";
/**
* Название таблицы заголовка возвратной ведомости в ек4
*/
static final String RETURN_IM_JOURNAL_TABLE = "return_im_journal";
/**
* Название таблицы состояния возвратной ведомости в ек4
*/
static final String RETURN_IM_JOURNAL_SOSTSHIFT_TABLE = "return_im_journal_sostshift";
/**
* Название таблицы возвращаемой накладной в ек4
*/
static final String RETURN_IM_JOURNAL_RETURN_ORDERS_TABLE = "return_im_journal_return_orders";
/**
* Название таблицы накладной в ек4
*/
static final String ORDERS_TABLE = "orders";
/**
* Название таблицы журнала накладной в ек4
*/
static final String RETURN_IM_JOURNAL_ORDERS_TABLE = "return_im_journal_orders";
}
......@@ -4,5 +4,6 @@ package com.cdek.transport.model.ek4sync;
public enum ChainEntityType {
PRIH_OPIS,
RASH_OPIS,
SENDING
SENDING,
RETURN
}
package com.cdek.transport.model.ek4sync;
import java.sql.Timestamp;
/**
* Заголовок возвратной ведомости
*/
public class ReturnImJournal extends Ek4SyncObject implements ChainEntity {
/**
* Уникальный идентификатор Возвратной Ведомости
*/
private long id;
/**
* Номер ведомости (с префиксом города) (буквеночисловое имя)
*/
private String number;
/**
* Дата ведомости (не содержит время)
*/
private Timestamp date;
/**
* Клиент ИМ (контрагент), Клиент до кого производится возврат
*/
private int id_client;
/**
* Город географический в котором создали ведомость (где находятся накладные)
*/
private int id_city;
/**
* Город географический, куда будет отправлена ведомость (накладные)
*/
private int id_tocity;
/**
* Состояние ведомости:
* 1-Создан, 2-Отправлен на согласование, 3-Согласован с отправителем,
* 4-Оформлен возврат, 5-Возвращен, 6-Удален
*/
private int id_sost;
/**
* ПВЗ с которого формируется возврат
*/
private long id_pvz;
/**
* Продавец
*/
private long id_client_im_uslov_seller;
/**
* ПВЗ куда производится возврат, для тарифов до склада (т.е. ПВЗ в городе куда будет отправлена ведомость)
*/
private long id_topvz;
/**
* Сделана вручную
*/
private int ismanual;
/**
* Тип накладных в ведомости
*/
private int ordertype;
/**
* Город склада ПВЗ формирования, может быть виртуальным городом и тогда отличается от географического города ID_city
*/
private int id_skladcity;
/**
* Дата и время создания Возвратной Накладной
*/
private Timestamp return_date_create;
/**
* Пользователь Сформировавший Возвратную Накладную
*/
private Integer return_id_user;
/**
* Уникальный идентификатор Возвратной Накладной
*/
private Long return_id_order;
/**
* Номер Возвратной Накладной
*/
private Long return_numberord;
@Override
public long getId() {
return id;
}
@Override
public long getCity() {
return getId_city();
}
@Override
public void setCity(long city) {
setId_city(Integer.valueOf(String.valueOf(city)));
}
@Override
public long getCityFrom() {
return getId_city();
}
@Override
public void setCityFrom(long cityFrom) {
setCity(cityFrom);
}
@Override
public long getCityTo() {
return getId_tocity();
}
@Override
public void setCityTo(long cityTo) {
setId_tocity(Integer.valueOf(String.valueOf(cityTo)));
}
@Override
public ChainEntityType getEntityType() {
return ChainEntityType.RETURN;
}
@Override
public void setEntityType(ChainEntityType type) {
}
public void setId(long id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public Timestamp getDate() {
return date;
}
public void setDate(Timestamp date) {
this.date = date;
}
public int getId_client() {
return id_client;
}
public void setId_client(int id_client) {
this.id_client = id_client;
}
public int getId_city() {
return id_city;
}
public void setId_city(int id_city) {
this.id_city = id_city;
}
public int getId_tocity() {
return id_tocity;
}
public void setId_tocity(int id_tocity) {
this.id_tocity = id_tocity;
}
public int getId_sost() {
return id_sost;
}
public void setId_sost(int id_sost) {
this.id_sost = id_sost;
}
public long getId_pvz() {
return id_pvz;
}
public void setId_pvz(long id_pvz) {
this.id_pvz = id_pvz;
}
public long getId_client_im_uslov_seller() {
return id_client_im_uslov_seller;
}
public void setId_client_im_uslov_seller(long id_client_im_uslov_seller) {
this.id_client_im_uslov_seller = id_client_im_uslov_seller;
}
public long getId_topvz() {
return id_topvz;
}
public void setId_topvz(long id_topvz) {
this.id_topvz = id_topvz;
}
public int getIsmanual() {
return ismanual;
}
public void setIsmanual(int ismanual) {
this.ismanual = ismanual;
}
public int getOrdertype() {
return ordertype;
}
public void setOrdertype(int ordertype) {
this.ordertype = ordertype;
}
public int getId_skladcity() {
return id_skladcity;
}
public void setId_skladcity(int id_skladcity) {
this.id_skladcity = id_skladcity;
}
public Timestamp getReturn_date_create() {
return return_date_create;
}
public void setReturn_date_create(Timestamp return_date_create) {
this.return_date_create = return_date_create;
}
public Integer getReturn_id_user() {
return return_id_user;
}
public void setReturn_id_user(Integer return_id_user) {
this.return_id_user = return_id_user;
}
public Long getReturn_id_order() {
return return_id_order;
}
public void setReturn_id_order(Long return_id_order) {
this.return_id_order = return_id_order;
}
public Long getReturn_numberord() {
return return_numberord;
}
public void setReturn_numberord(Long return_numberord) {
this.return_numberord = return_numberord;
}
}
package com.cdek.transport.model.ek4sync;
import java.sql.Timestamp;
/**
* Возвращаемая накладная
*/
public class ReturnImJournalOrders extends Ek4SyncObject {
/**
* Уникальный идентификатор Возвратной Ведомости
*/
private long id_return_im_journal;
/**
* Уникальный идентификатор Возвращаемой Накладной
*/
private long id_order;
/**
* Состояние накладной в ведомости:
* 1-Добавлена, 2-Отсканирована (Находится внутри возвратной накладной), 3-Удалена
*/
private int id_sost;
/**
* Причина удаления
*/
private Integer id_del_reason;
/**
* Дата изменения состояния
*/
private Timestamp date;
/**
* ID пользователя, который изменил состояние
*/
private int id_user;
/**
* Номер Возвращаемой Накладной
*/
private Long numberord;
public long getId_return_im_journal() {
return id_return_im_journal;
}
public void setId_return_im_journal(long id_return_im_journal) {
this.id_return_im_journal = id_return_im_journal;
}
public long getId_order() {
return id_order;
}
public void setId_order(long id_order) {
this.id_order = id_order;
}
public int getId_sost() {
return id_sost;
}
public void setId_sost(int id_sost) {
this.id_sost = id_sost;
}
public Integer getId_del_reason() {
return id_del_reason;
}
public void setId_del_reason(Integer id_del_reason) {
this.id_del_reason = id_del_reason;
}
public Timestamp getDate() {
return date;
}
public void setDate(Timestamp date) {
this.date = date;
}
public int getId_user() {
return id_user;
}
public void setId_user(int id_user) {
this.id_user = id_user;
}
public Long getNumberord() {
return numberord;
}
public void setNumberord(Long numberord) {
this.numberord = numberord;
}
}
......@@ -16,8 +16,8 @@ public class Sending extends Ek4SyncObject implements ChainEntity {
private Timestamp dateout;
private Timestamp daterec;
private Timestamp daterecplan;
private String weight;
private String volume;
private double weight;
private float volume;
@Override
public long getId() {
......@@ -145,20 +145,20 @@ public class Sending extends Ek4SyncObject implements ChainEntity {
}
public String getWeight() {
public double getWeight() {
return weight;
}
public void setWeight(String weight) {
public void setWeight(double weight) {
this.weight = weight;
}
public String getVolume() {
public float getVolume() {
return volume;
}
public void setVolume(String volume) {
public void setVolume(float volume) {
this.volume = volume;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment