Commit d2a3b199 by wutong

修复计划头程费Mapper映射错误

parent 4c3804fd
package com.bailuntec.job;
import com.bailuntec.domain.constant.CommonConstant;
import com.bailuntec.domain.constant.Constant;
import com.bailuntec.domain.entity.*;
import com.bailuntec.domain.example.DcBaseCostFirstExample;
import com.bailuntec.domain.example.DcBaseSkuExample;
import com.bailuntec.domain.example.DcMidCostFirstExample;
import com.bailuntec.domain.example.DcMidCostFirstOrderExample;
import com.bailuntec.domain.pojo.CostFirstOrder;
import com.bailuntec.domain.pojo.MidCostFirst;
import com.bailuntec.mapper.*;
import com.bailuntec.support.PointJob;
import com.bailuntec.utils.SessionUtil;
......@@ -60,6 +61,40 @@ public class CalculateCostFirstJob extends PointJob {
jobPointLog.setPageIndex(jobPointLog.getPageIndex() + 1);
} while (jobPointLog.getPageIndex().intValue() <= totalPage);
jobPointLog.setPageIndex(0);
try {
DcMidCostFirstOrderMapper dcMidCostFirstOrderMapper = SessionUtil.getSession().getMapper(DcMidCostFirstOrderMapper.class);
DcMidCostFirstConfigMapper dcMidCostFirstConfigMapper = SessionUtil.getSession().getMapper(DcMidCostFirstConfigMapper.class);
DcMidCostFirstMapper dcMidCostFirsMapper = SessionUtil.getSession().getMapper(DcMidCostFirstMapper.class);
int countSkuWarehouse = dcMidCostFirstOrderMapper.countSkuWarehouse();
int skuWarehouseTotalPage = getSkuWarehouseTotalPage(countSkuWarehouse);
int index = 0;
do {
List<MidCostFirst> midCostFirstList = dcMidCostFirstOrderMapper.listSkuWarehouse(index * Constant.PAGE_SIZE,Constant.PAGE_SIZE);
if (midCostFirstList != null && midCostFirstList.size() > 0) {
DcMidCostFirst dcMidCostFirst = new DcMidCostFirst();
for (MidCostFirst midCostFirst : midCostFirstList) {
dcMidCostFirst.setBailunSku(midCostFirst.getBailunSku());
dcMidCostFirst.setWarehouseCode(midCostFirst.getWarehouseCode());
BigDecimal costFirst = midCostFirst.getTotalCostFirst().divide(BigDecimal.valueOf(midCostFirst.getTotalCount()), 3 , RoundingMode.HALF_EVEN);
DcMidCostFirstConfig dcMidCostFirstConfig = dcMidCostFirstConfigMapper.getConfig(dcMidCostFirst.getBailunSku(),dcMidCostFirst.getWarehouseCode());
dcMidCostFirst.setCostFirst(costFirst);
if (dcMidCostFirstConfig != null) {
dcMidCostFirst.setCostFirst((costFirst.add(dcMidCostFirstConfig.getCostFirstConfig())).divide(BigDecimal.valueOf(2), 3, RoundingMode.HALF_EVEN));
}
int i = dcMidCostFirsMapper.updateByExampleSelective(dcMidCostFirst, DcMidCostFirstExample.newAndCreateCriteria().andBailunSkuEqualTo(dcMidCostFirst.getBailunSku()).andWarehouseCodeEqualTo(dcMidCostFirst.getWarehouseCode()).example());
if (i == 0) {
dcMidCostFirsMapper.insertSelective(dcMidCostFirst);
}
}
}
index++;
} while (index < skuWarehouseTotalPage);
} catch (Exception e) {
throw new RuntimeException("在计算头程费到DcMidCostFirst时失败", e);
} finally {
SessionUtil.closeSession();
}
}
public void handleChannelOrderSku(List<DcBaseCostFirst> dcBaseCostFirsts) {
......@@ -132,4 +167,11 @@ public class CalculateCostFirstJob extends PointJob {
}
return countChannelOrder / jobPointLog.getPageSize() + 1;
}
private int getSkuWarehouseTotalPage(int countSkuWarehouse) {
if (countSkuWarehouse % Constant.PAGE_SIZE == 0) {
return countSkuWarehouse / Constant.PAGE_SIZE;
}
return countSkuWarehouse / Constant.PAGE_SIZE + 1;
}
}
package com.bailuntec.listener;
import com.bailuntec.domain.constant.Constant;
import com.bailuntec.domain.entity.DcMidCostFirst;
import com.bailuntec.domain.entity.DcMidCostFirstConfig;
import com.bailuntec.domain.example.DcMidCostFirstExample;
import com.bailuntec.domain.pojo.MidCostFirst;
import com.bailuntec.mapper.DcMidCostFirstConfigMapper;
import com.bailuntec.mapper.DcMidCostFirstMapper;
import com.bailuntec.mapper.DcMidCostFirstOrderMapper;
import com.bailuntec.utils.SessionUtil;
import com.dangdang.ddframe.job.executor.ShardingContexts;
import com.dangdang.ddframe.job.lite.api.listener.ElasticJobListener;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
public class CalculateCostFirstListener implements ElasticJobListener {
@Override
......@@ -25,45 +12,8 @@ public class CalculateCostFirstListener implements ElasticJobListener {
@Override
public void afterJobExecuted(ShardingContexts shardingContexts) {
try {
DcMidCostFirstOrderMapper dcMidCostFirstOrderMapper = SessionUtil.getSession().getMapper(DcMidCostFirstOrderMapper.class);
DcMidCostFirstConfigMapper dcMidCostFirstConfigMapper = SessionUtil.getSession().getMapper(DcMidCostFirstConfigMapper.class);
DcMidCostFirstMapper dcMidCostFirsMapper = SessionUtil.getSession().getMapper(DcMidCostFirstMapper.class);
int countSkuWarehouse = dcMidCostFirstOrderMapper.countSkuWarehouse();
int skuWarehouseTotalPage = getSkuWarehouseTotalPage(countSkuWarehouse);
int index = 0;
do {
List<MidCostFirst> midCostFirstList = dcMidCostFirstOrderMapper.listSkuWarehouse(index * Constant.PAGE_SIZE,Constant.PAGE_SIZE);
if (midCostFirstList != null && midCostFirstList.size() > 0) {
DcMidCostFirst dcMidCostFirst = new DcMidCostFirst();
for (MidCostFirst midCostFirst : midCostFirstList) {
dcMidCostFirst.setBailunSku(midCostFirst.getBailunSku());
dcMidCostFirst.setWarehouseCode(midCostFirst.getWarehouseCode());
BigDecimal costFirst = midCostFirst.getTotalCostFirst().divide(BigDecimal.valueOf(midCostFirst.getTotalCount()), 3 , RoundingMode.HALF_EVEN);
DcMidCostFirstConfig dcMidCostFirstConfig = dcMidCostFirstConfigMapper.getConfig(dcMidCostFirst.getBailunSku(),dcMidCostFirst.getWarehouseCode());
dcMidCostFirst.setCostFirst(costFirst);
if (dcMidCostFirstConfig != null) {
dcMidCostFirst.setCostFirst((costFirst.add(dcMidCostFirstConfig.getCostFirstConfig())).divide(BigDecimal.valueOf(2), 3, RoundingMode.HALF_EVEN));
}
int i = dcMidCostFirsMapper.updateByExampleSelective(dcMidCostFirst,DcMidCostFirstExample.newAndCreateCriteria().andBailunSkuEqualTo(dcMidCostFirst.getBailunSku()).andWarehouseCodeEqualTo(dcMidCostFirst.getWarehouseCode()).example());
if (i == 0) {
dcMidCostFirsMapper.insertSelective(dcMidCostFirst);
}
}
}
index++;
} while (index < skuWarehouseTotalPage);
} catch (Exception e) {
throw new RuntimeException("在计算头程费到DcMidCostFirst时失败");
} finally {
SessionUtil.closeSession();
}
}
private int getSkuWarehouseTotalPage(int countSkuWarehouse) {
if (countSkuWarehouse % Constant.PAGE_SIZE == 0) {
return countSkuWarehouse / Constant.PAGE_SIZE;
}
return countSkuWarehouse / Constant.PAGE_SIZE + 1;
}
}
......@@ -372,4 +372,10 @@
</if>
limit 1
</select>
<select id="getConfig" resultType="com.bailuntec.domain.entity.DcMidCostFirstConfig">
SELECT tb2.* from (SELECT warehouse_code,area_id FROM dc_base_warehouse WHERE warehouse_code=#{warehouseCode} ) tb1 LEFT JOIN dc_mid_cost_first_config tb2 on tb2.bailun_sku=#{bailunSku}
and (tb2.area_id = 0 or tb1.area_id=tb2.area_id or tb1.warehouse_code=tb2.warehouse_code)
order by tb2.warehouse_code desc ,tb2.area_id desc limit 1
</select>
</mapper>
\ No newline at end of file
......@@ -461,9 +461,5 @@
SELECT bailun_sku,warehouse_code,sum(cost_first) as total_cost_first,sum(quantity) as total_count FROM dc_mid_cost_first_order GROUP BY bailun_sku,warehouse_code order by id asc limit #{v1}, #{v2}
</select>
<select id="" resultType="com.bailuntec.domain.entity.DcMidCostFirstConfig">
SELECT tb2.* from (SELECT warehouse_code,area_id FROM dc_base_warehouse WHERE warehouse_code=#{warehouseCode}) tb1 LEFT JOIN dc_mid_cost_first_config tb2 on tb2.bailun_sku=#{bailunSku}
and (tb2.area_id = 0 or tb1.area_id=tb2.area_id or tb1.warehouse_code=tb2.warehouse_code)
order by tb2.warehouse_code desc ,tb2.area_id desc limit 1
</select>
</mapper>
\ No newline at end of file
import com.bailuntec.domain.constant.Constant;
import com.bailuntec.domain.entity.DcBaseCostFirst;
import com.bailuntec.domain.entity.DcMidCostFirst;
import com.bailuntec.domain.entity.DcMidCostFirstConfig;
import com.bailuntec.domain.example.DcBaseCostFirstExample;
import com.bailuntec.domain.example.DcMidCostFirstExample;
import com.bailuntec.domain.pojo.CostFirstOrder;
import com.bailuntec.domain.pojo.MidCostFirst;
import com.bailuntec.job.CalculateCostFirstJob;
import com.bailuntec.listener.CalculateCostFirstListener;
import com.bailuntec.mapper.DcBaseCostFirstMapper;
import com.bailuntec.mapper.DcMidCostFirstConfigMapper;
import com.bailuntec.mapper.DcMidCostFirstMapper;
import com.bailuntec.mapper.DcMidCostFirstOrderMapper;
import com.bailuntec.utils.SessionUtil;
import org.junit.jupiter.api.Test;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
public class CostFirstTest {
......@@ -36,7 +45,44 @@ public class CostFirstTest {
}
@Test
public void test1() {
CalculateCostFirstListener calculateCostFirstListener = new CalculateCostFirstListener();
calculateCostFirstListener.afterJobExecuted(null);
try {
DcMidCostFirstOrderMapper dcMidCostFirstOrderMapper = SessionUtil.getSession().getMapper(DcMidCostFirstOrderMapper.class);
DcMidCostFirstConfigMapper dcMidCostFirstConfigMapper = SessionUtil.getSession().getMapper(DcMidCostFirstConfigMapper.class);
DcMidCostFirstMapper dcMidCostFirsMapper = SessionUtil.getSession().getMapper(DcMidCostFirstMapper.class);
int countSkuWarehouse = dcMidCostFirstOrderMapper.countSkuWarehouse();
int skuWarehouseTotalPage = getSkuWarehouseTotalPage(countSkuWarehouse);
int index = 0;
do {
List<MidCostFirst> midCostFirstList = dcMidCostFirstOrderMapper.listSkuWarehouse(index * Constant.PAGE_SIZE,Constant.PAGE_SIZE);
if (midCostFirstList != null && midCostFirstList.size() > 0) {
DcMidCostFirst dcMidCostFirst = new DcMidCostFirst();
for (MidCostFirst midCostFirst : midCostFirstList) {
dcMidCostFirst.setBailunSku(midCostFirst.getBailunSku());
dcMidCostFirst.setWarehouseCode(midCostFirst.getWarehouseCode());
BigDecimal costFirst = midCostFirst.getTotalCostFirst().divide(BigDecimal.valueOf(midCostFirst.getTotalCount()), 3 , RoundingMode.HALF_EVEN);
DcMidCostFirstConfig dcMidCostFirstConfig = dcMidCostFirstConfigMapper.getConfig(dcMidCostFirst.getBailunSku(),dcMidCostFirst.getWarehouseCode());
dcMidCostFirst.setCostFirst(costFirst);
if (dcMidCostFirstConfig != null) {
dcMidCostFirst.setCostFirst((costFirst.add(dcMidCostFirstConfig.getCostFirstConfig())).divide(BigDecimal.valueOf(2), 3, RoundingMode.HALF_EVEN));
}
int i = dcMidCostFirsMapper.updateByExampleSelective(dcMidCostFirst, DcMidCostFirstExample.newAndCreateCriteria().andBailunSkuEqualTo(dcMidCostFirst.getBailunSku()).andWarehouseCodeEqualTo(dcMidCostFirst.getWarehouseCode()).example());
if (i == 0) {
dcMidCostFirsMapper.insertSelective(dcMidCostFirst);
}
}
}
index++;
} while (index < skuWarehouseTotalPage);
} catch (Exception e) {
throw new RuntimeException("在计算头程费到DcMidCostFirst时失败", e);
} finally {
SessionUtil.closeSession();
}
}
private int getSkuWarehouseTotalPage(int countSkuWarehouse) {
if (countSkuWarehouse % Constant.PAGE_SIZE == 0) {
return countSkuWarehouse / Constant.PAGE_SIZE;
}
return countSkuWarehouse / Constant.PAGE_SIZE + 1;
}
}
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