Commit 0299e65c by yinyong

自动周转--仓库周销量、系数计算,仓库-sku销量计算

parent 535d4b14
......@@ -70,4 +70,5 @@ public class SalesVolumeWeekDTO {
private BigDecimal fiftyTwoWeekRate;
private String salesDetail;
private String rateDetail;
}
......@@ -2681,7 +2681,69 @@
</select>-->
<select id="getSalesVolumeWeekDTO" resultType="com.bailuntec.domain.dto.SalesVolumeWeekDTO">
SELECT bailun_sku,
select
bailun_sku,
warehouse_code,oneWeekRate,twoWeekRate,threeWeekRate,fourthWeekRate,fiveWeekRate,sixWeekRate,sevenWeekRate,eightWeekRate,nineWeekRate,tenWeekRate,elevenWeekRate,twelveWeekRate, thridteenWeekRate, fourteenWeekRate,fifteenWeekRate,
sixteenWeekRate,seventeenWeekRate,eighteenWeekRate, nineteenWeekRate, twentyWeekRate, twentyOneWeekRate,twentyTwoWeekRate, twentyThreeWeekRate,twentyFourthWeekRate,twentyFiveWeekRate, twentySixWeekRate,twentySeveneWeekRate,
twentyEightWeekRate, twentyNineWeekRate,thirtyWeekRate,thirtyOneWeekRate,thirtyTwoWeekRate,thirtyThreeWeekRate, thirtyFourthWeekRate, thirtyFiveWeekRate, thirtySixWeekRate,thirtySeveneWeekRate, thirtyEightWeekRate, thirtyNineWeekRate, fortyWeekRate,
fortyOneWeekRate,fortyTwoWeekRate,fortyThreeWeekRate, fortyFourthWeekRate, fortyFiveWeekRate, fortySixWeekRate, fortySeveneWeekRate,fortyEightWeekRate, fortyNineWeekRate, fiftyWeekRate,fiftyOneWeekRate,
fiftyTwoWeekRate,salesDetail,
CONCAT_WS(
',',
oneWeekRate,
twoWeekRate,
threeWeekRate,
fourthWeekRate,
fiveWeekRate,
sixWeekRate,
sevenWeekRate,
eightWeekRate,
nineWeekRate,
tenWeekRate,
elevenWeekRate,
twelveWeekRate,
thridteenWeekRate,
fourteenWeekRate,
fifteenWeekRate,
sixteenWeekRate,
seventeenWeekRate,
eighteenWeekRate,
nineteenWeekRate,
twentyWeekRate,
twentyOneWeekRate,
twentyTwoWeekRate,
twentyThreeWeekRate,
twentyFourthWeekRate,
twentyFiveWeekRate,
twentySixWeekRate,
twentySeveneWeekRate,
twentyEightWeekRate,
twentyNineWeekRate,
thirtyWeekRate,
thirtyOneWeekRate,
thirtyTwoWeekRate,
thirtyThreeWeekRate,
thirtyFourthWeekRate,
thirtyFiveWeekRate,
thirtySixWeekRate,
thirtySeveneWeekRate,
thirtyEightWeekRate,
thirtyNineWeekRate,
fortyWeekRate,
fortyOneWeekRate,
fortyTwoWeekRate,
fortyThreeWeekRate,
fortyFourthWeekRate,
fortyFiveWeekRate,
fortySixWeekRate,
fortySeveneWeekRate,
fortyEightWeekRate,
fortyNineWeekRate,
fiftyWeekRate,
fiftyOneWeekRate,
fiftyTwoWeekRate
) AS 'rateDetail'
from (SELECT bailun_sku,
warehouse_code,
case when oneWeekSales = 0 then 0 else 1 end as oneWeekRate,
case when (oneWeekSales = 0 and twoWeekSales = 0) then 0 when (oneWeekSales = 0 and twoWeekSales != 0) then 1 else twoWeekSales/oneWeekSales end as twoWeekRate,
......@@ -2855,7 +2917,7 @@
<if test="bailunSku != null and bailunSku != ''">
and bailun_sku = #{bailunSku}
</if>
and warehouse_code = #{warehouseCode})sales_table
and warehouse_code = #{warehouseCode})sales_table)sales_table1
</select>
<select id="getPlatformHistorySales" resultType="com.bailuntec.domain.dto.SalesVolumeAvgDTO">
......
......@@ -121,4 +121,6 @@ public interface DcAutoWeekSalesMapper {
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
int upsertSelective(DcAutoWeekSales record);
int warehouseUpsertSelective(DcAutoWeekSales record);
}
\ No newline at end of file
package com.bailuntec.job;
import com.bailuntec.domain.dto.SalesVolumeWeekDTO;
import com.bailuntec.domain.entity.DcAutoWeekSales;
import com.bailuntec.domain.entity.DcBaseWarehouse;
import com.bailuntec.domain.entity.JobPointLog;
import com.bailuntec.domain.example.DcBaseWarehouseExample;
import com.bailuntec.mapper.*;
import com.bailuntec.support.PointJob;
import com.bailuntec.utils.ExceptionUtil;
import com.bailuntec.utils.SessionUtil;
import com.dangdang.ddframe.job.api.ShardingContext;
import com.sun.org.apache.regexp.internal.RE;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import java.text.MessageFormat;
import java.util.List;
public class CalculateWarehouseWeekJob extends PointJob {
@Override
public void executeJob(ShardingContext shardingContext, JobPointLog jobPointLog) {
try{
long count = 0;
DcBaseWarehouseMapper dcBaseWarehouseMapper = SessionUtil.getSession().getMapper(DcBaseWarehouseMapper.class);
count = dcBaseWarehouseMapper.countByExample(DcBaseWarehouseExample.newAndCreateCriteria().example());
/*if (StringUtils.isBlank(shardingContext.getJobParameter())) {
count = dcBaseWarehouseMapper.countByExample(DcBaseWarehouseExample.newAndCreateCriteria().example());
} else {
count = dcBaseWarehouseMapper.countByExample(DcBaseWarehouseExample.newAndCreateCriteria().andHqTypeEqualTo(shardingContext.getJobParameter()).example());
}*/
int totalPage = (int)(count % jobPointLog.getPageSize() == 0 ? count/jobPointLog.getPageSize() : count/jobPointLog.getPageSize() + 1);
do{
List<DcBaseWarehouse> dcBaseWarehouses = null;//分页查SKU_仓库
if (jobPointLog.getPageIndex().equals(0)) {
jobPointLog.setPageIndex(totalPage);
}
try {
dcBaseWarehouseMapper = SessionUtil.getSession().getMapper(DcBaseWarehouseMapper.class);
/*if (StringUtils.isBlank(shardingContext.getJobParameter())) {
dcBaseWarehouses = dcBaseWarehouseMapper.selectByExample(DcBaseWarehouseExample.newAndCreateCriteria().example().page(jobPointLog.getPageIndex()*jobPointLog.getPageSize(), jobPointLog.getPageSize()));
}else{
dcBaseWarehouses = dcBaseWarehouseMapper.selectByExample(DcBaseWarehouseExample.newAndCreateCriteria().andHqTypeEqualTo(shardingContext.getJobParameter()).example().page(jobPointLog.getPageIndex()*jobPointLog.getPageSize(), jobPointLog.getPageSize()));
}*/
dcBaseWarehouses = dcBaseWarehouseMapper.selectByExample(DcBaseWarehouseExample.newAndCreateCriteria().example().page(jobPointLog.getPageIndex() - 1, jobPointLog.getPageSize()));
DcAutoSalesMapper autoSalesMapper = null;
if (dcBaseWarehouses != null && dcBaseWarehouses.size() > 0) {
for (DcBaseWarehouse dcBaseWarehouse : dcBaseWarehouses) {
autoSalesMapper = SessionUtil.getSession().getMapper(DcAutoSalesMapper.class);
SalesVolumeWeekDTO salesVolumeWeekDTO = autoSalesMapper.getSalesVolumeWeekDTO("", dcBaseWarehouse.getWarehouseCode());
if(StringUtils.isNotEmpty(salesVolumeWeekDTO.getSalesDetail().trim())) {
calculateWeekRate(salesVolumeWeekDTO);
}
}
}
}catch (Exception e){
e.printStackTrace();
}finally {
SessionUtil.closeSession();
}
if (jobPointLog.getPageIndex() % 10 == 0) {
try {
JobPointLogMapper mapper = SessionUtil.getSession().getMapper(JobPointLogMapper.class);
mapper.upsertSelective(jobPointLog);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(ExceptionUtil.transform(e), e);
} finally {
SessionUtil.closeSession();
}
}
jobPointLog.setPageIndex(jobPointLog.getPageIndex() - 1);
}while(0 < jobPointLog.getPageIndex());
jobPointLog.setPageIndex(0);
}catch (Exception e){
e.printStackTrace();
}finally {
SessionUtil.closeSession();
}
}
public void calculateWeekRate(SalesVolumeWeekDTO salesVolumeWeekDTO) {
try{
DcAutoWeekSales dcAutoWeekSales = new DcAutoWeekSales();
DcAutoWeekSalesMapper dcAutoWeekSalesMapper = SessionUtil.getSession().getMapper(DcAutoWeekSalesMapper.class);
BeanUtils.copyProperties(dcAutoWeekSales, salesVolumeWeekDTO);
dcAutoWeekSales.setSaleDetail(salesVolumeWeekDTO.getSalesDetail());
dcAutoWeekSales.setRateDetail(salesVolumeWeekDTO.getRateDetail());
dcAutoWeekSalesMapper.warehouseUpsertSelective(dcAutoWeekSales);
}catch (Exception e){
e.printStackTrace();
}finally {
SessionUtil.closeSession();
}
}
}
......@@ -45,7 +45,7 @@ public class CalculateWeekJob extends PointJob {
if (StringUtils.isBlank(shardingContext.getJobParameter())) {
dcBaseStockList = baseStockMapperFor.listStockById(jobPointLog.getPageIndex()*jobPointLog.getPageSize(), jobPointLog.getPageSize());
}else{
dcBaseStockList = baseStockMapperFor.listStockWarehouseById(jobPointLog.getPageIndex()*jobPointLog.getPageSize(), jobPointLog.getPageSize(), shardingContext.getJobParameter());
dcBaseStockList = baseStockMapperFor.listStockWarehouseById((jobPointLog.getPageIndex() - 1)*jobPointLog.getPageSize(), jobPointLog.getPageSize(), shardingContext.getJobParameter());
}
DcAutoSalesMapper autoSalesMapper = null;
if (dcBaseStockList != null && dcBaseStockList.size() > 0) {
......
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