完善发货记录

This commit is contained in:
启航老齐 2025-10-07 17:27:09 +08:00
parent 90b09c3ce1
commit a008c85b88
11 changed files with 239 additions and 199 deletions

View File

@ -11,7 +11,7 @@
Target Server Version : 80043 (8.0.43)
File Encoding : 65001
Date: 07/10/2025 16:12:55
Date: 07/10/2025 17:25:46
*/
SET NAMES utf8mb4;
@ -1120,14 +1120,23 @@ CREATE TABLE `o_shipment` (
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`update_time` datetime NULL DEFAULT NULL,
`update_by` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`receiver_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '收件人姓名',
`receiver_mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '收件人手机号',
`address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '收件人地址',
`province` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '',
`city` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '',
`town` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '',
PRIMARY KEY (`id`) USING BTREE,
INDEX `order_id_index`(`order_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '发货记录表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '发货记录表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of o_shipment
-- ----------------------------
INSERT INTO `o_shipment` VALUES (1, 1007, 400, 74, '6921377343921159820', '2025-10-06 10:16:50', 0, 0, NULL, 1, '极兔速递', 'JTSD', 'AAAAA', 0.00, '2025-10-06 20:29:47', NULL, 1, 0, 0, 0, 0, NULL, NULL, NULL, NULL, '2025-10-06 20:29:50', 'admin', NULL, NULL);
INSERT INTO `o_shipment` VALUES (1, 1007, 400, 74, '6921377343921159820', '2025-10-06 10:16:50', 0, 0, NULL, 1, '极兔速递', 'JTSD', 'AAAAA', 0.00, '2025-10-06 20:29:47', NULL, 1, 0, 0, 0, 0, NULL, NULL, NULL, NULL, '2025-10-06 20:29:50', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `o_shipment` VALUES (2, 1007, 2, 0, 'aaa', NULL, 0, 0, NULL, 2, '极兔速递', 'JTSD', 'aa', 0.00, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2025-10-07 17:23:55', '手动添加发货记录', NULL, NULL, 'a', 'a', 'a', NULL, NULL, NULL);
INSERT INTO `o_shipment` VALUES (3, 1007, 2, 0, 'aaa', NULL, 0, 0, NULL, 2, '极兔速递', 'JTSD', 'aa', 0.00, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2025-10-07 17:24:27', '手动添加发货记录', NULL, NULL, 'a', 'a', 'a', NULL, NULL, NULL);
INSERT INTO `o_shipment` VALUES (4, 1007, 1, 0, 'aa', NULL, 0, 0, NULL, 1, '极兔速递', 'JTSD', 'aa', 0.00, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2025-10-07 17:25:06', '手动添加发货记录', NULL, NULL, 'd', 'd', 'a', NULL, NULL, NULL);
-- ----------------------------
-- Table structure for o_shipment_item
@ -1205,7 +1214,7 @@ CREATE TABLE `o_shop` (
-- ----------------------------
-- Records of o_shop
-- ----------------------------
INSERT INTO `o_shop` VALUES (1007, '抖店测试', 400, NULL, 9, 1, NULL, '4463798', NULL, NULL, 'c3tzx2q5p41h7zl69zjws9900002noae-11', NULL, NULL, '070t45roa51h7zl69zjws9900002noae-12', NULL, NULL, NULL, NULL, NULL, 0, 1759307372, 1759307261);
INSERT INTO `o_shop` VALUES (1007, '抖店测试', 400, NULL, 9, 1, NULL, '4463798', NULL, NULL, '', NULL, NULL, '070t45roa51h7zl69zjws9900002noae-12', NULL, NULL, NULL, NULL, NULL, 0, 1759307372, 1759307261);
INSERT INTO `o_shop` VALUES (1010, '淘宝测试店铺', 100, NULL, 9, 1, NULL, '0', NULL, NULL, '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1759365108, 1759365108);
INSERT INTO `o_shop` VALUES (1011, '爱顾家的小店', 300, NULL, 9, 1, NULL, '0', NULL, NULL, '223c18d1d3c4445a979af58d7c034127e68e9a9a', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1759371874, 1759371874);
INSERT INTO `o_shop` VALUES (1012, '微信小店测试', 500, NULL, 9, 1, NULL, '0', 'wx82dd65f284dd6ee3', 'a6054ccf2694e8dc51d2616e634cad39', '96_KI-x2ByMfcE_X37Orem1O7qW03jVdUdiQU8QtGbZWjWS1LqOn9lXaxArEhlnCAL-AFNhia6IGIN1gHyvCa2gkMK_KcofMs7AnKGqj_ssy3L6vKP9vVklqvNBIUgEGDgAGANPM', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1759373401, 1759373401);
@ -3430,43 +3439,6 @@ CREATE TABLE `sys_role` (
INSERT INTO `sys_role` VALUES (1, '超级管理员', 'admin', 1, '1', 1, 1, '0', '0', 'admin', '2023-08-07 19:31:37', '', NULL, '超级管理员');
INSERT INTO `sys_role` VALUES (2, '普通角色', 'common', 2, '2', 1, 1, '0', '0', 'admin', '2023-08-07 19:31:37', 'admin', '2025-09-08 19:14:34', '普通角色');
-- ----------------------------
-- Table structure for sys_role1
-- ----------------------------
DROP TABLE IF EXISTS `sys_role1`;
CREATE TABLE `sys_role1` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色名称',
`code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色编码',
`sort` int NULL DEFAULT NULL COMMENT '显示顺序',
`status` tinyint(1) NULL DEFAULT 1 COMMENT '角色状态(1-正常 0-停用)',
`data_scope` tinyint NULL DEFAULT NULL COMMENT '数据权限(1-所有数据 2-部门及子部门数据 3-本部门数据 4-本人数据)',
`create_by` bigint NULL DEFAULT NULL COMMENT '创建人 ID',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` bigint NULL DEFAULT NULL COMMENT '更新人ID',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标识(0-未删除 1-已删除)',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_name`(`name` ASC) USING BTREE COMMENT '角色名称唯一索引',
UNIQUE INDEX `uk_code`(`code` ASC) USING BTREE COMMENT '角色编码唯一索引'
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_role1
-- ----------------------------
INSERT INTO `sys_role1` VALUES (1, '超级管理员', 'ROOT', 1, 1, 1, NULL, '2025-09-11 09:01:57', NULL, '2025-09-11 09:01:57', 0);
INSERT INTO `sys_role1` VALUES (2, '系统管理员', 'ADMIN', 2, 1, 1, NULL, '2025-09-11 09:01:57', NULL, NULL, 0);
INSERT INTO `sys_role1` VALUES (3, '访问游客', 'GUEST', 3, 1, 3, NULL, '2025-09-11 09:01:57', NULL, '2025-09-11 09:01:57', 0);
INSERT INTO `sys_role1` VALUES (4, '系统管理员1', 'ADMIN1', 4, 1, 1, NULL, '2025-09-11 09:01:57', NULL, NULL, 0);
INSERT INTO `sys_role1` VALUES (5, '系统管理员2', 'ADMIN2', 5, 1, 1, NULL, '2025-09-11 09:01:57', NULL, NULL, 0);
INSERT INTO `sys_role1` VALUES (6, '系统管理员3', 'ADMIN3', 6, 1, 1, NULL, '2025-09-11 09:01:57', NULL, NULL, 0);
INSERT INTO `sys_role1` VALUES (7, '系统管理员4', 'ADMIN4', 7, 1, 1, NULL, '2025-09-11 09:01:57', NULL, NULL, 0);
INSERT INTO `sys_role1` VALUES (8, '系统管理员5', 'ADMIN5', 8, 1, 1, NULL, '2025-09-11 09:01:58', NULL, NULL, 0);
INSERT INTO `sys_role1` VALUES (9, '系统管理员6', 'ADMIN6', 9, 1, 1, NULL, '2025-09-11 09:01:58', NULL, NULL, 0);
INSERT INTO `sys_role1` VALUES (10, '系统管理员7', 'ADMIN7', 10, 1, 1, NULL, '2025-09-11 09:01:58', NULL, NULL, 0);
INSERT INTO `sys_role1` VALUES (11, '系统管理员8', 'ADMIN8', 11, 1, 1, NULL, '2025-09-11 09:01:58', NULL, NULL, 0);
INSERT INTO `sys_role1` VALUES (12, '系统管理员9', 'ADMIN9', 12, 1, 1, NULL, '2025-09-11 09:01:58', NULL, NULL, 0);
-- ----------------------------
-- Table structure for sys_role_menu
-- ----------------------------
@ -3521,103 +3493,6 @@ INSERT INTO `sys_role_menu` VALUES (2, 2117);
INSERT INTO `sys_role_menu` VALUES (2, 2118);
INSERT INTO `sys_role_menu` VALUES (2, 2129);
-- ----------------------------
-- Table structure for sys_role_menu1
-- ----------------------------
DROP TABLE IF EXISTS `sys_role_menu1`;
CREATE TABLE `sys_role_menu1` (
`role_id` bigint NOT NULL COMMENT '角色ID',
`menu_id` bigint NOT NULL COMMENT '菜单ID',
UNIQUE INDEX `uk_roleid_menuid`(`role_id` ASC, `menu_id` ASC) USING BTREE COMMENT '角色菜单唯一索引'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_role_menu1
-- ----------------------------
INSERT INTO `sys_role_menu1` VALUES (2, 1);
INSERT INTO `sys_role_menu1` VALUES (2, 2);
INSERT INTO `sys_role_menu1` VALUES (2, 3);
INSERT INTO `sys_role_menu1` VALUES (2, 4);
INSERT INTO `sys_role_menu1` VALUES (2, 5);
INSERT INTO `sys_role_menu1` VALUES (2, 6);
INSERT INTO `sys_role_menu1` VALUES (2, 20);
INSERT INTO `sys_role_menu1` VALUES (2, 21);
INSERT INTO `sys_role_menu1` VALUES (2, 22);
INSERT INTO `sys_role_menu1` VALUES (2, 23);
INSERT INTO `sys_role_menu1` VALUES (2, 24);
INSERT INTO `sys_role_menu1` VALUES (2, 26);
INSERT INTO `sys_role_menu1` VALUES (2, 30);
INSERT INTO `sys_role_menu1` VALUES (2, 31);
INSERT INTO `sys_role_menu1` VALUES (2, 32);
INSERT INTO `sys_role_menu1` VALUES (2, 33);
INSERT INTO `sys_role_menu1` VALUES (2, 36);
INSERT INTO `sys_role_menu1` VALUES (2, 37);
INSERT INTO `sys_role_menu1` VALUES (2, 38);
INSERT INTO `sys_role_menu1` VALUES (2, 39);
INSERT INTO `sys_role_menu1` VALUES (2, 40);
INSERT INTO `sys_role_menu1` VALUES (2, 41);
INSERT INTO `sys_role_menu1` VALUES (2, 70);
INSERT INTO `sys_role_menu1` VALUES (2, 71);
INSERT INTO `sys_role_menu1` VALUES (2, 72);
INSERT INTO `sys_role_menu1` VALUES (2, 73);
INSERT INTO `sys_role_menu1` VALUES (2, 74);
INSERT INTO `sys_role_menu1` VALUES (2, 75);
INSERT INTO `sys_role_menu1` VALUES (2, 76);
INSERT INTO `sys_role_menu1` VALUES (2, 77);
INSERT INTO `sys_role_menu1` VALUES (2, 78);
INSERT INTO `sys_role_menu1` VALUES (2, 79);
INSERT INTO `sys_role_menu1` VALUES (2, 81);
INSERT INTO `sys_role_menu1` VALUES (2, 84);
INSERT INTO `sys_role_menu1` VALUES (2, 88);
INSERT INTO `sys_role_menu1` VALUES (2, 89);
INSERT INTO `sys_role_menu1` VALUES (2, 90);
INSERT INTO `sys_role_menu1` VALUES (2, 95);
INSERT INTO `sys_role_menu1` VALUES (2, 97);
INSERT INTO `sys_role_menu1` VALUES (2, 102);
INSERT INTO `sys_role_menu1` VALUES (2, 105);
INSERT INTO `sys_role_menu1` VALUES (2, 106);
INSERT INTO `sys_role_menu1` VALUES (2, 107);
INSERT INTO `sys_role_menu1` VALUES (2, 108);
INSERT INTO `sys_role_menu1` VALUES (2, 109);
INSERT INTO `sys_role_menu1` VALUES (2, 110);
INSERT INTO `sys_role_menu1` VALUES (2, 111);
INSERT INTO `sys_role_menu1` VALUES (2, 112);
INSERT INTO `sys_role_menu1` VALUES (2, 117);
INSERT INTO `sys_role_menu1` VALUES (2, 118);
INSERT INTO `sys_role_menu1` VALUES (2, 119);
INSERT INTO `sys_role_menu1` VALUES (2, 120);
INSERT INTO `sys_role_menu1` VALUES (2, 121);
INSERT INTO `sys_role_menu1` VALUES (2, 122);
INSERT INTO `sys_role_menu1` VALUES (2, 123);
INSERT INTO `sys_role_menu1` VALUES (2, 124);
INSERT INTO `sys_role_menu1` VALUES (2, 125);
INSERT INTO `sys_role_menu1` VALUES (2, 126);
INSERT INTO `sys_role_menu1` VALUES (2, 127);
INSERT INTO `sys_role_menu1` VALUES (2, 128);
INSERT INTO `sys_role_menu1` VALUES (2, 129);
INSERT INTO `sys_role_menu1` VALUES (2, 130);
INSERT INTO `sys_role_menu1` VALUES (2, 133);
INSERT INTO `sys_role_menu1` VALUES (2, 134);
INSERT INTO `sys_role_menu1` VALUES (2, 135);
INSERT INTO `sys_role_menu1` VALUES (2, 136);
INSERT INTO `sys_role_menu1` VALUES (2, 137);
INSERT INTO `sys_role_menu1` VALUES (2, 138);
INSERT INTO `sys_role_menu1` VALUES (2, 139);
INSERT INTO `sys_role_menu1` VALUES (2, 140);
INSERT INTO `sys_role_menu1` VALUES (2, 141);
INSERT INTO `sys_role_menu1` VALUES (2, 142);
INSERT INTO `sys_role_menu1` VALUES (2, 143);
INSERT INTO `sys_role_menu1` VALUES (2, 144);
INSERT INTO `sys_role_menu1` VALUES (2, 145);
INSERT INTO `sys_role_menu1` VALUES (2, 146);
INSERT INTO `sys_role_menu1` VALUES (2, 147);
INSERT INTO `sys_role_menu1` VALUES (2, 148);
INSERT INTO `sys_role_menu1` VALUES (2, 149);
INSERT INTO `sys_role_menu1` VALUES (2, 150);
INSERT INTO `sys_role_menu1` VALUES (2, 151);
INSERT INTO `sys_role_menu1` VALUES (2, 152);
INSERT INTO `sys_role_menu1` VALUES (2, 153);
-- ----------------------------
-- Table structure for sys_task
-- ----------------------------

View File

@ -1,13 +1,17 @@
package cn.qihangerp.api.order.controller;
import cn.qihangerp.common.AjaxResult;
import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.ResultVoEnum;
import cn.qihangerp.common.TableDataInfo;
import cn.qihangerp.module.order.domain.OShipment;
import cn.qihangerp.module.order.domain.bo.OrderShipBo;
import cn.qihangerp.module.order.service.OOrderService;
import cn.qihangerp.module.order.service.ErpShipmentService;
import cn.qihangerp.security.common.BaseController;
import lombok.AllArgsConstructor;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@AllArgsConstructor
@ -36,30 +40,35 @@ public class ShipmentController extends BaseController {
return getDataTable(orderService.searchOrderItemByReceiverMobile(receiverMobile));
}
// /**
// * 订单发货
// * @param shipping
// * @return
// */
// @PostMapping("/handShip")
// public AjaxResult orderHandShip(@RequestHeader("Authorization") String authorization,@RequestBody OrderShipBo shipping)
// {
/**
* 手动添加发货记录
* @param shipping
* @return
*/
@PostMapping("/handShip")
// public AjaxResult orderHandShip(@RequestHeader("Authorization") String authorization, @RequestBody OrderShipBo shipping)
public AjaxResult orderHandShip( @RequestBody OrderShipBo shipping)
{
if(shipping.getShipType()==null) return AjaxResult.error("缺少参数shipType");
if(shipping.getShopId()==null) return AjaxResult.error("缺少参数shopId");
if(StringUtils.isEmpty(shipping.getOrderNum())) return AjaxResult.error("缺少参数orderNum");
if(StringUtils.isEmpty(shipping.getReceiverName())) return AjaxResult.error("缺少参数receiverName");
if(StringUtils.isEmpty(shipping.getReceiverMobile())) return AjaxResult.error("缺少参数receiverMobile");
if(StringUtils.isEmpty(shipping.getAddress())) return AjaxResult.error("缺少参数address");
var result = shippingService.addRecord(shipping);
if(result.getCode() == ResultVoEnum.SUCCESS.getIndex()) {
// // 发货
// TaoOrderShipBo bo = new TaoOrderShipBo();
// bo.setShopId(shipping.getShopId());
//// bo.setTid(shipping.getOrderId());
// bo.setWaybillCode(shipping.getShipCode());
// bo.setWaybillCompany(shipping.getShipCompany());
//
// var result = shippingService.handOrderShip(shipping);
//// if(result.getCode() == ResultVoEnum.SUCCESS.getIndex()) {
//// // 发货
//// TaoOrderShipBo bo = new TaoOrderShipBo();
//// bo.setShopId(shipping.getShopId());
////// bo.setTid(shipping.getOrderId());
//// bo.setWaybillCode(shipping.getShipCode());
//// bo.setWaybillCompany(shipping.getShipCompany());
////
//// JSONObject jsonObject = taoApiService.orderShip(authorization, bo);
//// return AjaxResult.success();
//// }else{
//// return AjaxResult.error(result.getCode(),result.getMsg());
//// }
//
// return AjaxResult.success();
// }
// JSONObject jsonObject = taoApiService.orderShip(authorization, bo);
return AjaxResult.success();
} else{
return AjaxResult.error(result.getCode(),result.getMsg());
}
}
}

View File

@ -99,6 +99,36 @@ public class OShipment implements Serializable {
*/
private String shipOperator;
/**
* 收件人姓名
*/
private String receiverName;
/**
* 收件人手机号
*/
private String receiverMobile;
/**
* 收件人地址
*/
private String address;
/**
*
*/
private String province;
/**
*
*/
private String city;
/**
*
*/
private String town;
/**
* 物流状态0 待发货1已发货2已完成
*/

View File

@ -4,7 +4,9 @@ import lombok.Data;
@Data
public class OrderShipBo {
private Integer shipType;
private Long shopId;
private String orderNum;
private String shipCompany;
private String shipCode;
private String receiverName;
@ -13,6 +15,7 @@ public class OrderShipBo {
private String city;
private String town;
private String address;
private String shipOperator;
private String[] itemIds;
}

View File

@ -2,7 +2,9 @@ package cn.qihangerp.module.order.service;
import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult;
import cn.qihangerp.common.ResultVo;
import cn.qihangerp.module.order.domain.OShipment;
import cn.qihangerp.module.order.domain.bo.OrderShipBo;
import com.baomidou.mybatisplus.extension.service.IService;
/**
@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
public interface ErpShipmentService extends IService<OShipment> {
PageResult<OShipment> queryPageList(OShipment shipping, PageQuery pageQuery);
OShipment queryDetailById(Long id);
ResultVo<Long> addRecord(OrderShipBo shipping);
}

View File

@ -2,8 +2,14 @@ package cn.qihangerp.module.order.service.impl;
import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult;
import cn.qihangerp.common.ResultVo;
import cn.qihangerp.model.entity.OLogisticsCompany;
import cn.qihangerp.model.entity.OShop;
import cn.qihangerp.module.mapper.OLogisticsCompanyMapper;
import cn.qihangerp.module.mapper.OShopMapper;
import cn.qihangerp.module.order.domain.OShipment;
import cn.qihangerp.module.order.domain.OShipmentItem;
import cn.qihangerp.module.order.domain.bo.OrderShipBo;
import cn.qihangerp.module.order.mapper.OShipmentItemMapper;
import cn.qihangerp.module.order.mapper.OShipmentMapper;
import cn.qihangerp.module.order.service.ErpShipmentService;
@ -14,6 +20,9 @@ import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author qilip
* @description 针对表erp_shipment(发货记录表)的数据库操作Service实现
@ -24,10 +33,13 @@ import org.springframework.util.StringUtils;
public class ErpShipmentServiceImpl extends ServiceImpl<OShipmentMapper, OShipment>
implements ErpShipmentService{
private final OShipmentItemMapper shipmentItemMapper;
private final OLogisticsCompanyMapper logisticsCompanyMapper;
private final OShopMapper shopMapper;
@Override
public PageResult<OShipment> queryPageList(OShipment shipping, PageQuery pageQuery) {
LambdaQueryWrapper<OShipment> queryWrapper = new LambdaQueryWrapper<OShipment>()
.eq(shipping.getShipper()!=null, OShipment::getShipper,shipping.getShipper())
.eq(shipping.getShipType()!=null, OShipment::getShipType,shipping.getShipType())
.eq(StringUtils.hasText(shipping.getOrderNum()), OShipment::getOrderNum, shipping.getOrderNum())
.eq(StringUtils.hasText(shipping.getShipCode()), OShipment::getShipCode, shipping.getShipCode())
.eq(shipping.getShopId() != null, OShipment::getShopId, shipping.getShopId());
@ -50,6 +62,43 @@ public class ErpShipmentServiceImpl extends ServiceImpl<OShipmentMapper, OShipme
}
return oShipment;
}
@Override
public ResultVo<Long> addRecord(OrderShipBo shipping) {
OLogisticsCompany oLogisticsCompany = logisticsCompanyMapper.selectById(shipping.getShipCompany());
if(oLogisticsCompany==null){
return ResultVo.error("快递公司不存在");
}
OShop oShop = shopMapper.selectById(shipping.getShopId());
if(oShop==null){
return ResultVo.error("店铺不存在");
}
OShipment shipment = new OShipment();
shipment.setShipType(shipping.getShipType());
shipment.setShopId(shipping.getShopId());
shipment.setShopType(shipping.getShipType());
shipment.setShipCode(shipping.getShipCode());
shipment.setShipCompanyCode(oLogisticsCompany.getCode());
shipment.setShipCompany(oLogisticsCompany.getName());
shipment.setReceiverName(shipping.getReceiverName());
shipment.setReceiverMobile(shipping.getReceiverMobile());
shipment.setProvince(shipping.getProvince());
shipment.setCity(shipping.getCity());
shipment.setTown(shipping.getTown());
shipment.setAddress(shipping.getAddress());
shipment.setOrderNum(shipping.getOrderNum());
shipment.setShipOperator(shipping.getShipOperator());
shipment.setOrderId(0L);
shipment.setShipper(0);
shipment.setSupplierId(0L);
shipment.setShipFee(BigDecimal.ZERO);
shipment.setShipStatus(1);
shipment.setCreateBy("手动添加发货记录");
shipment.setCreateTime(new Date());
this.baseMapper.insert(shipment);
return ResultVo.success(shipment.getId());
}
}

View File

@ -527,7 +527,12 @@ public class OOrderServiceImpl extends ServiceImpl<OOrderMapper, OOrder>
oShipment.setShipTime(new Date());
oShipment.setShipOperator(shipBo.getShippingMan());
oShipment.setShipStatus(1);//物流状态0 待发货1已发货2已完成
oShipment.setReceiverName(erpOrder.getReceiverName());
oShipment.setReceiverMobile(erpOrder.getReceiverMobile());
oShipment.setProvince(erpOrder.getProvince());
oShipment.setCity(erpOrder.getCity());
oShipment.setTown(erpOrder.getTown());
oShipment.setAddress(erpOrder.getAddress());
oShipment.setPackageHeight(shipBo.getHeight());
oShipment.setPackageWeight(shipBo.getWeight());
oShipment.setPackageLength(shipBo.getLength());

View File

@ -34,6 +34,12 @@
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
<result property="receiverName" column="receiver_name" jdbcType="VARCHAR"/>
<result property="receiverMobile" column="receiver_mobile" jdbcType="VARCHAR"/>
<result property="address" column="address" jdbcType="VARCHAR"/>
<result property="province" column="province" jdbcType="VARCHAR"/>
<result property="city" column="city" jdbcType="VARCHAR"/>
<result property="town" column="town" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
@ -46,6 +52,6 @@
package_length,package_width,package_height,
packsge_operator,packsge_time,packages,
remark,create_time,create_by,
update_time,update_by
update_time,update_by,address,province,city,town,receiver_name,receiver_mobile
</sql>
</mapper>

View File

@ -0,0 +1,21 @@
import request from '@/utils/request'
// 查询
export function listShipping(query) {
return request({
url: '/api/oms-api/shipping/list',
method: 'get',
params: query
})
}
// 新增
export function handShip(data) {
return request({
url: '/api/oms-api/shipping/handShip',
method: 'post',
data: data
})
}

View File

@ -1,7 +1,7 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="店铺" prop="name">
<el-form-item label="店铺" prop="shopId">
<el-select v-model="queryParams.shopId" placeholder="请选择店铺" clearable @change="handleQuery">
<el-option
v-for="item in shopList"
@ -9,13 +9,23 @@
:label="item.name"
:value="item.id">
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 1">淘宝天猫</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 2">京东</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 3">抖店</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 4">拼多多</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 500">微信小店</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 200">京东POP</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 280">京东自营</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 100">淘宝天猫</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 300">拼多多</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 400">抖店</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 999">线下渠道</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="发货类型" prop="shipType">
<el-select v-model="queryParams.shipType" placeholder="发货类型" clearable @change="handleQuery">
<el-option label="订单发货" value="1"></el-option>
<el-option label="商品补发" value="2"></el-option>
<el-option label="商品换货" value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="订单号" prop="orderNum">
<el-input
v-model="queryParams.orderNum"
@ -48,7 +58,7 @@
icon="el-icon-download"
size="mini"
@click="handleShipping"
>手动发货</el-button>
>手动添加发货记录</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
@ -102,20 +112,30 @@
@pagination="getList"
/>
<!-- 对话框 -->
<el-dialog title="手动发货" :visible.sync="open" width="500px" append-to-body>
<el-dialog title="手动添加发货记录" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="发货类型" prop="shipType">
<el-select v-model="form.shipType" placeholder="发货类型" >
<el-option label="订单发货" value="1"></el-option>
<el-option label="商品补发" value="2"></el-option>
<el-option label="商品换货" value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="店铺" prop="shopId">
<el-select v-model="form.shopId" placeholder="请选择店铺" clearable @change="handleQuery">
<el-select v-model="form.shopId" placeholder="请选择店铺" >
<el-option
v-for="item in shopList"
:key="item.id"
:label="item.name"
:value="item.id">
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 1">淘宝天猫</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 2">京东</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 3">抖店</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 4">拼多多</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 500">微信小店</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 200">京东POP</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 280">京东自营</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 100">淘宝天猫</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 300">拼多多</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 400">抖店</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.type === 999">线下渠道</span>
</el-option>
</el-select>
</el-form-item>
@ -124,36 +144,45 @@
<el-input v-model="form.orderNum" placeholder="请输入订单号" />
</el-form-item>
<el-form-item label="快递公司" prop="shipCompany">
<el-select v-model="form.shipCompany" placeholder="请选择快递公司" clearable @change="handleQuery">
<el-select v-model="form.shipCompany" placeholder="请选择快递公司" >
<el-option
v-for="item in logisticsList"
:key="item.id"
:label="item.name"
:value="item.code">
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="快递单号" prop="shipCode">
<el-input v-model="form.shipCode" placeholder="请输入快递单号" />
</el-form-item>
<el-form-item label="快递费用" prop="shipFee">
<el-input v-model="form.shipFee" placeholder="请输入快递费用" />
<!-- <el-form-item label="快递费用" prop="shipFee">-->
<!-- <el-input v-model="form.shipFee" placeholder="请输入快递费用" />-->
<!-- </el-form-item>-->
<el-form-item label="收件人" prop="receiverName">
<el-input v-model="form.receiverName" placeholder="请输入收件人" />
</el-form-item>
<el-form-item label="手机号" prop="receiverMobile">
<el-input v-model="form.receiverMobile" placeholder="请输入手机号" />
</el-form-item>
<el-form-item label="收货地址" prop="address">
<el-input v-model="form.address" placeholder="请输入收货地址" />
</el-form-item>
<el-form-item label="发货人" prop="shipOperator">
<el-input v-model="form.shipOperator" placeholder="请输入发货人" />
</el-form-item>
<el-form-item label="包裹重量" prop="packageWeight">
<el-input v-model="form.packageWeight" placeholder="请输入包裹重量" />
</el-form-item>
<el-form-item label="包裹长度" prop="packageLength">
<el-input v-model="form.packageLength" placeholder="包裹长度" />
</el-form-item>
<el-form-item label="包裹宽度" prop="packageWidth">
<el-input v-model="form.width" placeholder="请输入包裹宽度" />
</el-form-item>
<el-form-item label="包裹高度" prop="packageHeight">
<el-input v-model="form.height" placeholder="请输入包裹高度" />
</el-form-item>
<!-- <el-form-item label="包裹重量" prop="packageWeight">-->
<!-- <el-input v-model="form.packageWeight" placeholder="请输入包裹重量" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="包裹长度" prop="packageLength">-->
<!-- <el-input v-model="form.packageLength" placeholder="包裹长度" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="包裹宽度" prop="packageWidth">-->
<!-- <el-input v-model="form.width" placeholder="请输入包裹宽度" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="包裹高度" prop="packageHeight">-->
<!-- <el-input v-model="form.height" placeholder="请输入包裹高度" />-->
<!-- </el-form-item>-->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -164,9 +193,10 @@
</template>
<script>
import {listLogistics, listLogisticsStatus, listShop} from "@/api/shop/shop";
import {listShop} from "@/api/shop/shop";
import {listLogisticsStatus} from "@/api/shipping/logistics";
import {MessageBox} from "element-ui";
import {handShip, listShipping} from "@/api/api/shipping";
import {handShip, listShipping} from "@/api/shipping/record";
export default {
name: "Shop",
@ -206,10 +236,14 @@ export default {
},
//
rules: {
shipType: [{ required: true, message: "不能为空", trigger: "blur" }],
shopId: [{ required: true, message: "不能为空", trigger: "blur" }],
orderNum: [{ required: true, message: "不能为空", trigger: "blur" }],
shipCompany: [{ required: true, message: "不能为空", trigger: "blur" }],
shipCode: [{ required: true, message: "不能为空", trigger: "blur" }],
receiverName: [{ required: true, message: "不能为空", trigger: "blur" }],
receiverMobile: [{ required: true, message: "不能为空", trigger: "blur" }],
address: [{ required: true, message: "不能为空", trigger: "blur" }],
}
};
},
@ -263,9 +297,14 @@ export default {
this.$refs["form"].validate(valid => {
if (valid) {
handShip(this.form).then(response => {
if(response.code===200) {
this.$modal.msgSuccess("发货成功");
this.form={}
this.open = false;
this.getList();
}else{
this.$modal.msgError(response.msg)
}
});
}

View File

@ -154,7 +154,7 @@
<template slot-scope="scope">
<el-button
v-if="!scope.row.specId||scope.row.specId === 0"
size="mini"
size="mini" plain
type="primary"
icon="el-icon-edit"
@click="handleUpdateLink(scope.row)"