src/main/java/zy/cloud/wms/common/service/MainService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/zy/cloud/wms/manager/mapper/LocDetlMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/zy/cloud/wms/manager/service/LocDetlService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/LocDetlMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/zy/cloud/wms/common/service/MainService.java
@@ -1,6 +1,5 @@ package zy.cloud.wms.common.service; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; @@ -10,7 +9,10 @@ import org.springframework.transaction.annotation.Transactional; import zy.cloud.wms.common.model.OrderStoDto; import zy.cloud.wms.common.utils.VersionUtils; import zy.cloud.wms.manager.entity.*; import zy.cloud.wms.manager.entity.CustOrder; import zy.cloud.wms.manager.entity.LocDetl; import zy.cloud.wms.manager.entity.Mat; import zy.cloud.wms.manager.entity.Pakout; import zy.cloud.wms.manager.service.LocDetlService; import zy.cloud.wms.manager.service.MatService; import zy.cloud.wms.manager.service.PakoutService; @@ -18,6 +20,7 @@ import java.util.Date; import java.util.List; import java.util.Optional; /** * Created by vincent on 2021/3/1 @@ -49,16 +52,15 @@ if (null == mat) { throw new CoolException(custOrder.getUserCode() + "物料尚未更新。" + custOrder.getNumber() +"单据因此中断!"); } // 根据推荐库位查找库存 List<Prior> priors = priorService.selectList(new EntityWrapper<Prior>().eq("matnr", mat.getMatnr()).orderBy("prio")); if (!Cools.isEmpty(priors)) { for (Prior prior : priors) { LocDetl locDetl = locDetlService.getLocDetl(prior.getNodeId(), prior.getMatnr()); if (null != locDetl && locDetl.getAnfme() > 0) { // 保存出库通知单\ // 查询存有当前物料的货位 List<LocDetl> locDetls = locDetlService.findOfSort(mat.getMatnr()); double issued = Optional.ofNullable(custOrder.getQty()).orElse(0.0D) ; while (issued > 0) { for (LocDetl locDetl : locDetls) { // 保存出库通知单 Pakout pakout = new Pakout(); pakout.setWrkSts(1L); // pakout.setAnfme(); pakout.setAnfme(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued); pakout.setZpallet(locDetl.getZpallet()); pakout.setLocNo(locDetl.getLocNo()); pakout.setNodeId(locDetl.getNodeId()); @@ -70,12 +72,15 @@ if (!pakoutService.insert(pakout)) { throw new CoolException("保存出库通知单失败"); } // 修改库存明细数量 if (!locDetlService.reduceStock(locDetl.getNodeId(), mat.getMatnr(), issued>=locDetl.getAnfme()?locDetl.getAnfme():issued)) { throw new CoolException("修改库存明细数量失败"); } // 剩余待出货位递减 issued = issued - locDetl.getAnfme(); } } } } } else { } src/main/java/zy/cloud/wms/manager/mapper/LocDetlMapper.java
@@ -19,4 +19,8 @@ Double selectCountByMatnr(@Param("matnr") String matnr); Integer reduceStock(@Param("nodeId") Long nodeId, @Param("matnr") String matnr, @Param("anfme") Double anfme); List<LocDetl> selectByPrior(@Param("matnr") String matnr, @Param("nodeId") Long nodeId); } src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
@@ -1,8 +1,10 @@ package zy.cloud.wms.manager.service; import com.baomidou.mybatisplus.plugins.Page; import zy.cloud.wms.manager.entity.LocDetl; import com.baomidou.mybatisplus.service.IService; import zy.cloud.wms.manager.entity.LocDetl; import java.util.List; public interface LocDetlService extends IService<LocDetl> { @@ -10,6 +12,17 @@ LocDetl getLocDetl(Long nodeId, String matnr); List<LocDetl> findOfSort(String matnr); /** * 查看当前订单号的物料在库存中是否充足 * @param number */ void checkLocDetlCount(String number); /** * 减少库存 */ Boolean reduceStock(Long nodeId, String matnr, Double anfme); } src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import zy.cloud.wms.common.config.CodeCoolException; @@ -14,6 +15,7 @@ import zy.cloud.wms.manager.service.LocDetlService; import zy.cloud.wms.manager.service.MatService; import java.util.ArrayList; import java.util.List; @Service("locDetlService") @@ -32,6 +34,20 @@ @Override public LocDetl getLocDetl(Long nodeId, String matnr) { return this.baseMapper.selectByLocNoAndMatnr(nodeId, matnr); } @Override public List<LocDetl> findOfSort(String matnr) { List<LocDetl> result = new ArrayList<>(); List<LocDetl> locDetls = this.baseMapper.selectByPrior(matnr, null); if (!Cools.isEmpty(locDetls)) { result.addAll(locDetls); } List<LocDetl> locDetls1 = this.selectList(new EntityWrapper<LocDetl>().eq("matnr", matnr).eq("status", 1).orderBy("create_time")); if (!Cools.isEmpty(locDetls1)) { result.addAll(locDetls1); } return result; } @Override @@ -57,5 +73,10 @@ } } @Override public Boolean reduceStock(Long nodeId, String matnr, Double anfme) { return this.baseMapper.reduceStock(nodeId, matnr, anfme)>0; } } src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import zy.cloud.wms.common.service.MainService; import zy.cloud.wms.common.utils.VersionUtils; import zy.cloud.wms.manager.entity.Comb; import zy.cloud.wms.manager.entity.LocDetl; @@ -28,6 +29,8 @@ public class WorkServiceImpl implements WorkService { @Autowired private MainService mainService; @Autowired private NodeService nodeService; @Autowired private CombService combService; src/main/resources/mapper/LocDetlMapper.xml
@@ -51,11 +51,46 @@ </select> <select id="selectByLocNoAndMatnr" resultMap="BaseResultMap"> select * from man_loc_detl where 1=1 and node_id = #{nodeId} and matnr = #{matnr} select top 1 * from man_loc_detl where 1=1 and anfme > 0 <if test="nodeId != null and nodeId != ''"> and node_id = #{nodeId} </if> <if test="matnr != null and matnr != ''"> and matnr = #{matnr} </if> order by create_time asc </select> <select id="selectCountByMatnr" resultType="java.lang.Double"> select sum(anfme) as count from man_loc_detl where 1=1 and matnr = #{matnr} </select> <update id="reduceStock"> update man_loc_detl set anfme = anfme - #{anfme} where 1=1 and node_id = #{nodeId} and matnr = #{matnr} </update> <select id="selectByPrior" resultMap="BaseResultMap"> select mld.* from man_loc_detl mld left join man_prior mp on mld.node_id = mp.node_id where 1=1 <if test="nodeId != null and nodeId != ''"> and mld.node_id = #{nodeId} </if> <if test="matnr != null and matnr != ''"> and mld.matnr = #{matnr} </if> and mld.anfme > 0 and mp.status = 1 order by mp.prio desc, mld.create_time asc </select> </mapper>