| | |
| | | package com.zy.asrs.task.handler; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/7/7 |
| | |
| | | if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()))) { |
| | | throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败"); |
| | | } |
| | | |
| | | HashMap<String, List<NccSaleXsfhmxWms>> matnrMap = new HashMap<>(); |
| | | for (OrderDetl orderDetl : old) { |
| | | String remark = orderDetl.getRemark(); |
| | | if(Cools.isEmpty(remark)) { |
| | | continue; |
| | | } |
| | | |
| | | NccSaleXsfhmxWms currentData = JSONObject.parseObject(orderDetl.getRemark(), NccSaleXsfhmxWms.class); |
| | | if (currentData == null) { |
| | | continue; |
| | | } |
| | | |
| | | List<NccSaleXsfhmxWms> list = new ArrayList<>(); |
| | | if (matnrMap.containsKey(orderDetl.getMatnr())) { |
| | | list = matnrMap.get(orderDetl.getMatnr()); |
| | | list.add(currentData); |
| | | }else { |
| | | list.add(currentData); |
| | | } |
| | | matnrMap.put(orderDetl.getMatnr(), list); |
| | | } |
| | | |
| | | for (Map.Entry<String, List<NccSaleXsfhmxWms>> entry : matnrMap.entrySet()) { |
| | | String matnr = entry.getKey(); |
| | | List<NccSaleXsfhmxWms> list = entry.getValue(); |
| | | list.sort(Comparator.comparing(NccSaleXsfhmxWms::getNastnum).reversed()); |
| | | matnrMap.put(matnr, list); |
| | | } |
| | | |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(order.getOrderNo()); |
| | | for (WrkDetl wrkDetl : wrkDetls) { |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | |
| | | 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()); |
| | | |
| | | List<NccSaleXsfhmxWms> list = matnrMap.get(wrkDetl.getMatnr()); |
| | | if (!list.isEmpty()) { |
| | | NccSaleXsfhmxWms nccSaleXsfhmxWms = list.get(0); |
| | | BigDecimal nastnum = nccSaleXsfhmxWms.getNastnum(); |
| | | BigDecimal subtract = nastnum.subtract(BigDecimal.valueOf(wrkDetl.getWeight())); |
| | | if (subtract.doubleValue() <= 0) { |
| | | list.remove(0); |
| | | }else { |
| | | NccSaleXsfhmxWms currentData = JSONObject.parseObject(orderDetl.getRemark(), NccSaleXsfhmxWms.class); |
| | | if (currentData == null) { |
| | | continue; |
| | | nccSaleXsfhmxWms.setNastnum(subtract); |
| | | list.set(0, nccSaleXsfhmxWms); |
| | | } |
| | | |
| | | 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()); |
| | | orderDetl.setRemark(JSON.toJSONString(nccSaleXsfhmxWms)); |
| | | }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())) { |
| | | throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败,ERP原始数据为空"); |
| | | } |
| | | } |
| | | |
| | | if (!orderDetlService.insert(orderDetl)) { |
| | | throw new CoolException("重整出库订单【orderNo = " + 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 { |
| | | // 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 (Cools.isEmpty(orderDetl.getRemark())) { |
| | | // throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败,ERP原始数据为空"); |
| | | // } |
| | | // } |
| | | // if (!orderDetlService.insert(orderDetl)) { |
| | | // throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败"); |
| | | // } |
| | | // } |
| | | |
| | | // 修改订单状态 2.作业中 ===>> 4.待上报 |
| | | if (!orderService.updateSettle(orderSou.getId(), 4L, null)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |