guoyuji
2024-02-01 60eb14c105dc7b981be3be87003a0411155d3cf7
提交前后端订单保存实现方法
12个文件已修改
10个文件已添加
358 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/returns/SelectDeliveryList.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/common/Constants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderProcessDetail.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/sd/ProductDetail.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysError.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderGlassDetailMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderProcessDetailMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/ProductDetailMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysErrorMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysErrorService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderGlassDetailMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderProcessDetail.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/ProductDetail.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/userInfo/SysError.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/sd/OrderMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -6,6 +6,7 @@
import request from "@/utils/request"
import deepClone from "@/utils/deepClone"
import  useUserInfoStore from '@/stores/userInfo'
let dialogTableVisible = ref(false)
const userStore = useUserInfoStore()
const router = useRouter()
const xGrid = ref()
@@ -160,6 +161,10 @@
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'remarks':  {
          dialogTableVisible.value=true
          break
        }
        case 'Craft': {
          await router.push({path: '/main/order/updateOrderCraft', query: {orderID: 12123}})
          break
@@ -276,7 +281,7 @@
    if(res.code==200){
      ElMessage.success('保存成功')
    }else {
      ElMessage.warning(res.msg)
      ElMessage.error(res.msg)
    }
  })
}
@@ -334,8 +339,8 @@
      item.computeGrossArea = parseFloat((item.computeArea*item.quantity).toFixed(2))
      item.grossAmount=parseFloat((item.price * item.computeGrossArea).toFixed(2))
    })
    //赋值表头数据
    titleUploadData.value.money=countMoney(jsonData).toString()
    xGrid.value.loadData(jsonData)
  }
  fileReader.readAsBinaryString(files[0])
@@ -510,6 +515,13 @@
      </vxe-grid>
    </div>
    <el-dialog v-model="dialogTableVisible" title="加工要求" style="width: 60%;height:75% ">
      <el-input
          v-model="titleUploadData.processingNote"
          type="textarea"
          :autosize="{ minRows: 2, maxRows: 20 }"
      />
    </el-dialog>
  </div>
</template>
north-glass-erp/northglass-erp/src/views/sd/returns/SelectDeliveryList.vue
@@ -55,7 +55,7 @@
    {title: '审核', width: 40, slots: { default: 'state' }},
    {title: '出库', width: 40, slots: { default: 'state' }},
    {field: '1',width:120,  title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: '1',width:120,  title: '发货单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: '2',width:120,  title: '客户编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: '3',width:120,  title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: '4',width:120,  title: '总数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
@@ -84,7 +84,7 @@
  data:  [
    {
      '0': '1',
      '1': 'NG23110102',
      '1': 'JG23110102',
      '2': '11',
      '3': '中建',
      '4': '534',
@@ -101,7 +101,7 @@
    },
    {
      '0': '1',
      '1': 'NG23110101',
      '1': 'JG23110101',
      '2': '11',
      '3': '中建',
      '4': '534',
north-glass-erp/src/main/java/com/example/erp/common/Constants.java
@@ -9,4 +9,5 @@
    String Code_400="400";//
    String Code_200="200";//成功
    String Code_600="600";//其他问题
    String Code_msg = "服务器发生异常,保存失败";
}
north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java
@@ -2,8 +2,10 @@
import cn.hutool.json.JSON;
import com.alibaba.fastjson.JSONObject;
import com.example.erp.common.Constants;
import com.example.erp.common.Result;
import com.example.erp.entity.sd.Order;
import com.example.erp.exception.ServiceException;
import com.example.erp.service.sd.OrderService;
import org.apache.tomcat.Jar;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,7 +23,11 @@
    private OrderService orderService;
    @PostMapping("/saveOrder")
    public Result saveOrder(@RequestBody Map<String, Object> orderMap) {
        return Result.seccess(orderService.saveOrder(orderMap));
    public Result saveOrder(@RequestBody Map<String, Object> orderMap) throws Exception {
        if(orderService.saveOrder(orderMap))    {
            return Result.seccess(true);
        }else{
            throw new ServiceException(Constants.Code_500,Constants.Code_msg);
        }
    }
}
north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java
@@ -39,6 +39,7 @@
    private String otherRemarks;
    private Double area;
    private Long quantity;
    private String perimeter;
    private String verifierId;
    private String verifier;
    private String creatorId;
north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.example.erp.entity.mm.FinishedGoodsInventory;
import lombok.Data;
import java.time.LocalDate;
@@ -9,7 +10,6 @@
@Data
public class OrderDetail {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String orderId;
    private Integer orderNumber;
@@ -41,6 +41,7 @@
    private Order order;
    private Delivery delivery;
    private DeliveryDetail deliveryDetail;
    private FinishedGoodsInventory finishedGoodsInventory;
    //private Product product;
}
north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderProcessDetail.java
@@ -9,11 +9,14 @@
    @TableId(type = IdType.AUTO)
    private Long id;
    private String orderId;
    private String orderNumber;
    private Integer technologyNumber;
    private String process;
    private Integer reportingworkNum;
    private Integer brokenNum;
    private Order order;
    private OrderDetail orderDetail;
    private Product product;
//    private Order order;
//    private OrderDetail orderDetail;
//    private Product product;
}
north-glass-erp/src/main/java/com/example/erp/entity/sd/ProductDetail.java
@@ -12,12 +12,14 @@
public class ProductDetail    {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String productName;
    private String prodId;
    private String sortNum;
    private String glassSort;
    private String detailType;
    private String detail;
    private Integer glassGroup;
    private String process;
    private String separation;
    private LocalDate createTime;
    private Product product;
}
north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysError.java
New file
@@ -0,0 +1,14 @@
package com.example.erp.entity.userInfo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
@Data
public class SysError {
    @TableId(type = IdType.AUTO)
    private String id;
    private String func;
    private String error;
    private String createTime;
}
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderGlassDetailMapper.java
New file
@@ -0,0 +1,15 @@
package com.example.erp.mapper.sd;
import com.example.erp.entity.sd.OrderGlassDetail;
import com.example.erp.entity.sd.OrderProcessDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface OrderGlassDetailMapper {
    boolean insertOrderGlassDetail(@Param("orderId") String orderId);
    List<OrderGlassDetail> selectOrderGlassDetail(@Param("orderId") String orderId);
}
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
@@ -3,8 +3,11 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.erp.entity.sd.Order;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface OrderMapper extends BaseMapper<Order> {
    Integer selectMaxOrderId();
    boolean updateOrderParameter(@Param("orderId") String orderId);
}
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderProcessDetailMapper.java
New file
@@ -0,0 +1,13 @@
package com.example.erp.mapper.sd;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.erp.entity.sd.OrderProcessDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface OrderProcessDetailMapper extends BaseMapper<OrderProcessDetail> {
    boolean insertOrderProcessDetail(@Param("processDetailList") List<OrderProcessDetail> processDetailList);
}
north-glass-erp/src/main/java/com/example/erp/mapper/sd/ProductDetailMapper.java
New file
@@ -0,0 +1,12 @@
package com.example.erp.mapper.sd;
import com.example.erp.entity.sd.ProductDetail;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface ProductDetailMapper {
    List<ProductDetail> getGlassDetailList();
}
north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysErrorMapper.java
New file
@@ -0,0 +1,11 @@
package com.example.erp.mapper.userInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.erp.entity.userInfo.SysError;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface SysErrorMapper extends BaseMapper<SysError> {
    Boolean saveError(@Param("sysError")SysError sysError);
}
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -3,50 +3,72 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.example.erp.common.Constants;
import com.example.erp.entity.sd.Order;
import com.example.erp.entity.sd.OrderDetail;
import com.example.erp.mapper.sd.OrderDetailMapper;
import com.example.erp.mapper.sd.OrderMapper;
import com.example.erp.entity.sd.OrderGlassDetail;
import com.example.erp.entity.sd.OrderProcessDetail;
import com.example.erp.entity.userInfo.SysError;
import com.example.erp.exception.ServiceException;
import com.example.erp.mapper.sd.*;
import com.example.erp.service.userInfo.SysErrorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
@Service
@DS("sd")
@Transactional
@Transactional(rollbackFor = Exception.class)
public class OrderService {
    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private OrderDetailMapper orderDetailMapper;
    private final OrderMapper orderMapper;
    private final OrderDetailMapper orderDetailMapper;
    private final OrderGlassDetailMapper orderGlassDetailMapper;
    private final SysErrorService sysErrorService;
    public boolean saveOrder(Map<String,Object> orderMap) {
    private final OrderProcessDetailMapper orderProcessDetailMapper;
    public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService) {
        this.orderMapper = orderMapper;
        this.orderDetailMapper = orderDetailMapper;
        this.orderGlassDetailMapper = orderGlassDetailMapper;
        this.orderProcessDetailMapper = orderProcessDetailMapper;
        this.sysErrorService = sysErrorService;
    }
    public boolean saveOrder(Map<String,Object> orderMap) throws Exception {
        JSONObject orderJson = new JSONObject(orderMap);
        Order order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("title")), Order.class);
        List<OrderDetail> OrderDetails = JSONArray.parseArray(JSONObject.toJSONString(orderJson.get("detail")), OrderDetail.class);
        boolean saveState = true;
        //设置回滚点
        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
        //判断传入id参数是否为空,未传入id为空插入订单表,传入更新表
       // System.out.println(order);
        if(order.getOrderId() == null || order.getOrderId().isEmpty()){
            insertOrder(order,OrderDetails);
        }else {
            saveState = updateOrder(order,OrderDetails);
        try{
            if(order.getOrderId() == null || order.getOrderId().isEmpty()){
                insertOrder(order,OrderDetails);
            }else {
                saveState = updateOrder(order,OrderDetails);
            }
        }catch (Exception e){
            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
            //将异常传入数据库
            SysError sysError = new SysError();
            sysError.setError(e.toString());
            sysError.setFunc("saveOrder");
            sysErrorService.insert(sysError);
            saveState = false;
            //throw new Exception();
        }
        return true;
        System.out.println(saveState);
        return saveState;
    }
    //生成订单数据
    public void insertOrder(Order order,List<OrderDetail> OrderDetails) {
        Integer maxOrderId = orderMapper.selectMaxOrderId();
        //查询订单id,并且自增
@@ -63,11 +85,31 @@
        for (int i = 0; i < OrderDetails.size(); i++) {
            OrderDetails.get(i).setOrderNumber(i+1);
            OrderDetails.get(i).setOrderId(orderId);
            OrderDetails.get(i).setPerimeter(OrderDetails.get(i).getWidth()*OrderDetails.get(i).getHeight()*2);
            OrderDetails.get(i).setPerimeter(OrderDetails.get(i).getWidth()*OrderDetails.get(i).getHeight()*2/1000);
            OrderDetails.get(i).setWeight(1.0);
        }
        //往明细表插数据
        orderDetailMapper.insertBatch(OrderDetails);
        //修改订单主表面积与周长以及重量
        orderMapper.updateOrderParameter(orderId);
        //往小片表传入产品数据
        orderGlassDetailMapper.insertOrderGlassDetail(orderId);
        //查询订单小片表获取工艺传入小片工艺表
        List<OrderGlassDetail> orderGlassDetails = orderGlassDetailMapper.selectOrderGlassDetail(orderId);
        List<OrderProcessDetail> orderProcessDetailList = new ArrayList<>();
        for (OrderGlassDetail orderGlassDetail : orderGlassDetails) {
            String[] processList = orderGlassDetail.getProcess().split("->");
            for (String process : processList) {
                OrderProcessDetail orderProcessDetail = new OrderProcessDetail();
                orderProcessDetail.setOrderId(orderGlassDetail.getOrderId());
                orderProcessDetail.setOrderNumber(orderGlassDetail.getOrderNumber());
                orderProcessDetail.setTechnologyNumber(orderGlassDetail.getTechnologyNumber());
                orderProcessDetail.setProcess(process);
                orderProcessDetailList.add(orderProcessDetail);
            }
        }
       //赋值订单工艺表
        orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList);
    }
    public boolean updateOrder(Order order,List<OrderDetail> OrderDetails) {
north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysErrorService.java
New file
@@ -0,0 +1,22 @@
package com.example.erp.service.userInfo;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.example.erp.entity.userInfo.SysError;
import com.example.erp.mapper.userInfo.SysErrorMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
@DS("user_info")
public class SysErrorService {
    private final SysErrorMapper sysErrorMapper;
    public SysErrorService(SysErrorMapper sysErrorMapper) {
        this.sysErrorMapper = sysErrorMapper;
    }
    public void insert(SysError sysError) {
        sysErrorMapper.saveError(sysError);
    }
}
north-glass-erp/src/main/resources/mapper/sd/OrderGlassDetailMapper.xml
New file
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.erp.mapper.sd.OrderGlassDetailMapper">
    <insert id="insertOrderGlassDetail" parameterType="java.lang.String">
        insert into
            order_glass_detail (
            order_id, order_number,
            technology_number,
            glass_address,
            glass_child,
            child_width,
            child_height,
            process,
            `group`)
        select
            od.order_id,
            od.order_number,
            pd.glass_sort,
            if(pd.glass_sort=1,'(外)',if(pd2.glass_sort=pd.glass_sort,'(内)','')),
            pd.detail,
            od.width,
            od.height,
            pd.process,
            pd.glass_group
        from sd.product_detail as pd
        left join order_detail as od
            on od.product_id = pd.prod_id and pd.detail_type='glass'
        LEFT JOIN (SELECT max(id) as id ,max(glass_sort) as glass_sort  from product_detail GROUP BY prod_id)as pd2
            on pd2.id=pd.id
        where od.order_id = #{orderId}
        ORDER BY od.order_number
    </insert>
    <select id="selectOrderGlassDetail">
        select * from order_glass_detail where order_id = #{orderId}
    </select>
</mapper>
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -9,7 +9,23 @@
        from
            `order` as a
        where
            a.create_time = curdate()
            date(a.create_time) = curdate()
    </select>
    <update id="updateOrderParameter">
        update `order` o
        left join
            (select a.order_id,sum(a.perimeter) as aa,sum(a.quantity) as b,sum(a.compute_gross_area)  as c
             from sd.order_detail as a group by a.order_id)  od
            on o.order_id = od.order_id
        set
            o.quantity = od.b,
            o.area = od.c,
            o.perimeter= od.aa
        where
            o.order_id = #{orderId}
    </update>
</mapper>
north-glass-erp/src/main/resources/mapper/sd/OrderProcessDetail.xml
New file
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.erp.mapper.sd.OrderProcessDetailMapper">
    <insert id="insertOrderProcessDetail" >
        insert into
            order_process_detail(
                order_id,
                order_number,
                technology_number,
                process
            )
        values
        <foreach collection ="processDetailList" item="processDetail" separator =",">
            (
             #{processDetail.orderId},
             #{processDetail.orderNumber},
             #{processDetail.technologyNumber},
             #{processDetail.process}
             )
        </foreach>
    </insert>
</mapper>
north-glass-erp/src/main/resources/mapper/sd/ProductDetail.xml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.erp.mapper.sd.ProductDetailMapper">
    <select id="getGlassDetailList">
        select * from product_detail where prod_id = #{productId} and detail_type = 'glass'
    </select>
</mapper>
north-glass-erp/src/main/resources/mapper/userInfo/SysError.xml
New file
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.erp.mapper.userInfo.SysErrorMapper">
    <insert id="saveError">
        insert into erp_user_info.sys_error( func, error)
        values
        (#{sysError.func}, #{sysError.error})
    </insert>
</mapper>
north-glass-erp/target/classes/mapper/sd/OrderMapper.xml
@@ -9,7 +9,23 @@
        from
            `order` as a
        where
            a.create_time = curdate()
            date(a.create_time) = curdate()
    </select>
    <update id="updateOrderParameter">
        update `order` o
        left join
            (select a.order_id,sum(a.perimeter) as aa,sum(a.quantity) as b,sum(a.compute_gross_area)  as c
             from sd.order_detail as a group by a.order_id)  od
            on o.order_id = od.order_id
        set
            o.quantity = od.b,
            o.area = od.c,
            o.perimeter= od.aa
        where
            o.order_id = #{orderId}
    </update>
</mapper>