Commit d04192f1 by wutong

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

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