廖井涛
2025-01-08 c9cab1be767139fc2dc4a578c858528690ea8818
新增发货单多选打印
7个文件已修改
340 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet2.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue
@@ -25,6 +25,10 @@
})
const form = ref({
})
let produceList2 = ref([])
const getData = () => {
  if(props.deliveryId===null  || props.deliveryId===undefined || props.deliveryId===''){
    return
@@ -34,39 +38,54 @@
  request.post(`/delivery/getSelectDeliveryPrinting`,form.value).then((res) => {
    if(res.code==200){
      produceList.value = deepClone(res.data.data)
      delivery.value=deepClone(res.data.delivery)
      money.value=deepClone(res.data.money)
      otherMoney.value=deepClone(res.data.otherMoney)
      produceList.value.forEach(item => {
        sumMoney+=item.DeliveryDetail.money
      })
      otherMoney1=[]
      otherMoney=deepClone(res.data.otherMoney)
      for(let i=0;i<otherMoney.length;i++){
        if(otherMoney[i].DeliveryDetailOtherMoney.monery!=null){
          otherMoneys+=otherMoney[i].DeliveryDetailOtherMoney.monery
          if(otherMoney1.length===0){
            otherMoney1.push(otherMoney[i])
          }
          else{
            for(let s=0;s<otherMoney1.length;s++){
              if(otherMoney[i].DeliveryDetailOtherMoney.alias===otherMoney1[s].DeliveryDetailOtherMoney.alias){
      produceList.value = deepClone(res.data)
      for(let i=0;i<produceList.value.length;i++){
        let produceList1= ({
          data:null,
          otherMoney:null,
          otherMoney1:null,
          delivery:null,
          money:null,
          otherMoneys:0,
          sumMoney:0
        })
        produceList1.data=produceList.value[i].data
        produceList1.delivery=produceList.value[i].delivery
        produceList1.money=produceList.value[i].money
        produceList1.otherMoney=produceList.value[i].otherMoney
        for(let j=0;j<produceList1.data.length;j++){
          produceList1.sumMoney+=produceList1.data[j].DeliveryDetail.money
        }
        otherMoney1=[]
        for(let i=0;i<produceList1.otherMoney.length;i++){
          if(produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery!=null){
            produceList1.otherMoneys+=produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery
            if(otherMoney1.length===0){
              otherMoney1.push(produceList1.otherMoney[i])
            }
            else{
              for(let s=0;s<otherMoney1.length;s++){
                if(produceList1.otherMoney[i].DeliveryDetailOtherMoney.alias===otherMoney1[s].DeliveryDetailOtherMoney.alias){
                otherMoney1[s].DeliveryDetailOtherMoney.count=add(otherMoney[i].DeliveryDetailOtherMoney.count,otherMoney1[s].DeliveryDetailOtherMoney.count)
                otherMoney1[s].DeliveryDetailOtherMoney.monery =add(otherMoney[i].DeliveryDetailOtherMoney.monery,otherMoney1[s].DeliveryDetailOtherMoney.monery)
                break
                  otherMoney1[s].DeliveryDetailOtherMoney.count=add(produceList1.otherMoney[i].DeliveryDetailOtherMoney.count,otherMoney1[s].DeliveryDetailOtherMoney.count)
                  otherMoney1[s].DeliveryDetailOtherMoney.monery =add(produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery,otherMoney1[s].DeliveryDetailOtherMoney.monery)
                  break
                }
                if(s+1===otherMoney1.length){
                  otherMoney1.push(produceList1.otherMoney[i])
                  break
                }
              }
              if(s+1===otherMoney1.length){
                otherMoney1.push(otherMoney[i])
                break
              }
            }
          }
        }
        }
        produceList1.otherMoney1=otherMoney1
        produceList2.value.push(produceList1)
      }
    }else{
      ElMessage.warning(res.msg)
      router.push("/login")
@@ -123,7 +142,7 @@
<template>
  <div id="sheet">
    <table >
    <table class="pages" v-for="(itme1, index) in produceList2" :key="index" >
      <thead>
      <tr class="title-s">
        <th colspan="9">
@@ -138,16 +157,16 @@
        <th colspan="5" style="width: 40%;">
          <h3>销售发货单</h3>
        </th>
        <th colspan="2" style="width: 30%;text-align: left;">发货单号:<span>{{delivery.deliveryId}}</span></th>
        <th colspan="2" style="width: 30%;text-align: left;">发货单号:<span>{{itme1.delivery.deliveryId}}</span></th>
      </tr>
      <tr>
        <th style="text-align: left;border:none;" colspan="4">客户名称:<span>{{delivery.customerName}}</span></th>
        <th style="text-align: left;border:none;" colspan="3">项目名称:<span>{{delivery.project}}</span></th>
        <th style="text-align: left;border:none;" colspan="2">联系人:<span>{{delivery.contacts}}</span></th>
        <th style="text-align: left;border:none;" colspan="4">客户名称:<span>{{itme1.delivery.customerName}}</span></th>
        <th style="text-align: left;border:none;" colspan="3">项目名称:<span>{{itme1.delivery.project}}</span></th>
        <th style="text-align: left;border:none;" colspan="2">联系人:<span>{{itme1.delivery.contacts}}</span></th>
      </tr>
      <tr>
        <th style="text-align: left;border:none;" colspan="7">送货地址:<span>{{delivery.deliveryAddress}}</span></th>
        <th style="text-align: left;border:none;" colspan="2">联系电话:<span>{{delivery.contactNumber}}</span></th>
        <th style="text-align: left;border:none;" colspan="7">送货地址:<span>{{itme1.delivery.deliveryAddress}}</span></th>
        <th style="text-align: left;border:none;" colspan="2">联系电话:<span>{{itme1.delivery.contactNumber}}</span></th>
      </tr>
@@ -155,7 +174,7 @@
      <tr style="border-style: none">
        <td colspan="9" style="border-style: none">
          <table style="border-style: none;width: 100%;height: 100%;">
            <template v-for="(item, index) in produceList" :key="index" >
            <template v-for="(item, index) in itme1.data" :key="index" >
              <thead>
              <tr v-if="index===0">
                <th style="width: 6%;">序号</th>
@@ -199,10 +218,10 @@
            </template>
            <tr class="day-in">
              <td style="font-size: 15px;" colspan="3">合计:</td>
              <td>{{delivery.quantity}}</td>
              <td>{{delivery.area}}</td>
              <td>{{itme1.delivery.quantity}}</td>
              <td>{{itme1.delivery.area}}</td>
              <td></td>
              <td>{{parseFloat(sumMoney.toFixed(2))}}</td>
              <td>{{parseFloat(itme1.sumMoney.toFixed(2))}}</td>
              <td colspan="2"></td>
            </tr>
            <tr class="day-in">
@@ -214,24 +233,24 @@
                  <span  style="width: 25%">金额</span>
                </div>
              </td>
              <td style="text-align: left;border:none;font-size: 15px;" colspan="5">总金额:&nbsp;&nbsp;&nbsp;&nbsp;{{delivery.money}}</td>
              <td style="text-align: left;border:none;font-size: 15px;" colspan="5">总金额:&nbsp;&nbsp;&nbsp;&nbsp;{{itme1.delivery.money}}</td>
            </tr>
            <tr class="day-in">
              <td style="text-align: left;border-width: 0 1px 0 0; border-style: solid; border-color: #d3dce6;" colspan="4" >
                <div style="display: flex;font-size: 10px;text-align: center" v-for="(item, index2) in otherMoney1" :key="index2">
                <div style="display: flex;font-size: 10px;text-align: center" v-for="(item, index2) in itme1.otherMoney1" :key="index2">
                  <span style="width: 25%">{{item.DeliveryDetailOtherMoney.alias}}</span>&nbsp;
                  <span  style="width: 25%">{{item.DeliveryDetailOtherMoney.price}}</span>&nbsp;
                  <span  style="width: 25%">{{item.DeliveryDetailOtherMoney.count}}</span>&nbsp;
                  <span  style="width: 25%">{{parseFloat(item.DeliveryDetailOtherMoney.monery).toFixed(2)}}</span>
                </div>
                <div style="display: flex;font-size: 10px;text-align: center" v-if="delivery.freight>0">
                <div style="display: flex;font-size: 10px;text-align: center" v-if="itme1.delivery.freight>0">
                  <span style="width: 25%">运费</span>&nbsp;
                  <span  style="width: 25%">{{delivery.freightPrice}}</span>&nbsp;
                  <span  style="width: 25%">{{delivery.freightQuantity}}</span>&nbsp;
                  <span  style="width: 25%">{{delivery.freight}}</span>
                  <span  style="width: 25%">{{itme1.delivery.freightPrice}}</span>&nbsp;
                  <span  style="width: 25%">{{itme1.delivery.freightQuantity}}</span>&nbsp;
                  <span  style="width: 25%">{{itme1.delivery.freight}}</span>
                </div>
              </td>
              <td style="text-align: left;border:none;font-size: 15px;" colspan="5">大写金额:&nbsp;&nbsp;&nbsp;&nbsp;{{money}}</td>
              <td style="text-align: left;border:none;font-size: 15px;" colspan="5">大写金额:&nbsp;&nbsp;&nbsp;&nbsp;{{itme1.money}}</td>
            </tr>
@@ -247,8 +266,8 @@
            <tr class="day-in" style="border: 0;" v-if="company.showDeliveryCreator">
              <td colspan="9" style="border: 0">
                <div style="display:flex;text-align: left"  class="bottom">
                  <div style="width: 15%">制单员:{{ delivery.creator }}</div>
                  <div style="width: 25%">制单日期:{{ delivery.createTime }}</div>
                  <div style="width: 15%">制单员:{{ itme1.delivery.creator }}</div>
                  <div style="width: 25%">制单日期:{{ itme1.delivery.createTime }}</div>
                  <div style="width: 10%">发货员:</div>
                  <div style="width: 10%">司机:</div>
                  <div style="width: 15%">客户签字:</div>
@@ -281,8 +300,8 @@
            <tr class="day-in" style="border: 0" v-if="!company.showDeliveryCreator">
              <td colspan="9" style="border: 0">
                <div style="display:flex;text-align: left"  class="bottom">
                  <div style="width: 15%">制单员:{{ delivery.creator }}</div>
                  <div style="width: 15%">制单日期:{{ delivery.createTime1 }}</div>
                  <div style="width: 15%">制单员:{{ itme1.delivery.creator }}</div>
                  <div style="width: 15%">制单日期:{{ itme1.delivery.createTime1 }}</div>
                  <div style="width: 15%">发货员:</div>
                  <div style="width: 15%">司机:</div>
                  <div style="width: 15%">客户签字:</div>
@@ -452,6 +471,12 @@
<style scoped>
@media print {
  .pages {
    page-break-after: always;
  }
}
h1,h3{
  left:0;
  right:0;
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet2.vue
@@ -15,7 +15,7 @@
let remark = company.deliveryRemark
let produceList2 = ref([])
let props = defineProps({
  deliveryId:null
})
@@ -30,15 +30,19 @@
  request.post(`/delivery/getSelectDeliveryPrinting`,form.value).then((res) => {
    if(res.code==200){
      produceList.value = deepClone(res.data.data)
      delivery.value=deepClone(res.data.delivery)
      money.value=deepClone(res.data.money)
      otherMoney.value=deepClone(res.data.otherMoney)
      otherMoney.value.forEach(item => {
        if(item.DeliveryDetailOtherMoney.monery!=null){
          otherMoneys+=item.DeliveryDetailOtherMoney.monery
        }
      })
      produceList.value = deepClone(res.data)
      for(let i=0;i<produceList.value.length;i++){
        let produceList1= ({
          data:null,
          delivery:null,
        })
        produceList1.data=produceList.value[i].data
        produceList1.delivery=produceList.value[i].delivery
        produceList2.value.push(produceList1)
      }
    }else{
      ElMessage.warning(res.msg)
      router.push("/login")
@@ -95,7 +99,7 @@
<template>
  <div id="sheet">
    <table >
    <table class="pages" v-for="(itme1, index) in produceList2" :key="index" >
      <thead>
      <tr class="title-s">
        <th colspan="9">
@@ -110,16 +114,16 @@
        <th colspan="5" style="width: 40%;">
          <h3>销售发货单</h3>
        </th>
        <th colspan="2" style="width: 30%;text-align: left;">发货单号:<span>{{delivery.deliveryId}}</span></th>
        <th colspan="2" style="width: 30%;text-align: left;">发货单号:<span>{{itme1.delivery.deliveryId}}</span></th>
      </tr>
      <tr>
        <th style="text-align: left;border:none;" colspan="4">客户名称:<span>{{delivery.customerName}}</span></th>
        <th style="text-align: left;border:none;" colspan="3">项目名称:<span>{{delivery.project}}</span></th>
        <th style="text-align: left;border:none;" colspan="2">联系人:<span>{{delivery.contacts}}</span></th>
        <th style="text-align: left;border:none;" colspan="4">客户名称:<span>{{itme1.delivery.customerName}}</span></th>
        <th style="text-align: left;border:none;" colspan="3">项目名称:<span>{{itme1.delivery.project}}</span></th>
        <th style="text-align: left;border:none;" colspan="2">联系人:<span>{{itme1.delivery.contacts}}</span></th>
      </tr>
      <tr>
        <th style="text-align: left;border:none;" colspan="7">送货地址:<span>{{delivery.deliveryAddress}}</span></th>
        <th style="text-align: left;border:none;" colspan="2">联系电话:<span>{{delivery.contactNumber}}</span></th>
        <th style="text-align: left;border:none;" colspan="7">送货地址:<span>{{itme1.delivery.deliveryAddress}}</span></th>
        <th style="text-align: left;border:none;" colspan="2">联系电话:<span>{{itme1.delivery.contactNumber}}</span></th>
      </tr>
@@ -127,7 +131,7 @@
      <tr style="border-style: none">
        <td colspan="9" style="border-style: none">
          <table style="border-style: none;width: 100%;height: 100%">
            <template v-for="(item, index) in produceList" :key="index" >
            <template v-for="(item, index) in itme1.data" :key="index" >
              <thead>
              <tr v-if="index===0">
                <th style="width: 6%;">序号</th>
@@ -164,8 +168,8 @@
            </template>
            <tr class="day-in">
              <td style="font-size: 15px;" colspan="4">合计:</td>
              <td>{{delivery.quantity}}</td>
              <td>{{delivery.area}}</td>
              <td>{{itme1.delivery.quantity}}</td>
              <td>{{itme1.delivery.area}}</td>
            </tr>
@@ -181,8 +185,8 @@
            <tr class="day-in" style="border: 0;" v-if="company.showDeliveryCreator">
              <td colspan="9" style="border: 0;">
                <div style="display:flex;;text-align: left"  class="bottom">
                  <div style="width: 15%">制单员:{{ delivery.creator }}</div>
                  <div style="width: 25%">制单日期:{{ delivery.createTime }}</div>
                  <div style="width: 15%">制单员:{{ itme1.delivery.creator }}</div>
                  <div style="width: 25%">制单日期:{{ itme1.delivery.createTime }}</div>
                  <div style="width: 10%">发货员:</div>
                  <div style="width: 10%">司机:</div>
                  <div style="width: 15%">客户签字:</div>
@@ -219,8 +223,8 @@
            <tr class="day-in" style="border: 0;" v-if="!company.showDeliveryCreator">
              <td colspan="9" style="border: 0;">
                <div style="display:flex;;text-align: left"  class="bottom">
                  <div style="width: 15%">制单员:{{ delivery.creator }}</div>
                  <div style="width: 25%">制单日期:{{ delivery.createTime }}</div>
                  <div style="width: 15%">制单员:{{ itme1.delivery.creator }}</div>
                  <div style="width: 25%">制单日期:{{ itme1.delivery.createTime }}</div>
                  <div style="width: 10%">发货员:</div>
                  <div style="width: 10%">司机:</div>
                  <div style="width: 15%">客户签字:</div>
@@ -246,7 +250,12 @@
<style scoped>
@media print {
  .pages {
    page-break-after: always;
  }
}
h1,h3{
  left:0;
  right:0;
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
@@ -27,16 +27,21 @@
let sheetIndex = ref(-1)
let rowClickIndex = ref(null)
let produceList = ref([])
let flowData = ref({
  delivery: null
})
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      router.push({path: '/main/delivery/createDelivery', query: { deliveryID: row.deliveryId }})
      break
    }
    case 'printing' :{
    /*case 'printing' :{
      router.push({path: '/main/delivery/deliveryPrinting', query: { deliveryID: row.deliveryId }})
      break
    }
    }*/
    case 'delete':{
      let flowData = ref({
        deliveryId:row.deliveryId,
@@ -196,31 +201,44 @@
          break
        }
        case 'sheet1': {
          if(rowClickIndex.value===null){
            ElMessage.warning(t('searchOrder.msgList.checkOrder'))
            return
          }
          if(rowClickIndex.value.deliveryState>0){
            ElMessage.warning(t('order.printingNumber')+rowClickIndex.value.printingNumber)
          const selectRecords = $grid.getCheckboxRecords()
          if (selectRecords.length === 0) {
            if(rowClickIndex.value.deliveryState>0){
              ElMessage.warning(t('order.printingNumber')+rowClickIndex.value.printingNumber)
              let delivery=([])
              delivery.push(rowClickIndex.value)
              flowData.value.delivery=delivery
              dialogTableVisible.value = true
              sheetIndex.value=1
            }else{
              ElMessage.warning(t('order.orderNotApproved'))
            }
          }else{
            flowData.value.delivery=selectRecords
            dialogTableVisible.value = true
            sheetIndex.value=1
          }else{
            ElMessage.warning(t('order.orderNotApproved'))
          }
          break
        }
        case 'sheet2': {
          if(rowClickIndex.value===null){
            ElMessage.warning(t('searchOrder.msgList.checkOrder'))
            return
          }
          if(rowClickIndex.value.deliveryState>0){
            ElMessage.warning(t('order.printingNumber')+rowClickIndex.value.printingNumber)
          const selectRecords = $grid.getCheckboxRecords()
          if (selectRecords.length === 0) {
            if(rowClickIndex.value.deliveryState>0){
              ElMessage.warning(t('order.printingNumber')+rowClickIndex.value.printingNumber)
              let delivery=([])
              delivery.push(rowClickIndex.value)
              flowData.value.delivery=delivery
              dialogTableVisible.value = true
              sheetIndex.value=2
            }else{
              ElMessage.warning(t('order.orderNotApproved'))
            }
          }else{
            flowData.value.delivery=selectRecords
            dialogTableVisible.value = true
            sheetIndex.value=2
          }else{
            ElMessage.warning(t('order.orderNotApproved'))
          }
          break
        }
@@ -272,7 +290,7 @@
  },
  //表头参数
  columns:[
    {type:'expand',slots: { content:'content' },width: 60,fixed:"left"},
    {field: 'select',type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"},
    {title: t('basicData.operate'), width: 150, slots: { default: 'button_slot' },fixed:"left"},
    {type: 'seq', title: t('basicData.Number'), width: 80},
@@ -326,7 +344,7 @@
})
const printingNumber = ()=>{
    request.post(`/delivery/updateDeliveryPrintNumber/${rowClickIndex.value.deliveryId}`).then(res =>{
    request.post(`/delivery/updateDeliveryPrintNumber/${flowData.value.delivery[0].deliveryId}`).then(res =>{
    })
}
@@ -460,8 +478,8 @@
        <el-button v-print="printContent" @click="printingNumber"  :icon="Printer" circle />
        <el-button @click="exportFile" :icon="Download" circle />
      </template>
      <print-sheet1 id="child"  v-if="sheetIndex===1" :deliveryId="rowClickIndex.deliveryId" />
      <print-sheet2 id="child"  v-if="sheetIndex===2" :deliveryId="rowClickIndex.deliveryId" />
      <print-sheet1 id="child"  v-if="sheetIndex===1" :deliveryId="flowData.delivery" />
      <print-sheet2 id="child"  v-if="sheetIndex===2" :deliveryId="flowData.delivery" />
    </el-dialog>
  </div>
north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java
@@ -104,8 +104,8 @@
    @ApiOperation("发货订单查询接口")
    @SaCheckPermission("selectDelivery.search")
    @PostMapping("/getSelectDeliveryPrinting")
    public Result getSelectDeliveryPrinting( @RequestBody DeliveryDetail deliveryDetail) throws IllegalAccessException {
        return Result.seccess(deliveryService.getSelectDeliveryPrinting(deliveryDetail));
    public Result getSelectDeliveryPrinting( @RequestBody Map<String,Object> object) throws IllegalAccessException {
        return Result.seccess(deliveryService.getSelectDeliveryPrinting(object));
    }
    @ApiOperation("订单发货订单查询接口")
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
@@ -25,7 +25,7 @@
    Integer getSelectShippingOrderDetailPageTotal(Integer offset, Integer pageSize,OrderDetail orderDetail);
    List<DeliveryDetail> getSelectDeliveryPrinting(@Param("deliveryDetail") DeliveryDetail deliveryDetail);
    List<DeliveryDetail> getSelectDeliveryPrinting(@Param("deliveryId") String deliveryId);
    List<OrderDetail> getSelectOrderPrinting(Object productId, String orderId);
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -468,49 +468,63 @@
    }
    public Map<String, Object> getSelectDeliveryPrinting( DeliveryDetail deliveryDetail) throws IllegalAccessException {
        Map<String, Object> map = new HashMap<>();
        List <Map<String, Object>> list=new ArrayList<Map<String, Object>>();//最终结果
        List <Map<String, Object>> moneryList=new ArrayList<Map<String, Object>>();//最终结果
        List<DeliveryDetail> deliveryDetailList=deliveryDetailMapper.getSelectDeliveryPrinting(deliveryDetail);
        String orderId="";
        double otherMoney=0.0;
        for (DeliveryDetail detail : deliveryDetailList) {
            orderId=detail.getOrderDetail().getOrderId();
            Map<String, Object> itemmap = new HashMap<>();
    public List<Map<String, Object>> getSelectDeliveryPrinting(Map<String,Object> object) throws IllegalAccessException {
        List<Delivery> deliveries = JSONArray.parseArray(JSONObject.toJSONString(object.get("deliveryId")), Delivery.class);
        List <Map<String, Object>> list1=new ArrayList<Map<String, Object>>();//最终结果
        for(Delivery deliverys:deliveries){
            List<Map<String, Object>> deliveryDetailList2 = deliveryDetailMapper.getSelectDeliveryDetailPrinting(detail.getDeliveryId(),
                    detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId());
            Map<String, Object> map = new HashMap<>();
            List <Map<String, Object>> list=new ArrayList<Map<String, Object>>();//最终结果
            List <Map<String, Object>> moneryList=new ArrayList<Map<String, Object>>();//最终结果
            List<DeliveryDetail> deliveryDetailList=deliveryDetailMapper.getSelectDeliveryPrinting(deliverys.getDeliveryId());
            String orderId="";
            double otherMoney=0.0;
            for (DeliveryDetail detail : deliveryDetailList) {
                orderId=detail.getOrderDetail().getOrderId();
                Map<String, Object> itemmap = new HashMap<>();
            for (Map<String, Object> stringObjectMap : deliveryDetailList2) {
                if(stringObjectMap.get("other_columns")!=null){
                    JSONObject jsonObject = JSON.parseObject(stringObjectMap.get("other_columns").toString());
                    for(String key : jsonObject.keySet()){
                        boolean isnull = key.contains("M");
                        if(isnull) {
                            Map<String, Object> moneryItemmap = new HashMap<>();
                            Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectotherMoney(detail.getOrderDetail().getOrderId(),
                                    detail.getDeliveryId(),Integer.parseInt(stringObjectMap.get("order_number").toString()), key,Double.valueOf(jsonObject.get(key).toString()));
                            Double sss= Double.valueOf(jsonObject.get(key).toString());
                            moneryItemmap.put("DeliveryDetailOtherMoney", deliveryDetailOtherMoney);
                            moneryList.add(moneryItemmap);
                List<Map<String, Object>> deliveryDetailList2 = deliveryDetailMapper.getSelectDeliveryDetailPrinting(detail.getDeliveryId(),
                        detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId());
                for (Map<String, Object> stringObjectMap : deliveryDetailList2) {
                    if(stringObjectMap.get("other_columns")!=null){
                        JSONObject jsonObject = JSON.parseObject(stringObjectMap.get("other_columns").toString());
                        for(String key : jsonObject.keySet()){
                            boolean isnull = key.contains("M");
                            if(isnull) {
                                Map<String, Object> moneryItemmap = new HashMap<>();
                                Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectotherMoney(detail.getOrderDetail().getOrderId(),
                                        detail.getDeliveryId(),Integer.parseInt(stringObjectMap.get("order_number").toString()), key,Double.valueOf(jsonObject.get(key).toString()));
                                Double sss= Double.valueOf(jsonObject.get(key).toString());
                                moneryItemmap.put("DeliveryDetailOtherMoney", deliveryDetailOtherMoney);
                                moneryList.add(moneryItemmap);
                            }
                        }
                    }
                }
            }
            itemmap.put("DeliveryDetail", detail);
            itemmap.put("DeliveryDetailList", deliveryDetailList2);
            list.add(itemmap);
                itemmap.put("DeliveryDetail", detail);
                itemmap.put("DeliveryDetailList", deliveryDetailList2);
                list.add(itemmap);
            }
            /*Delivery delivery=deliveryMapper.getSelectShippingOrderDetailDeliveryPrinting(deliveryDetail);
            delivery.setMoney(delivery.getMoney()+otherMoney);
            map.put("data", list);
            map.put("otherMoney",moneryList);
            map.put("delivery", deliveryMapper.getSelectShippingOrderDetailDeliveryPrinting(deliveryDetail));
            map.put("money", toChinese(delivery.getMoney().toString(), false));*/
            deliverys.setMoney(deliverys.getMoney()+otherMoney);
            map.put("data", list);
            map.put("otherMoney",moneryList);
            map.put("delivery",deliverys );
            map.put("money", toChinese(deliverys.getMoney().toString(), false));
            list1.add(map);
        }
        Delivery delivery=deliveryMapper.getSelectShippingOrderDetailDeliveryPrinting(deliveryDetail);
        delivery.setMoney(delivery.getMoney()+otherMoney);
        map.put("data", list);
        map.put("otherMoney",moneryList);
        map.put("delivery", deliveryMapper.getSelectShippingOrderDetailDeliveryPrinting(deliveryDetail));
        map.put("money", toChinese(delivery.getMoney().toString(), false));
        return map;
        return list1;
    }
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
@@ -979,11 +979,9 @@
                                                            left join product pt on pt.id=od.product_id
        <where>
            <if test="deliveryDetail.deliveryId != null and deliveryDetail.deliveryId != ''">
                and dd.delivery_id like concat('%',#{deliveryDetail.deliveryId},'%')
            </if>
        </where>
                where dd.delivery_id like concat('%',#{deliveryId},'%')
        group by od.order_id,od.product_name,od.product_id
    </select>