仓库管理修改

master
wusiyu 6 days ago
parent c1509e030b
commit 29f4c74171
  1. 3
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java
  2. 3
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java
  3. 7
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/StGoodsExtStatusVO.java
  4. 5
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java
  5. 4
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java
  6. 43
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml
  7. 3
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java
  8. 5
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java
  9. 2
      blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.java
  10. 27
      blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml
  11. 35
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGoodsExtServiceImpl.java

@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @version 1.0 * @version 1.0
@ -68,6 +67,6 @@ public interface IErpDataWmsClient {
* 物料状态监控同步 * 物料状态监控同步
*/ */
@PostMapping(GET_GOODS_EXT_STATUS) @PostMapping(GET_GOODS_EXT_STATUS)
R<List<StGoodsExtStatusVO>> getGoodsExtStatus(); R<StGoodsExtStatusVO> getGoodsExtStatus(@RequestParam("goodsCode")String goodsCode);
} }

@ -8,7 +8,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @version 1.0 * @version 1.0
@ -43,7 +42,7 @@ public class IErpDataWmsClientFallback implements IErpDataWmsClient{
} }
@Override @Override
public R<List<StGoodsExtStatusVO>> getGoodsExtStatus() { public R<StGoodsExtStatusVO> getGoodsExtStatus(@RequestParam("goodsCode")String goodsCode) {
return R.fail("获取数据失败"); return R.fail("获取数据失败");
} }

@ -14,13 +14,8 @@ import lombok.Data;
@Data @Data
public class StGoodsExtStatusVO { public class StGoodsExtStatusVO {
private Long id; private String prtno;
private String goodsCode;
private Long goodsId;
private Long useAverage;
private Double invqty1j; private Double invqty1j;
private Double planqty; private Double planqty;
private Double lastQty;
private Long goodsStatus;
} }

@ -11,7 +11,6 @@ import org.springblade.wms.pojo.entity.StRealtimeStock;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @version 1.0 * @version 1.0
@ -51,7 +50,7 @@ public class ErpDataWmsClient implements IErpDataWmsClient{
} }
@Override @Override
public R<List<StGoodsExtStatusVO>> getGoodsExtStatus() { public R<StGoodsExtStatusVO> getGoodsExtStatus(String goodsCode) {
return R.data(erpDataWmsService.getGoodsExtStatus()); return R.data(erpDataWmsService.getGoodsExtStatus(goodsCode));
} }
} }

@ -3,8 +3,6 @@ package org.springblade.erpdata.mapper;
import com.baomidou.mybatisplus.core.mapper.Mapper; import com.baomidou.mybatisplus.core.mapper.Mapper;
import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO;
import java.util.List;
/** /**
* @version 1.0 * @version 1.0
* @program: jonhon-mes-svr * @program: jonhon-mes-svr
@ -16,6 +14,6 @@ import java.util.List;
public interface ErpDataWmsMapper extends Mapper { public interface ErpDataWmsMapper extends Mapper {
List<StGoodsExtStatusVO> getGoodsExtStatus(); StGoodsExtStatusVO getGoodsExtStatus(String goodsCode);
} }

@ -4,48 +4,13 @@
<select id="getGoodsExtStatus" resultType="org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO"> <select id="getGoodsExtStatus" resultType="org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO">
SELECT SELECT
g.goods_code, erp.prtno,
g.id AS goods_id,
ge.use_average,
ge.id,
-- ERP 一级库存、计划数量 -- ERP 一级库存、计划数量
NVL(erp.invqty1j, 0) AS invqty1j, NVL(erp.invqty1j, 0) AS invqty1j,
NVL(erp.planqty, 0) AS planqty, 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) &lt;= NVL(ge.use_average, 0)
THEN 1 -- 需报料
WHEN (NVL(erp.invqty1j, 0) + NVL(mes.last_qty, 0)) &lt; NVL(ge.use_average, 0) AND NVL(erp.planqty, 0) &gt; 0
THEN 2 -- 需跟踪
WHEN NVL(mes.last_qty, 0) &lt; NVL(ge.use_average, 0) AND NVL(erp.planqty, 0) &gt; 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 二级库存 FROM dba_mgr.v_mes_rb_prtstuff erp
LEFT JOIN ( ON erp.prtno = #{goodsCode}
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> </select>
</mapper> </mapper>

@ -5,7 +5,6 @@ import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO;
import org.springblade.wms.pojo.entity.StRealtimeStock; import org.springblade.wms.pojo.entity.StRealtimeStock;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @version 1.0 * @version 1.0
@ -26,5 +25,5 @@ public interface IErpDataWmsService {
String deleteMoldPlan(String erpWoCode) throws BusinessException; String deleteMoldPlan(String erpWoCode) throws BusinessException;
List<StGoodsExtStatusVO> getGoodsExtStatus(); StGoodsExtStatusVO getGoodsExtStatus(String goodsCode);
} }

@ -18,7 +18,6 @@ import org.springframework.stereotype.Service;
import java.sql.Types; import java.sql.Types;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -217,8 +216,8 @@ public class ErpDataWmsServiceImpl implements IErpDataWmsService {
} }
@Override @Override
public List<StGoodsExtStatusVO> getGoodsExtStatus(){ public StGoodsExtStatusVO getGoodsExtStatus(String goodsCode){
return erpDataWmsMapper.getGoodsExtStatus(); return erpDataWmsMapper.getGoodsExtStatus(goodsCode);
} }
} }

@ -41,5 +41,7 @@ public interface StGoodsExtMapper extends BaseMapper<StGoodsExt> {
List<StGoodsExtExcel> exportStGoodsExt(@Param("ew") Wrapper<StGoodsExt> queryWrapper); List<StGoodsExtExcel> exportStGoodsExt(@Param("ew") Wrapper<StGoodsExt> queryWrapper);
IPage<StGoodsExtVO> selectGoodsExtWithGoods(IPage<StGoodsExtVO> page, @Param("ew") QueryWrapper<StGoodsExt> queryWrapper); IPage<StGoodsExtVO> selectGoodsExtWithGoods(IPage<StGoodsExtVO> page, @Param("ew") QueryWrapper<StGoodsExt> queryWrapper);
StGoodsExt getGoodsExt(Double invqty1j, Double planqty, Long goodsId);
} }

@ -87,6 +87,33 @@
ORDER BY se.create_time DESC ORDER BY se.create_time DESC
</select> </select>
<select id="getGoodsExt" resultType="org.springblade.wms.pojo.entity.StGoodsExt">
SELECT
mes.last_qty as lastStore,
CASE
WHEN NVL(#{planqty}, 0) + NVL(mes.last_qty, 0) &lt;= NVL(ge.use_average, 0)
THEN 1
WHEN (NVL(#{invqty1j}, 0) + NVL(mes.last_qty, 0)) &lt; NVL(ge.use_average, 0) AND NVL(#{planqty}, 0) &gt; 0
THEN 2
WHEN NVL(mes.last_qty, 0) &lt; NVL(ge.use_average, 0) AND NVL(#{planqty}, 0) &gt; 0
THEN 3
WHEN NVL(ge.use_average, 0) = 0
THEN 5
ELSE 4
END AS goodsStatus
FROM st_goods_ext ge
INNER JOIN st_goods g ON g.id = ge.goods_id
AND g.id = #{goodsId}
LEFT JOIN (
SELECT b.goods_code, SUM(a.quantity - a.occupy_quantity) AS 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>
<select id="exportStGoodsExt" resultType="org.springblade.wms.excel.StGoodsExtExcel"> <select id="exportStGoodsExt" resultType="org.springblade.wms.excel.StGoodsExtExcel">
SELECT * FROM ST_GOODS_EXT ${ew.customSqlSegment} SELECT * FROM ST_GOODS_EXT ${ew.customSqlSegment}
</select> </select>

@ -11,6 +11,8 @@ import org.springblade.erpdata.feign.IErpDataWmsClient;
import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO;
import org.springblade.wms.excel.StGoodsExtExcel; import org.springblade.wms.excel.StGoodsExtExcel;
import org.springblade.wms.mapper.StGoodsExtMapper; import org.springblade.wms.mapper.StGoodsExtMapper;
import org.springblade.wms.mapper.StGoodsMapper;
import org.springblade.wms.pojo.entity.StGoods;
import org.springblade.wms.pojo.entity.StGoodsExt; import org.springblade.wms.pojo.entity.StGoodsExt;
import org.springblade.wms.pojo.vo.StGoodsExtVO; import org.springblade.wms.pojo.vo.StGoodsExtVO;
import org.springblade.wms.service.IStGoodsExtService; import org.springblade.wms.service.IStGoodsExtService;
@ -18,6 +20,8 @@ import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* @version 1.0 * @version 1.0
@ -31,6 +35,8 @@ import java.util.Map;
@Service @Service
public class StGoodsExtServiceImpl extends BaseServiceImpl<StGoodsExtMapper, StGoodsExt> implements IStGoodsExtService { public class StGoodsExtServiceImpl extends BaseServiceImpl<StGoodsExtMapper, StGoodsExt> implements IStGoodsExtService {
@Resource
private StGoodsMapper stGoodsMapper;
@Resource @Resource
private IErpDataWmsClient erpDataWmsClient; private IErpDataWmsClient erpDataWmsClient;
@ -70,23 +76,36 @@ public class StGoodsExtServiceImpl extends BaseServiceImpl<StGoodsExtMapper, StG
try { try {
// 1. 调用你的 Mapper 方法,查询所有商品计算后的状态 // 1. 调用你的 Mapper 方法,查询所有商品计算后的状态
List<StGoodsExtStatusVO> statusList = erpDataWmsClient.getGoodsExtStatus().getData(); QueryWrapper<StGoodsExt> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("is_deleted", 0);
List<StGoodsExt> list = baseMapper.selectList(queryWrapper);
List<Long> goodsIds = list.stream()
.map(StGoodsExt::getGoodsId)
.filter(Objects::nonNull)
.toList();
Map<Long, String> goodsIdToCodeMap = stGoodsMapper.selectBatchIds(goodsIds)
.stream()
.collect(Collectors.toMap(StGoods::getId, StGoods::getGoodsCode));
for (StGoodsExt ext : list) {
Long goodsId = ext.getGoodsId();
String goodsCode = goodsIdToCodeMap.get(goodsId);
// 2. 遍历结果,更新到 st_goods_ext 表 StGoodsExtStatusVO vo = erpDataWmsClient.getGoodsExtStatus(goodsCode).getData();
for (StGoodsExtStatusVO vo : statusList) { StGoodsExt goodsExt = baseMapper.getGoodsExt(vo.getInvqty1j(),vo.getPlanqty(),goodsId);
StGoodsExt ext = baseMapper.selectById(vo.getId());
ext.setGoodsId(vo.getGoodsId());
ext.setFirstStore(vo.getInvqty1j()); ext.setFirstStore(vo.getInvqty1j());
ext.setLastStore(vo.getLastQty()); ext.setLastStore(goodsExt.getLastStore());
ext.setPlanQty(vo.getPlanqty()); ext.setPlanQty(vo.getPlanqty());
ext.setGoodsStatus(vo.getGoodsStatus()); ext.setGoodsStatus(goodsExt.getGoodsStatus());
// ext.setUpdateTime(new Date()); // ext.setUpdateTime(new Date());
// ext.setUpdateUser(AuthUtil.getUserId()); // ext.setUpdateUser(AuthUtil.getUserId());
this.updateById(ext); this.updateById(ext);
} }
log.info("===== 物料状态定时更新完成 =====", statusList.size()); log.info("===== 物料状态定时更新完成 =====", list.size());
} catch (Exception e) { } catch (Exception e) {
log.info("===== 物料状态定时更新异常 =====", e); log.info("===== 物料状态定时更新异常 =====", e);
} }

Loading…
Cancel
Save