Merge branch 'master' of http://bore.pub:10439/r/ERP_override
| | |
| | | component: () => import('../views/pp/processCard/PrintLabel.vue'), |
| | | }, |
| | | { |
| | | path: 'printCustomLabel', |
| | | name: 'printCustomLabel', |
| | | component: () => import('../views/pp/processCard/PrintCustomLabel.vue'), |
| | | }, |
| | | { |
| | | path: 'productionScheduling', |
| | | name: 'productionScheduling', |
| | | component: () => import('../views/pp/processCard/ProductionScheduling.vue'), |
| New file |
| | |
| | | <script setup> |
| | | import request from "@/utils/request" |
| | | import {ElDatePicker, ElMessage} from "element-plus" |
| | | import {nextTick, onMounted, onUnmounted, reactive, ref, watch} from "vue" |
| | | import {Search} from "@element-plus/icons-vue" |
| | | import {useRouter} from 'vue-router' |
| | | import {changeFilterEvent, filterChanged} from "@/hook" |
| | | import {useI18n} from 'vue-i18n' |
| | | import deepClone from "@/utils/deepClone"; |
| | | //语言获取 |
| | | const {t} = useI18n() |
| | | let router = useRouter() |
| | | let produceList = ref([]) |
| | | let labelList = ref([]) |
| | | let titleList = ref([]) |
| | | let dataList = ref([]) |
| | | let list = ref([]) |
| | | let lastList=ref([]) |
| | | |
| | | let filterData = ref({}) |
| | | |
| | | const data = ref({ |
| | | printList: [] |
| | | }) |
| | | |
| | | |
| | | const {currentRoute} = useRouter() |
| | | const route = currentRoute.value |
| | | data.value.printList = JSON.parse(route.query.printList) |
| | | const type = route.query.type |
| | | const faceOrientation = route.query.faceOrientation |
| | | onMounted(() => { |
| | | request.post(`/processCard/getSelectPrintCustomLabel/${type}`, data.value).then((res) => { |
| | | if (res.code == 200) { |
| | | |
| | | produceList.value = deepClone(res.data.title) |
| | | list.value = deepClone(res.data.data) |
| | | const quantity = res.data.quantity |
| | | console.log(quantity) |
| | | const data = produceList.value[0].value |
| | | dataList = JSON.parse(`[${data}]`); |
| | | labelList = dataList[0] |
| | | for (let i = 0; i < list.value.length; i++) { |
| | | let count= list.value[i].quantity |
| | | for (let j = 0; j < quantity; j++) { |
| | | lastList.value.push(list.value[i]) |
| | | |
| | | } |
| | | } |
| | | console.log(lastList.value) |
| | | console.log(labelList) |
| | | |
| | | |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | |
| | | } |
| | | ) |
| | | |
| | | |
| | | // 打印方法 |
| | | const printFlowCard = () => { |
| | | // 需要打印的局部区域赋予"print-wrap"的id |
| | | let el = document.getElementById("printFlowCard"); |
| | | let doc = document; |
| | | let body = doc.body || doc.getElementsByTagName("body")[0]; |
| | | let printId = "print-" + Date.now(); |
| | | |
| | | // 创建无副作用的打印容器(因不确定页面的打印元素有无其它样式) |
| | | let content = doc.createElement("div"); |
| | | content.id = printId; |
| | | |
| | | // 样式控制与打印无关的元素隐藏 |
| | | let style = doc.createElement("style"); |
| | | style.innerHTML = |
| | | "body>#" + |
| | | printId + |
| | | "{display:none}@media print{body>:not(#" + |
| | | printId + |
| | | "){display:none !important}body>#" + |
| | | printId + |
| | | "{display:block;padding-top:1px}}"; |
| | | // |
| | | content.innerHTML = el.outerHTML; |
| | | // // console.log("el.outerHTML", el.outerHTML); |
| | | body.appendChild(style); |
| | | |
| | | // 与style元素设置的样式相配合 |
| | | // 把打印内容的元素添加到body(作为body的子元素,可用body的子选择器 '>' 控制打印样式) |
| | | body.appendChild(content); |
| | | setTimeout(() => { |
| | | window.print(); |
| | | body.removeChild(content); |
| | | body.removeChild(style); |
| | | }, 20); |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <el-button id="printButton" @click="printFlowCard();">{{ $t('basicData.print') }}</el-button> |
| | | <div id="printFlowCard"> |
| | | <div v-for="(item1,id) in lastList" id="entirety"> |
| | | <div class="row4">{{faceOrientation}}</div> |
| | | <div v-for="(item,id) in labelList" class="contentRow"> |
| | | <div class="row1">{{ item.title }}:</div> |
| | | <div class="row2">{{ item1.order[item.name] }}</div> |
| | | |
| | | </div> |
| | | <div class="row3"><label>W:</label>{{ item1.width }} <label>H:</label>{{ item1.height }}</div> |
| | | </div> |
| | | </div> |
| | | |
| | | </template> |
| | | |
| | | <style scoped> |
| | | * { |
| | | margin: 0; |
| | | padding: 0; |
| | | } |
| | | |
| | | #printButton { |
| | | margin-top: -20px; |
| | | width: 100px; |
| | | } |
| | | |
| | | #printFlowCard { |
| | | flex-wrap: wrap; |
| | | font-size: 20px; |
| | | margin-left: 5px; |
| | | margin-top: 15px; |
| | | } |
| | | |
| | | #entirety { |
| | | display: flex; |
| | | text-align: center; |
| | | width: 250px; |
| | | margin-bottom: 10px; |
| | | flex-direction:column; |
| | | |
| | | } |
| | | |
| | | .contentRow{ |
| | | display: flex; |
| | | text-align: center; |
| | | border: red solid 1px; |
| | | } |
| | | |
| | | label{ |
| | | font-weight: bolder; |
| | | } |
| | | |
| | | .row1{ |
| | | font-weight: bolder; |
| | | } |
| | | |
| | | .row4{ |
| | | font-weight: bolder; |
| | | text-align: right; |
| | | } |
| | | |
| | | .row1,.row2{ |
| | | text-align: left; |
| | | } |
| | | |
| | | @page { |
| | | size: auto; /* auto is the initial value */ |
| | | margin: 7mm 2mm 2mm 0mm /* this affects the margin in the printer settings */ |
| | | |
| | | } |
| | | |
| | | @media print { |
| | | div { |
| | | page-break-inside: avoid; |
| | | } |
| | | } |
| | | |
| | | </style> |
| | |
| | | import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove"; |
| | | import PrintProcess from '@/views/pp/processCard/PrintProcess.vue' |
| | | import PrintLabel from '@/views/pp/processCard/PrintLabel.vue' |
| | | import PrintCustomLabel from '@/views/pp/processCard/PrintCustomLabel.vue' |
| | | import footSum from "@/hook/footSum" |
| | | //语言获取 |
| | | const {t} = useI18n() |
| | | let router = useRouter() |
| | | const dialogTableVisible = ref(false) |
| | | const dialogTableVisibleLabel = ref(false) |
| | | const dialogTableVisibleCustomLabel = ref(false) |
| | | const printVisible= ref(false) |
| | | let selectRecords = ref(null) |
| | | |
| | |
| | | let pageNum = $ref(1) |
| | | let pageState = null |
| | | |
| | | //室内室外面 |
| | | const stateValue = ref('此面为室内面') |
| | | const stateOptions = [ |
| | | { |
| | | value: '此面为室内面', |
| | | label: '此面为室内面', |
| | | }, |
| | | { |
| | | value: '此面为室外面', |
| | | label: '此面为室外面', |
| | | }, |
| | | ] |
| | | |
| | | |
| | | //打印类型 |
| | | const printType = ref() |
| | | |
| | | //定义接收加载表头下拉数据 |
| | | const titleSelectJson = ref({ |
| | | dataType: [], |
| | | }) |
| | | |
| | | const {currentRoute} = useRouter() |
| | | const route = currentRoute.value |
| | | |
| | |
| | | |
| | | if (res.code == 200) { |
| | | produceList = produceList.value.concat(deepClone(res.data.data)) |
| | | titleSelectJson.value.dataType = res.data.type |
| | | xGrid.value.reloadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'order_number', |
| | | title: '序号', |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'customer_name', |
| | | title: t('customer.customerName'), |
| | | filters: [{data: ''}], |
| | |
| | | buttons: [ |
| | | {code: 'print', name: t('processCard.print'), status: 'primary'}, |
| | | {code: 'printLabel', name: t('processCard.printLabel'), status: 'primary'}, |
| | | // {code: 'customLabel', name: '自定义标签打印', status: 'primary'}, |
| | | |
| | | ], |
| | | // import: false, |
| | |
| | | toolbarButtonClick ({ code}) { |
| | | const $grid = xGrid.value |
| | | selectRecords = $grid.getCheckboxRecords() |
| | | let type=printType.value |
| | | let faceOrientation=stateValue.value |
| | | if ($grid) { |
| | | switch (code) { |
| | | case 'print': { |
| | |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | break |
| | | } |
| | | case 'customLabel': { |
| | | if(selectRecords===null ||selectRecords===''||selectRecords.length===0){ |
| | | ElMessage.warning(t('searchOrder.msgList.checkOrder')) |
| | | return |
| | | } |
| | | if (type===null||type===''||type===undefined){ |
| | | ElMessage.warning('请选择自定义打印标签样式') |
| | | return |
| | | } |
| | | |
| | | let id = "" |
| | | for (let i = 0; i < selectRecords.length; i++) { |
| | | if (i + 1 === selectRecords.length) { |
| | | id += selectRecords[i].id |
| | | } else { |
| | | id += selectRecords[i].id + "|" |
| | | } |
| | | } |
| | | |
| | | router.push({path: '/main/processCard/PrintCustomLabel', query: {type:type,faceOrientation:faceOrientation, printList: JSON.stringify(selectRecords)}}) |
| | | |
| | | break |
| | | } |
| | | } |
| | |
| | | |
| | | <template> |
| | | <div class="main-div-customer"> |
| | | <!-- <label>标签样式:</label>--> |
| | | <!-- <el-select v-model="printType" clearable default-value="default_city" style="width: 120px">--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in titleSelectJson['dataType']"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :label="item.name"--> |
| | | <!-- :value="item.name"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- <el-select v-model="stateValue" class="m-2" placeholder="室内外面" style="width: 140px">--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in stateOptions"--> |
| | | <!-- :key="item.value"--> |
| | | <!-- :label="item.label"--> |
| | | <!-- :value="item.value"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <vxe-grid |
| | | ref="xGrid" |
| | | class="mytable-scrollbar" |
| | |
| | | </el-dialog> |
| | | |
| | | <el-dialog |
| | | v-model="dialogTableVisibleCustomLabel" |
| | | destroy-on-close |
| | | title="自定义标签" |
| | | style="width: 80%;height:75% "> |
| | | <PrintLabel :printList="selectRecords" |
| | | style="width: 100%;height: 100%" /> |
| | | </el-dialog> |
| | | |
| | | <el-dialog |
| | | @opened="openedTable" |
| | | v-model="printVisible" |
| | | title="流程卡明细" |
| | |
| | | if ($table) { |
| | | const selectRecords = $table.getCheckboxRecords() |
| | | if (selectRecords.length == 0) { |
| | | ElMessage.warning(t('processCard.checkProductionScheduling')) |
| | | ElMessage.warning("请勾选排产数据") |
| | | return; |
| | | } |
| | | for (let i = 0; i < selectRecords.length; i++) { |
| | |
| | | let number = selectRecords[i].schedulingQuantity |
| | | //计划开始、结束时间,排产数量不能为空 |
| | | if (start == null || end == null || number == null) { |
| | | ElMessage.warning(t('processCard.saveCorrespondingValues')) |
| | | ElMessage.warning("请填入对应的值再进行保存") |
| | | return; |
| | | } |
| | | } |
| | | let selectProcesses = processVal.value |
| | | if (selectProcesses == null || selectProcesses == "") { |
| | | ElMessage.warning(t('processCard.selectProductionSchedulingProcess')) |
| | | ElMessage.warning("请选择排产工序") |
| | | return; |
| | | } |
| | | |
| | |
| | | //保存排产数据 |
| | | request.post("/productionScheduling/addScheduling", schedulingData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | ElMessage.success("保存成功") |
| | | // 启用保存 |
| | | gridOptions.toolbarConfig.buttons[2].disabled = false |
| | | router.push({ |
| | |
| | | const selectRecords = $table.getCheckboxRecords() |
| | | if ($table) { |
| | | if (selectRecords.length == 0) { |
| | | ElMessage.warning(t('processCard.checkProductionScheduling')) |
| | | ElMessage.warning("请勾选排产数据") |
| | | return; |
| | | } |
| | | const type = await VXETable.modal.confirm(t('processCard.deleteThisData')) |
| | | const type = await VXETable.modal.confirm('您确定要删除该数据?') |
| | | if (type === 'confirm') { |
| | | let schedulingData = ref({ |
| | | scheduling: selectRecords, |
| | |
| | | |
| | | request.post("/productionScheduling/deleteScheduling", schedulingData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success(t('basicData.msg.deleteSuccess')) |
| | | ElMessage.success("删除成功") |
| | | location.reload(); |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | |
| | | const selectRecords = $table.getCheckboxRecords() |
| | | if ($table) { |
| | | if (selectRecords.length == 0) { |
| | | ElMessage.warning(t('processCard.checkProductionScheduling')) |
| | | ElMessage.warning("请勾选排产数据") |
| | | return; |
| | | } |
| | | let schedulingData = ref({ |
| | |
| | | }) |
| | | request.post("/productionScheduling/examineScheduling", schedulingData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success(t('basicData.msg.ReviewSuccess')) |
| | | ElMessage.success("审核成功") |
| | | location.reload(); |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | |
| | | let selectState = stateValue.value |
| | | table.forEach((selectRecords) => { |
| | | if (selectRecords.scheduling_quantity > selectRecords.pendingProductionQuantity && selectState == 1) { |
| | | ElMessage.warning(t('processCard.schedulingQuantityNoQuantityScheduled')) |
| | | ElMessage.warning("排产数量不能大于待排产数量") |
| | | //禁用保存按钮 |
| | | //gridOptions.toolbarConfig.buttons[2].disabled = true |
| | | } |
| | |
| | | <el-date-picker |
| | | v-model="form.date1" |
| | | :default-time="defaultTime" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | end-placeholder="结束时间" |
| | | format="YYYY/MM/DD" |
| | | start-placeholder="开始时间" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | | |
| | |
| | | /> |
| | | </el-select> |
| | | |
| | | <el-select v-model="stateValue" class="m-2" :placeholder="$t('processCard.whetherToScheduleProduction')" style="width: 120px"> |
| | | <el-select v-model="stateValue" class="m-2" placeholder="是否排产" style="width: 120px"> |
| | | <el-option |
| | | v-for="item in stateOptions" |
| | | :key="item.value" |
| | |
| | | return Result.seccess(flowCardService.getSelectPrintLabelSv(object)); |
| | | } |
| | | |
| | | @ApiOperation("打印自定义标签数据查询接口") |
| | | @PostMapping("/getSelectPrintCustomLabel/{type}") |
| | | public Result getSelectPrintCustomLabel( @PathVariable String type, |
| | | @RequestBody Map<String, Object> object) { |
| | | return Result.seccess(flowCardService.getSelectPrintCustomLabelSv(type,object)); |
| | | |
| | | } |
| | | |
| | | @ApiOperation("复选框修改排版状态") |
| | | @SaCheckPermission("SelectProcessCard.review") |
| | | @PostMapping("/updateComposing") |
| | |
| | | } |
| | | } |
| | | |
| | | @ApiOperation("自定义标签打印明细接口") |
| | | @PostMapping("/getCustomLabelDetail/{name}/{form}/{id}") |
| | | public Result getCustomLabelDetail( |
| | | @PathVariable String name, |
| | | @PathVariable String form, |
| | | @PathVariable String id, |
| | | @RequestBody FlowCard flowCard) { |
| | | return Result.seccess(flowCardService.getCustomLabelDetailSv(name,form,id, flowCard)); |
| | | |
| | | } |
| | | } |
| | |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.entity.pp.PrintSetup; |
| | | import com.example.erp.entity.sd.Order; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.sql.Date; |
| | |
| | | |
| | | Boolean printSortMp(String processId, Integer orderNumber, Integer technologyNumber, Integer sort); |
| | | |
| | | List<Map<String,String>> selectType(); |
| | | |
| | | List<Map<String, Object>> getPrintTitle(String type); |
| | | |
| | | List<Map<String, Object>> getCustomLabelDetailMp(String name, String form, String id, FlowCard flowCard); |
| | | |
| | | List<Order> getPrintCustomData(String orderId, Integer orderNumber); |
| | | } |
| | |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.entity.pp.PrintSetup; |
| | | import com.example.erp.entity.pp.ProductionScheduling; |
| | | import com.example.erp.entity.sd.OrderGlassDetail; |
| | | import com.example.erp.entity.sd.OrderProcessDetail; |
| | | import com.example.erp.mapper.pp.FlowCardMapper; |
| | | import com.example.erp.mapper.sd.OrderGlassDetailMapper; |
| | | import com.example.erp.mapper.sd.OrderProcessDetailMapper; |
| | | import com.fasterxml.jackson.databind.JsonNode; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import jdk.nashorn.internal.parser.JSONParser; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | |
| | | |
| | | import java.io.StringReader; |
| | | import java.sql.Date; |
| | | import java.util.*; |
| | | |
| | |
| | | public Object selectPrintSv(String orderId, FlowCard flowCard) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", flowCardMapper.selectPrintMp(orderId, flowCard)); |
| | | map.put("type", flowCardMapper.selectType()); |
| | | return map; |
| | | } |
| | | |
| | |
| | | Integer count=flowCard.getQuantity(); |
| | | for (int i = 0; i < count; i++) { |
| | | map.put("data", flowCardMapper.getPrintLabel(flowCard.getProcessId(), flowCard.getTechnologyNumber())); |
| | | //System.out.println(flowCardMapper.getPrintLabel(flowCard.getProcessId(), flowCard.getTechnologyNumber())); |
| | | System.out.println(flowCardMapper.getPrintLabel(flowCard.getProcessId(), flowCard.getTechnologyNumber())); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return map; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | public Map<String, Object> getSelectPrintCustomLabelSv(String type, Map<String, Object> object) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//最终结果 |
| | | List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); |
| | | if (!flowCardList.isEmpty()) { |
| | | for (FlowCard flowCard : flowCardList) { |
| | | map.put("data", flowCardMapper.getPrintCustomData(flowCard.getOrderId(),flowCard.getOrderNumber())); |
| | | map.put("quantity", flowCard.getQuantity()); |
| | | } |
| | | } |
| | | |
| | | map.put("title", flowCardMapper.getPrintTitle(type)); |
| | | return map; |
| | | } |
| | | |
| | | public Object getCustomLabelDetailSv(String name, String form, String id, FlowCard flowCard) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", flowCardMapper.getCustomLabelDetailMp(name, form,id, flowCard)); |
| | | return map; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | <result column="g_type" property="glassTypes.type"/>--> |
| | | |
| | | </resultMap> |
| | | |
| | | |
| | | <!-- 流程卡管理查询--> |
| | | <select id="selectFlowCard" resultMap="flowCardMap"> |
| | | select |
| | |
| | | fc.process_id, |
| | | o.customer_name, |
| | | o.project, |
| | | fc.order_number, |
| | | ogd.technology_number, |
| | | ogd.glass_address, |
| | | sum(od.quantity) as quantity, |
| | |
| | | o.processing_note, |
| | | fc.process_id, |
| | | SUM( od.quantity) as quantity, |
| | | SUM(ogd.total_area) as gross_area, |
| | | round(SUM(ogd.total_area),2) as gross_area, |
| | | SUM(od.weight) as weight, |
| | | #{technologyNumber} as technologyNumber, |
| | | concat(fc.process_id,'/',#{technologyNumber}) as processIdNumber |
| | |
| | | |
| | | <select id="getDetailList"> |
| | | select fc.order_number, |
| | | concat(ogd.child_width, "*", ogd.child_height) as child_width, |
| | | concat(round(ogd.child_width), "*", round(ogd.child_height)) as child_width, |
| | | od.quantity, |
| | | round(ogd.total_area,2) as total_area, |
| | | od.perimeter, |
| | |
| | | and technology_number = #{technologyNumber} |
| | | </update> |
| | | |
| | | <select id="selectType"> |
| | | select * from pp.tag_style |
| | | </select> |
| | | <select id="getPrintTitle"> |
| | | select value from pp.tag_style as a where a.name=#{type} |
| | | </select> |
| | | |
| | | <select id="getCustomLabelDetailMp"> |
| | | select #{name} from #{form} where order_id=#{id} |
| | | </select> |
| | | |
| | | <resultMap id="orderDetial" type="com.example.erp.entity.sd.OrderDetail"> |
| | | <result column="width" property="width"/> |
| | | <result column="height" property="height"/> |
| | | <result column="order_id" property="order.orderId"/> |
| | | <result column="project" property="order.project"/> |
| | | <result column="customer_id" property="order.customerId"/> |
| | | <result column="customer_name" property="order.customerName"/> |
| | | <result column="order_type" property="order.orderType"/> |
| | | <result column="order_classify" property="order.orderClassify"/> |
| | | <result column="batch" property="order.batch"/> |
| | | <result column="icon" property="order.icon"/> |
| | | <result column="pack_type" property="order.packType"/> |
| | | <result column="delivery_date" property="order.deliveryDate"/> |
| | | <result column="al_type" property="order.alType"/> |
| | | <result column="money" property="order.money"/> |
| | | <result column="contract_id" property="order.contractId"/> |
| | | <result column="customer_batch" property="order.customerBatch"/> |
| | | <result column="contacts" property="order.contacts"/> |
| | | <result column="delivery_address" property="order.deliveryAddress"/> |
| | | <result column="processing_note" property="processingNote"/> |
| | | <result column="quantity" property="quantity"/> |
| | | </resultMap> |
| | | |
| | | <select id="getPrintCustomData" resultMap="orderDetial"> |
| | | select o.order_id, |
| | | project, |
| | | customer_id, |
| | | customer_name, |
| | | order_type, |
| | | order_classify, |
| | | batch, |
| | | icon, |
| | | pack_type, |
| | | delivery_date, |
| | | al_type, |
| | | money, |
| | | contract_id, |
| | | customer_batch, |
| | | contacts, |
| | | delivery_address, |
| | | od.processing_note, |
| | | width, |
| | | height, |
| | | od.quantity |
| | | |
| | | from sd.order as o |
| | | left join sd.order_detail as od on o.order_id = od.order_id |
| | | where o.order_id = #{orderId} |
| | | and od.order_number = #{orderNumber} |
| | | |
| | | |
| | | </select> |
| | | |
| | | </mapper> |