| | |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.asrs.utils.SaasUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/7/4 |
| | |
| | | private WaitPakinService waitPakinService; |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | |
| | | @Resource |
| | | private OrderService orderService; |
| | | |
| | | @Resource |
| | | private ManLocDetlService manLocDetlService; |
| | | |
| | | @Resource |
| | | private NodeService nodeService; |
| | | |
| | | public ReturnT<String> start(WrkMast wrkMast) { |
| | | // 4.入库完成 |
| | |
| | | |
| | | // 更新订单完成数量 |
| | | OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); |
| | | if (orderDetl==null){ |
| | | orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null); |
| | | } |
| | | try { |
| | | if(!Cools.isEmpty(orderDetl)){ |
| | | if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), |
| | | wrkDetl.getBatch(),wrkDetl.getAnfme())){ |
| | | orderDetl.getBatch(),wrkDetl.getAnfme())){ |
| | | // exceptionHandle("全板入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", |
| | | // wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } else { |
| | | // 插入调拨入库单对应线边仓出库记录 |
| | | Order order = orderService.selectByNo(orderDetl.getOrderNo()); |
| | | if (order.getDocType$().equals("调拨入库单")) { |
| | | String locNo = orderDetl.getSupp(); |
| | | ManLocDetl locDetl2 = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch())); |
| | | if (locDetl2 == null) { // 线边库无此库存 |
| | | log.warn("调拨入库单对应线边库库存无:{locNo:{},matnr:{},batch:{}}", locNo, wrkDetl.getMatnr(), wrkDetl.getBatch()); |
| | | } else if (locDetl2.getAnfme() < wrkDetl.getAnfme()) { // 线边库此库存不够 |
| | | manLocDetlService.delete(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch())); |
| | | log.warn("调拨入库单对应线边库库存不足:{locNo:{},matnr:{},batch:{},locAnfme:{},wrkAnfme:{}}", locNo, wrkDetl.getMatnr(), wrkDetl.getBatch(), locDetl2.getAnfme(), wrkDetl.getAnfme()); |
| | | } else if (Objects.equals(locDetl2.getAnfme(), wrkDetl.getAnfme())) { // 删除该物料线边库库存数据 |
| | | manLocDetlService.delete(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch())); |
| | | } else { // 更新该物料线边库库存 |
| | | locDetl2.setAnfme(locDetl2.getAnfme() - wrkDetl.getAnfme()); |
| | | locDetl2.setUpdateBy(wrkDetl.getAppeUser()); |
| | | locDetl2.setModiTime(new Date()); |
| | | manLocDetlService.update(locDetl2, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch())); |
| | | } |
| | | // 记录日志 |
| | | SaasUtils.insertLog(3, locNo, wrkDetl.getMatnr(), wrkDetl.getAnfme(), wrkDetl.getAppeUser(), wrkDetl.getBatch()); |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception ignore){} |
| | |
| | | |
| | | // 更新订单完成数量 |
| | | OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); |
| | | if (orderDetl==null){ |
| | | orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null); |
| | | } |
| | | try { |
| | | if(!Cools.isEmpty(orderDetl)){ |
| | | if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), |
| | | wrkDetl.getBatch(),wrkDetl.getAnfme())){ |
| | | orderDetl.getBatch(),wrkDetl.getAnfme())){ |
| | | // exceptionHandle("拣料入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", |
| | | // wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | |
| | | for (WrkDetl wrkDetl : wrkDetls101) { |
| | | // 更新订单完成数量 |
| | | OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); |
| | | if (orderDetl==null){ |
| | | orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null); |
| | | } |
| | | try { |
| | | if(!Cools.isEmpty(orderDetl)){ |
| | | if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), |
| | | wrkDetl.getBatch(),wrkDetl.getAnfme())){ |
| | | orderDetl.getBatch(),wrkDetl.getAnfme())){ |
| | | // exceptionHandle("全板出库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", |
| | | // wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } else { // 插入调拨出库单对应线边仓入库记录 |
| | | Order order = orderService.selectByNo(orderDetl.getOrderNo()); |
| | | if(order.getDocType$().equals("调拨出库单")) { |
| | | |
| | | String locNo = orderDetl.getSuppCode(); // 线边仓 |
| | | |
| | | Node node = nodeService.selectByUuid(locNo); |
| | | if (Cools.isEmpty(node)) { |
| | | throw new CoolException(locNo + ":库位不存在"); |
| | | } |
| | | ManLocDetl locDetl1 = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()). |
| | | eq("batch", wrkDetl.getBatch())); |
| | | if (!Cools.isEmpty(locDetl1)) { |
| | | locDetl1.setAnfme(locDetl1.getAnfme() + wrkDetl.getAnfme()); |
| | | locDetl1.setModiTime(now); |
| | | manLocDetlService.update(locDetl1, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()). |
| | | eq("batch", wrkDetl.getBatch())); |
| | | } else { |
| | | ManLocDetl manLocDetl = new ManLocDetl(); |
| | | manLocDetl.setLocNo(locNo); |
| | | // manLocDetl.setBarcode(barcode); |
| | | // manLocDetl.setZpallet(barcode); |
| | | manLocDetl.setNodeId(node.getId()); |
| | | manLocDetl.setMaktx(wrkDetl.getMaktx()); |
| | | manLocDetl.setMatnr(wrkDetl.getMatnr()); |
| | | manLocDetl.setSpecs(wrkDetl.getSpecs()); |
| | | manLocDetl.setBatch(Cools.isEmpty(wrkDetl.getBatch()) ? "" : wrkDetl.getBatch()); |
| | | manLocDetl.setAnfme(wrkDetl.getAnfme()); |
| | | manLocDetl.setCreateBy(wrkDetl.getAppeUser()); |
| | | manLocDetl.setCreateTime(now); |
| | | if (!manLocDetlService.insert(manLocDetl)) { |
| | | log.error("库存更新时插入线边库明细失败"); |
| | | throw new CoolException("库存更新时插入线边库明细失败!"); |
| | | } |
| | | |
| | | node.setUpdateBy(wrkDetl.getAppeUser()); |
| | | node.setUpdateTime(now); |
| | | nodeService.updateById(node); |
| | | } |
| | | |
| | | // 记录日志 |
| | | SaasUtils.insertLog(2, locNo, wrkDetl.getMatnr(), wrkDetl.getAnfme(), wrkDetl.getAppeUser(),wrkDetl.getBatch()); |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception ignore){} |