guoyujie
1 天以前 748e47eb02e874e521500b24f5444d6dbaeda3b8
Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
1个文件已添加
28个文件已修改
656 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/components/BasicTable.vue 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/ImageSizeEditor.vue 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/pp/PrintProcessReplenish.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet2.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet4.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProgressProcessCard.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/replenish/PrintReplenishFlowCard.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/replenish/SelectReplenish.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReplenishController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ReplenishService.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderFileService.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/Report.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/BasicTable.vue
@@ -122,6 +122,8 @@
  pageTotal : 0,//总页数
  dataTotal : 0,//数据总条数
})
const isFirstLoad = ref(true);
const sumNum = (list, field) => {
  let count = 0
  list.forEach(item => {
@@ -131,9 +133,9 @@
}
//合并显示其他列
const handleDynamicColumns = (data,title) => {
const handleDynamicColumns = (data,title,orderOtherMoney) => {
  // 1. 收集所有行的otherColumns字段(去重)
  const allOtherFields = new Set();
  /*const allOtherFields = new Set();
  data.forEach(row => {
    if (!row || !row.otherColumns) return;
@@ -158,10 +160,10 @@
        allOtherFields.add(key);
      });
    }
  });
  });*/
  // 2. 生成动态子列(作为processList的children)
  const otherColumns = Array.from(allOtherFields).map(field => {
  /*const otherColumns = Array.from(allOtherFields).map(field => {
    // 尝试获取字段对应的label(优先取第一个出现的label)
    let label=field;
    title.forEach(item=>{
@@ -180,7 +182,26 @@
      }
    };
  });
  });*/
  const otherColumns = [];
  // 容错:确保orderOtherMoney是有效数组
  if (Array.isArray(orderOtherMoney) && orderOtherMoney.length > 0) {
    orderOtherMoney.forEach(item => {
      // 跳过空数据,避免无效列
      if (!item || !item.column) return;
      otherColumns.push({
        title: item.alias || item.column, // 优先用别名,无则用字段名
        field: `otherColumnsJson.${item.column}`,
        width: 120,
        align: 'center',
        // 格式化取值:兼容解析后的JSON结构
        formatter: ({ row }) => {
          return row.otherColumnsJson?.[item.column] || '';
        }
      });
    });
  }
  // 3. 定义父级列processList,包含动态子列
  const processList = {
@@ -247,9 +268,11 @@
        orderInfo.reportFormDate = res.data.selectDate
        //订单明细报表
        if (props.childrenData.url === '/order/getOrderReport') {
        if (isFirstLoad.value && props.childrenData.url === '/order/getOrderReport') {
          const dataList = res.data.data || [];
          handleDynamicColumns(dataList,res.data.title)
          const orderOtherMoney = res.data.orderOtherMoney[0] || [];
          handleDynamicColumns(dataList,res.data.title,orderOtherMoney)
          isFirstLoad.value = false; // 首次加载后置为false
        }
      }
    })
north-glass-erp/northglass-erp/src/components/ImageSizeEditor.vue
New file
@@ -0,0 +1,221 @@
<!-- ImageSizeEditor.vue -->
<template>
  <div class="img-grid">
    <div
        v-for="(img, index) in images"
        :key="getKey(img, index)"
        class="img-box"
        :style="getImgBoxStyle(getKey(img, index))"
        @click="openSizeDialog(img, index)"
    >
      <el-image
          :src="img.imageBase64"
          :fit="fit"
          style="width: 100%; height: 100%; display: block;"
      />
    </div>
  </div>
  <el-dialog
      v-model="dialogVisible"
      :title="dialogTitle"
      width="460px"
      append-to-body
  >
    <div class="form-row">
      <el-input-number
          v-model="form.w"
          :min="minWidth"
          :max="maxWidth"
          controls-position="right"
      />
      <span class="mul">×</span>
      <el-input-number
          v-model="form.h"
          :min="minHeight"
          :max="maxHeight"
          controls-position="right"
      />
    </div>
    <div class="ops-row">
<!--      <el-switch v-model="applyToAll" active-text="应用到全部图片" />-->
      <div v-if="showHint" class="hint">
        当前:{{ form.w }} × {{ form.h }} px
      </div>
    </div>
    <template #footer>
      <el-button @click="dialogVisible = false">取消</el-button>
      <!-- ✅ 一键全图统一尺寸:不关弹窗,立即应用 -->
      <el-button @click="applyAllNow" :disabled="!canApply">
       尺寸相同
      </el-button>
      <!-- ✅ 确定:如果开关打开,则同样会应用全部,否则只应用当前 -->
      <el-button type="primary" @click="confirmSize" :disabled="!canApply">
        确定
      </el-button>
    </template>
  </el-dialog>
</template>
<script setup>
import { computed, reactive, ref, unref } from 'vue'
const props = defineProps({
  images: { type: Array, default: () => [] },
  keyField: { type: String, default: 'orderNumber' }, // 你数据 id=null,推荐 orderNumber
  srcField: { type: String, default: 'imageBase64' },
  sizeMap: { type: Object, default: () => ({}) },
  defaultWidth: { type: Number, default: 600 },
  defaultHeight: { type: Number, default: 400 },
  minWidth: { type: Number, default: 50 },
  maxWidth: { type: Number, default: 3000 },
  minHeight: { type: Number, default: 50 },
  maxHeight: { type: Number, default: 3000 },
  fit: { type: String, default: 'contain' },
  marginX: { type: String, default: '30px' },
  dialogTitle: { type: String, default: '设置图片尺寸' },
  showHint: { type: Boolean, default: true }
})
const emit = defineEmits(['update:sizeMap', 'change', 'changeAll'])
const sizeStore = computed({
  get: () => props.sizeMap || {},
  set: (val) => emit('update:sizeMap', val)
})
const dialogVisible = ref(false)
const activeKey = ref(null)
const form = reactive({
  w: props.defaultWidth,
  h: props.defaultHeight
})
const applyToAll = ref(false)
const canApply = computed(() => {
  const w = Number(form.w)
  const h = Number(form.h)
  return w > 0 && h > 0
})
const getKey = (img, index) => {
  const k = img?.[props.keyField]
  return (k !== undefined && k !== null && k !== '') ? String(k) : String(index)
}
const getSrc = (img) => img?.[props.srcField]
const getSize = (key) => {
  const s = unref(sizeStore.value?.[key])
  if (s && s.w && s.h) return { w: Number(s.w), h: Number(s.h) }
  return { w: props.defaultWidth, h: props.defaultHeight }
}
const getImgBoxStyle = (key) => {
  const { w, h } = getSize(key)
  return {
    width: `${w}px`,
    height: `${h}px`,
    marginLeft: props.marginX,
    marginRight: props.marginX
  }
}
const openSizeDialog = (img, index) => {
  const key = getKey(img, index)
  activeKey.value = key
  const cur = getSize(key)
  form.w = cur.w
  form.h = cur.h
  applyToAll.value = false
  dialogVisible.value = true
}
// ✅ 应用到当前一张
const applyOne = (key, w, h) => {
  sizeStore.value = { ...sizeStore.value, [key]: { w, h } }
  emit('change', key, { w, h })
}
// ✅ 一键应用到全部
const applyAll = (w, h) => {
  const next = { ...sizeStore.value }
  props.images.forEach((img, idx) => {
    const k = getKey(img, idx)
    next[k] = { w, h }
  })
  sizeStore.value = next
  emit('changeAll', { w, h })
}
// ✅ footer 按钮:立即统一全图尺寸(不关弹窗)
const applyAllNow = () => {
  if (!canApply.value) return
  const w = Number(form.w)
  const h = Number(form.h)
  applyAll(w, h)
}
// ✅ 确定:如果开关打开 => 全部;否则只改当前
const confirmSize = () => {
  if (!canApply.value) return
  const w = Number(form.w)
  const h = Number(form.h)
  if (applyToAll.value) {
    applyAll(w, h)
    dialogVisible.value = false
    return
  }
  const key = activeKey.value
  if (key === null || key === undefined) return
  applyOne(key, w, h)
  dialogVisible.value = false
}
</script>
<style scoped>
.img-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.form-row {
  display: flex;
  gap: 12px;
  align-items: center;
}
.mul {
  line-height: 32px;
}
.ops-row{
  margin-top: 12px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.hint {
  font-size: 12px;
  opacity: 0.75;
}
</style>
north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue
@@ -11,6 +11,7 @@
import companyInfo from "@/stores/sd/companyInfo";
import userInfo from "@/stores/userInfo"
import {add} from '@/utils/decimal'
import ImageSizeEditor from '@/components/ImageSizeEditor.vue'
//语言获取
const company = companyInfo()
const {t} = useI18n()
@@ -19,6 +20,7 @@
let list = ref()
const details = ref([])
const user=userInfo()
const imgSizeMap = ref({})
let totalQuantity = 0;  // 用于记录总数量
let totalArea = 0;      // 用于记录总面积
@@ -319,7 +321,7 @@
  <!--  <el-button id="printButton" @click="printFlowCard();">{{ $t('basicData.print') }}</el-button>-->
  <div id="printFlowCard">
<div id="contentDiv" v-for="(item,id) in produceList" :key="id">
  <table  id="contentTable"  style="border-bottom: none">
  <table  id="contentTable"  style="border-bottom: none;margin-bottom: 20px">
    <thead>
    <tr v-for="(itemFlow,index) in item.detail" :key="index">
      <td  colspan="31">
@@ -506,12 +508,20 @@
      </tr>
      </tfoot>
    </table>
  <el-image
      v-for="(img, index) in getPicturesByDetailList(item.detailList)"
      :key="index"
      :src="img.imageBase64"
      fit="contain"
      style="max-width: 100%;"
<!--  <el-image-->
<!--      v-for="(img, index) in getPicturesByDetailList(item.detailList)"-->
<!--      :key="index"-->
<!--      :src="img.imageBase64"-->
<!--      fit="contain"-->
<!--      style="max-width: 100%;margin: 50px"-->
<!--  />-->
  <ImageSizeEditor
      :images="getPicturesByDetailList(item.detailList)"
      v-model:sizeMap="imgSizeMap"
      key-field="orderNumber"
      src-field="imageBase64"
      :default-width="300"
      :default-height="300"
  />
  </div>
  </div>
north-glass-erp/northglass-erp/src/components/pp/PrintProcessReplenish.vue
@@ -110,30 +110,41 @@
          }
          // 使用一个对象来存储合并后的结果
          const mergedData = produceList.value.reduce((acc, item) => {
            const processId = item.detail[0].process_id;
            // detail 为空直接跳过
            const firstDetail = item?.detail?.[0]
            if (!firstDetail) return acc
            // 如果该 process_id 尚未在 acc 中,初始化其数组
            if (!acc[processId]) {
              acc[processId] = {
            const processId = firstDetail.process_id
            const technologyNumber = firstDetail.technologyNumber
            const key = company.printReplenishMerge
                ? processId
                : `${processId}_${technologyNumber}`
            // 初始化分组
            if (!acc[key]) {
              acc[key] = {
                processId,
                technologyNumber,
                processList: item.processList,
                detailList: [],
                detail: item.detail
              };
              }
            }
            // 合并 detailList
            acc[processId].detailList = acc[processId].detailList.concat(item.detailList);
            //  合并 detailList
            if (Array.isArray(item.detailList) && item.detailList.length) {
              acc[key].detailList.push(...item.detailList)
            }
            return acc;
          }, {});
            return acc
          }, {})
          // 将合并后的对象转换回数组
          if (company.printReplenishMerge){
          //if (company.printReplenishMerge){
            produceList.value = Object.values(mergedData);
          }
          //}
           flowCardCount=produceList.value.length
          handleSummary()
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue
@@ -204,12 +204,13 @@
                <th style="width: 6%;">序号</th>
                <th style="width: 10%;">楼层编号</th>
                <th style="width: 7%;">箱号</th>
                <th style="width: 17%;" colspan="1">宽X高</th>
                <th style="width: 10%;">数量</th>
                <th style="width: 15%;" colspan="1">宽X高</th>
                <th style="width: 8%;">数量</th>
                <th style="width: 10%;">面积</th>
                <th style="width: 10%;">单价</th>
                <th style="width: 8%;">单价</th>
                <th style="width: 12%;">金额</th>
                <th style="width: 18%;" colspan="2">加工要求</th>
                <th style="width: 12%;" >加工要求</th>
                <th style="width: 12%;">备注</th>
              </tr>
@@ -236,7 +237,8 @@
                <td>{{items.area}}</td>
                <td>{{items.price}}</td>
                <td>{{items.money}}</td>
                <td colspan="2">{{items.processingNote}}</td>
                <td>{{items.processingNote}}</td>
                <td>{{items.remarks}}</td>
              </tr>
              <tr class="day-in" >
                <td style="font-size: 15px;" colspan="4">小计:</td>
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet2.vue
@@ -151,7 +151,8 @@
                <th style="width: 20%;" colspan="2">宽X高</th>
                <th style="width: 10%;">数量</th>
                <th style="width: 10%;">面积</th>
                <th style="width: 32%;" colspan="3">加工要求</th>
                <th style="width: 22%;" colspan="2">加工要求</th>
                <th style="width: 12%;">备注</th>
              </tr>
@@ -176,7 +177,8 @@
                </td>
                <td>{{items.quantity}}</td>
                <td>{{items.area}}</td>
                <td colspan="3">{{items.processingNote}}</td>
                <td colspan="2">{{items.processingNote}}</td>
                <td>{{items.remarks}}</td>
              </tr>
              <tr class="day-in" >
                <td style="font-size: 15px;" colspan="5">小计:</td>
north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue
@@ -103,6 +103,7 @@
const columns = [
  {field: 'order_number',fixed:"left", width: 90,title: t('order.OrderNum'),showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  // {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
  {field: 'building_number', width: 150, title: t('order.buildingNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  {field: 'product_name', width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  {field: 'glass_child',width: 130, title: t('reportingWorks.glassChild') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  {field: 'order_type', width: 120,title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
@@ -120,7 +121,7 @@
  {field: 'StorageArea',slots: { default: 'show'},width: 120, title: t('report.StorageArea')},
  {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')},
]
let column = ['order_number','product_name','order_type','quantity','grossArea','Storage','StorageArea']
let column = ['order_number','building_number','product_name','order_type','quantity','grossArea','Storage','StorageArea']
let orderType = ref(1)
onMounted(()=>{
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet4.vue
@@ -8,14 +8,17 @@
import {ElMessage} from "element-plus";
import useUserInfoStore from "@/stores/userInfo";
import {Bottom, Burger, Food} from "@element-plus/icons-vue";
import ImageSizeEditor from '@/components/ImageSizeEditor.vue'
const company = companyInfo()
const userStore = useUserInfoStore()
const username = userStore.user.userName
let dialogVisible = ref(false)
const imgSizeMap = ref({})
let props = defineProps({
  orderId:null,
  dataList:null,
})
let productId=ref({
@@ -36,6 +39,12 @@
  perimeter: 0,
  weight:0
})
const picture = ref([])
const dataFile = ref({
  printList: []
})
dataFile.value.printList = JSON.parse(props.dataList)
const getData = () => {
  request.get(`/order/printOrderProductDetail/${props.orderId}/${selectedValues.value}`).then(res => {
    data.value= res.data
@@ -53,6 +62,11 @@
    grossNum.value.perimeter = parseFloat(grossNum.value.perimeter.toFixed(3))
    grossNum.value.weight = parseFloat(grossNum.value.weight.toFixed(2))
  })
  //订单序号dwg图片查询
  request.post("/orderFile/getOrderFilePicture", dataFile.value.printList).then((res) => {
    picture.value = res.data
  })
}
@@ -139,6 +153,13 @@
defineExpose({
  printSheet
});
// 原始图片数组 picture
const pictureMap = computed(() => {
  return picture.value
})
</script>
@@ -218,7 +239,7 @@
                <td style="font-size: 20px;font-weight: bold;">{{items.quantity}}</td>
                <td style="font-size: 20px;font-weight: bold;">{{items.perimeter}}</td>
                <td style="font-size: 20px;font-weight: bold;">{{items.grossArea.toFixed(2)}}</td>
                <td colspan="2">{{items.processingNote}}
                <td colspan="2" style="text-align: left;border:none;font-weight: bold;font-size: 17px;">{{items.processingNote}}
                  {{items.remarks==null?'':'/'}}
                  {{items.remarks}}</td>
              </tr>
@@ -291,7 +312,14 @@
        </el-option>
      </el-select>
    </el-dialog>
    <ImageSizeEditor
        :images="pictureMap"
        v-model:sizeMap="imgSizeMap"
        key-field="orderNumber"
        src-field="imageBase64"
        :default-width="300"
        :default-height="300"
    />
  </div>
north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js
@@ -15,6 +15,7 @@
        qualityInspectionDate:ref(["",""]),
        brokenDate:ref(["",""]),
        yieldDate:ref(["",""]),
        replenishDate:ref(["",""]),
        searchOrderListFilter:ref([]),//订单首页筛选]
        searchOrderFilter:{
            list:ref([]),
@@ -90,6 +91,7 @@
            this.qualityInspectionDate=["",""]
            this.brokenDate=["",""]
            this.yieldDate=["",""]
            this.replenishDate=["",""]
            this.searchOrderFilter={
                list:[],
                data:{}
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue
@@ -426,7 +426,6 @@
          printRow.value.flashback = flashback.value
          printRow.value.landingSequence=landingSequence.value
          printRow.value.compound = compound.value
          console.log(printRow.value)
          // router.push({path: '/main/processCard/printProcess', query: {printList: JSON.stringify(selectRecords),printMerge:printMergeVal}})
          if(company.companyName=='常州市吉利玻璃有限公司'){
            dialogTableVisibleStraight.value = true
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProgressProcessCard.vue
@@ -325,6 +325,9 @@
    {field: 'process_id',width: 150, title: t('processCard.processId'),filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged},
    {field: 'technology_number', width: 110,title: t('processCard.technologyNumber'),showOverflow:"ellipsis",filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged},
    {field: 'print_status', width: 120,title: t('processCard.numberTimesProcessCardPrinted')},
    {field: 'print_number', width: 110,title: t('processCard.numberLabelPrintingOperations')},
    {field: 'order_number', width: 100,title: t('order.OrderNum'),showOverflow:"ellipsis",filters: [{data: ''}],
@@ -333,10 +336,6 @@
    // {field: 'glassNumber', width: 110,title: t('reportingWorks.glassNumber'),showOverflow:"ellipsis",filters: [{data: ''}],
    //   slots: {filter: 'num1_filter'},
    //   filterMethod: filterChanged},
    {field: 'technology_number', width: 110,title: t('processCard.technologyNumber'),showOverflow:"ellipsis",filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged},
    {field: 'quantity', width: 90,title: t('order.quantity')},
    {field: 'grossArea', width: 90,title: t('order.area')},
    {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')},
north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue
@@ -28,7 +28,7 @@
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/processCard/productionScheduling' }">{{$t('processCard.scheduling')}}
        </el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/processCard/selectPrintFlowCard' }" >{{ $t('basicData.print') }}</el-breadcrumb-item>
<!--        <el-breadcrumb-item @click="changeRouter(5)" :class="indexFlag===5?'indexTag':''" :to="{ path: '/main/processCard/printProgressProcessCard' }" >{{ $t('processCard.printProgressProcessCard') }}</el-breadcrumb-item>-->
        <el-breadcrumb-item @click="changeRouter(5)" :class="indexFlag===5?'indexTag':''" :to="{ path: '/main/processCard/printProgressProcessCard' }" >{{ $t('processCard.printProgressProcessCard') }}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(6)" :class="indexFlag===6?'indexTag':''" :to="{ path: '/main/processCard/selectPrintProject' }" >{{$t('processCard.engineeringPrinting')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/processCard/selectPrintFlowCard' }" style="display: none">{{ $t('basicData.print') }}</el-breadcrumb-item>
      </el-breadcrumb>
north-glass-erp/northglass-erp/src/views/pp/replenish/PrintReplenishFlowCard.vue
@@ -24,7 +24,9 @@
import PrintCustomLabelProject from "@/components/pp/PrintCustomLabelProject.vue";
import PrintProcessConsolidated from '@/components/pp/PrintConsolidatedReplenish.vue'
import {createTemplate} from "@/hook/createTemplateTag";
import useOrderInfoStore from "@/stores/sd/order/orderInfo";
const company = companyInfo()
const orderInfo = useOrderInfoStore()
//语言获取
const {t} = useI18n()
let router = useRouter()
@@ -211,11 +213,12 @@
let startTime = form.date1[0]
let endTime = form.date1[1]
// 第一次加载查询
request.post(`/Replenish/selectPrint/${startTime}/${endTime}`, filterData.value).then((res) => {
request.post(`/Replenish/selectPrint/${orderInfo.replenishDate}`, filterData.value).then((res) => {
  if (res.code == 200) {
    produceList = produceList.value.concat(deepClone(res.data.data))
    titleSelectJson.value.dataType = res.data.type
    orderInfo.replenishDate = res.data.selectDate
    xGrid.value.reloadData(produceList)
    gridOptions.loading = false
  } else {
@@ -230,11 +233,12 @@
  let endTime = form.date1[1]
  gridOptions.loading=true
// 第一次加载查询
  request.post(`/Replenish/selectPrint/${startTime}/${endTime}`, filterData.value).then((res) => {
  request.post(`/Replenish/selectPrint/${orderInfo.replenishDate}`, filterData.value).then((res) => {
    if (res.code == 200) {
      xGrid.value.loadData(res.data.data)
      orderInfo.replenishDate = res.data.selectDate
      titleSelectJson.value.dataType = res.data.type
      gridOptions.loading = false
    } else {
@@ -773,7 +777,8 @@
  <div  style="width: 100%;height: 100%">
    <div class="head">
      <el-date-picker
          v-model="form.date1"
          v-model="orderInfo.replenishDate"
          :default-time="defaultTime"
          :end-placeholder="$t('basicData.endDate')"
          :start-placeholder="$t('basicData.startDate')"
          format="YYYY/MM/DD"
north-glass-erp/northglass-erp/src/views/pp/replenish/SelectReplenish.vue
@@ -3,17 +3,18 @@
import {reactive, ref} from "vue";
import {useRouter} from 'vue-router'
import request from "@/utils/request";
import {ElMessage} from "element-plus";
import {ElDatePicker, ElMessage} from "element-plus";
import deepClone from "@/utils/deepClone";
import {Search} from "@element-plus/icons-vue";
import useUserInfoStore from "@/stores/userInfo";
import { useI18n } from 'vue-i18n'
import footSum from "@/hook/footSum";
import useOrderInfoStore from "@/stores/sd/order/orderInfo";
//语言获取
const { t } = useI18n()
const orderInfo = useOrderInfoStore()
const userStore = useUserInfoStore()
const username = userStore.user.userName
const userid = userStore.user.userId
@@ -52,13 +53,13 @@
})
//第一次调用
request.post(`/Replenish/SelectReplenish/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
request.post(`/Replenish/SelectReplenish/1/${total.pageSize}/${orderInfo.replenishDate}`,filterData.value).then((res) => {
  if(res.code==200){
    total.dataTotal = res.data.total.total*1
    total.pageTotal= res.data.total.pageTotal
    selectDate.value = res.data.selectDate
    orderInfo.replenishDate = res.data.selectDate
    pageNum.value=1
    produceList = deepClone(res.data.data)
@@ -88,13 +89,13 @@
  }else{
    filterData.value[column.property] = value
  }
  request.post(`/Replenish/SelectReplenish/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
  request.post(`/Replenish/SelectReplenish/1/${total.pageSize}/${orderInfo.replenishDate}`,filterData.value).then((res) => {
    if(res.code==200){
      total.dataTotal = res.data.total.total*1
      total.pageTotal= res.data.total.pageTotal
      selectDate.value = res.data.selectDate
      orderInfo.replenishDate = res.data.selectDate
      pageNum.value=1
      produceList = deepClone(res.data.data)
@@ -323,13 +324,13 @@
const selectOrderList = ()=>{
  gridOptions.loading = true
  request.post(`/Replenish/SelectReplenish/${pageNum.value}/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
  request.post(`/Replenish/SelectReplenish/${pageNum.value}/${total.pageSize}/${orderInfo.replenishDate}`,filterData.value).then((res) => {
    if(res.code==200){
      if (res.data.total!=null){
        total.dataTotal = res.data.total.total*1
        total.pageTotal= res.data.total.pageTotal
      }
      selectDate.value = res.data.selectDate
      orderInfo.replenishDate = res.data.selectDate
      produceList = deepClone(res.data.data)
      xGrid.value.loadData(produceList)
@@ -419,11 +420,12 @@
  <div  style="width: 100%;height: 100%">
    <div class="head">
      <el-date-picker
          v-model="selectDate"
          type="daterange"
          :start-placeholder="$t('basicData.startDate')"
          v-model="orderInfo.replenishDate"
          :default-time="defaultTime"
          :end-placeholder="$t('basicData.endDate')"
          format="YYYY-MM-DD"
          :start-placeholder="$t('basicData.startDate')"
          format="YYYY/MM/DD"
          type="daterange"
          value-format="YYYY-MM-DD"
      />
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -224,7 +224,7 @@
        //禁用按钮
        gridOptions.toolbarConfig.buttons[2].disabled  = true
        gridOptions.toolbarConfig.buttons[3].disabled = true
        //gridOptions.toolbarConfig.buttons[4].disabled = false
        //gridOptions.toolbarConfig.buttons[4].disabled = true
        //显示复选框
        xGrid.value.showColumn("select")
        gridOptions.loading=false
@@ -390,7 +390,7 @@
      {'code': 'addToExamine', 'name': t('reportingWorks.saveAndReview'),status: 'primary',icon: 'vxe-icon-save'},
      {'code': 'toExamine', 'name': t('basicData.review'),status: 'primary'},
      {'code': 'CounterExamination', 'name': t('basicData.cancelReview'),status: 'primary'},
      //{'code': 'addOtherOrders','name': t('delivery.orderAdd'),'status': 'primary'}
      //{'code': 'addOtherOrders','name': t('delivery.orderAdd'),status: 'primary'}
      //{'code': 'glassShelf', 'name': t('finishedGlassShelf.finishedGlassShelfEmit'),status: 'primary'}
    ],
    /*import: false,
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -57,6 +57,8 @@
const orderTypeState = ref(0)
let deliveryCount = ref(0)
// 定义表头上传数据
const titleUploadData = ref({
  project:'',
@@ -331,7 +333,29 @@
        }
        case 'updateMoney': {
          $grid.clearEdit()
          updateMoney()
          deliveryCount.value=0
          if(deliveryCount.value>0){
            ElMessageBox.confirm("订单已存在未审核的发货单,是否修改未审核发货单的单价并重新计算金额",
                t('order.msg.warning'),
                {
                  confirmButtonText: t('basicData.confirmButtonText'),
                  cancelButtonText: t('basicData.cancelButtonText'),
                  distinguishCancelAndClose: true,
                  type: 'warning',
                }
            ).then(()=>{
              updateMoney(1)
            }).catch((action)=>{
              if (action === 'cancel') {
                updateMoney(2)
              } else if (action === 'close') {
              }
            })
          }else{
            updateMoney(2)
          }
          break
        }
        case 'Craft': {
@@ -966,6 +990,7 @@
  request.post(`/order/getOrderById/${str}`).then((res) => {
    if(res.code==200){
      titleUploadData.value = res.data.order
      deliveryCount.value = res.data.deliveryCount
      const customer = titleSelectJson.value.customer.filter(item => item.id === titleUploadData.value.customerId)
      projects.value = customer[0].projectList
      newOrderId.value=titleUploadData.value.orderId
@@ -1292,13 +1317,14 @@
}
//更新金额重置
const updateMoney = () => {
const updateMoney = (type) => {
  titleUploadData.value.creatorId=userStore.user.userId
  titleUploadData.value.creator=userStore.user.userName
  const updateData = {
    order: titleUploadData.value,
    detail: xGrid.value.getTableData().fullData,
    otherMoney:otherMoney.value
    otherMoney:otherMoney.value,
    type:type
  }
  request.post(`/order/updateOrderMoney`,updateData).then(res => {
    if (res.code == 200){
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
@@ -46,7 +46,9 @@
    dataTotal : 0,
    pageSize : 50
  })
let printRow = ref({
  list: null,
})
  const xGrid = ref()
  const gridOptions = reactive({
@@ -255,6 +257,9 @@
              return
            }
            ElMessage.warning(t('order.printingNumber')+rowClickIndex.value.printingNumber)
            let selectRecords = ref(null)
            selectRecords=rowClickIndex.value
            printRow.value.list = JSON.stringify([selectRecords])
            dialogTableVisible.value = true
            sheetIndex.value=4
            if(rowClickIndex.value.processReview===2 && rowClickIndex.value.orderReview===0){
@@ -792,7 +797,7 @@
      <print-sheet1 id="child"  v-if="sheetIndex===1" :orderId="rowClickIndex.orderId" />
      <print-sheet2 id="child" v-else-if="sheetIndex===2" :orderId="rowClickIndex.orderId" />
      <print-sheet3 id="child" v-else-if="sheetIndex===3" :orderId="rowClickIndex.orderId" />
      <print-sheet4 id="child" v-else-if="sheetIndex===4" :orderId="rowClickIndex.orderId" />
      <print-sheet4 id="child" v-else-if="sheetIndex===4" :orderId="rowClickIndex.orderId" :dataList="printRow.list"/>
      <print-sheet5 id="child" v-else-if="sheetIndex===5" :orderId="rowClickIndex.orderId" />
    </el-dialog>
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReplenishController.java
@@ -68,12 +68,11 @@
    @ApiOperation("补片流程卡明细查询接口")
    @SaCheckPermission("printReplenishFlowCard.search")
    @PostMapping("/selectPrint/{selectTime1}/{selectTime2}")
    @PostMapping("/selectPrint/{selectDate}")
    public Result selectPrint(
            @PathVariable Date selectTime1,
            @PathVariable Date selectTime2,
            @PathVariable List<String> selectDate,
            @RequestBody FlowCard flowCard) {
        return Result.success(replenishService.selectPrintSv(selectTime1,selectTime2, flowCard));
        return Result.success(replenishService.selectPrintSv(selectDate, flowCard));
    }
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
@@ -120,7 +120,7 @@
    Integer getPrintLabelCount(String processId, String technologyNumber);
    List<Map<String, String>> selectReplenishPrintMp(Date selectTime1, Date selectTime2, FlowCard flowCard);
    List<Map<String, String>> selectReplenishPrintMp(String selectTime1, String selectTime2, FlowCard flowCard);
    List<Map<String, Object>> getRepairPrintCustomData(String processId, String technologyNumber, String reportingWorkId, Integer orderNumber);
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
@@ -100,4 +100,13 @@
    OrderDetail selectOrderDetailDeliveryCount(@Param("orderDetail") OrderDetail orderDetail);
    List<DeliveryDetail> getDeliverDetailOrderNumber(@Param("orderId") String orderId,
                                         @Param("orderNumber") Integer orderNumber,@Param("deliveryId") String deliveryId);
    List<Delivery> getDeliverOrderNumber(@Param("orderId") String orderId,
                                                     @Param("orderNumber") Integer orderNumber);
    Boolean updateDeliveryDetailmonye(@Param("price") Double price,@Param("deliveryDetail") DeliveryDetail deliveryDetail);
    Boolean updateDeliverymonye(@Param("deliveryId") String deliveryId,@Param("money") Double money);
}
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
@@ -71,4 +71,6 @@
    List<Map<String,Object>> selectProcessAttributeConfigOne();
    List<Map<String,Object>> selectProcessAttributeConfigTow(String belong);
    Integer selectDeliveryStateConut(String orderId);
}
north-glass-erp/src/main/java/com/example/erp/service/pp/ReplenishService.java
@@ -97,9 +97,9 @@
        Integer offset = (pageNum - 1) * pageSize;
        // 默认时间范围:过去15天
        // 默认时间范围:过去7天
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(15).toString();
        String startDate = LocalDate.now().minusDays(7).toString();
        // 用户自定义时间段
        if (selectDate != null && selectDate.size() == 2) {
@@ -270,9 +270,27 @@
        return oddNumbers;
    }
    public Object selectPrintSv(java.sql.Date selectTime1, java.sql.Date selectTime2, FlowCard flowCard) {
    public Object selectPrintSv(List<String> selectDate, FlowCard flowCard) {
        Map<String, Object> map = new HashMap<>();
        map.put("data", flowCardMapper.selectReplenishPrintMp(selectTime1,selectTime2,flowCard));
        // 默认时间范围:过去7天
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(7).toString();
        // 用户自定义时间段
        if (selectDate != null && selectDate.size() == 2) {
            if (!selectDate.get(0).isEmpty()) {
                startDate = selectDate.get(0);
            }
            if (!selectDate.get(1).isEmpty()) {
                endDate = selectDate.get(1);
            }
        }
        // 返回时间段
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate", list);
        map.put("data", flowCardMapper.selectReplenishPrintMp(startDate,endDate,flowCard));
        map.put("type", flowCardMapper.selectType());
        return map;
    }
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
@@ -213,7 +213,7 @@
            //判断夹胶和夹胶后工序
            //Objects.equals(basicData.getNickname(), "stepA") || Objects.equals(basicData.getNickname(), "stepC")
            if(Objects.equals(basicData.getNickname(), "stepA") || Objects.equals(basicData.getNickname(), "stepC")){
                clos.put(uniqueList.get(i).get("process"), 14+i);
                clos.put(uniqueList.get(i).get("process"), 15+i);
            }
            //判断中空和中空后工序
            //Objects.equals(basicData.getNickname(), "stepB") || Objects.equals(basicData.getNickname(), "stepD")
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -1015,4 +1015,51 @@
        map.put("totalSum",totalSum);
        return map;
    }
    public boolean updateDeliveryMoney(OrderDetail orderDetail,Order order) {
        List<Delivery> deliveryList=deliveryDetailMapper.getDeliverOrderNumber(orderDetail.getOrderId(),orderDetail.getOrderNumber());
        for (Delivery delivery : deliveryList) {
            if(delivery.getDeliveryState()==0){
                List<DeliveryDetail> deliveryDetailList=deliveryDetailMapper.getDeliverDetailOrderNumber(orderDetail.getOrderId(),orderDetail.getOrderNumber(),delivery.getDeliveryId());
                for (DeliveryDetail deliveryDetail : deliveryDetailList) {
                    deliveryDetail = updateOrderMoneyComputeds(deliveryDetail,orderDetail,order.getCalculateType());
                    deliveryDetailMapper.updateDeliveryDetailmonye(orderDetail.getPrice(),deliveryDetail);
                }
                BigDecimal money = new BigDecimal("0");
                List<DeliveryDetail> deliveryDetailListNew=deliveryDetailMapper.getIsNotDeliveryDetail(delivery.getDeliveryId());
                for (DeliveryDetail deliveryDetail : deliveryDetailListNew) {
                    BigDecimal getMoney= BigDecimal.valueOf(deliveryDetail.getMoney());
                    money=money.add(getMoney);
                }
                deliveryDetailMapper.updateDeliverymonye(delivery.getDeliveryId(), (double) Math.round(money.doubleValue()));
            }
        }
        return true;
    }
    private DeliveryDetail updateOrderMoneyComputeds(DeliveryDetail deliveryDetail,OrderDetail orderDetail, Integer calculateType) {
        BigDecimal getPrice= BigDecimal.valueOf(orderDetail.getPrice());
        BigDecimal getQuantity= BigDecimal.valueOf(deliveryDetail.getQuantity());
        BigDecimal getComputeGrossArea= BigDecimal.valueOf(deliveryDetail.getArea());
        BigDecimal getComputeArea= BigDecimal.valueOf(orderDetail.getComputeArea());
        BigDecimal getWidth= BigDecimal.valueOf(orderDetail.getWidth());
        BigDecimal getHeight= BigDecimal.valueOf(orderDetail.getHeight());
        if (calculateType == 3) {
            deliveryDetail.setMoney(getPrice.multiply(getQuantity).setScale(2, RoundingMode.HALF_UP).doubleValue());
        }else if (calculateType == 4) {
            if(Objects.equals(orderDetail.getArea(), orderDetail.getComputeArea())&&Objects.equals(orderDetail.getGrossArea(), orderDetail.getComputeGrossArea())){
                deliveryDetail.setMoney(getWidth.multiply(getHeight).multiply(getQuantity).multiply(getPrice).
                        divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue());
            }else{
                deliveryDetail.setMoney(getPrice.multiply(getComputeGrossArea).setScale(2, RoundingMode.HALF_UP).doubleValue());
            }
        }else if (calculateType == 1){
            deliveryDetail.setMoney(getPrice.multiply(getComputeArea).multiply(getQuantity).setScale(2, RoundingMode.HALF_UP).doubleValue());
        }else{
            deliveryDetail.setMoney(getPrice.multiply(getComputeGrossArea).setScale(2, RoundingMode.HALF_UP).doubleValue());
        }
        return deliveryDetail;
    }
}
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderFileService.java
@@ -33,20 +33,34 @@
        result = orderDetails.stream()
                .collect(Collectors.collectingAndThen(
                        Collectors.toMap(
                                map -> map.get("order_id"),
                                map -> {
                                    Object v = map.get("order_id");
                                    if (v == null) {
                                        v = map.get("orderId");
                                    }
                                    return String.valueOf(v);
                                },
                                map -> map,
                                (existing, replacement) -> existing // 保留第一个出现的
                                (existing, replacement) -> existing // 保留第一个
                        ),
                        map -> new ArrayList<>(map.values())
                        m -> new ArrayList<>(m.values())
                ));
        //循环获取图片
        List<OrderFile> orderFiles = new ArrayList<>();
        for (Map<String,Object> obj : result) {
            List<OrderFile> orderFile = orderFileMapper.selectList(new QueryWrapper<OrderFile>()
                    .select("order_id, order_number, image_base64")
                    .eq("order_id", obj.get("order_id"))
        for (Map<String, Object> obj : result) {
            Object orderId = obj.get("order_id");
            if (orderId == null) {
                orderId = obj.get("orderId");
            }
            List<OrderFile> orderFile = orderFileMapper.selectList(
                    new QueryWrapper<OrderFile>()
                            .select("order_id, order_number, image_base64")
                            .eq("order_id", orderId)
            );
            if (orderFile != null){
            if (orderFile != null && !orderFile.isEmpty()) {
                orderFiles.addAll(orderFile);
            }
        }
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -54,7 +54,9 @@
    private final BasicOtherMoneyMapper basicOtherMoneyMapper;
    private final OrderProcessDetailMapper orderProcessDetailMapper;
    public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService, OrderOtherMoneyMapper orderOtherMoneyMapper, ProductMapper productMapper, LogService logService, WorkOrderMapper workOrderMapper, FlowCardMapper flowCardMapper, BasicOtherMoneyMapper basicOtherMoneyMapper) {
    private final DeliveryService deliveryService;
    public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService, OrderOtherMoneyMapper orderOtherMoneyMapper, ProductMapper productMapper, LogService logService, WorkOrderMapper workOrderMapper, FlowCardMapper flowCardMapper, BasicOtherMoneyMapper basicOtherMoneyMapper,DeliveryService deliveryService) {
        this.orderMapper = orderMapper;
        this.orderDetailMapper = orderDetailMapper;
        this.orderGlassDetailMapper = orderGlassDetailMapper;
@@ -66,6 +68,7 @@
        this.workOrderMapper = workOrderMapper;
        this.flowCardMapper = flowCardMapper;
        this.basicOtherMoneyMapper = basicOtherMoneyMapper;
        this.deliveryService = deliveryService;
    }
    public boolean saveOrder(Map<String,Object> orderMap) throws Exception {
@@ -434,11 +437,13 @@
        List<OrderDetail> orderDetails = orderDetailMapper.selectList(new QueryWrapper<OrderDetail>().eq("order_id",id));
        List<OrderOtherMoney> orderOtherMoneyList = orderOtherMoneyMapper.findById(id);
        List<Map<String,String>> orderFileList = orderMapper.selectOrderFileList(id);
        Integer deliveryCount = orderMapper.selectDeliveryStateConut(id);
        Map<String,Object> map = new HashMap<>();
        map.put("order",order);
        map.put("orderDetails",orderDetails);
        map.put("orderOtherMoneyList",orderOtherMoneyList);
        map.put("orderFile",orderFileList);
        map.put("deliveryCount",deliveryCount);
        return map;
    }
    //订单审核
@@ -493,6 +498,7 @@
    public boolean updateOrderMoney(Map<String, Object> map) {
        JSONObject jsonObject = new JSONObject(map);
        int type = Integer.parseInt(jsonObject.get("type").toString());
        Order order = JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("order")), Order.class);
        List<OrderDetail> OrderDetails = JSONArray.parseArray(JSONObject.toJSONString(jsonObject.get("detail")), OrderDetail.class);
        List<OrderOtherMoney> orderOtherMoneyList = JSONArray.parseArray(JSONObject.toJSONString(jsonObject.get("otherMoney")), OrderOtherMoney.class);
@@ -512,12 +518,16 @@
        log.setContent(jsonObject.toString());
        log.setFunction("updateOrderMoney金额重置:"+order.getOrderId());
        //删除其他金额明细表
        orderOtherMoneyMapper.delete(new LambdaQueryWrapper<OrderOtherMoney>().eq(OrderOtherMoney::getOrderId, order.getOrderId()));
        List<OrderOtherMoney> orderOtherMoneyLists=orderOtherMoneyList;
        double money = 0;
        for (OrderDetail orderDetail : OrderDetails) {
            if(type==1){
                deliveryService.updateDeliveryMoney(orderDetail,order);
            }
            orderDetail =  updateOrderMoneyComputed(orderDetail,order.getCalculateType());
            BigDecimal getGrossAmount= BigDecimal.valueOf(orderDetail.getGrossAmount());
            money+=getGrossAmount.doubleValue();
@@ -611,6 +621,7 @@
        }
        List<OrderDetail> orderDetailList = orderDetailMapper.getOrderReport(offset, pageSize, startDate, endDate, orderDetail,model,scope);
        List<BasicOtherMoney> basicOtherMoneyList=basicOtherMoneyMapper.selectList(new QueryWrapper<BasicOtherMoney>());
        ObjectMapper objectMapper = new ObjectMapper();
        for (OrderDetail detail : orderDetailList) {
@@ -632,6 +643,10 @@
        map.put("data",orderDetailList);
        map.put("title",basicOtherMoneyList);
        map.put("total",orderDetailMapper.getOrderReportTotal(offset, pageSize, startDate, endDate, orderDetail,"order"));
        map.put("orderOtherMoney",
                Collections.singletonList(
                        basicOtherMoneyMapper.selectList(new QueryWrapper<BasicOtherMoney>().eq("state",1))
                ));
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -171,6 +171,7 @@
    <!--    流程卡进度-->
    <select id="processCardProgressMp">
        select a.product_name,
               a.building_number,
               b.glass_child,
               d.order_type,
               concat(c.process_id, '/', c.technology_number) as process_id,
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
@@ -90,6 +90,9 @@
        <result column="freight" property="delivery.freight"/>
        <result column="freight_price" property="delivery.freightPrice"/>
        <result column="freight_quantity" property="delivery.freightQuantity"/>
        <result column="delivery_state" property="delivery.deliveryState"/>
        <result column="money" property="delivery.money"/>
        <result column="other_money" property="delivery.otherMoney"/>
        <result column="product_id" property="orderDetail.productId"/>
        <result column="product_name" property="orderDetail.productName"/>
@@ -1400,4 +1403,44 @@
        group by dd.delivery_id,dd.order_id,od.product_id
        order by dd.delivery_id,dd.delivery_number
    </select>
    <select id="getDeliverDetailOrderNumber" resultMap="selectDeliveryDetail">
        select dd.order_id,
        dd.order_Number,
        dd.delivery_number,
        dd.delivery_id,
        dd.quantity,
        dd.price,
        dd.area,
        dd.money,
        dd.other_columns,
        d.delivery_state,
        d.money
        from sd.delivery_detail dd
        left join sd.delivery d on dd.delivery_id=d.delivery_id
        where dd.order_id=#{orderId} and dd.order_number=#{orderNumber} and dd.delivery_id=#{deliveryId}
    </select>
    <select id="getDeliverOrderNumber">
        select
               d.delivery_id,
               d.delivery_state,
               d.money
        from sd.delivery_detail dd
                 left join sd.delivery d on dd.delivery_id=d.delivery_id
        where dd.order_id=#{orderId} and dd.order_number=#{orderNumber}
        group by d.delivery_id
    </select>
    <update id="updateDeliveryDetailmonye">
        update sd.delivery_detail set price=#{price},money=#{deliveryDetail.money}
            where delivery_id=#{deliveryDetail.deliveryId} and delivery_number=#{deliveryDetail.deliveryNumber}
    </update>
    <update id="updateDeliverymonye">
        update sd.delivery set money=#{money}
        where delivery_id=#{deliveryId}
    </update>
</mapper>
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -449,4 +449,8 @@
        where level=2 and belong=#{belong}
    </select>
    <select id="selectDeliveryStateConut">
        select count(*) from sd.delivery_detail dd left join sd.delivery d on dd.delivery_id=d.delivery_id where dd.order_id= #{orderId} and d.delivery_state=0
    </select>
</mapper>