Commit 09f1a03e by yinyong

缺货、采购在途、调拨在途计算拆分

parent 553a4c7a
package com.bailuntec.domain.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class PurchaseTransitQuantity {
private String bailunSku;
private String warehouseCode;
private Integer count;
private BigDecimal amountPurchaseTransit;
private LocalDateTime gmtPurchaseTransitModified;
}
package com.bailuntec.domain.dto;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class TransferTransitQuantity {
private String bailunSku;
private String warehouseCode;
private Integer count;
private LocalDateTime gmtTransferTransitModified;
}
......@@ -1192,7 +1192,7 @@
</select>
<insert id="insertDailyStock">
INSERT INTO dc_daily_stock_temp (
INSERT INTO dc_daily_stock (
`bailun_sku`,
`warehouse_code`,
`owner_code`,
......
package com.bailuntec.mapper;
import com.bailuntec.domain.dto.OutStockQuantity;
import com.bailuntec.domain.dto.PurchaseTransitQuantity;
import com.bailuntec.domain.dto.TransferTransitQuantity;
import com.bailuntec.domain.entity.DcMidTransit;
import com.bailuntec.domain.example.DcMidTransitExample;
import org.apache.ibatis.annotations.Param;
......@@ -126,15 +128,17 @@ public interface DcMidTransitMapper {
*/
int upsertSelective(DcMidTransit record);
void calculateTransferTransit();
void calculateTransferTransit(@Param("list") List<TransferTransitQuantity> list, @Param("localDateTime") LocalDateTime localDateTime);
void calculatePurchaseTransit();
void calculatePurchaseTransit(@Param("list") List<PurchaseTransitQuantity> list, @Param("localDateTime") LocalDateTime localDateTime);
void insertMidDailyTransit();
List<OutStockQuantity> selectQuantityOutStock();
List<PurchaseTransitQuantity> selectQuantityPurchaseTransit();
List<TransferTransitQuantity> selectQuantityTransferTransit();
void calculateOutStock(OutStockQuantity outStockQuantity);
void calculateOutStock(@Param("list") List<OutStockQuantity> list, @Param("localDateTime") LocalDateTime localDateTime);
@Select("select @@tx_isolation;")
String printTransactionLevel();
......
......@@ -589,15 +589,11 @@
limit 1
</select>
<insert id="calculateTransferTransit">
insert into dc_mid_transit(bailun_sku, warehouse_code, quantity_transfer, gmt_transfer_modified)
SELECT
bailun_sku,
warehouse_code,
sum( count ),
CURRENT_TIMESTAMP
<select id="selectQuantityTransferTransit" resultType="com.bailuntec.domain.dto.TransferTransitQuantity">
SELECT
bailun_sku as bailunSku,
warehouse_code as warehouseCode,
sum( count ) as count
FROM
(
SELECT
......@@ -668,18 +664,96 @@
GROUP BY
bailun_sku,
warehouse_code
ON DUPLICATE KEY UPDATE quantity_transfer = VALUES(quantity_transfer),
gmt_transfer_modified = VALUES(gmt_transfer_modified)
</select>
<insert id="calculateTransferTransit">
insert into dc_mid_transit(bailun_sku, warehouse_code, quantity_transfer, gmt_transfer_modified)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.bailunSku,jdbcType=VARCHAR}, #{item.warehouseCode,jdbcType=VARCHAR}, #{item.count,jdbcType=INTEGER}, #{localDateTime,jdbcType=TIMESTAMP}
)
</foreach>
ON DUPLICATE KEY UPDATE quantity_transfer = values(quantity_transfer),
gmt_transfer_modified = values(gmt_transfer_modified)
</insert>
<insert id="calculatePurchaseTransit">
insert into dc_mid_transit(bailun_sku, warehouse_code, quantity_purchase,amount_purchase_transit,gmt_purchase_modified)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.bailunSku,jdbcType=VARCHAR}, #{item.warehouseCode,jdbcType=VARCHAR}, #{item.count,jdbcType=INTEGER}, #{item.amountPurchaseTransit,jdbcType=DECIMAL}, #{localDateTime,jdbcType=TIMESTAMP}
)
</foreach>
ON DUPLICATE KEY UPDATE quantity_purchase = values(quantity_purchase), amount_purchase_transit = values(amount_purchase_transit), gmt_purchase_modified = values(gmt_purchase_modified)
</insert>
<insert id="calculateOutStock">
insert into dc_mid_transit(bailun_sku, warehouse_code, quantity_out_stock,gmt_out_stock_modified)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.bailunSku,jdbcType=VARCHAR}, #{item.warehouseCode,jdbcType=VARCHAR}, #{item.quantityOutStock,jdbcType=INTEGER}, #{localDateTime,jdbcType=TIMESTAMP}
)
</foreach>
ON DUPLICATE KEY UPDATE quantity_out_stock = values(quantity_out_stock) ,gmt_out_stock_modified = values(gmt_out_stock_modified)
</insert>
<insert id="insertMidDailyTransit">
INSERT into dc_daily_transit (
`bailun_sku` ,
`warehouse_code`,
`quantity_purchase` ,
`quantity_transfer`,
`record_time`)
SELECT `bailun_sku` ,
`warehouse_code`,
`quantity_purchase` ,
`quantity_transfer`, DATE_SUB( CURDATE( ), INTERVAL 1 DAY )
FROM dc_mid_transit
</insert>
<update id="updateSkuUnitPrice">
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>
<select id="selectQuantityOutStock" resultType="com.bailuntec.domain.dto.OutStockQuantity">
SELECT
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
bailun_sku,
warehouse_code,
bailun_sku,warehouse_code,SUM(bailun_sku_quantity_ordered) AS bailun_sku_quantity_ordered,SUM(bailun_sku_quantity_pushed) AS bailun_sku_quantity_pushed
FROM
dc_base_oms_sku
WHERE
bailun_order_status = 'Handling'
and bailun_interception_status in('None','Failed')
and warehouse_code != ''
and platform_type != 'FBA'
and has_delete = 0
and has_scalp = 0
and has_fba_s = 0
and has_innersale = 0
and paid_time >= '2019-03-01 12:00:00'
and bailun_sku_quantity_ordered > bailun_sku_quantity_shipped
GROUP BY
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
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>
<select id="selectQuantityPurchaseTransit" resultType="com.bailuntec.domain.dto.PurchaseTransitQuantity">
SELECT
bailun_sku as bailunSku,
warehouse_code as warehouseCode,
sum( count ) as count,
sum( count * price ) AS amount_purchase_transit,
CURRENT_TIMESTAMP
sum( count * price ) AS amountPurchaseTransit
FROM
(
SELECT
......@@ -733,64 +807,9 @@
warehouse_code
HAVING
count > 0
ON DUPLICATE KEY UPDATE quantity_purchase = VALUES(quantity_purchase), amount_purchase_transit = VALUES(amount_purchase_transit), gmt_purchase_modified = VALUES(gmt_purchase_modified)
</insert>
<insert id="insertMidDailyTransit">
INSERT into dc_daily_transit (
`bailun_sku` ,
`warehouse_code`,
`quantity_purchase` ,
`quantity_transfer`,
`record_time`)
SELECT `bailun_sku` ,
`warehouse_code`,
`quantity_purchase` ,
`quantity_transfer`, DATE_SUB( CURDATE( ), INTERVAL 1 DAY )
FROM dc_mid_transit
</insert>
<update id="updateSkuUnitPrice">
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>
<select id="selectQuantityOutStock" resultType="com.bailuntec.domain.dto.OutStockQuantity">
SELECT
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
bailun_sku,warehouse_code,SUM(bailun_sku_quantity_ordered) AS bailun_sku_quantity_ordered,SUM(bailun_sku_quantity_pushed) AS bailun_sku_quantity_pushed
FROM
dc_base_oms_sku
WHERE
bailun_order_status = 'Handling'
and bailun_interception_status in('None','Failed')
and warehouse_code != ''
and platform_type != 'FBA'
and has_delete = 0
and has_scalp = 0
and has_fba_s = 0
and has_innersale = 0
and paid_time >= '2019-03-01 12:00:00'
and bailun_sku_quantity_ordered > bailun_sku_quantity_shipped
GROUP BY
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
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}
</update>
......
......@@ -10,6 +10,7 @@ import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.TransactionIsolationLevel;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Slf4j
......@@ -18,13 +19,12 @@ public class CalculateOutStockJob implements SimpleJob {
@Override
public void execute(ShardingContext shardingContext) {
SqlSession sqlSession = SessionUtil.getFactory().openSession(TransactionIsolationLevel.READ_UNCOMMITTED);
LocalDateTime localDateTime = LocalDateTime.now();
try {
DcMidTransitMapper mapper = sqlSession.getMapper(DcMidTransitMapper.class);
List<OutStockQuantity> listQuantityOutStock = mapper.selectQuantityOutStock();
LocalDateTime localDateTime = LocalDateTime.now();
for(OutStockQuantity outStockQuantity: listQuantityOutStock) {
outStockQuantity.setGmtOutStockModified(localDateTime);
mapper.calculateOutStock(outStockQuantity);
if(listQuantityOutStock != null) {
mapper.calculateOutStock(listQuantityOutStock, localDateTime);
}
sqlSession.commit();
} catch (Exception e) {
......@@ -38,7 +38,7 @@ public class CalculateOutStockJob implements SimpleJob {
SqlSession sqlSessionUpdate = SessionUtil.getFactory().openSession(TransactionIsolationLevel.READ_UNCOMMITTED);
try {
DcMidTransitMapper mapper = sqlSessionUpdate.getMapper(DcMidTransitMapper.class);
LocalDateTime localDateTime = mapper.selectMaxOutStockModified();
// LocalDateTime localDateTime = mapper.selectMaxOutStockModified();
mapper.updateOldOutStockToZero(localDateTime);
sqlSessionUpdate.commit();
} catch (Exception e) {
......
package com.bailuntec.job;
import com.bailuntec.domain.dto.PurchaseTransitQuantity;
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 CalculatePurchaseTransit implements SimpleJob {
......@@ -17,9 +19,13 @@ public class CalculatePurchaseTransit implements SimpleJob {
public void execute(ShardingContext shardingContext) {
SqlSession sqlSession = SessionUtil.getFactory().openSession(TransactionIsolationLevel.READ_UNCOMMITTED);
LocalDateTime localDateTime = LocalDateTime.now();
try {
DcMidTransitMapper mapper = sqlSession.getMapper(DcMidTransitMapper.class);
mapper.calculatePurchaseTransit();
List<PurchaseTransitQuantity> purchaseTransitQuantityList = mapper.selectQuantityPurchaseTransit();
if(purchaseTransitQuantityList != null) {
mapper.calculatePurchaseTransit(purchaseTransitQuantityList, localDateTime);
}
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
......@@ -32,7 +38,7 @@ public class CalculatePurchaseTransit implements SimpleJob {
SqlSession sqlSessionUpdate = SessionUtil.getFactory().openSession(TransactionIsolationLevel.READ_UNCOMMITTED);
try {
DcMidTransitMapper mapper = sqlSessionUpdate.getMapper(DcMidTransitMapper.class);
LocalDateTime localDateTime = mapper.selectMaxPurchaseModified();
// LocalDateTime localDateTime = mapper.selectMaxPurchaseModified();
mapper.updateOldPurchaseToZero(localDateTime);
sqlSessionUpdate.commit();
} catch (Exception e) {
......
package com.bailuntec.job;
import com.bailuntec.domain.dto.TransferTransitQuantity;
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 CalculateTransferTransit implements SimpleJob {
......@@ -16,9 +18,13 @@ public class CalculateTransferTransit implements SimpleJob {
@Override
public void execute(ShardingContext shardingContext) {
SqlSession sqlSession = SessionUtil.getFactory().openSession(TransactionIsolationLevel.READ_UNCOMMITTED);
LocalDateTime localDateTime = LocalDateTime.now();
try {
DcMidTransitMapper mapper = sqlSession.getMapper(DcMidTransitMapper.class);
mapper.calculateTransferTransit();
List<TransferTransitQuantity> transferTransitQuantityList = mapper.selectQuantityTransferTransit();
if(transferTransitQuantityList != null) {
mapper.calculateTransferTransit(transferTransitQuantityList, localDateTime);
}
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
......@@ -31,7 +37,7 @@ public class CalculateTransferTransit implements SimpleJob {
SqlSession sqlSessionUpdate = SessionUtil.getFactory().openSession(TransactionIsolationLevel.READ_UNCOMMITTED);
try {
DcMidTransitMapper mapper = sqlSessionUpdate.getMapper(DcMidTransitMapper.class);
LocalDateTime localDateTime = mapper.selectMaxTransferModified();
// LocalDateTime localDateTime = mapper.selectMaxTransferModified();
mapper.updateOldTransferToZero(localDateTime);
sqlSessionUpdate.commit();
} catch (Exception e) {
......
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