Commit 4236061d by yinyong

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

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