package com.zy.nc.task.handler; import com.alibaba.fastjson.JSONObject; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.InventoryCheckOrder; import com.zy.asrs.entity.InventoryCheckOrderDetl; import com.zy.asrs.entity.Mat; import com.zy.asrs.entity.param.OpenOrderPakinParam; import com.zy.asrs.entity.param.OpenOrderPakoutParam; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.common.model.DetlDto; import com.zy.nc.entity.*; import com.zy.nc.service.*; 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 java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; @Service @Slf4j public class PlanOrderHandler extends AbstractHandler { @Autowired private NccSaleXsfhmxWmsService nccSaleXsfhmxWmsService; @Autowired private NccScZkmxbWmsService nccScZkmxbWmsService; @Autowired private NccCgCgdhdWmsService nccCgCgdhdWmsService; @Autowired private NccSaleDbddWmsService nccSaleDbddWmsService; @Autowired private NccCkPddWmsService nccCkPddWmsService; @Autowired private InventoryCheckOrderDetlService inventoryCheckOrderDetlService; @Autowired private InventoryCheckOrderService inventoryCheckOrderService; @Autowired private MatService matService; @Autowired private OpenService openService; @Autowired private StoreTypeService storeTypeService; /** * 发货 * * @return */ @Transactional public ReturnT start1(List wmsFlag) { try { List ids = storeTypeService.listOwn(); HashMap> map = new HashMap<>(); List fenzu; for (NccSaleXsfhmxWms wms : wmsFlag) { if(!ids.contains(wms.getFhckbm())){ continue; } if (map.get(wms.getFhckbm()) == null) { fenzu = new ArrayList<>(); fenzu.add(wms); map.put(wms.getFhckbm(), fenzu); } else { fenzu = map.get(wms.getFhckbm()); fenzu.add(wms); map.put(wms.getFhckbm(), fenzu); } } int size = 1; for (String key : map.keySet()) { OpenOrderPakoutParam param = new OpenOrderPakoutParam(); DetlDto detlDto; List orderDetails = new ArrayList<>(); long i = 1; for (NccSaleXsfhmxWms nccSaleXsfhmxWms : map.get(key)) { param.setOrderType("销售发货"); detlDto = new DetlDto(); detlDto.setMatnr(nccSaleXsfhmxWms.getWlbm()); detlDto.setAnfme(nccSaleXsfhmxWms.getNnum().doubleValue()); detlDto.setBatch(nccSaleXsfhmxWms.getVbatchcode()); detlDto.setWeight(nccSaleXsfhmxWms.getNastnum().doubleValue()); detlDto.setStandby1(nccSaleXsfhmxWms.getFhckbm()); detlDto.setLineNumber(i); detlDto.setRemark(JSONObject.toJSONString(nccSaleXsfhmxWms)); orderDetails.add(detlDto); log.info("NccSaleXsfhmxWms数据:{}", JSONObject.toJSON(nccSaleXsfhmxWms)); i++; nccSaleXsfhmxWms.setWmsFlag(1); param.setOrderNo(nccSaleXsfhmxWms.getVbillcode() + "-" + size); param.setCstmrName(nccSaleXsfhmxWms.getKhmc()); param.setKpCstmrName(nccSaleXsfhmxWms.getKpkhmc()); } param.setOrderDetails(orderDetails); openService.pakoutOrderCreate(param); nccSaleXsfhmxWmsService.updateBatchById(map.get(key)); size++; } } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } return SUCCESS; } /** * 发货 * * @return */ @Transactional public ReturnT start1In(List wmsFlag) { try { OpenOrderPakinParam param = new OpenOrderPakinParam(); DetlDto detlDto; List orderDetails = new ArrayList<>(); long i = 1; for (NccSaleXsfhmxWms nccSaleXsfhmxWms : wmsFlag) { param.setOrderType("销售退货"); detlDto = new DetlDto(); detlDto.setMatnr(nccSaleXsfhmxWms.getWlbm()); detlDto.setAnfme(nccSaleXsfhmxWms.getNnum().doubleValue()); detlDto.setWeight(nccSaleXsfhmxWms.getNastnum().doubleValue()); detlDto.setStandby1(nccSaleXsfhmxWms.getFhckbm()); detlDto.setLineNumber(i); detlDto.setRemark(JSONObject.toJSONString(nccSaleXsfhmxWms)); orderDetails.add(detlDto); log.info("NccSaleXsfhmxWms数据:{}", JSONObject.toJSON(nccSaleXsfhmxWms)); i++; nccSaleXsfhmxWms.setWmsFlag(1); param.setOrderNo(nccSaleXsfhmxWms.getVbillcode()); } param.setOrderDetails(orderDetails); openService.pakinOrderCreate(param); nccSaleXsfhmxWmsService.updateBatchById(wmsFlag); } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } return SUCCESS; } /** * 转库,包含产成品入库单 * * @return */ @Transactional public ReturnT start2In(List wmsFlag) { try { OpenOrderPakinParam param = new OpenOrderPakinParam(); param.setOrderType("转库-入库"); DetlDto detlDto; List orderDetails = new ArrayList<>(); long i = 1; for (NccScZkmxbWms nccScZkmxbWms : wmsFlag) { log.info("NccScZkmxbWms数据:{}", JSONObject.toJSON(nccScZkmxbWms)); detlDto = new DetlDto(); detlDto.setMatnr(nccScZkmxbWms.getWlbm()); detlDto.setAnfme(nccScZkmxbWms.getYingzzsl().doubleValue()); detlDto.setWeight(nccScZkmxbWms.getYingzsl().doubleValue()); detlDto.setBatch(nccScZkmxbWms.getVbatchcode()); detlDto.setLineNumber(i); detlDto.setRemark(JSONObject.toJSONString(nccScZkmxbWms)); detlDto.setStandby1(nccScZkmxbWms.getRkckbm()); orderDetails.add(detlDto); i++; nccScZkmxbWms.setWmsFlag(1); param.setOrderNo(nccScZkmxbWms.getVbillcode()); } param.setOrderDetails(orderDetails); openService.pakinOrderCreate(param); nccScZkmxbWmsService.updateBatchById(wmsFlag); } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } return SUCCESS; } /** * 转库,包含出库 * * @return */ @Transactional public ReturnT start2Out(List wmsFlag) { try { OpenOrderPakoutParam param = new OpenOrderPakoutParam(); param.setOrderType("转库-出库"); DetlDto detlDto; List orderDetails = new ArrayList<>(); long i = 1; for (NccScZkmxbWms nccScZkmxbWms : wmsFlag) { log.info("NccScZkmxbWms数据:{}", JSONObject.toJSON(nccScZkmxbWms)); detlDto = new DetlDto(); detlDto.setMatnr(nccScZkmxbWms.getWlbm()); detlDto.setAnfme(nccScZkmxbWms.getYingzzsl().doubleValue()); detlDto.setWeight(nccScZkmxbWms.getYingzsl().doubleValue()); detlDto.setBatch(nccScZkmxbWms.getVbatchcode()); detlDto.setLineNumber(i); detlDto.setRemark(JSONObject.toJSONString(nccScZkmxbWms)); orderDetails.add(detlDto); i++; nccScZkmxbWms.setWmsFlag(1); param.setOrderNo(nccScZkmxbWms.getVbillcode()); } param.setOrderDetails(orderDetails); openService.pakoutOrderCreate(param); nccScZkmxbWmsService.updateBatchById(wmsFlag); } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } return SUCCESS; } /** * 采购到货 * * @return */ @Transactional public ReturnT start3(List wmsFlag) { try { OpenOrderPakinParam param = new OpenOrderPakinParam(); param.setOrderType("采购到货"); DetlDto detlDto; List orderDetails = new ArrayList<>(); long i = 1; for (NccCgCgdhdWms nccCgCgdhdWms : wmsFlag) { log.info("nccCgCgdhdWms数据:{}", JSONObject.toJSON(nccCgCgdhdWms)); detlDto = new DetlDto(); detlDto.setMatnr(nccCgCgdhdWms.getWlbm()); detlDto.setAnfme(nccCgCgdhdWms.getYdzsl().doubleValue()); detlDto.setAnfme(nccCgCgdhdWms.getYdsl().doubleValue()); detlDto.setBatch(nccCgCgdhdWms.getVbatchcode()); detlDto.setLineNumber(i); detlDto.setRemark(JSONObject.toJSONString(nccCgCgdhdWms)); detlDto.setStandby1(nccCgCgdhdWms.getCkbm()); orderDetails.add(detlDto); i++; nccCgCgdhdWms.setWmsFlag(1); param.setOrderNo(nccCgCgdhdWms.getVbillcode()); } param.setOrderDetails(orderDetails); openService.pakinOrderCreate(param); nccCgCgdhdWmsService.updateBatchById(wmsFlag); } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } return SUCCESS; } /** * 盘点单 * * @return */ // @Transactional // public ReturnT start4(List wmsFlag) { // try { // InventoryCheckOrder param = new InventoryCheckOrder(); // InventoryCheckOrderDetl checkOrderDetl = null; // for (NccCkPddWms nccScZkmxbWms : wmsFlag) { // log.info("NccCkPddWms数据:{}", JSONObject.toJSON(nccScZkmxbWms)); // Mat mat = matService.selectByMatnr(nccScZkmxbWms.getWlbm()); // if (Cools.isEmpty(mat)) { // throw new CoolException(nccScZkmxbWms.getWlbm() + "编号商品检索失败,请先添加商品"); // } // checkOrderDetl = new InventoryCheckOrderDetl(); // checkOrderDetl.setMatnr(nccScZkmxbWms.getWlbm()); // checkOrderDetl.setMaktx(mat.getMaktx()); // checkOrderDetl.setOrderNo(nccScZkmxbWms.getVbillcode()); // checkOrderDetl.setAnfme(nccScZkmxbWms.getZmzsl().doubleValue()); // checkOrderDetl.setBatch(nccScZkmxbWms.getVbatchcode()); // inventoryCheckOrderDetlService.insert(checkOrderDetl); // nccScZkmxbWms.setWmsFlag(1); // param.setOrderNo(nccScZkmxbWms.getVbillcode()); // param.setCreateBy(nccScZkmxbWms.getPdrmc()); // // } // param.setCreateTime(new Date()); // param.setStatus("1"); // inventoryCheckOrderService.insert(param); // nccCkPddWmsService.updateBatchById(wmsFlag); // } catch (Exception e) { // e.printStackTrace(); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // return FAIL.setMsg(e.getMessage()); // } // return SUCCESS; // } /** * 调拨单 * * @return */ @Transactional public ReturnT start5(List wmsFlag) { try { List ids = storeTypeService.listOwn(); HashMap> map = new HashMap<>(); List fenzu; for (NccSaleDbddWms wms : wmsFlag) { if(!ids.contains(wms.getDcckbm())){ continue; } if (map.get(wms.getDcckbm()) == null) { fenzu = new ArrayList<>(); fenzu.add(wms); map.put(wms.getDcckbm(), fenzu); } else { fenzu = map.get(wms.getDcckbm()); fenzu.add(wms); map.put(wms.getDcckbm(), fenzu); } } int size = 1; for (String key : map.keySet()) { OpenOrderPakoutParam param = new OpenOrderPakoutParam(); param.setOrderType("集团内部调拨"); DetlDto detlDto; List orderDetails = new ArrayList<>(); long i = 1; for (NccSaleDbddWms nccSaleDbddWms : map.get(key)) { log.info("nccSaleDbddWms数据:{}", JSONObject.toJSON(nccSaleDbddWms)); detlDto = new DetlDto(); detlDto.setMatnr(nccSaleDbddWms.getWlbm()); detlDto.setAnfme(nccSaleDbddWms.getZsl().doubleValue()); detlDto.setWeight(nccSaleDbddWms.getFsl().doubleValue()); detlDto.setBatch(nccSaleDbddWms.getVbatchcode()); detlDto.setLineNumber(i); detlDto.setRemark(JSONObject.toJSONString(nccSaleDbddWms)); detlDto.setStandby1(nccSaleDbddWms.getDcckbm()); orderDetails.add(detlDto); i++; param.setOrderNo(nccSaleDbddWms.getVbillcode() + "-" + size); param.setCstmrName(nccSaleDbddWms.getDrkczzmc()); nccSaleDbddWms.setWmsFlag(1); } param.setOrderDetails(orderDetails); openService.pakoutOrderCreate(param); nccSaleDbddWmsService.updateBatchById(map.get(key)); size++; } } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } return SUCCESS; } }