Commit d04192f1 by wutong

修改计算头程费均值逻辑.

parent a01f7127
......@@ -11,6 +11,7 @@ import com.bailuntec.mapper.*;
import com.bailuntec.support.PointJob;
import com.bailuntec.utils.SessionUtil;
import com.dangdang.ddframe.job.api.ShardingContext;
import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal;
import java.math.RoundingMode;
......@@ -18,6 +19,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
public class CalculateCostFirstJob extends PointJob {
@Override
......@@ -34,27 +36,27 @@ public class CalculateCostFirstJob extends PointJob {
}
int totalPage = getChannelOrderPage(countChannelOrder,jobPointLog);
do {
List<CostFirstOrder> channelOrderIdList = null;
try {
DcBaseCostFirstMapper dcBaseCostFirstMapper = SessionUtil.getSession().getMapper(DcBaseCostFirstMapper.class);
//拿到物流单号,调拨单号, 将物流单-调拨单中每个SKU的费用算出来
List<CostFirstOrder> channelOrderIdList = dcBaseCostFirstMapper.listChannelOrderId(jobPointLog.getPageIndex() * jobPointLog.getPageSize(), jobPointLog.getPageSize());
if (channelOrderIdList != null && channelOrderIdList.size() > 0) {
for (CostFirstOrder costFirstOrder : channelOrderIdList) {
DcBaseCostFirstMapper dcBaseCostFirstMapperFor = SessionUtil.getSession().getMapper(DcBaseCostFirstMapper.class);
List<DcBaseCostFirst> dcBaseCostFirsts = dcBaseCostFirstMapperFor.selectByExample(DcBaseCostFirstExample.newAndCreateCriteria().andChannelOrderIdEqualTo(costFirstOrder.getChannelOrderId()).andTransferOrderIdEqualTo(costFirstOrder.getTransferOrderId()).example());
handleChannelOrderSku(dcBaseCostFirsts);
}
}
channelOrderIdList = dcBaseCostFirstMapper.listChannelOrderId(jobPointLog.getPageIndex() * jobPointLog.getPageSize(), jobPointLog.getPageSize());
JobPointLogMapper jobPointLogMapper = SessionUtil.getSession().getMapper(JobPointLogMapper.class);
if (jobPointLog.getPageIndex() % 5 == 0) {
jobPointLogMapper.upsertSelective(jobPointLog);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("MYBATIS操作DB失败", e);
throw new RuntimeException("MYBATIS操作DB分页失败", e);
} finally {
SessionUtil.closeSession();
}
if (channelOrderIdList != null && channelOrderIdList.size() > 0) {
for (CostFirstOrder costFirstOrder : channelOrderIdList) {
DcBaseCostFirstMapper dcBaseCostFirstMapperFor = SessionUtil.getSession().getMapper(DcBaseCostFirstMapper.class);
List<DcBaseCostFirst> dcBaseCostFirsts = dcBaseCostFirstMapperFor.selectByExample(DcBaseCostFirstExample.newAndCreateCriteria().andChannelOrderIdEqualTo(costFirstOrder.getChannelOrderId()).andTransferOrderIdEqualTo(costFirstOrder.getTransferOrderId()).example());
handleChannelOrderSku(dcBaseCostFirsts);
}
}
jobPointLog.setPageIndex(jobPointLog.getPageIndex() + 1);
} while (jobPointLog.getPageIndex().intValue() <= totalPage);
jobPointLog.setPageIndex(0);
......@@ -66,19 +68,20 @@ public class CalculateCostFirstJob extends PointJob {
//物流单的总重量
BigDecimal totalWeight = BigDecimal.ZERO;
for (DcBaseCostFirst dcBaseCostFirst : dcBaseCostFirsts) {
log.warn(dcBaseCostFirst.getBailunSku()+"---" +dcBaseCostFirst.getChannelOrderId()+"---" +dcBaseCostFirst.getTransferOrderId());
DcBaseSku dcBaseSku = null;
try {
DcBaseSkuMapper dcBaseSkuMapper = SessionUtil.getSession().getMapper(DcBaseSkuMapper.class);
dcBaseSku = dcBaseSkuMapper.selectOneByExample(DcBaseSkuExample.newAndCreateCriteria().andBailunSkuEqualTo(dcBaseCostFirst.getBailunSku()).example());
} catch (Exception e) {
throw new RuntimeException("MYBATIS操作DB失败");
throw new RuntimeException("MYBATIS操作DB查询SKU失败");
} finally {
SessionUtil.closeSession();
}
//物流单内单位SKU多个quantity的总重量
BigDecimal skuTotalWeight = dcBaseSku.getWeight().multiply(BigDecimal.valueOf(dcBaseCostFirst.getQuantity()));
BigDecimal skuTotalWeight = (dcBaseSku != null?dcBaseSku.getWeight() : BigDecimal.ZERO).multiply(BigDecimal.valueOf(dcBaseCostFirst.getQuantity()));
totalWeight = totalWeight.add(skuTotalWeight);
DcBaseCostFirst dcBaseCostFirstInMap = map.get(dcBaseSku.getBailunSku());
DcBaseCostFirst dcBaseCostFirstInMap = map.get(dcBaseCostFirst.getBailunSku());
if (dcBaseCostFirstInMap == null) {
dcBaseCostFirst.setSkuWeight(skuTotalWeight);
dcBaseCostFirst.setQuantity(dcBaseCostFirst.getQuantity());
......@@ -86,7 +89,7 @@ public class CalculateCostFirstJob extends PointJob {
dcBaseCostFirst.setSkuWeight(dcBaseCostFirstInMap.getSkuWeight().add(skuTotalWeight));
dcBaseCostFirst.setQuantity(dcBaseCostFirstInMap.getQuantity() + dcBaseCostFirst.getQuantity());
}
map.put(dcBaseSku.getBailunSku(), dcBaseCostFirst);
map.put(dcBaseCostFirst.getBailunSku(), dcBaseCostFirst);
}
/*
......@@ -104,8 +107,8 @@ public class CalculateCostFirstJob extends PointJob {
dcMidCostFirstOrder.setTransferOrderId(dcBaseCostFirst.getTransferOrderId());
dcMidCostFirstOrder.setQuantity(dcBaseCostFirst.getQuantity());
dcMidCostFirstOrder.setWeightRatio(skuWeightRatio);
//将费用算到单个SKU上
dcMidCostFirstOrder.setCostFirst(skuCostFirst.divide(BigDecimal.valueOf(dcBaseCostFirst.getQuantity()), 3, RoundingMode.HALF_EVEN));
//将费用放到SKU上
dcMidCostFirstOrder.setCostFirst(skuCostFirst);
try {
DcMidCostFirstOrderMapper dcMidCostFirstOrderMapper = SessionUtil.getSession().getMapper(DcMidCostFirstOrderMapper.class);
int i = dcMidCostFirstOrderMapper.updateByExampleSelective(dcMidCostFirstOrder, DcMidCostFirstOrderExample.newAndCreateCriteria().andBailunSkuEqualTo(dcMidCostFirstOrder.getBailunSku()).andChannelOrderIdEqualTo(dcMidCostFirstOrder.getChannelOrderId()).example());
......
......@@ -458,6 +458,6 @@
</select>
<select id="listSkuWarehouse" resultType="com.bailuntec.domain.pojo.MidCostFirst">
SELECT bailun_sku,warehouse_code,sum(cost_first) as total_cost_first,count(*) as total_count FROM dc_mid_cost_first_order GROUP BY bailun_sku,warehouse_code order by id asc limit #{v1}, #{v2}
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>
</mapper>
\ No newline at end of file
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