From 7ba8e1baad584494c965cc0b70d0ed9dde8781a8 Mon Sep 17 00:00:00 2001 From: Richie <280645618@qq.com> Date: Sat, 24 May 2025 08:50:51 +0800 Subject: [PATCH] =?UTF-8?q?orderitem=E6=96=B0=E5=A2=9Eshoptype=E5=92=8Csho?= =?UTF-8?q?pid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/oms-api/pom.xml | 5 + .../oms/config/MybatisPlusConfig.java | 2 +- .../oms/controller/OOrderController.java | 81 +++ .../JwtAuthenticationTokenFilter.java | 2 +- .../cn/qihangerp/security/SecurityConfig.java | 2 +- docs/qihang-oms.sql | 62 +- .../module/order/domain/OOrderItem.java | 9 + .../order/service/impl/OOrderServiceImpl.java | 581 ++++++++++++------ .../open/tao/service/TaoOrderService.java | 9 + .../tao/service/impl/TaoOrderServiceImpl.java | 101 +++ .../module/open/wei/domain/WeiOrder.java | 2 + .../module/open/wei/domain/WeiOrderItem.java | 2 + .../module/open/wei/domain/WeiRefund.java | 2 + .../views/shipping/ewaybillPrint/index.vue | 2 +- .../stockup/warehouse/order_item_list.vue | 2 +- vue/src/views/tao/ewaybill/index.vue | 4 +- 16 files changed, 641 insertions(+), 227 deletions(-) create mode 100644 api/oms-api/src/main/java/cn/qihangerp/oms/controller/OOrderController.java diff --git a/api/oms-api/pom.xml b/api/oms-api/pom.xml index 3c4ec85a..622c9431 100644 --- a/api/oms-api/pom.xml +++ b/api/oms-api/pom.xml @@ -98,6 +98,11 @@ goods-api 1.0.6 + + cn.qihangerp.module + order + 1.0 + cn.qihangerp.services order-api diff --git a/api/oms-api/src/main/java/cn/qihangerp/oms/config/MybatisPlusConfig.java b/api/oms-api/src/main/java/cn/qihangerp/oms/config/MybatisPlusConfig.java index 95f318ef..b40c9e11 100644 --- a/api/oms-api/src/main/java/cn/qihangerp/oms/config/MybatisPlusConfig.java +++ b/api/oms-api/src/main/java/cn/qihangerp/oms/config/MybatisPlusConfig.java @@ -9,7 +9,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; @Configuration -@MapperScan({"cn.qihangerp.oms.mapper","cn.qihangerp.module.*.mapper","cn.qihangerp.module.mapper"}) +@MapperScan({"cn.qihangerp.module.*.mapper","cn.qihangerp.module.mapper"}) public class MybatisPlusConfig { @Primary @Bean diff --git a/api/oms-api/src/main/java/cn/qihangerp/oms/controller/OOrderController.java b/api/oms-api/src/main/java/cn/qihangerp/oms/controller/OOrderController.java new file mode 100644 index 00000000..d8664d14 --- /dev/null +++ b/api/oms-api/src/main/java/cn/qihangerp/oms/controller/OOrderController.java @@ -0,0 +1,81 @@ +//package cn.qihangerp.oms.controller; +// +// +//import cn.qihangerp.common.AjaxResult; +//import cn.qihangerp.common.PageQuery; +//import cn.qihangerp.common.TableDataInfo; +//import cn.qihangerp.module.order.service.OOrderItemService; +//import cn.qihangerp.module.order.service.OOrderService; +//import cn.qihangerp.request.OrderSearchRequest; +//import cn.qihangerp.security.common.BaseController; +//import lombok.AllArgsConstructor; +//import org.springframework.security.access.prepost.PreAuthorize; +//import org.springframework.web.bind.annotation.*; +// +///** +// * 店铺订单Controller +// * +// * @author qihang +// * @date 2023-12-31 +// */ +//@AllArgsConstructor +//@RestController +//@RequestMapping("/oorder") +//public class OOrderController extends BaseController +//{ +// +// private final OOrderService orderService; +// private final OOrderItemService orderItemService; +// +// /** +// * 查询店铺订单列表 +// */ +// @PreAuthorize("@ss.hasPermi('shop:order:list')") +// @GetMapping("/list") +// public TableDataInfo list(OrderSearchRequest bo, PageQuery pageQuery) +// { +// var pageList = orderService.queryPageList(bo,pageQuery); +// return getDataTable(pageList); +// } +// +// +// /** +// * 获取店铺订单详细信息 +// */ +// @PreAuthorize("@ss.hasPermi('shop:order:query')") +// @GetMapping(value = "/{id}") +// public AjaxResult getInfo(@PathVariable("id") Long id) +// { +// return success(orderService.queryDetailById(id)); +// } +// +// +//// @PostMapping +//// public AjaxResult add(@RequestBody OrderCreateBo order) +//// { +//// if(order.getGoodsAmount()==null)return new AjaxResult(1503,"请填写商品价格!"); +//// +//// int result = orderService.insertErpOrder(order,getUsername()); +//// if(result == -1) return new AjaxResult(501,"订单号已存在!"); +//// if(result == -2) return new AjaxResult(502,"请添加订单商品!"); +//// if(result == -3) return new AjaxResult(503,"请完善订单商品明细!"); +//// if(result == -4) return new AjaxResult(504,"请选择店铺!"); +//// return toAjax(result); +//// } +//// /** +//// * 订单发货 +//// * @param order +//// * @return +//// */ +//// @Log(title = "店铺订单", businessType = BusinessType.UPDATE) +//// @PostMapping("/ship") +//// public AjaxResult ship(@RequestBody ErpOrder order) +//// { +//// order.setUpdateBy(getUsername()); +//// int result = orderService.shipErpOrder(order); +//// if(result == -1) return new AjaxResult(501,"订单不存在!"); +//// else if(result == -2) return new AjaxResult(502,"订单号已存在!"); +//// return toAjax(result); +//// } +// +//} diff --git a/core/security/src/main/java/cn/qihangerp/security/JwtAuthenticationTokenFilter.java b/core/security/src/main/java/cn/qihangerp/security/JwtAuthenticationTokenFilter.java index 6808fa99..6834abc9 100644 --- a/core/security/src/main/java/cn/qihangerp/security/JwtAuthenticationTokenFilter.java +++ b/core/security/src/main/java/cn/qihangerp/security/JwtAuthenticationTokenFilter.java @@ -51,7 +51,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { || request.getRequestURI().contains("/login") || request.getRequestURI().contains("/captchaImage") || request.getRequestURI().contains("/order/get_detail") - || request.getRequestURI().equals("/refund/get_detail") + || request.getRequestURI().contains("/refund/get_detail") || request.getRequestURI().contains("/system/config") ) { // 登录页面,放行 || request.getRequestURI().equals("/order/get_detail") diff --git a/core/security/src/main/java/cn/qihangerp/security/SecurityConfig.java b/core/security/src/main/java/cn/qihangerp/security/SecurityConfig.java index 0f1f2612..fe51340c 100644 --- a/core/security/src/main/java/cn/qihangerp/security/SecurityConfig.java +++ b/core/security/src/main/java/cn/qihangerp/security/SecurityConfig.java @@ -61,7 +61,7 @@ public class SecurityConfig { // 允许所有OPTIONS请求 .requestMatchers("/home").permitAll() .requestMatchers(HttpMethod.GET, "/favicon.ico").permitAll() - .requestMatchers(HttpMethod.GET, "/*/order/get_detail").permitAll() + .requestMatchers(HttpMethod.GET, "/tao/order/get_detail").permitAll() .requestMatchers(HttpMethod.GET, "/refund/get_detail").permitAll() .requestMatchers(HttpMethod.GET, "/images/preview/**").permitAll() .requestMatchers(HttpMethod.GET, "/system/config/**").permitAll() diff --git a/docs/qihang-oms.sql b/docs/qihang-oms.sql index d654bbcc..615a558c 100644 --- a/docs/qihang-oms.sql +++ b/docs/qihang-oms.sql @@ -795,36 +795,38 @@ CREATE TABLE `o_order` ( -- ---------------------------- DROP TABLE IF EXISTS `o_order_item`; CREATE TABLE `o_order_item` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id,自增', - `order_id` bigint NOT NULL COMMENT '订单ID(o_order外键)', - `order_num` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单号(第三方平台)', - `sub_order_num` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '子订单号(第三方平台)', - `sku_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '第三方平台skuId', - `goods_id` bigint NOT NULL DEFAULT 0 COMMENT '商品id(o_goods外键)', - `goods_sku_id` bigint NOT NULL DEFAULT 0 COMMENT '商品skuid(o_goods_sku外键)', - `goods_title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品标题', - `goods_img` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品图片', - `goods_num` varchar(35) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品编码', - `goods_spec` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品规格', - `sku_num` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品规格编码', - `goods_price` double NOT NULL COMMENT '商品单价', - `item_amount` double NULL DEFAULT NULL COMMENT '子订单金额', - `discount_amount` double NULL DEFAULT 0 COMMENT '子订单优惠金额', - `payment` double NULL DEFAULT NULL COMMENT '实际支付金额', - `quantity` int NOT NULL COMMENT '商品数量', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - `refund_count` int NULL DEFAULT 0 COMMENT '已退货数量', - `refund_status` int NULL DEFAULT NULL COMMENT '售后状态 1:无售后或售后关闭,2:售后处理中,3:退款中,4: 退款成功 ', - `order_status` int NULL DEFAULT NULL COMMENT '订单状态1:待发货,2:已发货,3:已完成,11已取消;21待付款', - `has_push_erp` int NULL DEFAULT 0 COMMENT '是否推送到ERP', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `create_by` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `update_by` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新人', - PRIMARY KEY (`id`) USING BTREE, - INDEX `goodId_index`(`goods_id`) USING BTREE, - INDEX `order_id`(`order_id`) USING BTREE, - INDEX `order_num_index`(`order_num`) USING BTREE + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id,自增', + `order_id` bigint NOT NULL COMMENT '订单ID(o_order外键)', + `order_num` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单号(第三方平台)', + `sub_order_num` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '子订单号(第三方平台)', + `sku_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '第三方平台skuId', + `goods_id` bigint NOT NULL DEFAULT 0 COMMENT '商品id(o_goods外键)', + `goods_sku_id` bigint NOT NULL DEFAULT 0 COMMENT '商品skuid(o_goods_sku外键)', + `goods_title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品标题', + `goods_img` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品图片', + `goods_num` varchar(35) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品编码', + `goods_spec` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品规格', + `sku_num` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品规格编码', + `goods_price` double NOT NULL COMMENT '商品单价', + `item_amount` double NULL DEFAULT NULL COMMENT '子订单金额', + `discount_amount` double NULL DEFAULT 0 COMMENT '子订单优惠金额', + `payment` double NULL DEFAULT NULL COMMENT '实际支付金额', + `quantity` int NOT NULL COMMENT '商品数量', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `refund_count` int NULL DEFAULT 0 COMMENT '已退货数量', + `refund_status` int NULL DEFAULT NULL COMMENT '售后状态 1:无售后或售后关闭,2:售后处理中,3:退款中,4: 退款成功 ', + `order_status` int NULL DEFAULT NULL COMMENT '订单状态1:待发货,2:已发货,3:已完成,11已取消;21待付款', + `has_push_erp` int NULL DEFAULT 0 COMMENT '是否推送到ERP', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `create_by` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `update_by` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新人', + `shop_type` int NOT NULL COMMENT '店铺类型', + `shop_id` bigint NOT NULL COMMENT '店铺ID', + PRIMARY KEY (`id`) USING BTREE, + INDEX `goodId_index`(`goods_id`) USING BTREE, + INDEX `order_id`(`order_id`) USING BTREE, + INDEX `order_num_index`(`order_num`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 43 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'OMS订单明细表' ROW_FORMAT = DYNAMIC; -- ---------------------------- diff --git a/module/order/src/main/java/cn/qihangerp/module/order/domain/OOrderItem.java b/module/order/src/main/java/cn/qihangerp/module/order/domain/OOrderItem.java index 30fa668f..7befbcb9 100644 --- a/module/order/src/main/java/cn/qihangerp/module/order/domain/OOrderItem.java +++ b/module/order/src/main/java/cn/qihangerp/module/order/domain/OOrderItem.java @@ -25,6 +25,15 @@ public class OOrderItem implements Serializable { * 订单ID(o_order外键) */ private String orderId; + /** + * 店铺类型 + */ + private Integer shopType; + + /** + * 店铺ID + */ + private Long shopId; /** * 子订单号(第三方平台) diff --git a/module/order/src/main/java/cn/qihangerp/module/order/service/impl/OOrderServiceImpl.java b/module/order/src/main/java/cn/qihangerp/module/order/service/impl/OOrderServiceImpl.java index dc2c475c..dbe47acc 100644 --- a/module/order/src/main/java/cn/qihangerp/module/order/service/impl/OOrderServiceImpl.java +++ b/module/order/src/main/java/cn/qihangerp/module/order/service/impl/OOrderServiceImpl.java @@ -161,11 +161,13 @@ public class OOrderServiceImpl extends ServiceImpl orderMapper.insert(insert); // 添加orderItem - addJdOrderItem(orderId,insert.getId(),orderStatus,orderSellerPrice,orderPayment,itemArray); + addJdOrderItem(insert,orderId,insert.getId(),orderStatus,orderSellerPrice,orderPayment,itemArray); }else{ // 修改订单 (修改:) OOrder update = new OOrder(); update.setId(oOrders.get(0).getId()); + update.setShopType(EnumShopType.JD.getIndex()); + update.setShopId(orderDetail.getLong("shopId")); // 价格 update.setGoodsAmount(orderSellerPrice); update.setPayment(orderPayment); @@ -180,23 +182,65 @@ public class OOrderServiceImpl extends ServiceImpl orderMapper.updateById(update); // 删除orderItem - orderItemMapper.delete(new LambdaQueryWrapper().eq(OOrderItem::getOrderId,update.getId())); +// orderItemMapper.delete(new LambdaQueryWrapper().eq(OOrderItem::getOrderId,update.getId())); // 插入orderItem - addJdOrderItem(orderId,update.getId(),orderStatus,orderSellerPrice,orderPayment,itemArray); + addJdOrderItem(update,orderId,update.getId(),orderStatus,orderSellerPrice,orderPayment,itemArray); } return ResultVo.success(); } - private void addJdOrderItem(String orderId,String oOrderId,Integer orderStatus,Double orderSellerPrice,Double orderPayment,JSONArray itemArray ) { + private void addJdOrderItem(OOrder oOrder,String orderId,String oOrderId,Integer orderStatus,Double orderSellerPrice,Double orderPayment,JSONArray itemArray ) { Double payedItemAmount = 0.0;//已付金额 for (int i =0;i oGoodsSkus = oGoodsSkuMapper.selectList(new LambdaQueryWrapper().eq(OGoodsSku::getSkuCode, skuNum)); + if(oGoodsSkus==null||oGoodsSkus.isEmpty()){ + log.error("同步JD订单没有找到商品库商品SKU"); + }else{ + oGoodsId = oGoodsSkus.get(0).getGoodsId(); + oGoodsSkuId = oGoodsSkus.get(0).getId(); + } + }else { + log.error("同步JD订单{},原始订单没有填写sku编码信息",oOrder.getOrderNum()); + } + }else{ + OGoodsSku oGoodsSku = oGoodsSkuMapper.selectById(oGoodsSkuId); + if(oGoodsSku==null){ + // 没有关联商品库商品skuid,查找关联====使用skucode查找 + if(org.springframework.util.StringUtils.hasText(skuNum)) { + List oGoodsSkus = oGoodsSkuMapper.selectList(new LambdaQueryWrapper().eq(OGoodsSku::getSkuCode, skuNum)); + if(oGoodsSkus==null||oGoodsSkus.isEmpty()){ + log.error("同步JD订单没有找到商品库商品SKU"); + }else{ + oGoodsId = oGoodsSkus.get(0).getGoodsId(); + oGoodsSkuId = oGoodsSkus.get(0).getId(); + } + }else { + log.error("同步JD订单{},原始订单没有填写sku编码信息",oOrder.getOrderNum()); + } + }else{ + oGoodsId = oGoodsSku.getGoodsId(); + oGoodsSkuId = oGoodsSku.getId(); + } + } + OOrderItem orderItem = new OOrderItem(); - orderItem.setOrderId(oOrderId); - orderItem.setOrderNum(orderId); - orderItem.setSubOrderNum(orderId+"-"+itemObject.getString("skuId")); + orderItem.setOrderId(oOrder.getId()); + orderItem.setShopType(oOrder.getShopType()); + orderItem.setShopId(oOrder.getShopId()); + orderItem.setOrderNum(oOrder.getOrderNum()); + orderItem.setSubOrderNum(oOrder.getOrderNum()+"-"+itemObject.getString("skuId")); // TODO:这里将订单商品skuid转换成erp系统的skuid // Long erpGoodsId = 0L; // String erpSkuId = "0"; @@ -209,10 +253,13 @@ public class OOrderServiceImpl extends ServiceImpl // orderItem.setGoodsSpec(jdGoodsSkus.get(0).getSkuName()); // orderItem.setSkuNum(jdGoodsSkus.get(0).getOuterId()); // } - orderItem.setSkuNum(itemObject.getString("outerSkuId")); + orderItem.setSkuNum(skuNum); + orderItem.setGoodsId(oGoodsId); + orderItem.setGoodsSkuId(oGoodsSkuId); +// orderItem.setSkuNum(itemObject.getString("outerSkuId")); orderItem.setSkuId(itemObject.getString("skuId")); - orderItem.setGoodsId(itemObject.getLong("oGoodsId")); - orderItem.setGoodsSkuId(itemObject.getLong("oGoodsSkuId")); +// orderItem.setGoodsId(itemObject.getLong("oGoodsId")); +// orderItem.setGoodsSkuId(itemObject.getLong("oGoodsSkuId")); orderItem.setGoodsTitle(itemObject.getString("skuName")); orderItem.setGoodsPrice(StringUtils.isEmpty(itemObject.getString("jdPrice")) ? 0.0 : Double.parseDouble(itemObject.getString("jdPrice"))); Integer quantity = itemObject.getInteger("itemTotal"); @@ -249,6 +296,22 @@ public class OOrderServiceImpl extends ServiceImpl orderItem.setRefundStatus(1); orderItem.setRefundCount(0); } + + List oOrderItems = orderItemMapper.selectList(new LambdaQueryWrapper() + .eq(OOrderItem::getOrderId, oOrderId) + .eq(OOrderItem::getSkuId, itemObject.getString("skuId"))); + if(oOrderItems==null||oOrderItems.isEmpty()){ + //不存在,新增 + orderItem.setCreateTime(new Date()); + orderItem.setCreateBy("ORDER_MESSAGE"); + orderItemMapper.insert(orderItem); + }else { + orderItem.setId(oOrderItems.get(0).getId()); + orderItem.setUpdateBy("ORDER_MESSAGE"); + orderItem.setUpdateTime(new Date()); + orderItemMapper.updateById(orderItem); + } + orderItem.setCreateTime(new Date()); orderItem.setCreateBy("ORDER_MESSAGE"); orderItemMapper.insert(orderItem); @@ -350,12 +413,14 @@ public class OOrderServiceImpl extends ServiceImpl orderMapper.insert(insert); // 插入orderItem - addTaoOrderItem(insert.getId(),tid,itemArray); + addTaoOrderItem(insert,tid,itemArray); }else{ // 修改订单 (修改:) OOrder update = new OOrder(); update.setId(oOrders.get(0).getId()); + update.setShopType(EnumShopType.TAO.getIndex()); + update.setShopId(orderDetail.getLong("shopId")); String buyerMemo = ""; if(org.springframework.util.StringUtils.hasText(orderDetail.getString("buyerMessage"))){ buyerMemo += orderDetail.getString("buyerMessage"); @@ -393,12 +458,12 @@ public class OOrderServiceImpl extends ServiceImpl orderMapper.updateById(update); // 插入orderItem - addTaoOrderItem(update.getId(),tid,itemArray); + addTaoOrderItem(update,tid,itemArray); } return ResultVo.success(); } - private void addTaoOrderItem(String oOrderId,String tid, JSONArray itemArray) { + private void addTaoOrderItem(OOrder oOrder,String tid, JSONArray itemArray) { for (int i = 0; i < itemArray.size(); i++) { JSONObject itemObject = itemArray.getJSONObject(i); @@ -442,13 +507,16 @@ public class OOrderServiceImpl extends ServiceImpl } OOrderItem orderItem = new OOrderItem(); - orderItem.setOrderId(oOrderId); + orderItem.setOrderId(oOrder.getId()); + orderItem.setShopType(oOrder.getShopType()); + orderItem.setShopId(oOrder.getShopId()); orderItem.setOrderNum(tid); orderItem.setSubOrderNum(itemObject.getString("oid")); orderItem.setSkuNum(skuNum); - orderItem.setSkuId(itemObject.getString("skuId")); orderItem.setGoodsId(oGoodsId); orderItem.setGoodsSkuId(oGoodsSkuId); + orderItem.setSkuId(itemObject.getString("skuId")); + orderItem.setGoodsImg(itemObject.getString("picPath")); orderItem.setGoodsSpec(itemObject.getString("skuPropertiesName")); orderItem.setGoodsTitle(itemObject.getString("title")); @@ -480,7 +548,9 @@ public class OOrderServiceImpl extends ServiceImpl int orderStatus = TaoOrderStateEnum.getIndex(itemObject.getString("status")); orderItem.setOrderStatus(orderStatus); - List oOrderItems = orderItemMapper.selectList(new LambdaQueryWrapper().eq(OOrderItem::getOrderId, oOrderId).eq(OOrderItem::getSkuId, itemObject.getString("skuId"))); + List oOrderItems = orderItemMapper.selectList(new LambdaQueryWrapper() + .eq(OOrderItem::getOrderId, oOrder.getId()) + .eq(OOrderItem::getSkuId, itemObject.getString("skuId"))); if(oOrderItems==null||oOrderItems.isEmpty()){ //不存在,新增 orderItem.setCreateTime(new Date()); @@ -501,7 +571,7 @@ public class OOrderServiceImpl extends ServiceImpl @Transactional @Override public ResultVo pddOrderMessage(String orderSn,JSONObject orderDetail ) { - log.info("=====pdd order message===订单号{}==="+orderSn); + log.info("=====pdd order message===订单号{}===" + orderSn); // JSONObject jsonObject = pddApiService.getOrderDetail(orderSn); // if(jsonObject.getInteger("code")!=200 || jsonObject.getJSONObject("data") ==null){ // log.info("=====pdd order message===没有找到订单"); @@ -509,8 +579,13 @@ public class OOrderServiceImpl extends ServiceImpl // } // // JSONObject orderDetail = jsonObject.getJSONObject("data"); - log.info("=====pdd order message===订单:"+JSONObject.toJSONString(orderDetail)); - if(orderDetail == null) return ResultVo.error(404,"没有找到订单"); + log.info("=====pdd order message===订单:" + JSONObject.toJSONString(orderDetail)); + if (orderDetail == null) return ResultVo.error(404, "没有找到订单"); + JSONArray itemArray = orderDetail.getJSONArray("items"); + if (itemArray.isEmpty()) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + log.info("=====pdd order message===没有items====事务回滚======="); + } // List originOrders = pddOrderMapper.selectList(new LambdaQueryWrapper().eq(PddOrder::getOrderSn, orderSn)); // // if(originOrders == null || originOrders.size() == 0) { @@ -519,9 +594,27 @@ public class OOrderServiceImpl extends ServiceImpl // } // PddOrder originOrder = originOrders.get(0); // PddOrder originOrder = new PddOrder(); - + OOrder newOrder = new OOrder(); + Integer originOrderStatus = orderDetail.getInteger("orderStatus"); + Integer originRefundStatus = orderDetail.getInteger("refundStatus"); + // 状态 订单状态0:新订单,1:待发货,2:已发货,3:已完成,11已取消;12退款中;21待付款;22锁定,29删除 + int orderStatus = -1; + int refundStatus = -1; + if (originRefundStatus == 1) { + // 没有售后 + orderStatus = originOrderStatus; + refundStatus = 1; + } else { + if (originRefundStatus == 4) { + refundStatus = 4; + orderStatus = 11; + } else { + refundStatus = originRefundStatus; + orderStatus = 12; + } + } List oOrders = orderMapper.selectList(new LambdaQueryWrapper().eq(OOrder::getOrderNum, orderSn)); - if(oOrders == null || oOrders.isEmpty()) { + if (oOrders == null || oOrders.isEmpty()) { // 新增订单 OOrder insert = new OOrder(); insert.setOrderNum(orderSn); @@ -529,24 +622,7 @@ public class OOrderServiceImpl extends ServiceImpl insert.setShopId(orderDetail.getLong("shopId")); insert.setBuyerMemo(orderDetail.getString("buyerMemo")); insert.setSellerMemo(orderDetail.getString("remark")); - Integer originOrderStatus = orderDetail.getInteger("orderStatus"); - Integer originRefundStatus = orderDetail.getInteger("refundStatus"); - // 状态 订单状态0:新订单,1:待发货,2:已发货,3:已完成,11已取消;12退款中;21待付款;22锁定,29删除 - int orderStatus = -1; - int refundStatus = -1; - if (originRefundStatus == 1) { - // 没有售后 - orderStatus = originOrderStatus; - refundStatus = 1; - } else { - if (originRefundStatus == 4) { - refundStatus = 4; - orderStatus = 11; - } else { - refundStatus = originRefundStatus; - orderStatus = 12; - } - } + insert.setRefundStatus(refundStatus); insert.setOrderStatus(orderStatus); // 价格 @@ -571,86 +647,129 @@ public class OOrderServiceImpl extends ServiceImpl insert.setCreateBy("ORDER_MESSAGE"); orderMapper.insert(insert); + + newOrder = insert; // 插入orderItem // addPddOrderItem(insert.getId(),originOrder.getOrderSn(),orderStatus,refundStatus,platformDiscount,sellerDiscount); - JSONArray itemArray = orderDetail.getJSONArray("items"); - if (itemArray.isEmpty()) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - log.info("=====pdd order message===没有items====事务回滚======="); - } - for (int i =0;i itemObject = (Map) itemArray.get(i); -// JSONObject itemObject = (JSONObject) item; - - OOrderItem orderItem = new OOrderItem(); - orderItem.setOrderId(insert.getId()); - orderItem.setOrderNum(orderSn); - orderItem.setSubOrderNum(orderSn+"-"+itemObject.getString("skuId")); - // 这里将订单商品skuid转换成erp系统的skuid -// Long erpGoodsId = 0L; -// String erpSkuId = "0"; +// for (int i = 0; i < itemArray.size(); i++) { +// JSONObject itemObject = itemArray.getJSONObject(i); +//// Map itemObject = (Map) itemArray.get(i); +//// JSONObject itemObject = (JSONObject) item; // -// List pddGoodsSku = pddGoodsSkuMapper.selectList(new LambdaQueryWrapper().eq(PddGoodsSku::getSkuId, item.getSkuId())); -// if (pddGoodsSku != null && !pddGoodsSku.isEmpty()) { -// erpGoodsId = pddGoodsSku.get(0).getOGoodsId(); -// erpSkuId = pddGoodsSku.get(0).getOGoodsSkuId(); -//// orderItem.setGoodsImg(taoGoodsSku.get(0).getLogo()); -//// orderItem.setGoodsSpec(jdGoodsSkus.get(0).getSkuName()); -//// orderItem.setSkuNum(taoGoodsSku.get(0).getOuterId()); +// // 查询商品库商品 +// Long oGoodsId = itemObject.getLong("oGoodsId"); +// Long oGoodsSkuId =itemObject.getLong("oGoodsSkuId"); +// String skuNum = itemObject.getString("outerSkuId"); +// +// if(oGoodsSkuId<=0){ +// // 没有关联商品库商品skuid,查找关联====使用skucode查找 +// if(org.springframework.util.StringUtils.hasText(skuNum)) { +// List oGoodsSkus = oGoodsSkuMapper.selectList(new LambdaQueryWrapper().eq(OGoodsSku::getSkuCode, skuNum)); +// if(oGoodsSkus==null||oGoodsSkus.isEmpty()){ +// log.error("同步TAO订单没有找到商品库商品SKU"); +// }else{ +// oGoodsId = oGoodsSkus.get(0).getGoodsId(); +// oGoodsSkuId = oGoodsSkus.get(0).getId(); +// } +// }else { +// log.error("同步TAO订单{},原始订单没有填写sku编码信息",tid); +// } +// }else{ +// OGoodsSku oGoodsSku = oGoodsSkuMapper.selectById(oGoodsSkuId); +// if(oGoodsSku==null){ +// // 没有关联商品库商品skuid,查找关联====使用skucode查找 +// if(org.springframework.util.StringUtils.hasText(skuNum)) { +// List oGoodsSkus = oGoodsSkuMapper.selectList(new LambdaQueryWrapper().eq(OGoodsSku::getSkuCode, skuNum)); +// if(oGoodsSkus==null||oGoodsSkus.isEmpty()){ +// log.error("同步TAO订单没有找到商品库商品SKU"); +// }else{ +// oGoodsId = oGoodsSkus.get(0).getGoodsId(); +// oGoodsSkuId = oGoodsSkus.get(0).getId(); +// } +// }else { +// log.error("同步TAO订单{},原始订单没有填写sku编码信息",tid); +// } +// }else{ +// oGoodsId = oGoodsSku.getGoodsId(); +// oGoodsSkuId = oGoodsSku.getId(); +// } // } - orderItem.setSkuNum(itemObject.getString("outerId")); - orderItem.setSkuId(itemObject.getString("skuId")); - orderItem.setGoodsId(itemObject.getLong("ogoodsId")); - orderItem.setGoodsSkuId(itemObject.getLong("ogoodsSkuId")); - orderItem.setGoodsImg(itemObject.getString("goodsImg")); - orderItem.setGoodsSpec(itemObject.getString("goodsSpec")); - orderItem.setGoodsTitle(itemObject.getString("goodsName")); - orderItem.setGoodsPrice(itemObject.getDouble("goodsPrice")); - orderItem.setQuantity(itemObject.getInteger("goodsCount")); - if (i == 0) { - Double itemAmount = orderItem.getGoodsPrice() * orderItem.getQuantity() - insert.getPlatformDiscount() - insert.getSellerDiscount(); - orderItem.setItemAmount(itemAmount); - orderItem.setPayment(itemAmount); - } else { - orderItem.setItemAmount(orderItem.getGoodsPrice()* orderItem.getQuantity()); - orderItem.setPayment(orderItem.getGoodsPrice()* orderItem.getQuantity()); - } -// orderItem.setPayment(item.getGoodsPrice()); - - orderItem.setOrderStatus(orderStatus); - orderItem.setRefundStatus(refundStatus); - orderItem.setRefundCount(0); - orderItem.setCreateTime(new Date()); - orderItem.setCreateBy("ORDER_MESSAGE"); - orderItemMapper.insert(orderItem); - } +// +// OOrderItem orderItem = new OOrderItem(); +// orderItem.setOrderId(insert.getId()); +// orderItem.setOrderNum(orderSn); +// orderItem.setSubOrderNum(orderSn + "-" + itemObject.getString("skuId")); +// orderItem.setShopType(EnumShopType.PDD.getIndex()); +// orderItem.setShopId(orderDetail.getLong("shopId")); +// // 这里将订单商品skuid转换成erp系统的skuid +//// Long erpGoodsId = 0L; +//// String erpSkuId = "0"; +//// +//// List pddGoodsSku = pddGoodsSkuMapper.selectList(new LambdaQueryWrapper().eq(PddGoodsSku::getSkuId, item.getSkuId())); +//// if (pddGoodsSku != null && !pddGoodsSku.isEmpty()) { +//// erpGoodsId = pddGoodsSku.get(0).getOGoodsId(); +//// erpSkuId = pddGoodsSku.get(0).getOGoodsSkuId(); +////// orderItem.setGoodsImg(taoGoodsSku.get(0).getLogo()); +////// orderItem.setGoodsSpec(jdGoodsSkus.get(0).getSkuName()); +////// orderItem.setSkuNum(taoGoodsSku.get(0).getOuterId()); +//// } +// orderItem.setSkuNum(skuNum); +// orderItem.setGoodsId(oGoodsId); +// orderItem.setGoodsSkuId(oGoodsSkuId); +//// orderItem.setSkuNum(itemObject.getString("outerId")); +// orderItem.setSkuId(itemObject.getString("skuId")); +//// orderItem.setGoodsId(itemObject.getLong("ogoodsId")); +//// orderItem.setGoodsSkuId(itemObject.getLong("ogoodsSkuId")); +// orderItem.setGoodsImg(itemObject.getString("goodsImg")); +// orderItem.setGoodsSpec(itemObject.getString("goodsSpec")); +// orderItem.setGoodsTitle(itemObject.getString("goodsName")); +// orderItem.setGoodsPrice(itemObject.getDouble("goodsPrice")); +// orderItem.setQuantity(itemObject.getInteger("goodsCount")); +// if (i == 0) { +// Double itemAmount = orderItem.getGoodsPrice() * orderItem.getQuantity() - insert.getPlatformDiscount() - insert.getSellerDiscount(); +// orderItem.setItemAmount(itemAmount); +// orderItem.setPayment(itemAmount); +// } else { +// orderItem.setItemAmount(orderItem.getGoodsPrice() * orderItem.getQuantity()); +// orderItem.setPayment(orderItem.getGoodsPrice() * orderItem.getQuantity()); +// } +//// orderItem.setPayment(item.getGoodsPrice()); +// +// orderItem.setOrderStatus(orderStatus); +// orderItem.setRefundStatus(refundStatus); +// orderItem.setRefundCount(0); +// orderItem.setCreateTime(new Date()); +// orderItem.setCreateBy("ORDER_MESSAGE"); +// orderItemMapper.insert(orderItem); +// } - }else{ + } else { // 修改订单 (修改:) OOrder update = new OOrder(); update.setId(oOrders.get(0).getId()); - Integer originOrderStatus = orderDetail.getInteger("orderStatus"); - Integer originRefundStatus = orderDetail.getInteger("refundStatus"); - // 状态 订单状态0:新订单,1:待发货,2:已发货,3:已完成,11已取消;12退款中;21待付款;22锁定,29删除 - int orderStatus = -1; - int refundStatus = -1; - if (originRefundStatus == 1) { - // 没有售后 - orderStatus = originOrderStatus; - refundStatus = 1; - } else { - if (originRefundStatus == 4) { - refundStatus = 4; - orderStatus = 11; - } else { - refundStatus = originRefundStatus; - orderStatus = 12; - } - } + update.setShopType(EnumShopType.PDD.getIndex()); + update.setShopId(orderDetail.getLong("shopId")); +// Integer originOrderStatus = orderDetail.getInteger("orderStatus"); +// Integer originRefundStatus = orderDetail.getInteger("refundStatus"); +// // 状态 订单状态0:新订单,1:待发货,2:已发货,3:已完成,11已取消;12退款中;21待付款;22锁定,29删除 +// int orderStatus = -1; +// int refundStatus = -1; +// if (originRefundStatus == 1) { +// // 没有售后 +// orderStatus = originOrderStatus; +// refundStatus = 1; +// } else { +// if (originRefundStatus == 4) { +// refundStatus = 4; +// orderStatus = 11; +// } else { +// refundStatus = originRefundStatus; +// orderStatus = 12; +// } +// } update.setRefundStatus(refundStatus); update.setOrderStatus(orderStatus); @@ -664,7 +783,7 @@ public class OOrderServiceImpl extends ServiceImpl // double sellerDiscount = originOrder.getSellerDiscount()!=null?originOrder.getSellerDiscount():0.0; update.setSellerDiscount(orderDetail.getDouble("sellerDiscount")); - if(orderStatus==1 && refundStatus==1) { + if (orderStatus == 1 && refundStatus == 1) { if (StringUtils.isNotBlank(orderDetail.getString("receiverNameMask"))) { update.setReceiverName(orderDetail.getString("receiverNameMask")); } @@ -676,93 +795,118 @@ public class OOrderServiceImpl extends ServiceImpl } } - if(StringUtils.isNotBlank(orderDetail.getString("province"))){ + if (StringUtils.isNotBlank(orderDetail.getString("province"))) { update.setProvince(orderDetail.getString("province")); } - if(StringUtils.isNotBlank(orderDetail.getString("city"))){ + if (StringUtils.isNotBlank(orderDetail.getString("city"))) { update.setCity(orderDetail.getString("city")); } - if(StringUtils.isNotBlank(orderDetail.getString("town"))){ + if (StringUtils.isNotBlank(orderDetail.getString("town"))) { update.setTown(orderDetail.getString("town")); } update.setUpdateTime(new Date()); update.setUpdateBy("ORDER_MESSAGE"); orderMapper.updateById(update); - + newOrder = update; // 删除orderItem - orderItemMapper.delete(new LambdaQueryWrapper().eq(OOrderItem::getOrderId,update.getId())); +// orderItemMapper.delete(new LambdaQueryWrapper().eq(OOrderItem::getOrderId,update.getId())); // // 插入orderItem // addPddOrderItem(update.getId(),originOrder.getOrderSn(),orderStatus,refundStatus,platformDiscount,sellerDiscount); - JSONArray itemArray = orderDetail.getJSONArray("items"); - if (itemArray.isEmpty()) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - log.info("=====pdd order message===没有items====事务回滚======="); - } +// JSONArray itemArray = orderDetail.getJSONArray("items"); +// if (itemArray.isEmpty()) { +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// log.info("=====pdd order message===没有items====事务回滚======="); +// } - for (int i =0;i oOrderItems = orderItemMapper.selectList(new LambdaQueryWrapper().eq(OOrderItem::getOrderId, oOrders.get(0).getId()).eq(OOrderItem::getSkuId, itemObject.getString("skuId"))); -// if(oOrderItems.isEmpty()) { - // 新增item - OOrderItem orderItem = new OOrderItem(); - orderItem.setOrderId(oOrders.get(0).getId()); - orderItem.setOrderNum(orderSn); - orderItem.setSubOrderNum(orderSn + "-" + itemObject.getString("skuId")); - orderItem.setSkuNum(itemObject.getString("outerId")); - orderItem.setSkuId(itemObject.getString("skuId")); - orderItem.setGoodsId(itemObject.getLong("ogoodsId")); - orderItem.setGoodsSkuId(itemObject.getLong("ogoodsSkuId")); - orderItem.setGoodsImg(itemObject.getString("goodsImg")); - orderItem.setGoodsSpec(itemObject.getString("goodsSpec")); - orderItem.setGoodsTitle(itemObject.getString("goodsName")); - orderItem.setGoodsPrice(itemObject.getDouble("goodsPrice")); - orderItem.setQuantity(itemObject.getInteger("goodsCount")); - if (i == 0) { - Double itemAmount = orderItem.getGoodsPrice() * orderItem.getQuantity() - oOrders.get(0).getPlatformDiscount() - oOrders.get(0).getSellerDiscount(); - orderItem.setItemAmount(itemAmount); - orderItem.setPayment(itemAmount); + } + + for (int i = 0; i < itemArray.size(); i++) { + JSONObject itemObject = itemArray.getJSONObject(i); + // 查询商品库商品 + Long oGoodsId = itemObject.getLong("ogoodsId"); + Long oGoodsSkuId = itemObject.getLong("ogoodsSkuId"); + String skuNum = itemObject.getString("outerId"); + + if (oGoodsSkuId <= 0) { + // 没有关联商品库商品skuid,查找关联====使用skucode查找 + if (org.springframework.util.StringUtils.hasText(skuNum)) { + List oGoodsSkus = oGoodsSkuMapper.selectList(new LambdaQueryWrapper().eq(OGoodsSku::getSkuCode, skuNum)); + if (oGoodsSkus == null || oGoodsSkus.isEmpty()) { + log.error("同步PDD订单没有找到商品库商品SKU"); } else { - orderItem.setItemAmount(orderItem.getGoodsPrice() * orderItem.getQuantity()); - orderItem.setPayment(orderItem.getGoodsPrice() * orderItem.getQuantity()); + oGoodsId = oGoodsSkus.get(0).getGoodsId(); + oGoodsSkuId = oGoodsSkus.get(0).getId(); } - orderItem.setOrderStatus(orderStatus); - orderItem.setRefundStatus(refundStatus); - orderItem.setRefundCount(0); - orderItem.setCreateTime(new Date()); - orderItem.setCreateBy("ORDER_MESSAGE"); - orderItemMapper.insert(orderItem); -// } -// else{ -// // 修改、 -// OOrderItem orderItem = new OOrderItem(); -// orderItem.setId(oOrderItems.get(0).getId()); -// -// orderItem.setSkuNum(itemObject.getString("outerId")); -// orderItem.setSkuId(itemObject.getString("skuId")); -// orderItem.setGoodsId(itemObject.getLong("ogoodsId")); -// orderItem.setGoodsSkuId(itemObject.getString("ogoodsSkuId")); -// orderItem.setGoodsImg(itemObject.getString("goodsImg")); -// orderItem.setGoodsSpec(itemObject.getString("goodsSpec")); -// orderItem.setGoodsTitle(itemObject.getString("goodsName")); -// orderItem.setGoodsPrice(itemObject.getDouble("goodsPrice")); -// orderItem.setQuantity(itemObject.getInteger("goodsCount")); -// if (i == 0) { -// Double itemAmount = orderItem.getGoodsPrice() * orderItem.getQuantity() - oOrders.get(0).getPlatformDiscount() - oOrders.get(0).getSellerDiscount(); -// orderItem.setItemAmount(itemAmount); -// orderItem.setPayment(itemAmount); -// } else { -// orderItem.setItemAmount(orderItem.getGoodsPrice() * orderItem.getQuantity()); -// orderItem.setPayment(orderItem.getGoodsPrice() * orderItem.getQuantity()); -// } -// orderItem.setOrderStatus(orderStatus); -// orderItem.setRefundStatus(refundStatus); -// orderItem.setRefundCount(0); -// orderItem.setUpdateTime(new Date()); -// orderItem.setUpdateBy("ORDER_MESSAGE"); -// orderItemMapper.updateById(orderItem); -// } + } else { + log.error("同步PDD订单{},原始订单没有填写sku编码信息", newOrder.getOrderNum()); + } + } else { + OGoodsSku oGoodsSku = oGoodsSkuMapper.selectById(oGoodsSkuId); + if (oGoodsSku == null) { + // 没有关联商品库商品skuid,查找关联====使用skucode查找 + if (org.springframework.util.StringUtils.hasText(skuNum)) { + List oGoodsSkus = oGoodsSkuMapper.selectList(new LambdaQueryWrapper().eq(OGoodsSku::getSkuCode, skuNum)); + if (oGoodsSkus == null || oGoodsSkus.isEmpty()) { + log.error("同步PDD订单没有找到商品库商品SKU"); + } else { + oGoodsId = oGoodsSkus.get(0).getGoodsId(); + oGoodsSkuId = oGoodsSkus.get(0).getId(); + } + } else { + log.error("同步PDD订单{},原始订单没有填写sku编码信息", newOrder.getOrderNum()); + } + } else { + oGoodsId = oGoodsSku.getGoodsId(); + oGoodsSkuId = oGoodsSku.getId(); + } + } + OOrderItem orderItem = new OOrderItem(); + orderItem.setOrderId(oOrders.get(0).getId()); + orderItem.setOrderNum(orderSn); + orderItem.setSubOrderNum(orderSn + "-" + itemObject.getString("skuId")); + orderItem.setShopType(EnumShopType.PDD.getIndex()); + orderItem.setShopId(orderDetail.getLong("shopId")); +// orderItem.setSkuNum(itemObject.getString("outerId")); + orderItem.setSkuId(itemObject.getString("skuId")); + orderItem.setSkuNum(skuNum); + orderItem.setGoodsId(oGoodsId); + orderItem.setGoodsSkuId(oGoodsSkuId); +// orderItem.setGoodsId(itemObject.getLong("ogoodsId")); +// orderItem.setGoodsSkuId(itemObject.getLong("ogoodsSkuId")); + orderItem.setGoodsImg(itemObject.getString("goodsImg")); + orderItem.setGoodsSpec(itemObject.getString("goodsSpec")); + orderItem.setGoodsTitle(itemObject.getString("goodsName")); + orderItem.setGoodsPrice(itemObject.getDouble("goodsPrice")); + orderItem.setQuantity(itemObject.getInteger("goodsCount")); + if (i == 0) { + Double itemAmount = orderItem.getGoodsPrice() * orderItem.getQuantity() - oOrders.get(0).getPlatformDiscount() - oOrders.get(0).getSellerDiscount(); + orderItem.setItemAmount(itemAmount); + orderItem.setPayment(itemAmount); + } else { + orderItem.setItemAmount(orderItem.getGoodsPrice() * orderItem.getQuantity()); + orderItem.setPayment(orderItem.getGoodsPrice() * orderItem.getQuantity()); + } + orderItem.setOrderStatus(orderStatus); + orderItem.setRefundStatus(refundStatus); + orderItem.setRefundCount(0); + + + List oOrderItems = orderItemMapper.selectList( + new LambdaQueryWrapper() + .eq(OOrderItem::getOrderId, oOrders.get(0).getId()) + .eq(OOrderItem::getSkuId, itemObject.getString("skuId"))); + if (oOrderItems.isEmpty()) { + // 新增item + orderItem.setCreateTime(new Date()); + orderItem.setCreateBy("ORDER_MESSAGE"); + orderItemMapper.insert(orderItem); + } else { + // 修改、 + orderItem.setUpdateTime(new Date()); + orderItem.setUpdateBy("ORDER_MESSAGE"); + orderItemMapper.updateById(orderItem); } } return ResultVo.success(); @@ -905,12 +1049,14 @@ public class OOrderServiceImpl extends ServiceImpl orderMapper.insert(insert); // 插入orderItem - addDouOrderItem(insert.getId(), orderId, orderStatus, refundStatus,orderDetail.getJSONArray("items")); + addDouOrderItem(insert,insert.getId(), orderId, orderStatus, refundStatus,orderDetail.getJSONArray("items")); } else { // 修改订单 (修改:) OOrder update = new OOrder(); update.setId(oOrders.get(0).getId()); + update.setShopType(EnumShopType.DOU.getIndex()); + update.setShopId(orderDetail.getLong("shopId")); update.setRefundStatus(refundStatus); update.setOrderStatus(orderStatus); update.setGoodsAmount(orderDetail.getDouble("orderAmount") / 100 ); @@ -930,26 +1076,68 @@ public class OOrderServiceImpl extends ServiceImpl orderMapper.updateById(update); // 删除orderItem - orderItemMapper.delete(new LambdaQueryWrapper().eq(OOrderItem::getOrderId, update.getId())); +// orderItemMapper.delete(new LambdaQueryWrapper().eq(OOrderItem::getOrderId, update.getId())); // 插入orderItem - addDouOrderItem(update.getId(), orderId, orderStatus, refundStatus,orderDetail.getJSONArray("items")); + addDouOrderItem(update,update.getId(), orderId, orderStatus, refundStatus,orderDetail.getJSONArray("items")); } return ResultVo.success(); } - private void addDouOrderItem(String oOrderId,String originOrderId,Integer orderStatus,Integer refundStatus,JSONArray itemArray){ + private void addDouOrderItem(OOrder oOrder,String oOrderId,String originOrderId,Integer orderStatus,Integer refundStatus,JSONArray itemArray){ if(itemArray!=null && itemArray.size()>0) { for (int i = 0; i < itemArray.size(); i++) { JSONObject itemObject = itemArray.getJSONObject(i); + // 查询商品库商品 + Long oGoodsId = itemObject.getLong("ogoodsId"); + Long oGoodsSkuId =itemObject.getLong("ogoodsSkuId"); + String skuNum = itemObject.getString("outSkuId"); + if(oGoodsSkuId<=0){ + // 没有关联商品库商品skuid,查找关联====使用skucode查找 + if(org.springframework.util.StringUtils.hasText(skuNum)) { + List oGoodsSkus = oGoodsSkuMapper.selectList(new LambdaQueryWrapper().eq(OGoodsSku::getSkuCode, skuNum)); + if(oGoodsSkus==null||oGoodsSkus.isEmpty()){ + log.error("同步DOU订单没有找到商品库商品SKU"); + }else{ + oGoodsId = oGoodsSkus.get(0).getGoodsId(); + oGoodsSkuId = oGoodsSkus.get(0).getId(); + } + }else { + log.error("同步DOU订单{},原始订单没有填写sku编码信息",oOrder.getOrderNum()); + } + }else{ + OGoodsSku oGoodsSku = oGoodsSkuMapper.selectById(oGoodsSkuId); + if(oGoodsSku==null){ + // 没有关联商品库商品skuid,查找关联====使用skucode查找 + if(org.springframework.util.StringUtils.hasText(skuNum)) { + List oGoodsSkus = oGoodsSkuMapper.selectList(new LambdaQueryWrapper().eq(OGoodsSku::getSkuCode, skuNum)); + if(oGoodsSkus==null||oGoodsSkus.isEmpty()){ + log.error("同步DOU订单没有找到商品库商品SKU"); + }else{ + oGoodsId = oGoodsSkus.get(0).getGoodsId(); + oGoodsSkuId = oGoodsSkus.get(0).getId(); + } + }else { + log.error("同步DOU订单{},原始订单没有填写sku编码信息",oOrder.getOrderNum()); + } + }else{ + oGoodsId = oGoodsSku.getGoodsId(); + oGoodsSkuId = oGoodsSku.getId(); + } + } OOrderItem orderItem = new OOrderItem(); - orderItem.setOrderId(oOrderId); + orderItem.setOrderId(oOrder.getId()); + orderItem.setShopId(oOrder.getShopId()); + orderItem.setShopType(oOrder.getShopType()); orderItem.setOrderNum(itemObject.getString("parentOrderId")); orderItem.setSubOrderNum(itemObject.getString("orderId")); - orderItem.setSkuNum(itemObject.getString("outSkuId")); +// orderItem.setSkuNum(itemObject.getString("outSkuId")); orderItem.setSkuId(itemObject.getString("skuId")); - orderItem.setGoodsId(itemObject.getLong("ogoodsId")); - orderItem.setGoodsSkuId(itemObject.getLong("ogoodsSkuId")); +// orderItem.setGoodsId(itemObject.getLong("ogoodsId")); +// orderItem.setGoodsSkuId(itemObject.getLong("ogoodsSkuId")); + orderItem.setSkuNum(skuNum); + orderItem.setGoodsId(oGoodsId); + orderItem.setGoodsSkuId(oGoodsSkuId); orderItem.setGoodsImg(itemObject.getString("productPic")); // if(org.springframework.util.StringUtils.hasText(item.getSpec())) { @@ -965,9 +1153,22 @@ public class OOrderServiceImpl extends ServiceImpl orderItem.setOrderStatus(orderStatus); orderItem.setRefundStatus(refundStatus); orderItem.setRefundCount(0); - orderItem.setCreateTime(new Date()); - orderItem.setCreateBy("ORDER_MESSAGE"); - orderItemMapper.insert(orderItem); + + List oOrderItems = orderItemMapper.selectList( + new LambdaQueryWrapper() + .eq(OOrderItem::getOrderId, oOrder.getId()) + .eq(OOrderItem::getSkuId, orderItem.getSkuId())); + if (oOrderItems.isEmpty()) { + // 新增item + orderItem.setCreateTime(new Date()); + orderItem.setCreateBy("ORDER_MESSAGE"); + orderItemMapper.insert(orderItem); + } else { + // 修改、 + orderItem.setUpdateTime(new Date()); + orderItem.setUpdateBy("ORDER_MESSAGE"); + orderItemMapper.updateById(orderItem); + } } } } diff --git a/module/tao/src/main/java/cn/qihangerp/module/open/tao/service/TaoOrderService.java b/module/tao/src/main/java/cn/qihangerp/module/open/tao/service/TaoOrderService.java index 9d8feef5..6e3e4973 100644 --- a/module/tao/src/main/java/cn/qihangerp/module/open/tao/service/TaoOrderService.java +++ b/module/tao/src/main/java/cn/qihangerp/module/open/tao/service/TaoOrderService.java @@ -3,6 +3,7 @@ package cn.qihangerp.module.open.tao.service; import cn.qihangerp.common.PageQuery; import cn.qihangerp.common.PageResult; import cn.qihangerp.common.ResultVo; +import cn.qihangerp.common.bo.ShopOrderShipBo; import cn.qihangerp.module.open.tao.domain.TaoOrder; import cn.qihangerp.module.open.tao.domain.bo.TaoOrderBo; import com.baomidou.mybatisplus.extension.service.IService; @@ -27,4 +28,12 @@ public interface TaoOrderService extends IService { */ ResultVo saveOrder(Long shopId, TaoOrder order); ResultVo updateOrder(TaoOrder order); + + + /** + * 手动发货 + * @param shipBo + * @return + */ +// ResultVo manualShipmentOrder(ShopOrderShipBo shipBo, String createBy); } diff --git a/module/tao/src/main/java/cn/qihangerp/module/open/tao/service/impl/TaoOrderServiceImpl.java b/module/tao/src/main/java/cn/qihangerp/module/open/tao/service/impl/TaoOrderServiceImpl.java index 6dba915f..c0c6eaa6 100644 --- a/module/tao/src/main/java/cn/qihangerp/module/open/tao/service/impl/TaoOrderServiceImpl.java +++ b/module/tao/src/main/java/cn/qihangerp/module/open/tao/service/impl/TaoOrderServiceImpl.java @@ -5,6 +5,7 @@ import cn.qihangerp.common.PageQuery; import cn.qihangerp.common.PageResult; import cn.qihangerp.common.ResultVo; import cn.qihangerp.common.ResultVoEnum; +import cn.qihangerp.common.bo.ShopOrderShipBo; import cn.qihangerp.module.open.tao.domain.TaoGoodsSku; import cn.qihangerp.module.open.tao.domain.TaoOrder; import cn.qihangerp.module.open.tao.domain.TaoOrderItem; @@ -221,6 +222,106 @@ public class TaoOrderServiceImpl extends ServiceImpl return ResultVo.error(ResultVoEnum.NotFound, "订单不存在"); } } + +// @Transactional(rollbackFor = Exception.class) +// @Override +// public ResultVo manualShipmentOrder(ShopOrderShipBo shipBo, String createBy) { +// if (StringUtils.isEmpty(shipBo.getId()) || shipBo.getId().equals("0")) +// return ResultVo.error(ResultVoEnum.ParamsError, "缺少参数:id"); +// +// ErpOrder erpOrder = mapper.selectById(shipBo.getId()); +// if (erpOrder == null) { +// return ResultVo.error("找不到订单数据"); +// } else if (erpOrder.getOrderStatus().intValue() != 1 && erpOrder.getRefundStatus().intValue() != 1) { +// return ResultVo.error("订单状态不对,不允许发货"); +// } +// ErpLogisticsCompany erpLogisticsCompany = erpLogisticsCompanyMapper.selectById(shipBo.getShippingCompany()); +// if(erpLogisticsCompany==null) return ResultVo.error("快递公司选择错误"); +// +// // 自己发货的list +// List oOrderItems = orderItemMapper.selectList( +// new LambdaQueryWrapper() +// .eq(ErpOrderItem::getOrderId, erpOrder.getId()) +// .eq(ErpOrderItem::getShipStatus,0) +// .eq(ErpOrderItem::getShipType,0) +// ); +// if(oOrderItems==null) return ResultVo.error("订单 item 数据错误,无法发货!"); +// // 添加发货记录 +// ErpShipment erpShipment = new ErpShipment(); +// erpShipment.setShipper(0);//发货方 0 仓库发货 1 供应商发货】 +// erpShipment.setTenantId(erpOrder.getTenantId()); +// erpShipment.setShopId(erpOrder.getShopId()); +// erpShipment.setShopType(erpOrder.getShopType()); +// erpShipment.setOrderId(erpOrder.getId()); +// erpShipment.setOrderNum(erpOrder.getOrderNum()); +// erpShipment.setOrderTime(erpOrder.getOrderTime()); +// erpShipment.setShipType(1);//发货类型(1订单发货2商品补发3商品换货) +// erpShipment.setShipCompany(erpLogisticsCompany.getName()); +// erpShipment.setShipCompanyCode(erpLogisticsCompany.getCode()); +// erpShipment.setShipCode(shipBo.getShippingNumber()); +// erpShipment.setShipFee(shipBo.getShippingCost()); +// erpShipment.setShipTime(new Date()); +// erpShipment.setShipOperator(shipBo.getShippingMan()); +// erpShipment.setShipStatus(1);//物流状态(0 待发货1已发货2已完成) +// +// erpShipment.setPackageHeight(shipBo.getHeight()); +// erpShipment.setPackageWeight(shipBo.getWeight()); +// erpShipment.setPackageLength(shipBo.getLength()); +// erpShipment.setPackageWidth(shipBo.getWidth()); +// erpShipment.setPacksgeOperator(shipBo.getShippingMan()); +//// erpShipment.setPackages(JSONObject.toJSONString(oOrderItems)); +// erpShipment.setRemark(shipBo.getRemark()); +// erpShipment.setCreateBy(createBy); +// erpShipment.setCreateTime(new Date()); +// +// shipmentMapper.insert(erpShipment); +// +// for(ErpOrderItem orderItem:oOrderItems){ +// ErpShipmentItem erpShipmentItem = new ErpShipmentItem(); +// erpShipmentItem.setShipper(erpShipment.getShipper()); +// erpShipmentItem.setTenantId(erpShipment.getTenantId()); +// erpShipmentItem.setShopId(erpShipment.getShopId()); +// erpShipmentItem.setShopType(erpShipment.getShopType()); +// erpShipmentItem.setShipmentId(erpShipment.getId()); +// erpShipmentItem.setOrderId(erpShipment.getOrderId()); +// erpShipmentItem.setOrderNum(erpShipment.getOrderNum()); +// erpShipmentItem.setOrderTime(erpShipment.getOrderTime()); +// erpShipmentItem.setOrderItemId(orderItem.getId()); +// erpShipmentItem.setErpGoodsId(orderItem.getErpGoodsId()); +// erpShipmentItem.setErpSkuId(orderItem.getErpSkuId()); +// erpShipmentItem.setGoodsTitle(orderItem.getGoodsTitle()); +// erpShipmentItem.setGoodsNum(orderItem.getGoodsNum()); +// erpShipmentItem.setGoodsImg(orderItem.getGoodsImg()); +// erpShipmentItem.setGoodsSpec(orderItem.getGoodsSpec()); +// erpShipmentItem.setSkuNum(orderItem.getSkuNum()); +// erpShipmentItem.setQuantity(orderItem.getQuantity()); +// erpShipmentItem.setRemark(orderItem.getRemark()); +// erpShipmentItem.setStockStatus(0); +// erpShipmentItem.setCreateBy(createBy); +// erpShipmentItem.setCreateTime(new Date()); +// shipmentItemMapper.insert(erpShipmentItem); +// +// // 更新订单item发货状态 +// ErpOrderItem orderItemUpdate = new ErpOrderItem(); +// orderItemUpdate.setId( orderItem.getId()); +// orderItemUpdate.setUpdateBy("手动发货"); +// orderItemUpdate.setUpdateTime(new Date()); +// orderItemUpdate.setShipStatus(1);//发货状态 0 待发货 1 已发货 +// orderItemMapper.updateById(orderItemUpdate); +// } +// +// +// // 更新状态、发货方式 +// ErpOrder update = new ErpOrder(); +// update.setId(erpOrder.getId()); +// update.setShipStatus(2); +// update.setOrderStatus(2); +// update.setUpdateTime(new Date()); +// update.setUpdateBy("手动发货"); +// mapper.updateById(update); +// +// return ResultVo.success(); +// } } diff --git a/module/wei/src/main/java/cn/qihangerp/module/open/wei/domain/WeiOrder.java b/module/wei/src/main/java/cn/qihangerp/module/open/wei/domain/WeiOrder.java index 3fbf027c..adeab9cc 100644 --- a/module/wei/src/main/java/cn/qihangerp/module/open/wei/domain/WeiOrder.java +++ b/module/wei/src/main/java/cn/qihangerp/module/open/wei/domain/WeiOrder.java @@ -7,12 +7,14 @@ import java.util.List; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; /** * * @TableName oms_wei_order */ +@TableName("oms_wei_order") @Data public class WeiOrder implements Serializable { /** diff --git a/module/wei/src/main/java/cn/qihangerp/module/open/wei/domain/WeiOrderItem.java b/module/wei/src/main/java/cn/qihangerp/module/open/wei/domain/WeiOrderItem.java index 205e1516..81963175 100644 --- a/module/wei/src/main/java/cn/qihangerp/module/open/wei/domain/WeiOrderItem.java +++ b/module/wei/src/main/java/cn/qihangerp/module/open/wei/domain/WeiOrderItem.java @@ -4,12 +4,14 @@ import java.io.Serializable; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; /** * * @TableName oms_wei_order_item */ +@TableName("oms_wei_order_item") @Data public class WeiOrderItem implements Serializable { /** diff --git a/module/wei/src/main/java/cn/qihangerp/module/open/wei/domain/WeiRefund.java b/module/wei/src/main/java/cn/qihangerp/module/open/wei/domain/WeiRefund.java index 738b8d18..247e63bc 100644 --- a/module/wei/src/main/java/cn/qihangerp/module/open/wei/domain/WeiRefund.java +++ b/module/wei/src/main/java/cn/qihangerp/module/open/wei/domain/WeiRefund.java @@ -5,12 +5,14 @@ import java.util.Date; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; /** * 视频号小店退款 * @TableName oms_wei_refund */ +@TableName("oms_wei_refund") @Data public class WeiRefund implements Serializable { /** diff --git a/vue/src/views/shipping/ewaybillPrint/index.vue b/vue/src/views/shipping/ewaybillPrint/index.vue index 41a420c5..8d916041 100644 --- a/vue/src/views/shipping/ewaybillPrint/index.vue +++ b/vue/src/views/shipping/ewaybillPrint/index.vue @@ -13,7 +13,7 @@ - + diff --git a/vue/src/views/shipping/stockup/warehouse/order_item_list.vue b/vue/src/views/shipping/stockup/warehouse/order_item_list.vue index 3e669e7d..9eb18c82 100644 --- a/vue/src/views/shipping/stockup/warehouse/order_item_list.vue +++ b/vue/src/views/shipping/stockup/warehouse/order_item_list.vue @@ -312,7 +312,7 @@ export default { /** 查询仓库订单发货列表 */ getList() { this.loading = true; - listShipStockupWarehouse(this.queryParams).then(response => { + listShipStockupWarehouset(this.queryParams).then(response => { this.shippingList = response.rows; this.total = response.total; this.loading = false; diff --git a/vue/src/views/tao/ewaybill/index.vue b/vue/src/views/tao/ewaybill/index.vue index 442d7e75..a2e515c7 100644 --- a/vue/src/views/tao/ewaybill/index.vue +++ b/vue/src/views/tao/ewaybill/index.vue @@ -213,7 +213,7 @@ {{form.id}} - {{form.orderNum}} + {{form.tid}} {{ shopList.find(x=>x.id == form.shopId)?shopList.find(x=>x.id == form.shopId).name:'' }} @@ -313,7 +313,7 @@ - {{form.orderNum}} + {{form.tid}} {{form.buyerMemo}}