java进销存--销售下单

订单是系统中必不可少的一部分,通过销售下单可以形成销售订单,选择商品,填写客户信息

创建销售订单

 

表设计

CREATE TABLE `sale_order` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `order_no` varchar(100) NOT NULL COMMENT '采购订单编码',
  `warehouse_code` varchar(100) NOT NULL COMMENT '仓库编码',
  `warehouse_name` varchar(100) DEFAULT NULL COMMENT '仓库名称',
  `order_state` smallint(6) NOT NULL DEFAULT '0' COMMENT '状态0:新建 10:已审核  30:已发货',
  `total_amount` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '订单总金额',
  `province_code` varchar(100) DEFAULT NULL COMMENT '省',
  `province_name` varchar(100) DEFAULT NULL COMMENT '省',
  `city_code` varchar(100) DEFAULT NULL COMMENT '市编码',
  `city_name` varchar(100) DEFAULT NULL COMMENT '市',
  `area_code` varchar(100) DEFAULT NULL COMMENT '区编码',
  `area_name` varchar(100) DEFAULT NULL COMMENT '区',
  `receiver_name` varchar(50) DEFAULT NULL COMMENT '收货人姓名',
  `receiver_phone` varchar(100) DEFAULT NULL COMMENT '电话',
  `address` varchar(500) DEFAULT NULL COMMENT '地址',
  `audit_user` varchar(50) DEFAULT NULL COMMENT '审核人',
  `audit_time` datetime DEFAULT NULL COMMENT '审核时间',
  `cancel_user` varchar(50) DEFAULT NULL COMMENT '取消人',
  `cancel_time` datetime DEFAULT NULL COMMENT '取消时间',
  `delivery_time` datetime DEFAULT NULL COMMENT '出库时间',
  `delivery_user` varchar(50) DEFAULT NULL COMMENT '发运人',
  `delivery_date` datetime DEFAULT NULL COMMENT '发货日期',
  `remark` varchar(1000) DEFAULT NULL COMMENT '备注',
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_user` varchar(50) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `yn` tinyint(4) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='销售订单表'
CREATE TABLE `sale_order_detail` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `order_no` varchar(100) NOT NULL COMMENT '采购订单编码',
  `sku_code` varchar(100) NOT NULL COMMENT '商品编码',
  `goods_name` varchar(100) DEFAULT NULL COMMENT '商品名称',
  `goods_model` varchar(100) DEFAULT NULL COMMENT '规格',
  `unit_name` varchar(100) DEFAULT NULL COMMENT '单位',
  `is_fresh` smallint(6) NOT NULL DEFAULT '0' COMMENT '0:否 1:是',
  `plan_num` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '计划量',
  `delivery_num` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '发运量',
  `tax_rate` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '税率',
  `tax_price` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '单价',
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_user` varchar(50) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `yn` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='销售订单明细'

 

 

  @RequestMapping("/addOrderDetail")
    @ResponseBody
    public ResponseData addOrderDetail(
                                    @RequestParam("receiverName") String receiverName,
                                    @RequestParam("receiverPhone") String receiverPhone,
                                    @RequestParam("address") String address,
                                      @RequestParam("warehouseCode") String warehouseCode,
                                      @RequestParam("warehouseName") String warehouseName,
                                      @RequestParam("deliveryDate") Date deliveryDate,
                                    @RequestParam("detailStr") String detailStr,
                                      @RequestParam("remark") String remark




    ) {

        List<SaleOrderDetailParam>  saleOrderDetailParamList= JSONObject.parseArray(detailStr,SaleOrderDetailParam.class);

        if (saleOrderDetailParamList==null||saleOrderDetailParamList.size()==0)
        {
            return ResponseData.error("请选择商品!");
        }
        Map<String, String> replaceMap = new HashMap<String, String>();
        replaceMap.put("warehouseId", warehouseCode);
        String orderNo = this.codeService.generateCode(CodeExpressEnum.billnoSaleOrder, replaceMap);

        if (Strings.isNullOrEmpty(orderNo))
        {
            return ResponseData.error("单号为空");
        }

      //  BigDecimal totalAmount =saleOrderDetailParamList.stream().map(SaleOrderDetailParam::getTaxPrice).reduce(BigDecimal.ZERO,BigDecimal::add);

        BigDecimal totalAmount = saleOrderDetailParamList.stream().reduce(BigDecimal.ZERO, (x, y) -> {
return x.add(y.getPlanNum().multiply(y.getTaxPrice()));
}, BigDecimal::add);


        SaleOrderParam saleOrderParam=new SaleOrderParam();
        saleOrderParam.setOrderNo(orderNo);
        saleOrderParam.setWarehouseCode(warehouseCode);
        saleOrderParam.setWarehouseName(warehouseName);
        saleOrderParam.setOrderState(SaleOrderStatusEnum.NEW.getStatusValue());
        saleOrderParam.setTotalAmount(totalAmount);
        saleOrderParam.setReceiverName(receiverName);
        saleOrderParam.setReceiverPhone(receiverPhone);
        saleOrderParam.setAddress(address);
        saleOrderParam.setDeliveryDate(deliveryDate);
        saleOrderParam.setRemark(remark);
        saleOrderParam.setCreateUser(LoginContextHolder.getContext().getUser().getUsername());
        saleOrderParam.setCreateTime(new Date());
        saleOrderParam.setUpdateTime(new Date());
        saleOrderParam.setUpdateUser(LoginContextHolder.getContext().getUser().getUsername());
        saleOrderParam.setYn(1);
        for (SaleOrderDetailParam saleOrderDetailParam:saleOrderDetailParamList)
        {
            saleOrderDetailParam.setOrderNo(orderNo);
            saleOrderDetailParam.setCreateUser(LoginContextHolder.getContext().getUser().getUsername());
            saleOrderDetailParam.setCreateTime(new Date());
            saleOrderDetailParam.setUpdateTime(new Date());
            saleOrderDetailParam.setUpdateUser(LoginContextHolder.getContext().getUser().getUsername());
            saleOrderDetailParam.setYn(1);
        }

        saleOrderService.addOrder(saleOrderParam,saleOrderDetailParamList);
        return  ResponseData.success();
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值