Commit 4236061d by yinyong

实时缺货计算更改-JIT保底库存,INSET SELECT拆分

parent bd98e7a0
...@@ -104,6 +104,7 @@ public class CrmRefundSyncJob extends PointJob { ...@@ -104,6 +104,7 @@ public class CrmRefundSyncJob extends PointJob {
} }
if(dcBaseOmsOrder != null) { if(dcBaseOmsOrder != null) {
dcBaseCrmRefund.setOrderStatus(dcBaseOmsOrder.getBailunOrderStatus()); dcBaseCrmRefund.setOrderStatus(dcBaseOmsOrder.getBailunOrderStatus());
dcBaseCrmRefund.setShippingStatus(dcBaseOmsOrder.getBailunShippingStatus());
if("FBA".equals(dcBaseCrmRefund.getPlatformType().toUpperCase())) { if("FBA".equals(dcBaseCrmRefund.getPlatformType().toUpperCase())) {
dcBaseCrmRefund.setShippingStatus("TotalShipping"); dcBaseCrmRefund.setShippingStatus("TotalShipping");
} }
......
package com.bailuntec.domain.dto;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class OutStockQuantity {
private String bailunSku;
private String warehouseCode;
private Integer quantityOutStock;
private LocalDateTime gmtOutStockModified;
}
package com.bailuntec.mapper; package com.bailuntec.mapper;
import com.bailuntec.domain.dto.OutStockQuantity;
import com.bailuntec.domain.entity.DcMidTransit; import com.bailuntec.domain.entity.DcMidTransit;
import com.bailuntec.domain.example.DcMidTransitExample; import com.bailuntec.domain.example.DcMidTransitExample;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -7,6 +8,7 @@ import org.apache.ibatis.annotations.Select; ...@@ -7,6 +8,7 @@ import org.apache.ibatis.annotations.Select;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Map;
public interface DcMidTransitMapper { public interface DcMidTransitMapper {
/** /**
...@@ -130,7 +132,9 @@ public interface DcMidTransitMapper { ...@@ -130,7 +132,9 @@ public interface DcMidTransitMapper {
void insertMidDailyTransit(); void insertMidDailyTransit();
void calculateOutStock(); List<OutStockQuantity> selectQuantityOutStock();
void calculateOutStock(OutStockQuantity outStockQuantity);
@Select("select @@tx_isolation;") @Select("select @@tx_isolation;")
String printTransactionLevel(); String printTransactionLevel();
......
...@@ -754,13 +754,11 @@ ...@@ -754,13 +754,11 @@
update dc_daily_transit t1, dc_base_sku t2 set t1.unit_price = t2.unit_price WHERE t1.record_time = DATE_SUB( CURDATE( ), INTERVAL 1 DAY ) and t1.bailun_sku=t2.bailun_sku update dc_daily_transit t1, dc_base_sku t2 set t1.unit_price = t2.unit_price WHERE t1.record_time = DATE_SUB( CURDATE( ), INTERVAL 1 DAY ) and t1.bailun_sku=t2.bailun_sku
</update> </update>
<insert id="calculateOutStock"> <select id="selectQuantityOutStock" resultType="com.bailuntec.domain.dto.OutStockQuantity">
insert into dc_mid_transit(bailun_sku, warehouse_code, quantity_out_stock,gmt_out_stock_modified)
SELECT SELECT
t1.bailun_sku, t1.bailun_sku as bailunSku,
t1.warehouse_code, t1.warehouse_code as warehouseCode,
t1.bailun_sku_quantity_ordered - t1.bailun_sku_quantity_pushed - t2.usable_stock - t2.occupy_stock, t1.bailun_sku_quantity_ordered - t1.bailun_sku_quantity_pushed - t2.usable_stock - t2.occupy_stock + ifnull(t3.safe_stock, 0) as quantityOutStock
CURRENT_TIMESTAMP
FROM FROM
( (
SELECT SELECT
...@@ -782,8 +780,16 @@ ...@@ -782,8 +780,16 @@
bailun_sku, bailun_sku,
warehouse_code warehouse_code
) t1 INNER JOIN dc_base_stock t2 ON t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code ) t1 INNER JOIN dc_base_stock t2 ON t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code
WHERE (t1.bailun_sku_quantity_ordered - t1.bailun_sku_quantity_pushed - t2.usable_stock - t2.occupy_stock) >= 0 LEFT JOIN dc_auto_jit_inventory t3 ON t1.bailun_sku=t3.bailun_sku and t1.warehouse_code=t3.warehouse_code
ON DUPLICATE KEY UPDATE quantity_out_stock = VALUES(quantity_out_stock),gmt_out_stock_modified = VALUES(gmt_out_stock_modified) WHERE (t1.bailun_sku_quantity_ordered - t1.bailun_sku_quantity_pushed - t2.usable_stock - t2.occupy_stock + ifnull(t3.safe_stock, 0)) >= 0
</select>
<insert id="calculateOutStock">
insert into dc_mid_transit(bailun_sku, warehouse_code, quantity_out_stock,gmt_out_stock_modified)
values(
#{bailunSku,jdbcType=VARCHAR}, #{warehouseCode,jdbcType=VARCHAR}, #{quantityOutStock,jdbcType=INTEGER}, #{gmtOutStockModified,jdbcType=TIMESTAMP}
)
ON DUPLICATE KEY UPDATE quantity_out_stock = #{quantityOutStock,jdbcType=INTEGER},gmt_out_stock_modified = #{gmtOutStockModified,jdbcType=TIMESTAMP}
</insert> </insert>
<update id="updateOldOutStockToZero"> <update id="updateOldOutStockToZero">
update dc_mid_transit set quantity_out_stock =0 where gmt_out_stock_modified &lt; #{outStockModified,jdbcType=TIMESTAMP} update dc_mid_transit set quantity_out_stock =0 where gmt_out_stock_modified &lt; #{outStockModified,jdbcType=TIMESTAMP}
......
package com.bailuntec.job; package com.bailuntec.job;
import com.bailuntec.domain.dto.OutStockQuantity;
import com.bailuntec.mapper.DcMidTransitMapper; import com.bailuntec.mapper.DcMidTransitMapper;
import com.bailuntec.utils.SessionUtil; import com.bailuntec.utils.SessionUtil;
import com.dangdang.ddframe.job.api.ShardingContext; import com.dangdang.ddframe.job.api.ShardingContext;
...@@ -9,6 +10,7 @@ import org.apache.ibatis.session.SqlSession; ...@@ -9,6 +10,7 @@ import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.TransactionIsolationLevel; import org.apache.ibatis.session.TransactionIsolationLevel;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Slf4j @Slf4j
public class CalculateOutStockJob implements SimpleJob { public class CalculateOutStockJob implements SimpleJob {
...@@ -18,7 +20,12 @@ public class CalculateOutStockJob implements SimpleJob { ...@@ -18,7 +20,12 @@ public class CalculateOutStockJob implements SimpleJob {
SqlSession sqlSession = SessionUtil.getFactory().openSession(TransactionIsolationLevel.READ_UNCOMMITTED); SqlSession sqlSession = SessionUtil.getFactory().openSession(TransactionIsolationLevel.READ_UNCOMMITTED);
try { try {
DcMidTransitMapper mapper = sqlSession.getMapper(DcMidTransitMapper.class); DcMidTransitMapper mapper = sqlSession.getMapper(DcMidTransitMapper.class);
mapper.calculateOutStock(); List<OutStockQuantity> listQuantityOutStock = mapper.selectQuantityOutStock();
LocalDateTime localDateTime = LocalDateTime.now();
for(OutStockQuantity outStockQuantity: listQuantityOutStock) {
outStockQuantity.setGmtOutStockModified(localDateTime);
mapper.calculateOutStock(outStockQuantity);
}
sqlSession.commit(); sqlSession.commit();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
......
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