| | |
| | | package com.zy.asrs.task.handler; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.exception.CoolException; |
| | |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.asrs.utils.MatUtils; |
| | | import com.zy.asrs.utils.MathUtils; |
| | | import com.zy.asrs.utils.OrderInAndOutUtil; |
| | | import com.zy.common.model.DetlDto; |
| | | import com.zy.nc.entity.NccSaleDbddWms; |
| | | import com.zy.nc.entity.NccSaleXsfhmxWms; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.jdbc.core.JdbcTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | |
| | | |
| | | for (OrderDetl detail : orderDetls) { |
| | | DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getBrand(), detail.getStandby1(), detail.getStandby2(), detail.getStandby3(), detail.getBoxType1(), detail.getBoxType2(), detail.getBoxType3(), detail.getAnfme()); |
| | | dto.setOrderNo(detail.getOrderNo()); |
| | | if (DetlDto.has(list, dto)) { |
| | | DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(), dto.getBrand(), dto.getStandby1(), dto.getStandby2(), dto.getStandby3(), dto.getBoxType1(), dto.getBoxType2(), dto.getBoxType3()); |
| | | assert detlDto != null; |
| | |
| | | OrderDetl orderDetl = OrderDetl.find(orderDetlList, dto.getMatnr(), dto.getBatch(), dto.getBrand(), dto.getStandby1(), dto.getStandby2(), dto.getStandby3(), dto.getBoxType1(), dto.getBoxType2(), dto.getBoxType3()); |
| | | assert orderDetl != null; |
| | | orderDetl.setAnfme(MathUtils.add(orderDetl.getAnfme(), detail.getAnfme())); |
| | | Double weight = MatUtils.calcWeight(orderDetl.getMatnr(), orderDetl.getAnfme()); |
| | | orderDetl.setWeight(weight); |
| | | } else { |
| | | list.add(dto); |
| | | orderDetlList.add(detail); |
| | |
| | | if (null == docType) { |
| | | return SUCCESS; |
| | | } |
| | | if (docType.getDocName().equals("销售发货")) { |
| | | if (docType.getDocName().equals("销售发货") || docType.getDocName().equals("集团内部调拨")) { |
| | | return SUCCESS; |
| | | } |
| | | Order orderSou = orderService.selectByNo(order.getOrderNo()); |
| | | if (orderSou == null) { |
| | | return FAIL.setMsg(order.getOrderNo() + "订单不存在,请联系管理员"); |
| | | } |
| | | if (!orderSou.getSettle().equals(2L)) { |
| | | return FAIL.setMsg("订单状态不正确,请联系管理员"); |
| | | } |
| | |
| | | return SUCCESS; |
| | | } |
| | | Order orderSou = orderService.selectByNo(order.getOrderNo()); |
| | | if (orderSou == null) { |
| | | return FAIL.setMsg("订单不存在,请联系管理员"); |
| | | } |
| | | if (!orderSou.getSettle().equals(2L)) { |
| | | return FAIL.setMsg("订单状态不正确,请联系管理员"); |
| | | } |
| | | |
| | | List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId()); |
| | | boolean complete = true; |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | if (orderDetl.getAnfme() > orderDetl.getQty()) { |
| | | complete = false; |
| | | break; |
| | | } |
| | | } |
| | | // for (OrderDetl orderDetl : orderDetls) { |
| | | // if (orderDetl.getAnfme() > orderDetl.getQty()) { |
| | | // complete = false; |
| | | // break; |
| | | // } |
| | | // } |
| | | if (complete) { |
| | | List<OrderDetl> old = orderDetlService.selectByOrderId(orderSou.getId()); |
| | | if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()))) { |
| | |
| | | //先按照批次匹配,再按照无批次号批次,因为销售发货,批次号可能带,有可能不携带,所以就会有问题;而且考虑到一条订单里如果相同物料,一条带批次,一条不带批次,情况 |
| | | for (OrderDetl xxx : old) { |
| | | if (xxx.beSimilar(wrkDetl)) { |
| | | orderDetl.setRemark(xxx.getRemark()); |
| | | if(Cools.isEmpty(orderDetl.getRemark())) { |
| | | orderDetl.setRemark(xxx.getRemark()); |
| | | }else { |
| | | NccSaleXsfhmxWms currentData = JSONObject.parseObject(orderDetl.getRemark(), NccSaleXsfhmxWms.class); |
| | | if (currentData == null) { |
| | | continue; |
| | | } |
| | | |
| | | NccSaleXsfhmxWms nextData = JSONObject.parseObject(xxx.getRemark(), NccSaleXsfhmxWms.class); |
| | | if (nextData == null) { |
| | | continue; |
| | | } |
| | | |
| | | BigDecimal currentFslDecimal = currentData.getNastnum(); |
| | | BigDecimal nextFslDecimal = nextData.getNastnum(); |
| | | if(currentFslDecimal.doubleValue() < nextFslDecimal.doubleValue()) { |
| | | orderDetl.setRemark(xxx.getRemark()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (Cools.isEmpty(orderDetl.getRemark())) { |
| | | for (OrderDetl xxx : old) { |
| | | if (xxx.beSimilarByWrkDetl(wrkDetl)) { |
| | | if(Cools.isEmpty(orderDetl.getRemark())) { |
| | | orderDetl.setRemark(xxx.getRemark()); |
| | | }else { |
| | | NccSaleXsfhmxWms currentData = JSONObject.parseObject(orderDetl.getRemark(), NccSaleXsfhmxWms.class); |
| | | if (currentData == null) { |
| | | continue; |
| | | } |
| | | |
| | | NccSaleXsfhmxWms nextData = JSONObject.parseObject(xxx.getRemark(), NccSaleXsfhmxWms.class); |
| | | if (nextData == null) { |
| | | continue; |
| | | } |
| | | |
| | | BigDecimal currentFslDecimal = currentData.getNastnum(); |
| | | BigDecimal nextFslDecimal = nextData.getNastnum(); |
| | | if(currentFslDecimal.doubleValue() < nextFslDecimal.doubleValue()) { |
| | | orderDetl.setRemark(xxx.getRemark()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (!orderDetlService.insert(orderDetl)) { |
| | | throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败"); |
| | | } |
| | | } |
| | | |
| | | // 修改订单状态 2.作业中 ===>> 4.待上报 |
| | | if (!orderService.updateSettle(orderSou.getId(), 4L, null)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } |
| | | // 修改订单状态 4.完成 ===>> 6.结束 |
| | | OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(), order.getId(), 6L, null); |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | |
| | | @Transactional |
| | | public ReturnT<String> checkDBDD(Order order) { |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if (null == docType) { |
| | | return SUCCESS; |
| | | } |
| | | if (!docType.getDocName().equals("集团内部调拨")) { |
| | | return SUCCESS; |
| | | } |
| | | Order orderSou = orderService.selectByNo(order.getOrderNo()); |
| | | if (orderSou == null) { |
| | | return FAIL.setMsg("订单不存在,请联系管理员"); |
| | | } |
| | | if (!orderSou.getSettle().equals(2L)) { |
| | | return FAIL.setMsg("订单状态不正确,请联系管理员"); |
| | | } |
| | | |
| | | List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId()); |
| | | boolean complete = true; |
| | | // for (OrderDetl orderDetl : orderDetls) { |
| | | // if (orderDetl.getAnfme() > orderDetl.getQty()) { |
| | | // complete = false; |
| | | // break; |
| | | // } |
| | | // } |
| | | if (complete) { |
| | | List<OrderDetl> old = orderDetlService.selectByOrderId(orderSou.getId()); |
| | | if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()))) { |
| | | throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败"); |
| | | } |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(order.getOrderNo()); |
| | | for (WrkDetl wrkDetl : wrkDetls) { |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(wrkDetl); |
| | | orderDetl.setQty(wrkDetl.getAnfme()); |
| | | orderDetl.setOrderId(orderSou.getId()); |
| | | orderDetl.setOrderNo(orderSou.getOrderNo()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setCreateTime(orderSou.getCreateTime()); |
| | | orderDetl.setCreateBy(orderSou.getCreateBy()); |
| | | orderDetl.setUpdateTime(orderSou.getUpdateTime()); |
| | | orderDetl.setUpdateBy(orderSou.getUpdateBy()); |
| | | orderDetl.setId(null); |
| | | //先按照批次匹配,再按照无批次号批次,因为销售发货,批次号可能带,有可能不携带,所以就会有问题;而且考虑到一条订单里如果相同物料,一条带批次,一条不带批次,情况 |
| | | for (OrderDetl xxx : old) { |
| | | if (xxx.beSimilar(wrkDetl)) { |
| | | if(Cools.isEmpty(orderDetl.getRemark())) { |
| | | orderDetl.setRemark(xxx.getRemark()); |
| | | }else { |
| | | NccSaleDbddWms currentData = JSONObject.parseObject(orderDetl.getRemark(), NccSaleDbddWms.class); |
| | | if (currentData == null) { |
| | | continue; |
| | | } |
| | | |
| | | NccSaleDbddWms nextData = JSONObject.parseObject(xxx.getRemark(), NccSaleDbddWms.class); |
| | | if (nextData == null) { |
| | | continue; |
| | | } |
| | | |
| | | BigDecimal currentFslDecimal = currentData.getFsl(); |
| | | BigDecimal nextFslDecimal = nextData.getFsl(); |
| | | if(currentFslDecimal.doubleValue() < nextFslDecimal.doubleValue()) { |
| | | orderDetl.setRemark(xxx.getRemark()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (Cools.isEmpty(orderDetl.getRemark())) { |
| | | for (OrderDetl xxx : old) { |
| | | if (xxx.beSimilarByWrkDetl(wrkDetl)) { |
| | | if(Cools.isEmpty(orderDetl.getRemark())) { |
| | | orderDetl.setRemark(xxx.getRemark()); |
| | | }else { |
| | | NccSaleDbddWms currentData = JSONObject.parseObject(orderDetl.getRemark(), NccSaleDbddWms.class); |
| | | if (currentData == null) { |
| | | continue; |
| | | } |
| | | |
| | | NccSaleDbddWms nextData = JSONObject.parseObject(xxx.getRemark(), NccSaleDbddWms.class); |
| | | if (nextData == null) { |
| | | continue; |
| | | } |
| | | |
| | | BigDecimal currentFslDecimal = currentData.getFsl(); |
| | | BigDecimal nextFslDecimal = nextData.getFsl(); |
| | | if(currentFslDecimal.doubleValue() < nextFslDecimal.doubleValue()) { |
| | | orderDetl.setRemark(xxx.getRemark()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |