廖井涛
2024-05-16 a9d8f80c82234bc7c46f117eae00e75304a4e972
Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
18个文件已修改
1个文件已添加
2个文件已删除
1124 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/hook/columnMove.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportingWorkController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/WorkOrderController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/sd/Customer.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/DeviceMaintenanceService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/CustomerMapper.xml 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/pp/Report.xml 673 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/sd/OrderProcessDetailMapper.xml 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/hook/columnMove.js
New file
@@ -0,0 +1,41 @@
import Sortable from 'sortablejs'
import {VXETable} from "vxe-table";
/*表格拖拽*/
let sortable2 = null
 function columnDrop2(xGrid){
    const $grid = xGrid
    sortable2 = Sortable.create($grid.$el.querySelector('.body--wrapper>.vxe-table--header .vxe-header--row'), {
        handle: '.vxe-header--column',
        onEnd: (sortableEvent) => {
            const targetThElem = sortableEvent.item
            const newIndex = sortableEvent.newIndex
            const oldIndex = sortableEvent.oldIndex
            const { fullColumn, tableColumn } = $grid.getTableColumn()
            const wrapperElem = targetThElem.parentNode
            const newColumn = fullColumn[newIndex]
            if (newColumn.fixed) {
                // 错误的移动
                const oldThElem = wrapperElem.children[oldIndex]
                if (newIndex > oldIndex) {
                    wrapperElem.insertBefore(targetThElem, oldThElem)
                } else {
                    wrapperElem.insertBefore(targetThElem, oldThElem ? oldThElem.nextElementSibling : oldThElem)
                }
                VXETable.modal.message({ content: '固定列不允许拖动!', status: 'error' })
                return
            }
            // 获取列索引 columnIndex > fullColumn
            const oldColumnIndex = $grid.getColumnIndex(tableColumn[oldIndex])
            const newColumnIndex = $grid.getColumnIndex(tableColumn[newIndex])
            // 移动到目标列
            const currRow = fullColumn.splice(oldColumnIndex, 1)[0]
            fullColumn.splice(newColumnIndex, 0, currRow)
            $grid.loadColumn(fullColumn)
        }
    })
}
export {
    columnDrop2,
    sortable2
}
north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue
@@ -21,7 +21,7 @@
      request.post(`/maintenance/openSelectId/${row.id}`).then((res) => {
        if (res.code == 200) {
          getMaintenanceRepair.value = res.data.data[0]
          getBasicData.value = res.data.data[0]
          dialogTableVisible.value=true
        } else {
@@ -62,6 +62,27 @@
  return count.toFixed(2)
}
//定义接收加载表头下拉数据
const titleSelectJson = ref({
  processType: [],
})
//定义接收加载弹窗的值
const getBasicData = ref({
  deviceName: '',
  type: '',
  faultTime: '',
  faultReason: '',
  maintenanceTime: '',
  maintenanceIllustrate: '',
  startTime: '',
  stopTime: '',
  process: '',
  personnel: '',
  cost: '',
})
//获取3天前到当前时间
function getNowTime() {
  const start = new Date(new Date().getTime() - 3600 * 1000 * 24 * 3)
@@ -79,21 +100,6 @@
  date1: '',
})
const getMaintenanceRepair = ref({
  id: '',
  device_id: '',
  type: '',
  device_name: '',
  fault_time: '',
  fault_reason: '',
  maintenance_time: '',
  maintenance_illustrate: '',
  start_time: '',
  stop_time: '',
  process: '',
  personnel: '',
  cost: '',
})
//第一次加载获取近3天时间和默认状态
form.date1 = getNowTime()
@@ -105,6 +111,7 @@
  if (res.code == 200) {
    xGrid.value.loadData(res.data.data)
    titleSelectJson.value.processType = res.data.process;
    gridOptions.loading = false
  } else {
    ElMessage.warning(res.msg)
@@ -226,7 +233,18 @@
const dialogTableVisible = ref(false)
const formLabelWidth = '140px'
const updateBasic = () => {
  // request.post(`/basicDataProduce/updateBasic/${id}/${process}/${name}/${type}`).then((res) => {
  //   if (res.code == 200) {
  //     ElMessage.success(t('processCard.modifySuccessfully'))
  //     router.push({path: '/main/productionBasicData/SelectProductionBasicData', query: {random:Math.random()}})
  //   } else {
  //
  //     ElMessage.warning(res.msg)
  //   }
  // })
}
</script>
@@ -301,7 +319,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="设备名称">
              <el-input v-model="form.name" autocomplete="off" style="width: 220px"/>
              <el-input v-model="getBasicData.deviceName" autocomplete="off" style="width: 220px"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
@@ -317,7 +335,7 @@
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="故障日期">
              <el-date-picker
                  v-model="value1"
                  v-model="getBasicData.faultTime"
                  :size="size"
                  placeholder="2023-01-01"
                  type="date"
@@ -326,7 +344,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="故障原因">
              <el-input v-model="form.name" autocomplete="off" style="width: 220px"/>
              <el-input v-model="getBasicData.faultReason" autocomplete="off" style="width: 220px"/>
            </el-form-item>
          </el-col>
        </el-row>
@@ -334,7 +352,7 @@
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="保养日期">
              <el-date-picker
                  v-model="value1"
                  v-model="getBasicData.maintenanceTime"
                  :size="size"
                  placeholder="2023-02-01"
                  type="date"
@@ -343,7 +361,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="保养说明">
              <el-input v-model="form.name" autocomplete="off" style="width: 220px"/>
              <el-input v-model="getBasicData.maintenanceIllustrate" autocomplete="off" style="width: 220px"/>
            </el-form-item>
          </el-col>
        </el-row>
@@ -351,7 +369,7 @@
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="保养/维修开始时间">
              <el-date-picker
                  v-model="value1"
                  v-model="getBasicData.startTime"
                  :size="size"
                  placeholder="2023-02-01"
                  type="date"
@@ -361,7 +379,7 @@
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="保养/维修完成时间">
              <el-date-picker
                  v-model="value1"
                  v-model="getBasicData.stopTime"
                  :size="size"
                  placeholder="2023-02-01"
                  type="date"
@@ -372,21 +390,25 @@
        <el-row>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="所在工艺">
              <el-select v-model="form.region" placeholder="钢化" style="width: 220px">
                <el-option label="切割" value="shanghai"/>
                <el-option label="磨边" value="mobian"/>
                <el-option label="钢化" value="ganghua"/>
              <el-select  v-model="getBasicData.process" clearable placeholder="" style="width: 220px"
              >
                <el-option
                    v-for="item in titleSelectJson['processType']"
                    :key="item.id"
                    :label="item.basic_name"
                    :value="item.basic_name"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item :label-width="formLabelWidth" label="保养/维修人员">
              <el-input v-model="form.name" autocomplete="off" style="width: 220px"/>
              <el-input v-model="getBasicData.personnel" autocomplete="off" style="width: 220px"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-form-item :label-width="formLabelWidth" label="费用">
          <el-input v-model="form.name" autocomplete="off" style="width: 220px"/>
          <el-input v-model="getBasicData.cost" autocomplete="off" style="width: 220px"/>
        </el-form-item>
      </el-form>
      <template #footer>
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue
@@ -191,7 +191,6 @@
    if ($grid) {
      switch (code) {
        case 'print': {
          console.log( selectRecords)
          if(selectRecords===null ||selectRecords===''||selectRecords.length===0){
            ElMessage.warning(t('searchOrder.msgList.checkOrder'))
            return
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue
@@ -33,7 +33,6 @@
        if (res.code == 200) {
          produceList.value = deepClone(res.data.data)
          handleGetQRCode()
        } else {
          ElMessage.warning(res.msg)
@@ -201,7 +200,7 @@
          数量:
          <label>{{ itemsum.quantity }}</label>
          面积:
          <label>{{ itemsum.gross_area }}</label>
          <label>{{ parseFloat(itemsum.gross_area,2) }}</label>
          重量:
          <label>{{ itemsum.weight }}</label>
        </td>
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue
@@ -60,15 +60,16 @@
    }
    case 'delete': {
      request.post(`/processCard/deleteFlowCard/${row.orderId}/${row.processId}`).then((res) => {
        if (res.code == 200) {
        if (res.code == 200 && res.data===true) {
          ElMessage.success(t('workOrder.deleteOk'))
          router.push({path: '/main/processCard/SelectProcessCard', query: {random:Math.random()}})
        } else {
          ElMessage.warning(res.msg)
          ElMessage.warning('删除失败,检查流程卡是否已报工')
        }
      })
      break
    }
  }
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -629,8 +629,9 @@
    return false;
  });
  const notFinishList = xGrid.value.getTableData().fullData.filter(item =>{
    return item.saveFlag === false
    return item.saveFlag === 0
  })
  for(let item of uniqueByOrderNum){
    if(!checkSameNumForId(notFinishList,item.order_number)){
      ElMessage.error(`请检查订单序号: ${item.order_number} 报工数量是否相同!`)
@@ -786,6 +787,10 @@
const getWork = () => {
  let processId = titleUploadData.value.processId
  if (processId == "" || processId == null) {
    ElMessage.warning("流程卡号不能为空")
    return
  }
  let parts = processId.split('/');
  if (processId.indexOf("/") < 0 ||parts[1].trim() == '') {
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
@@ -23,12 +23,12 @@
    }
    case 'delete':{
      request.post(`/reportingWork/deleteWork/${row.reportingWorkId}/${row.processId}/${row.thisProcess}`).then((res) => {
        if (res.code == 200) {
        if (res.code == 200 && res.data===true) {
          ElMessage.success(t('workOrder.deleteOk'))
          router.push({path: '/main/reportingWorks/SelectReportingWorks', query: {random:Math.random()}})
        } else {
          ElMessage.warning(res.msg)
          ElMessage.warning('删除失败,检查下工序是否已报工')
        }
      })
north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue
@@ -32,13 +32,14 @@
      let endTime = form.date1[1]
      let state = optionVal.value
        request.post(`/workOrder/deleteOrderWork/${row.orderId}/${row.productionId}`).then((res) => {
        if (res.code == 200) {
          ElMessage.success(t('workOrder.deleteOk'))
          //location.reload();
          router.push({path: '/main/workOrder/SelectWorkOrder', query: {startTime:startTime,endTime:endTime,state:state,random:Math.random()}})
        } else {
          ElMessage.warning(res.msg)
        }
          if (res.code == 200 && res.data===true) {
            ElMessage.success(t('workOrder.deleteOk'))
            router.push({path: '/main/workOrder/SelectWorkOrder', query: {startTime:startTime,endTime:endTime,state:state,random:Math.random()}})
          } else {
            ElMessage.warning('删除失败,检查是否已分架')
          }
      })
      break
    }
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -25,7 +25,7 @@
const xGrid = ref()
let cellArea = ref()
const shapeList = ref([
    {name:'普形',value:1}, {name:'异形',value: 2}
    {name:'普形',value:1}, {name:'异形',value:2}
])
// 定义表头上传数据
@@ -442,13 +442,13 @@
//初始化判断是否有id传入
onMounted(()=>{
  //启用表格拖动选中
  addListener(xGrid.value,gridOptions)
  const str = route.query.orderId || history.state.orderId
  if (typeof str === 'undefined' || str === null || str === '' || str === '\n' || str === '\r'){
    return
  }
  gridOptions.loading = true
  request.post(`/order/getOrderById/${str}`).then((res) => {
    if(res.code==200){
      titleUploadData.value = res.data.order
@@ -504,8 +504,11 @@
        item.otherColumns = JSON.parse(item.otherColumns)
      })
      otherMoney.value =res.data.orderOtherMoneyList
          //加载副表数据
      xGrid.value.reloadData(orderDetails)
      gridOptions.loading = false
    }else{
      ElMessage.error(res.msg)
    }
@@ -635,6 +638,10 @@
  const changedCustomerId = titleUploadData.value.customerId
  const customer = titleSelectJson.value.customer.filter(item => item.id === changedCustomerId)
  titleUploadData.value.customerName = customer[0].customerName
  titleUploadData.value.project = customer[0].project
  titleUploadData.value.salesmanId = customer[0].salesmanId
  titleUploadData.value.salesman = customer[0].salesman
  //titleSelectJson.value.customer
}
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
@@ -1,7 +1,7 @@
<script setup>
  import {Search} from "@element-plus/icons-vue"
  import {useRouter} from "vue-router"
  import {computed, reactive, ref} from "vue"
  import {computed, nextTick, onUnmounted, reactive, ref} from "vue"
  import ProcessCardProgress from '@/views/pp/report/ProcessCardProgress.vue'
  import request from "@/utils/request"
  import deepClone from "@/utils/deepClone"
@@ -9,6 +9,7 @@
  import {VXETable} from "vxe-table"
  import  useUserInfoStore from '@/stores/userInfo'
  import {useI18n} from "vue-i18n"
  import {columnDrop2, sortable2} from "@/hook/columnMove";
  const { t } = useI18n()
  const userStore = useUserInfoStore()
  const router = useRouter()
@@ -302,6 +303,21 @@
  })
  let initTime = null
  nextTick(() => {
    // 加载完成之后在绑定拖动事件
    initTime = setTimeout(() => {
      columnDrop2(xGrid.value)
    }, 500)
  })
  onUnmounted(() => {
    clearTimeout(initTime)
    if (sortable2) {
      sortable2.destroy()
    }
  })
</script>
<template>
north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue
@@ -7,6 +7,7 @@
import {Search} from "@element-plus/icons-vue"
import GlassType from "@/components/sd/product/GlassType.vue"
import {useRouter} from  'vue-router'
import {columnDrop2,sortable2} from "@/hook/columnMove"
import Sortable from 'sortablejs'
import BasicTable from '@/components/sd/product/BasicTable.vue'
import {VXETable} from "vxe-table";
@@ -287,47 +288,15 @@
  return regex.test(value); // 返回true/false
}
/*表格拖拽*/
let sortable2: any
const columnDrop2 = () => {
  const $grid = xGrid.value
  sortable2 = Sortable.create($grid.$el.querySelector('.body--wrapper>.vxe-table--header .vxe-header--row'), {
    handle: '.vxe-header--column',
    onEnd: (sortableEvent) => {
      const targetThElem = sortableEvent.item
      const newIndex = sortableEvent.newIndex
      const oldIndex = sortableEvent.oldIndex
      const { fullColumn, tableColumn } = $grid.getTableColumn()
      const wrapperElem = targetThElem.parentNode
      const newColumn = fullColumn[newIndex]
      if (newColumn.fixed) {
        // 错误的移动
        const oldThElem = wrapperElem.children[oldIndex]
        if (newIndex > oldIndex) {
          wrapperElem.insertBefore(targetThElem, oldThElem)
        } else {
          wrapperElem.insertBefore(targetThElem, oldThElem ? oldThElem.nextElementSibling : oldThElem)
        }
        VXETable.modal.message({ content: '固定列不允许拖动!', status: 'error' })
        return
      }
      // 获取列索引 columnIndex > fullColumn
      const oldColumnIndex = $grid.getColumnIndex(tableColumn[oldIndex])
      const newColumnIndex = $grid.getColumnIndex(tableColumn[newIndex])
      // 移动到目标列
      const currRow = fullColumn.splice(oldColumnIndex, 1)[0]
      fullColumn.splice(newColumnIndex, 0, currRow)
      $grid.loadColumn(fullColumn)
    }
  })
}
let initTime: any
let initTime = null
nextTick(() => {
  // 加载完成之后在绑定拖动事件
  initTime = setTimeout(() => {
    columnDrop2()
    columnDrop2(xGrid.value)
  }, 500)
})
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
@@ -70,12 +70,13 @@
            @PathVariable String orderId,
            @PathVariable String processId
    ){
        if(flowCardService.deleteFlowCardSv(orderId,processId)){
            return Result.seccess();
        }else {
            throw new ServiceException(Constants.Code_500,"删除失败,请检查是否已报工");
        }
//        if(flowCardService.deleteFlowCardSv(orderId,processId)){
//            return Result.seccess();
//        }else {
//            throw new ServiceException(Constants.Code_500,"删除失败,请检查是否已报工");
//
//        }
        return  Result.seccess(flowCardService.deleteFlowCardSv(orderId,processId));
    }
    //修改排版状态
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportingWorkController.java
@@ -83,12 +83,14 @@
    @SaCheckPermission("SelectReportingWorks.delete")
    @PostMapping("/deleteWork/{reportingWorkId}/{processId}/{thisProcess}")
    public Result deleteWork(@PathVariable String reportingWorkId,@PathVariable String processId,@PathVariable String thisProcess){
        if(reportingWorkService.deleteWorkSv(reportingWorkId,processId,thisProcess)){
            return Result.seccess();
        }else {
            throw new ServiceException(Constants.Code_500,"删除失败,请检查是否符合删除条件");
//        if(reportingWorkService.deleteWorkSv(reportingWorkId,processId,thisProcess)){
//            return Result.seccess();
//        }else {
//            throw new ServiceException(Constants.Code_500,"删除失败,请检查是否符合删除条件");
//
//        }
        return Result.seccess(reportingWorkService.deleteWorkSv(reportingWorkId,processId,thisProcess));
        }
    }
    @ApiOperation("质检审核查询接口")
north-glass-erp/src/main/java/com/example/erp/controller/pp/WorkOrderController.java
@@ -67,11 +67,12 @@
            @PathVariable String orderId,
            @PathVariable String productionId
    ){
        if(workOrderService.deleteOrderWorkSv(orderId,productionId)){
            return Result.seccess();
        }else {
            throw new ServiceException(Constants.Code_500,"删除失败");
        }
//        if(workOrderService.deleteOrderWorkSv(orderId,productionId)){
//            return Result.seccess();
//        }else {
//            throw new ServiceException(Constants.Code_500,"删除失败");
//
//        }
        return  Result.seccess(workOrderService.deleteOrderWorkSv(orderId,productionId));
    }
}
north-glass-erp/src/main/java/com/example/erp/entity/sd/Customer.java
@@ -1,6 +1,7 @@
package com.example.erp.entity.sd;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
@@ -15,4 +16,11 @@
    private String address;
    private String contact;
    private String phone;
    @TableField(select = false,exist = false)
    private String project;
    @TableField(select = false,exist = false)
    private Integer salesmanId;
    @TableField(select = false,exist = false)
    private String salesman;
}
north-glass-erp/src/main/java/com/example/erp/service/pp/DeviceMaintenanceService.java
@@ -66,6 +66,7 @@
    public Map<String, Object> selectMaintenanceSv(Date selectTime1, Date selectTime2) {
        Map<String, Object> map = new HashMap<>();
        map.put("data", deviceMaintenanceMapper.selectMaintenanceMp(selectTime1,selectTime2));
        map.put("process", deviceMaintenanceMapper.selectProcessMp());
        return map;
    }
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -68,11 +68,11 @@
        //查询流程卡工艺流程
        String technologicalProcess = reportingWorkMapper.SelectTechnologicalProcess(processIdStr);
        //定义-的位置
        int index = technologicalProcess.indexOf("-");
        //获取工艺流程第一个工序
        String interceptProcess = technologicalProcess.substring(0, index);
        String[] processList = technologicalProcess.split("->");
        //获取工艺流程第一个工序
        String interceptProcess = processList[0];
        int length = processList.length;
        //定义当前工序上下工序
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -445,7 +445,7 @@
               o.processing_note,
               fc.process_id,
               SUM( od.quantity) as quantity,
               SUM(od.gross_area) as gross_area,
               SUM(ogd.total_area) as gross_area,
               SUM(od.weight) as weight,
               #{technologyNumber} as technologyNumber,
               concat(fc.process_id,'/',#{technologyNumber}) as  processIdNumber
@@ -464,7 +464,7 @@
        select fc.order_number,
               concat(ogd.child_width, "*", ogd.child_height) as child_width,
               od.quantity,
               ogd.total_area,
               round(ogd.total_area,2) as total_area,
               od.perimeter,
               od.bend_radius,
               od.remarks
north-glass-erp/src/main/resources/mapper/sd/CustomerMapper.xml
@@ -161,9 +161,18 @@
    <select id="getCustomerList">
        select
            *
            a.*,
            b.project,
            b.salesman_id,
            b.salesman
        from
            sd.customer
            sd.customer as a
        left join (select o.project,o.salesman_id,o.salesman,o.customer_id
                   from sd.order as o
                   group by o.customer_id
                   order by o.id desc) as b
        on a.id = b.customer_id
    </select>
    <select id="getSelectCustomer">
        select
north-glass-erp/target/classes/mapper/pp/Report.xml
File was deleted
north-glass-erp/target/classes/mapper/sd/OrderProcessDetailMapper.xml
File was deleted