parent
1808fc8e1c
commit
b09758e64c
14 changed files with 252 additions and 2 deletions
@ -0,0 +1,39 @@ |
|||||||
|
package org.springblade.job.processor.wms; |
||||||
|
|
||||||
|
import jakarta.annotation.Resource; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springblade.wms.feign.WmsTaskClient; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
import tech.powerjob.worker.core.processor.ProcessResult; |
||||||
|
import tech.powerjob.worker.core.processor.TaskContext; |
||||||
|
import tech.powerjob.worker.core.processor.sdk.BasicProcessor; |
||||||
|
|
||||||
|
/** |
||||||
|
* @version 1.0 |
||||||
|
* @program: jonhon-mes-svr |
||||||
|
* @ClassName ExecuteStGoodsExtUpdateProcessor |
||||||
|
* @description: |
||||||
|
* @autor: WuSiYu |
||||||
|
* @create 2026-04-30 10:08 |
||||||
|
**/ |
||||||
|
@Component |
||||||
|
@Data |
||||||
|
@Slf4j |
||||||
|
public class ExecuteStGoodsExtUpdateProcessor implements BasicProcessor { |
||||||
|
|
||||||
|
@Resource |
||||||
|
WmsTaskClient wmsTaskClient; |
||||||
|
@Override |
||||||
|
public ProcessResult process(TaskContext context) throws Exception { |
||||||
|
log.info("开始执行物料状态同步erp"); |
||||||
|
try { |
||||||
|
boolean result = wmsTaskClient.executeGoodsStatusUpdate(); |
||||||
|
log.info("===== 物料状态定时更新完成 ====="); |
||||||
|
return new ProcessResult(result); |
||||||
|
} catch (Exception e) { |
||||||
|
log.error("===== 物料状态定时更新异常 =====", e); |
||||||
|
return new ProcessResult(false, e.getMessage()); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,29 @@ |
|||||||
|
package org.springblade.wms.feign; |
||||||
|
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient; |
||||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||||
|
|
||||||
|
/** |
||||||
|
* @version 1.0 |
||||||
|
* @program: jonhon-mes-svr |
||||||
|
* @ClassName WmsTaskClient |
||||||
|
* @description: |
||||||
|
* @autor: WuSiYu |
||||||
|
* @create 2026-04-30 10:21 |
||||||
|
**/ |
||||||
|
@FeignClient( |
||||||
|
value = "blade-wms" |
||||||
|
) |
||||||
|
public interface WmsTaskClient { |
||||||
|
|
||||||
|
String API_PREFIX = "/feign/client/wms"; |
||||||
|
|
||||||
|
String EXECUTE_GOODS_STATUS_UPDATE = API_PREFIX + "/executeGoodsStatusUpdate"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 物料状态监控同步erp |
||||||
|
*/ |
||||||
|
@PostMapping(EXECUTE_GOODS_STATUS_UPDATE) |
||||||
|
boolean executeGoodsStatusUpdate(); |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
package org.springblade.erpdata.mapper; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.Mapper; |
||||||
|
import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* @version 1.0 |
||||||
|
* @program: jonhon-mes-svr |
||||||
|
* @ClassName ErpDataWmsMapper |
||||||
|
* @description: |
||||||
|
* @autor: WuSiYu |
||||||
|
* @create 2026-04-29 16:52 |
||||||
|
**/ |
||||||
|
|
||||||
|
public interface ErpDataWmsMapper extends Mapper { |
||||||
|
|
||||||
|
List<StGoodsExtStatusVO> getGoodsExtStatus(); |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,51 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||||
|
<mapper namespace = "org.springblade.erpdata.mapper.ErpDataWmsMapper"> |
||||||
|
|
||||||
|
<select id="getGoodsExtStatus" resultType="org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO"> |
||||||
|
SELECT |
||||||
|
g.goods_code, |
||||||
|
g.id AS goods_id, |
||||||
|
ge.use_average, |
||||||
|
ge.id, |
||||||
|
|
||||||
|
-- ERP 一级库存、计划数量 |
||||||
|
NVL(erp.invqty1j, 0) AS invqty1j, |
||||||
|
NVL(erp.planqty, 0) AS planqty, |
||||||
|
|
||||||
|
-- MES 二级库存 |
||||||
|
NVL(mes.last_qty, 0) AS last_qty, |
||||||
|
|
||||||
|
-- 计算状态 1/2/3/4/5 |
||||||
|
CASE |
||||||
|
WHEN NVL(erp.planqty, 0) + NVL(mes.last_qty, 0) <= NVL(ge.use_average, 0) |
||||||
|
THEN 1 -- 需报料 |
||||||
|
WHEN (NVL(erp.invqty1j, 0) + NVL(mes.last_qty, 0)) < NVL(ge.use_average, 0) AND NVL(erp.planqty, 0) > 0 |
||||||
|
THEN 2 -- 需跟踪 |
||||||
|
WHEN NVL(mes.last_qty, 0) < NVL(ge.use_average, 0) AND NVL(erp.planqty, 0) > 0 |
||||||
|
THEN 3 -- 待领料 |
||||||
|
WHEN NVL(ge.use_average, 0) = 0 |
||||||
|
THEN 5 -- 长期未使用 |
||||||
|
ELSE 4 |
||||||
|
END AS goods_status |
||||||
|
|
||||||
|
FROM st_goods_ext ge |
||||||
|
INNER JOIN st_goods g ON g.id = ge.goods_id |
||||||
|
|
||||||
|
-- 关联 ERP 视图(一级库存 + 计划数量) |
||||||
|
LEFT JOIN ( |
||||||
|
SELECT prtno, MAX(invqty1j) invqty1j, MAX(planqty) planqty |
||||||
|
FROM dba_mgr.v_mes_rb_prtstuff |
||||||
|
GROUP BY prtno |
||||||
|
) erp ON g.goods_code = erp.prtno |
||||||
|
|
||||||
|
-- 关联 MES 二级库存 |
||||||
|
LEFT JOIN ( |
||||||
|
SELECT b.goods_code, SUM(a.quantity - a.occupy_quantity) last_qty |
||||||
|
FROM st_realtime_stock a |
||||||
|
INNER JOIN st_goods b ON a.goods_id = b.id |
||||||
|
GROUP BY b.goods_code |
||||||
|
) mes ON g.goods_code = mes.goods_code |
||||||
|
</select> |
||||||
|
|
||||||
|
</mapper> |
||||||
@ -0,0 +1,32 @@ |
|||||||
|
package org.springblade.wms.feign; |
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.Hidden; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springblade.core.tenant.annotation.NonDS; |
||||||
|
import org.springblade.wms.service.IStGoodsExtService; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
/** |
||||||
|
* @version 1.0 |
||||||
|
* @program: jonhon-mes-svr |
||||||
|
* @ClassName WmsTaskClient |
||||||
|
* @description: |
||||||
|
* @autor: WuSiYu |
||||||
|
* @create 2026-04-30 10:20 |
||||||
|
**/ |
||||||
|
@NonDS |
||||||
|
@Hidden |
||||||
|
@RestController |
||||||
|
@AllArgsConstructor |
||||||
|
@Slf4j |
||||||
|
public class WmsTaskClientImpl implements WmsTaskClient{ |
||||||
|
|
||||||
|
private final IStGoodsExtService stGoodsExtService; |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean executeGoodsStatusUpdate() { |
||||||
|
stGoodsExtService.executeGoodsStatusUpdate(); |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue