package zy.cloud.wms.common.service.erp; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import zy.cloud.wms.common.entity.Parameter; import zy.cloud.wms.common.service.erp.entity.*; import zy.cloud.wms.common.utils.VersionUtils; import zy.cloud.wms.manager.entity.*; import zy.cloud.wms.manager.mapper.TagMapper; import zy.cloud.wms.manager.service.*; import zy.cloud.wms.manager.utils.HttpHandler; import zy.cloud.wms.manager.utils.NodeUtils; import java.io.IOException; import java.util.*; import java.util.stream.Collectors; /** * erp任务控制器 * Created by vincent on 2020/11/27 */ @Slf4j @Component @RestController public class ErpScheduler { public static final String URI = "http://123.60.34.127:6220/api"; public static final String GET_ORDERS = "cM/basis/getOrders"; public static final String GET_BASIS = "cM/basis/getBasis"; public static final String UPLOAD_BILL = "cM/basis/uploadBill"; public static final String UPLOAD_STOCK = "cM/basis/uploadStock"; public static final String OVER_BILL = "cM/basis/OverBill"; public static final String UPLOAD_CANCEL_RESULT = "cM/basis/cancelOrders"; @Autowired private MatService matService; @Autowired private CstmrService cstmrService; @Autowired private LocDetlService locDetlService; @Autowired private TagService tagService; @Autowired private TagMapper tagMapper; @Autowired private OrderService orderService; @Autowired private OrderDetlService orderDetlService; @Autowired private SnowflakeIdWorker snowflakeIdWorker; @Autowired private PakoutService pakoutService; @Autowired private NodeService nodeService; @Autowired private DocLogService docLogService; @Autowired private RequestLogService requestLogService; /** * 商品下载 */ // @Scheduled(cron = "0/5 * * * * ? ") @GetMapping("/test1") // @PostConstruct public void getBasis1Execute(){ try { Map param = new HashMap<>(); param.put("rec", 0); param.put("Flag", 1); String response = new HttpHandler.Builder() .setUri(URI) .setPath(GET_BASIS) .setJson(JSON.toJSONString(param)) .build() .doPost(); if (!Cools.isEmpty(response)) { log.info(response); Date now = new Date(); Result result = JSON.parseObject(response, Result.class); if (result.getCode() != 1) { return; } List list = JSON.parseArray(result.getData(), GetBasisResult.class); Tag first = null; for (GetBasisResult data : list) { Mat mat = matService.selectByMatnr(data.getUserCode()); String modifyDate = data.getModifyDate(); Date updateTime = null; if (!Cools.isEmpty(modifyDate)) { updateTime = DateUtils.convert(data.getModifyDate()); } // 分类 Tag second = tagService.selectOne(new EntityWrapper().eq("name", data.getYjfl()).eq("level", 2)); if (second == null) { if (first == null) { first = tagService.selectOne(new EntityWrapper().eq("level", 1)); if (first == null) { throw new CoolException("全部分类出错"); } } NodeUtils nodeUtils = new NodeUtils(); nodeUtils.executePath(first.getId()); second = new Tag( null, // 编号 data.getYjfl(), // 名称 first.getId(), // 父级 first.getName(), // 父级名称 nodeUtils.path.toString(), // 关联路径 nodeUtils.pathName.toString(), // 关联路径名 0, // 类型 null, // 负责人 null, // 图片 null, // 简要描述 null, // 数量 2, // 等级 null, // 排序 1, // 状态 now, // 添加时间 null, // 添加人员 now, // 修改时间 null, // 修改人员 null // 备注 ); if (tagMapper.insert(second) == 0) { throw new CoolException("插入分类失败"); } } Tag third = tagService.selectOne(new EntityWrapper().eq("level", 3).eq("name", data.getEjfl()).eq("parent_name", data.getYjfl())); if (third == null) { NodeUtils nodeUtils = new NodeUtils(); nodeUtils.executePath(second.getId()); third = new Tag( null, // 编号 data.getEjfl(), // 名称 second.getId(), // 父级 second.getName(), // 父级名称 nodeUtils.path.toString(), // 关联路径 nodeUtils.pathName.toString(), // 关联路径名 0, // 类型 null, // 负责人 null, // 图片 null, // 简要描述 null, // 数量 3, // 等级 null, // 排序 1, // 状态 now, // 添加时间 null, // 添加人员 now, // 修改时间 null, // 修改人员 null // 备注 ); if (tagMapper.insert(third) == 0) { throw new CoolException("插入分类失败"); } } if (null == mat) { mat = new Mat( String.valueOf(data.getRec()), // 编号 null, // 所属区域 third.getId(), // 所属归类 data.getUserCode(), // 商品编号 data.getFullName(), // 商品名称 null, // 名称 data.getStandard(), // 规格 null, // 型号 null, // 批号 data.getUnit3(), // 单位 data.getBarcode(), // 条码 null, // 单据类型 null, // 单据编号 null, // 客户名称 null, // 品项数 null, // 库存余量 null, // 重量 1, // null, // 添加人员 now, // 添加时间 null, // 修改人员 updateTime, // 修改时间 null // 备注 ); matService.insert(mat); } else { mat.setUuid(String.valueOf(data.getRec())); mat.setMatnr(data.getUserCode()); mat.setMaktx(data.getFullName()); mat.setSpecs(data.getStandard()); mat.setUpdateTime(updateTime); mat.setBarcode(data.getBarcode()); mat.setUnit(data.getUnit3()); matService.updateById(mat); } log.info("====>> 更新物料:{}", data.getUserCode()); } } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } } /** * 商品下载 */ @Scheduled(cron = "0 */2 * * * ? ") public void updateMatExecute(){ try { Map param = new HashMap<>(); param.put("Flag", 6); String response = new HttpHandler.Builder() .setUri(URI) .setPath(GET_BASIS) .setJson(JSON.toJSONString(param)) .build() .doPost(); if (!Cools.isEmpty(response)) { log.info("商品数据更新:"); log.info(response); Date now = new Date(); Result result = JSON.parseObject(response, Result.class); if (result.getCode() != 1) { return; } List list = JSON.parseArray(result.getData(), GetBasisResult.class); Tag first = null; for (GetBasisResult data : list) { Mat mat = matService.selectByMatnr(data.getUserCode()); String modifyDate = data.getModifyDate(); Date updateTime = null; if (!Cools.isEmpty(modifyDate)) { updateTime = DateUtils.convert(data.getModifyDate()); } // 分类 Tag second = tagService.selectOne(new EntityWrapper().eq("name", data.getYjfl()).eq("level", 2)); if (second == null) { if (first == null) { first = tagService.selectOne(new EntityWrapper().eq("level", 1)); if (first == null) { throw new CoolException("全部分类出错"); } } NodeUtils nodeUtils = new NodeUtils(); nodeUtils.executePath(first.getId()); second = new Tag( null, // 编号 data.getYjfl(), // 名称 first.getId(), // 父级 first.getName(), // 父级名称 nodeUtils.path.toString(), // 关联路径 nodeUtils.pathName.toString(), // 关联路径名 0, // 类型 null, // 负责人 null, // 图片 null, // 简要描述 null, // 数量 2, // 等级 null, // 排序 1, // 状态 now, // 添加时间 null, // 添加人员 now, // 修改时间 null, // 修改人员 null // 备注 ); if (tagMapper.insert(second) == 0) { throw new CoolException("插入分类失败"); } } Tag third = tagService.selectOne(new EntityWrapper().eq("level", 3).eq("name", data.getEjfl()).eq("parent_name", data.getYjfl())); if (third == null) { NodeUtils nodeUtils = new NodeUtils(); nodeUtils.executePath(second.getId()); third = new Tag( null, // 编号 data.getEjfl(), // 名称 second.getId(), // 父级 second.getName(), // 父级名称 nodeUtils.path.toString(), // 关联路径 nodeUtils.pathName.toString(), // 关联路径名 0, // 类型 null, // 负责人 null, // 图片 null, // 简要描述 null, // 数量 3, // 等级 null, // 排序 1, // 状态 now, // 添加时间 null, // 添加人员 now, // 修改时间 null, // 修改人员 null // 备注 ); if (tagMapper.insert(third) == 0) { throw new CoolException("插入分类失败"); } } if (null == mat) { mat = new Mat( String.valueOf(data.getRec()), // 编号 null, // 所属区域 third.getId(), // 所属归类 data.getUserCode(), // 商品编号 data.getFullName(), // 商品名称 null, // 名称 data.getStandard(), // 规格 null, // 型号 null, // 批号 data.getUnit3(), // 单位 data.getBarcode(), // 条码 null, // 单据类型 null, // 单据编号 null, // 客户名称 null, // 品项数 null, // 库存余量 null, // 重量 1, // null, // 添加人员 now, // 添加时间 null, // 修改人员 updateTime, // 修改时间 null // 备注 ); matService.insert(mat); } else { mat.setUuid(String.valueOf(data.getRec())); mat.setMatnr(data.getUserCode()); mat.setMaktx(data.getFullName()); mat.setSpecs(data.getStandard()); mat.setUpdateTime(updateTime); mat.setBarcode(data.getBarcode()); mat.setUnit(data.getUnit3()); matService.updateById(mat); } log.info("====>> 更新物料:{}", data.getUserCode()); } } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } } /** * 客户下载 */ // @Scheduled(cron = "0/5 * * * * ? ") // @PostConstruct public void getBasis2Execute(){ try { Map param = new HashMap<>(); param.put("rec", 0); param.put("Flag", 2); String response = new HttpHandler.Builder() .setUri(URI) .setPath(GET_BASIS) .setJson(JSON.toJSONString(param)) .build() .doPost(); if (!Cools.isEmpty(response)) { log.info(response); Date now = new Date(); Result result = JSON.parseObject(response, Result.class); if (result.getCode() != 1) { return; } List list = JSON.parseArray(result.getData(), GetBasisResult.class); for (GetBasisResult data : list) { Cstmr cstmr = cstmrService.selectOne(new EntityWrapper().eq("uuid", data.getUserCode())); String modifyDate = data.getModifyDate(); Date updateTime = null; if (!Cools.isEmpty(modifyDate)) { updateTime = DateUtils.convert(data.getModifyDate()); } if (null == cstmr) { cstmr = new Cstmr( data.getUserCode(), // 客户编号[非空] data.getFullName(), // 客户名称 null, // 联系人 null, // 联系电话 null, // 联系地址 1, // 状态 null, // 添加人员 now, // 添加时间 null, // 修改人员 updateTime, // 修改时间 String.valueOf(data.getRec()) // 备注 ); cstmrService.insert(cstmr); } else { cstmr.setUuid(data.getUserCode()); cstmr.setName(data.getFullName()); cstmr.setUpdateTime(updateTime); cstmr.setMemo(String.valueOf(data.getRec())); cstmrService.updateById(cstmr); } log.info("====>> 更新客户资料:{}", data.getUserCode()); } } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } } /** * 持久化销售订单 */ @Scheduled(cron = "0 */1 * * * ?") @Transactional // @PostConstruct public void getOrdersExecute(){ try { Map json = new HashMap<>(); json.put("vchType", 11); String response = new HttpHandler.Builder() .setUri(URI) .setPath(GET_ORDERS) .setJson(JSON.toJSONString(json)) .build() .doPost(); if (!Cools.isEmpty(response)) { // log.info(response); Date now = new Date(); Result result = JSON.parseObject(response, Result.class); if (result.getCode() != 1) { return; } List list = JSON.parseArray(result.getData(), GetOrderResult0.class); if (!Cools.isEmpty(list)) { boolean complete = true; Set existNumbers = new HashSet<>(); for (GetOrderResult0 data : list) { if (orderService.selectByOrderNo(data.getNumber()) != null) { existNumbers.add(data.getNumber()); continue; } Cstmr cstmr = cstmrService.selectByUuid(data.getBTypeID()); Order order = new Order( String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] data.getNumber(), // 订单编号 data.getBillDate(), // 单据日期 11L, // 单据类型 null, // 项目编号 null, // 项目名称 null, // 调拨项目编号 null, // 初始票据号 String.valueOf(data.getVchcode()), // 票据号 null, // 客户编号 cstmr==null?data.getBTypeID():cstmr.getName(), // 客户 data.getBTypeID(), // 联系方式 * null, // 操作人员 null, // 合计金额 null, // 优惠率 null, // 优惠金额 null, // 销售或采购费用合计 null, // 实付金额 null, // 付款类型 data.getETypeID(), // 业务员 * null, // 结算天数 null, // 邮费支付类型 null, // 邮费 null, // 付款时间 null, // 发货时间 null, // 物流名称 null, // 物流单号 1L, // 订单状态 1, // 状态 9527L, // 添加人员 now, // 添加时间 9527L, // 修改人员 now, // 修改时间 data.getSummary() // 备注 ); if (!orderService.insert(order)) { throw new CoolException("保存订单表头失败!"); } for (GetOrderResultDetl0 detl0 : data.getDetail()) { Mat mat = matService.selectByMatnr(detl0.getUserCode()); if (mat == null) { log.error("{}商品不存在。", detl0.getUserCode()); continue; } OrderDetl orderDetl = new OrderDetl(); VersionUtils.setOrderDetl(orderDetl, mat); orderDetl.setName(String.valueOf(detl0.getRowNo())); // 商品明细行号 orderDetl.setOrderId(order.getId()); // 订单内码 orderDetl.setAnfme(detl0.getQty()); // 商品数量 orderDetl.setCount(detl0.getQty()); // 总数量 * orderDetl.setUnitPrice(detl0.getPrice()); // 商品单价 orderDetl.setCreateBy(9527L); orderDetl.setCreateTime(now); orderDetl.setUpdateBy(9527L); orderDetl.setUpdateTime(now); orderDetl.setStatus(1); orderDetl.setMemo(detl0.getComment()); if (!orderDetlService.insert(orderDetl)) { complete = false; log.error("保存销售订单失败!"); } } } if (complete) { List collect = list.stream().map(GetOrderResult0::getNumber).distinct().collect(Collectors.toList()); for (String number : collect) { if (!existNumbers.contains(number)) { orderService.updateSettle(number, 1L); } } } } } } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } } /** * 完成销售订单 */ @Scheduled(cron = "0/10 * * * * ? ") @Transactional // @PostConstruct public void finishOrdersExecute(){ try { Date now = new Date(); List orders = orderService.selectList(new EntityWrapper().eq("settle", 4).isNotNull("number")); if (!Cools.isEmpty(orders)) { List orderNos = orders.stream().map(Order::getOrderNo).distinct().collect(Collectors.toList()); for (Order order : orders) { GetOrderResult0 getOrderResult0 = new GetOrderResult0(); List list = new ArrayList<>(); getOrderResult0.setDetail(list); // 日志 List docLogs = new ArrayList<>(); // 头 getOrderResult0.setNumber(order.getOrderNo()); getOrderResult0.setVchType(11); getOrderResult0.setBillDate(order.getOrderTime()); getOrderResult0.setBTypeID(order.getTel()); getOrderResult0.setKTypeID("宏挺仓库"); getOrderResult0.setVchcode(Integer.parseInt(order.getNumber())); getOrderResult0.setSummary("销售订单 - " + DateUtils.convert(new Date(), "yyyy-MM-dd HH:mm")); // 体 List orderDetls = orderDetlService.selectByOrderNo(order.getOrderNo()); for (OrderDetl orderDetl : orderDetls) { GetOrderResultDetl0 detl0 = new GetOrderResultDetl0(); detl0.setUserCode(orderDetl.getMatnr()); detl0.setQty(orderDetl.getCount()); detl0.setPrice(orderDetl.getUnitPrice()); detl0.setComment(orderDetl.getMemo()); detl0.setUnit(orderDetl.getUnit()); detl0.setRowNo(Integer.parseInt(orderDetl.getName())); list.add(detl0); // 日志 docLogs.add(new DocLog( order.getOrderNo(), // 单据编号 11L, // 单据类型 "销售订单", // 单据名称 orderDetl.getMatnr(), // 商品编号 orderDetl.getCount(), // 上报数量 1, // 结果 now, // 上报时间 null // 备注 )); } log.warn(JSON.toJSONString(getOrderResult0)); String response = new HttpHandler.Builder() .setUri(URI) .setPath(UPLOAD_BILL) .setJson(JSON.toJSONString(getOrderResult0)) .build() .doPost(); try { for (DocLog docLog : docLogs) { docLogService.insert(docLog); } RequestLog logInfo = new RequestLog(); logInfo.setName("单据上传,单据类型" + 11); logInfo.setRequest(JSON.toJSONString(getOrderResult0)); // 入参 logInfo.setResponse(response); // 出参 logInfo.setCreateTime(new Date()); requestLogService.insert(logInfo); } catch (Exception e) { log.error(e.getMessage()); } if (!Cools.isEmpty(response)) { log.warn(response); Result result = JSON.parseObject(response, Result.class); if (result.getCode() != 1 && !result.getMsg().equals("单据已经审核完成或删除,不能审核。")) { continue; } if (!orderService.updateSettle(order.getOrderNo(), 6L)) { throw new CoolException("修改订单状态失败"); } } } } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } } /** * 完成采购退货订单 */ @Scheduled(cron = "0/10 * * * * ? ") @Transactional // @PostConstruct public void finishOrders0Execute(){ try { Date now = new Date(); List orders = orderService.selectList(new EntityWrapper().eq("settle", 4).eq("doc_type", 6)); if (!Cools.isEmpty(orders)) { List orderNos = orders.stream().map(Order::getOrderNo).distinct().collect(Collectors.toList()); for (Order order : orders) { GetOrderResult0 getOrderResult0 = new GetOrderResult0(); List list = new ArrayList<>(); getOrderResult0.setDetail(list); // 日志 List docLogs = new ArrayList<>(); // 头 getOrderResult0.setNumber(order.getOrderNo()); getOrderResult0.setVchType(6); getOrderResult0.setBillDate(order.getOrderTime()); getOrderResult0.setBTypeID(order.getTel()); getOrderResult0.setKTypeID("宏挺仓库"); getOrderResult0.setBTypeID(Cools.isEmpty(order.getCstmr())?"SHHT":String.valueOf(order.getCstmr())); getOrderResult0.setBTypeID("SHHT"); getOrderResult0.setSummary("采购退货单 - " + DateUtils.convert(new Date(), "yyyy-MM-dd HH:mm")); // 体 List orderDetls = orderDetlService.selectByOrderNo(order.getOrderNo()); for (OrderDetl orderDetl : orderDetls) { GetOrderResultDetl0 detl0 = new GetOrderResultDetl0(); detl0.setUserCode(orderDetl.getMatnr()); detl0.setQty(orderDetl.getAnfme()); detl0.setPrice(orderDetl.getUnitPrice()); detl0.setUnit(orderDetl.getUnit()); detl0.setComment(orderDetl.getMemo()); list.add(detl0); // 日志 docLogs.add(new DocLog( order.getOrderNo(), // 单据编号 6L, // 单据类型 "采购退货订单", // 单据名称 orderDetl.getMatnr(), // 商品编号 orderDetl.getCount(), // 上报数量 1, // 结果 now, // 上报时间 null // 备注 )); } System.out.println(JSON.toJSONString(getOrderResult0)); String response = new HttpHandler.Builder() .setUri(URI) .setPath(UPLOAD_BILL) .setJson(JSON.toJSONString(getOrderResult0)) .build() .doPost(); try { for (DocLog docLog : docLogs) { docLogService.insert(docLog); } RequestLog logInfo = new RequestLog(); logInfo.setName("单据上传,单据类型" + 6); logInfo.setRequest(JSON.toJSONString(getOrderResult0)); // 入参 logInfo.setResponse(response); // 出参 logInfo.setCreateTime(new Date()); requestLogService.insert(logInfo); } catch (Exception e) { log.error(e.getMessage()); } if (!Cools.isEmpty(response)) { log.warn(response); Result result = JSON.parseObject(response, Result.class); if (result.getCode() != 1) { continue; } if (!orderService.updateSettle(getOrderResult0.getNumber(), 6L)) { throw new CoolException("修改订单状态失败"); } // // 转历史档 // int save = custOrderMapper.saveLog(getOrderResult0.getNumber()); // if (save > 0) { // if (custOrderMapper.delete(new EntityWrapper().eq("number", getOrderResult0.getNumber())) == 0) { // throw new CoolException("删除销售订单失败"); // } // log.info("{}销售订单拣货结束", getOrderResult0.getNumber()); // } } } } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } } /** * 库存上传 */ // @Scheduled(cron = "0/15 * * * * ? ") @GetMapping("test2") public void uploadStockExecute(){ try { List statis = locDetlService.getLocDetlStatis(); if (!Cools.isEmpty(statis)) { UploadStock uploadStock = new UploadStock(); uploadStock.setNumber(String.valueOf(snowflakeIdWorker.nextId())); uploadStock.setVchType(89); uploadStock.setBillDate(DateUtils.convert(new Date(), DateUtils.yyyyMMdd_F)); uploadStock.setDataSize(statis.size()); List detail = new ArrayList<>(); uploadStock.setDetail(detail); for (LocDetl locDetl : statis) { Mat mat = matService.selectByMatnr(locDetl.getMatnr()); if (mat == null) {continue;} UploadStockDtel detl = new UploadStockDtel(); detl.setUserCode(mat.getMatnr()); detl.setQty(locDetl.getAnfme()); // detl.setPrice(Double.parseDouble()); detl.setComment(mat.getMemo()); detail.add(detl); } String response = new HttpHandler.Builder() .setUri(URI) .setPath(UPLOAD_STOCK) .setJson(JSON.toJSONString(uploadStock)) .build() .doPost(); if (!Cools.isEmpty(response)) { log.info("上报库存明细统计 ======>> \nrequest:{} \nresponse:{}", JSON.toJSONString(uploadStock), response); Result result = JSON.parseObject(response, Result.class); if (result.getCode() != 1) { } } } } catch (Exception e) { e.printStackTrace(); } } /** * 获取取消订单 */ @Scheduled(cron = "0/10 * * * * ? ") @Transactional // @PostConstruct public void getCancelOrdersExecute(){ try { Map json = new HashMap<>(); json.put("vchType", 11); json.put("flag", 2); String response = new HttpHandler.Builder() .setUri(URI) .setPath(GET_ORDERS) .setJson(JSON.toJSONString(json)) .build() .doPost(); if (!Cools.isEmpty(response)) { // log.info(response); Date now = new Date(); Result result = JSON.parseObject(response, Result.class); if (result.getCode() != 1) { return; } List list = JSON.parseArray(result.getData(), GetOrderResult0.class); if (!Cools.isEmpty(list)) { Set existNumbers = new HashSet<>(); for (GetOrderResult0 result0 : list) { existNumbers.add(result0.getNumber()); } for (String number : existNumbers) { Order order = orderService.selectByOrderNo(number); if (order != null) { if (order.getSettle() != 3L && order.getSettle() != 5L) { if (orderService.updateSettle(number, 5L)) { // 立库出库货位转至A99 List pakouts = pakoutService.selectList(new EntityWrapper() .eq("node_id", -1).eq("doc_num", number).ne("memo", "1")); Node node = nodeService.selectByUuid(Parameter.get().getUniNode()); for (Pakout pakout : pakouts) { // 立库出库货位 if (pakout.getLocNo().length() == 7) { LocDetl locDetl = locDetlService.getLocDetl(node.getId(), pakout.getMatnr()); if (locDetl == null) { locDetl = new LocDetl(); locDetl.setLocNo(node.getName()); locDetl.setNodeId(node.getId()); locDetl.setAnfme(pakout.getAnfme()); VersionUtils.setLocDetl(locDetl, pakout); locDetl.setStatus(1); locDetl.setCreateBy(9527L); locDetl.setCreateTime(now); locDetl.setUpdateBy(9527L); locDetl.setUpdateTime(now); boolean insert = locDetlService.insert(locDetl); if (!insert) { throw new CoolException("新增库存明细档失败"); } } else { if (!locDetlService.incrementStock(node.getId(), pakout.getMatnr(), pakout.getAnfme())) { throw new CoolException("新增库存明细档失败"); } } if (!pakoutService.updateStep(pakout.getWrkNo(), pakout.getDocNum())) { throw new CoolException("取消订单后回滚立库拣货单失败"); } } } } else { // throw new CoolException("修改订单状态失败"); } } } } } } } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } } }