Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
| | |
| | | <tr v-for="(itemDatile,index) in item.detailList" :key="index"> |
| | | <td>{{ itemDatile.order_number }}</td> |
| | | <td>{{ itemDatile.mapNumber }}</td> |
| | | <td v-if="name=='金华福喜天成玻璃有限公司'">{{ itemDatile.building_number }}</td> |
| | | <td v-if="name=='金华福喜天成玻璃有限公司' || name=='浙江巨星嘉泰新材料有限公司' ">{{ itemDatile.building_number }}</td> |
| | | <td v-else>{{ itemDatile.s01Value }}</td> |
| | | <td>{{ itemDatile.technology_number }}</td> |
| | | <td>{{ itemDatile.child_width }}</td> |
| | |
| | | |
| | | |
| | | @media print { |
| | | /* 禁用 Chrome 自动页码触发条件 */ |
| | | * { |
| | | overflow: visible !important; |
| | | transform: none !important; |
| | | filter: none !important; |
| | | } |
| | | |
| | | [style*="position: fixed"], |
| | | .fixed, |
| | | .header-fixed { |
| | | position: absolute !important; |
| | | } |
| | | |
| | | |
| | | @page { |
| | | size: auto; /* auto is the initial value */ |
| | | margin: 4mm 5mm 10mm 5mm /* this affects the margin in the printer settings */ |
| | |
| | | |
| | | <tr v-for="(itemDatile,index) in item.detailList" :key="index"> |
| | | <td>{{ itemDatile.order_number }}</td> |
| | | <td>{{ itemDatile.s01Value }}</td> |
| | | <td v-if="name=='金华福喜天成玻璃有限公司' || name=='浙江巨星嘉泰新材料有限公司' ">{{ itemDatile.building_number }}</td> |
| | | <td v-else>{{ itemDatile.s01Value }}</td> |
| | | <td>{{ itemDatile.technology_number }}</td> |
| | | <td>{{ itemDatile.child_width }}</td> |
| | | <td class="item" style="width: 5%;height: 100%;"> |
| | |
| | | </tr> |
| | | <tr v-for="(itemtextareas,index) in item.detail" :key="index"> |
| | | <td colspan="34" rowspan="6" style="width: 99%;height: 150px "> |
| | | <div v-if="name=='浙江巨星嘉泰新材料有限公司'" style="width: 100%;height: 100%;text-align: left"><textarea style="height: 99%;width: 99%;border: none;;font-size: 16px;font-weight: bold;overflow: hidden;text-align: left;vertical-align: middle">{{itemtextareas.processing_note}}</textarea> |
| | | </div> |
| | | <div v-else style="width: 100%;height: 100%;text-align: left"><textarea style="height: 99%;width: 99%;border: none;;font-size: 14px;overflow: hidden;text-align: left;vertical-align: middle">{{itemtextareas.processing_note}}</textarea> |
| | | <div style="width: 100%;height: 100%;text-align: left"> |
| | | <textarea v-if="!company.processFontSize" style="height: 99%;width: 99%;border: none;;font-size: 14px;font-weight: bold;overflow: hidden;text-align: left;vertical-align: middle">{{itemtextareas.processing_note}}</textarea> |
| | | <textarea v-else style="height: 99%;width: 99%;border: none;;font-size: 36px;font-weight: bold;overflow: hidden;text-align: left;vertical-align: middle">{{itemtextareas.processing_note}}</textarea> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | |
| | | isOptimize:'此订单已转优化,回退失败!', |
| | | isReportingWork:'此订单已报工,回退失败!', |
| | | isStorage:'此订单已入库,回退失败!', |
| | | BackSure:"确定一键退回相应流程?" |
| | | BackSure:"确定一键退回相应流程?", |
| | | filterError:'请输入正确格式的筛选条件' |
| | | }, |
| | | updateOrderId:"修改订单号", |
| | | reportingTransfer:'报工转移' |
| | |
| | | isOptimize:'此订单已转优化,回退失败!', |
| | | isReportingWork:'此订单已报工,回退失败!', |
| | | isStorage:'此订单已入库,回退失败!', |
| | | BackSure:"确定一键退回相应流程?" |
| | | BackSure:"确定一键退回相应流程?", |
| | | filterError:'请输入正确格式的筛选条件' |
| | | }, |
| | | updateOrderId:"修改订单号", |
| | | reportingTransfer:'报工转移' |
| | |
| | | isOptimize:'경고! 해당 주문은 최적화되었습니다.되돌릴 수 없습니다!', |
| | | isReportingWork:'작업 실적 등록 완료된 주문은 되돌리기가 제한 됩니다.', |
| | | isStorage:'입고 완료된 주문은 시스템 되돌리기가 불가능 합니다.', |
| | | BackSure:'해당 프로세스를 원클릭으로 되돌리시겠습니까?' |
| | | BackSure:'해당 프로세스를 원클릭으로 되돌리시겠습니까?', |
| | | filterError:'请输入正确格式的筛选条件' |
| | | |
| | | }, |
| | | updateOrderId:'주문 번호 수정', |
| | | reportingTransfer:'작업 실적 이관' |
| | |
| | | isOptimize:'此订单已转优化,回退失败!', |
| | | isReportingWork:'此订单已报工,回退失败!', |
| | | isStorage:'此订单已入库,回退失败!', |
| | | BackSure:"确定一键退回相应流程?" |
| | | BackSure:"确定一键退回相应流程?", |
| | | filterError:'请输入正确格式的筛选条件' |
| | | |
| | | }, |
| | | updateOrderId:"修改订单号", |
| | | reportingTransfer:'报工转移' |
| | |
| | | isOptimize:'此订单已转优化,回退失败!', |
| | | isReportingWork:'此订单已报工,回退失败!', |
| | | isStorage:'此订单已入库,回退失败!', |
| | | BackSure:"确定一键退回相应流程?" |
| | | BackSure:"确定一键退回相应流程?", |
| | | filterError:'请输入正确格式的筛选条件' |
| | | }, |
| | | updateOrderId:"修改订单号", |
| | | reportingTransfer:'报工转移' |
| | |
| | | name: 'selectMachine', |
| | | component: () => import('../views/pp/machine/SelectMachine.vue'), |
| | | }, |
| | | { |
| | | path: 'addMachine', |
| | | name: 'addMachine', |
| | | component: () => import('../views/pp/machine/AddMachine.vue'), |
| | | }, |
| | | |
| | | { |
| | | path: 'maintenanceAndRepair', |
| | | name: 'maintenanceAndRepair', |
| | |
| | | component: () => import('../views/pp/productionBasicData/AddTeamGroup.vue'), |
| | | }, |
| | | { |
| | | path: 'addMachine', |
| | | name: 'addMachine', |
| | | component: () => import('../views/pp/productionBasicData/AddMachine.vue'), |
| | | }, |
| | | { |
| | | path: '', |
| | | redirect:'/main/productionBasicData/selectProductionBasicData' |
| | | } |
| | |
| | | [ |
| | | {code: 'selectTrimming', name: '设置统一修边',prefixIcon: 'vxe-icon-edit'}, |
| | | {code: 'Exports', name: '数据导出', prefixIcon: 'vxe-icon-download', visible: true, disabled: false}, |
| | | {code: 'addRow', name: t('basicData.add'), prefixIcon: 'vxe-icon-square-plus', visible: true, disabled: true }, |
| | | {code: 'addRow', name: '添加原片', prefixIcon: 'vxe-icon-square-plus', visible: true, disabled: true }, |
| | | ], |
| | | ] |
| | | }, |
| | |
| | | return bestFit;
|
| | | };
|
| | |
|
| | | const isSelected = (layoutIndex, rectIndex) => {
|
| | | return focusIndex.value &&
|
| | | focusIndex.value.layoutIndex === layoutIndex &&
|
| | | focusIndex.value.rectIndex === rectIndex;
|
| | | };
|
| | |
|
| | | //版图内容样式加载
|
| | | const layoutContainerStyle = (layoutIndex) => {
|
| | | const layout = layouts.value[layoutIndex];
|
| | |
| | | //版图内容小片样式加载
|
| | | const rectStyle = (glassDetail, layoutIndex) => {
|
| | | const layout = layouts.value[layoutIndex];
|
| | | const scale = Math.min(0.25
|
| | | );
|
| | | return {
|
| | | const scale = Math.min(0.25);
|
| | | const isSelectedRect = isSelected(layoutIndex, layout.glassDetails.indexOf(glassDetail));
|
| | |
|
| | | let style = {
|
| | | position: 'absolute',
|
| | | left: `${glassDetail.x * scale}px`,
|
| | | top: `${glassDetail.y * scale}px`,
|
| | |
| | | draggable: !glassDetail.isRemain,
|
| | | zIndex: glassDetail.isRemain ? 1 : 2
|
| | | };
|
| | |
|
| | | // 如果被选中,则添加内侧红框
|
| | | if (isSelectedRect) {
|
| | | style.boxShadow = 'inset 0 0 0 2px red';
|
| | | }
|
| | |
|
| | | return style;
|
| | | };
|
| | |
|
| | | const rectStyle1 = (glassDetail, layoutIndex) => {
|
| | | const layout = layouts.value[layoutIndex];
|
| | | const scale = Math.min(0.25
|
| | | );
|
| | | return {
|
| | | const scale = Math.min(0.25);
|
| | | const isSelectedRect = isSelected(layoutIndex, layout.glassDetails.indexOf(glassDetail));
|
| | |
|
| | | let style = {
|
| | | position: 'absolute',
|
| | | left: `${glassDetail.x * scale}px`,
|
| | | top: `${glassDetail.y * scale}px`,
|
| | |
| | | draggable: !glassDetail.isRemain,
|
| | | zIndex: glassDetail.isRemain ? 1 : 2
|
| | | };
|
| | |
|
| | | // 如果被选中,则添加内侧红框
|
| | | if (isSelectedRect) {
|
| | | style.boxShadow = 'inset 0 0 0 2px red';
|
| | | }
|
| | |
|
| | | return style;
|
| | | };
|
| | |
|
| | | //点击小片
|
| | |
| | | const handleRectRightClick = (layoutIndex, rectIndex) => {
|
| | | const glassDetail = layouts.value[layoutIndex].glassDetails[rectIndex];
|
| | | if (glassDetail.isRemain) return;
|
| | | document.querySelectorAll('.context-menu').forEach(el => el.remove());
|
| | |
|
| | | const contextMenu = document.createElement('div');
|
| | | contextMenu.className = 'context-menu';
|
| | | contextMenu.style.position = 'absolute';
|
| | | contextMenu.style.left = `${event.clientX}px`;
|
| | | contextMenu.style.bottom = `${event.clientY}px`;
|
| | | contextMenu.style.top = `${event.clientY}px`;
|
| | | contextMenu.style.backgroundColor = '#fff';
|
| | | contextMenu.style.border = '1px solid #ccc';
|
| | | contextMenu.style.padding = '5px';
|
| | |
| | | const handleGrayRectRightClick = (layoutIndex, rectIndex,glassDetails) => {
|
| | | //const glassDetail = glassDetails[rectIndex];
|
| | | if (!glassDetails.isRemain) return;
|
| | | document.querySelectorAll('.context-menu').forEach(el => el.remove());
|
| | |
|
| | | const contextMenu = document.createElement('div');
|
| | | contextMenu.className = 'context-menu';
|
| | | contextMenu.style.position = 'absolute';
|
| | | contextMenu.style.left = `${event.clientX}px`;
|
| | | contextMenu.style.bottom = `${event.clientY}px`;
|
| | | contextMenu.style.top = `${event.clientY}px`;
|
| | | contextMenu.style.backgroundColor = '#fff';
|
| | | contextMenu.style.border = '1px solid #ccc';
|
| | | contextMenu.style.padding = '5px';
|
| | |
| | | <div id="div-title"> |
| | | <el-breadcrumb :separator-icon="ArrowRight"> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/machine/selectMachine' }">{{$t('machine.equipmentSituation')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/machine/addMachine' }">{{$t('machine.equipmentAddition')}}</el-breadcrumb-item> |
| | | <!-- <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/machine/addMachine' }">{{$t('machine.equipmentAddition')}}</el-breadcrumb-item>--> |
| | | <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/machine/maintenanceAndRepair' }">{{$t('machine.maintenanceAndRepair')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/machine/addMaintenanceAndRepair' }">{{$t('machine.maintenanceAndRepairAddition')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item style="display: none" /> |
| File was renamed from north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue |
| | |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | //router.push('/main/processCard/SplittingDetails?orderId=${orderId}') |
| | | router.push({ |
| | | path: '/main/machine/AddMachine', |
| | | path: '/main/productionBasicData/AddMachine', |
| | | query: {random: Math.random()} |
| | | }) |
| | | |
| | |
| | | <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/productionBasicData/addBreakageType' }">{{$t('productionBasicData.newTypeOfSecondaryDamageAdded')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/productionBasicData/addBreakageReason' }">{{$t('productionBasicData.reasonForSecondaryFailureAdded')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/productionBasicData/addTeamGroup' }">{{$t('productionBasicData.teamAdditionAndAddition')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(5)" :class="indexFlag===5?'indexTag':''" :to="{ path: '/main/productionBasicData/addMachine' }">{{$t('machine.equipmentAddition')}}</el-breadcrumb-item> |
| | | <!-- <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/productionBasicData/AddMaintenanceAndRepair' }">班组人员新增新增</el-breadcrumb-item>--> |
| | | <el-breadcrumb-item style="display: none" /> |
| | | </el-breadcrumb> |
| | |
| | | } |
| | | |
| | | printRow.value.list = JSON.stringify(selectRecords) |
| | | console.log(printRow.value.list) |
| | | printRow.value.printMergeVal=printMerge.value |
| | | printRow.value.mergeTechnologyNumber=technologyNumber |
| | | // router.push({path: '/main/processCard/printProcess', query: {printList: JSON.stringify(selectRecords),printMerge:printMergeVal}}) |
| | |
| | | } |
| | | } |
| | | }, |
| | | cellDblclick (params) {//表格内容双击打开产品界面 |
| | | cellDblclick (params) {//表格内容双击打开次破界面 |
| | | const { row } = params |
| | | brokenRow.value = row |
| | | if(brokenRow.value.damageDetails=== undefined){ |
| | |
| | | } |
| | | } |
| | | } |
| | | const openedBrokenTable = () => { |
| | | const openedBrokenTable = async () => { |
| | | await nextTick() |
| | | console.log('breakageType:', titleSelectJson.value.breakageType) |
| | | console.log('breakageReason:', titleSelectJson.value.breakageReason) |
| | | //addListener(brokenGrid.value,brokenGridOptions) |
| | | let damage =ref(brokenRow.value.damageDetails) |
| | | brokenGrid.value.reloadData(damage.value) |
| | |
| | | pageNum.value=1 |
| | | orderList.value = deepClone(res.data.data) |
| | | xGrid.value.loadData(orderList.value) |
| | | gridOptions.loading=false |
| | | |
| | | orderInfo.searchOrderFilter.list = xGrid.value.getCheckedFilters() |
| | | orderInfo.searchOrderFilter.data = filterData.value |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }).catch(e => { |
| | | xGrid.value.clearFilter() |
| | | orderInfo.searchOrderFilter.data = {} |
| | | ElMessage.error(t('searchOrder.msgList.filterError')) |
| | | }).finally(()=>{ |
| | | gridOptions.loading=false |
| | | }) |
| | | } |
| | | |
| | |
| | | |
| | | @ApiOperation("可入库的成品查询接口") |
| | | @PostMapping("/getSelectWarehousingList") |
| | | public Result getSelectWarehousingList(@RequestBody String processId){ |
| | | return Result.success(finishedGoodsInventoryService.getSelectWarehousingApp(processId)); |
| | | public Result getSelectWarehousingList(@RequestBody Map<String,String> map){ |
| | | return Result.success(finishedGoodsInventoryService.getSelectWarehousingApp(map.get("processId"))); |
| | | } |
| | | |
| | | @ApiOperation("成品入库接口") |
| | |
| | | @ExcelProperty("订单类型") |
| | | private String orderType; |
| | | @ExcelProperty("在制品厚度") |
| | | private String thicknessSum; |
| | | private Double thicknessSum; |
| | | @ExcelProperty("平方毫米") |
| | | private String thicknessArea; |
| | | private Double thicknessArea; |
| | | } |
| | |
| | | }); |
| | | } |
| | | map.put("Detail",details ); |
| | | // }else { |
| | | // //不是第一道工序,查询报工数据 |
| | | // List<Map<String,String>> details = reportingWorkMapper.SelectReworlDetailMpReview(processIdStr, technologyStr, process,previousProcess,laminating); |
| | | // if(process.equals("中空")){ |
| | | // String orderId = reportingWorkMapper.selectOrderid(processIdStr); |
| | | // details.forEach( detail -> { |
| | | // Integer glassId = orderGlassDetailMapper. |
| | | // getMinIdByGroup(orderId, |
| | | // String.valueOf(detail.get("order_number")), |
| | | // String.valueOf(detail.get("group"))); |
| | | // int listGlassId = Integer.parseInt(String.valueOf(detail.get("glassId"))); |
| | | // if(listGlassId !=glassId){ |
| | | // detail.put("rowClass","latter"); |
| | | // } |
| | | // }); |
| | | // } |
| | | // map.put("Detail",details ); |
| | | // } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | pl.patch_reason, |
| | | pl.patch_processes, |
| | | pl.responsible_team, |
| | | pl.responsible_personnel |
| | | pl.responsible_personnel, |
| | | od.building_number |
| | | from flow_card as fc |
| | | left join sd.order_glass_detail as ogd |
| | | on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and |
| | |
| | | layer, |
| | | o_width, |
| | | o_height, |
| | | rack_no |
| | | REPLACE(REPLACE(rack_no, '+', ''), '#', '') |
| | | ORDER BY |
| | | o_width, |
| | | o_height |
| | |
| | | </select> |
| | | |
| | | <select id="teamOutputMp" resultMap="teamOutputMap"> |
| | | |
| | | SELECT |
| | | t.*, |
| | | -- 玻璃总厚度(mm) |
| | |
| | | </if> |
| | | HAVING 1 = 1 |
| | | <if test="teamOutputDTO.thicknessSum != null and teamOutputDTO.thicknessSum != ''"> |
| | | AND thicknessSum REGEXP #{teamOutputDTO.thicknessSum} |
| | | and thicknessSum regexp REGEXP_REPLACE(#{teamOutputDTO.thicknessSum},'\\.0+$','') |
| | | </if> |
| | | ORDER BY |
| | | t.this_process, |
| | |
| | | |
| | | <select id="exportTeamOutputMp"> |
| | | SELECT |
| | | t.*, |
| | | -- 玻璃总厚度(mm) |
| | | ( |
| | | SELECT SUM(CAST(REGEXP_SUBSTR(seg, '^[0-9]+') AS UNSIGNED)) |
| | | FROM JSON_TABLE( |
| | | CONCAT('["', REPLACE(t.workProcessName, '+', '","'), '"]'), |
| | | '$[*]' COLUMNS (seg VARCHAR(100) PATH '$') |
| | | ) jt |
| | | ) AS thicknessSum, |
| | | ROUND( |
| | | ( |
| | | SELECT SUM(CAST(REGEXP_SUBSTR(seg, '^[0-9]+') AS UNSIGNED)) |
| | | FROM JSON_TABLE( |
| | | CONCAT('["', REPLACE(t.workProcessName, '+', '","'), '"]'), |
| | | '$[*]' COLUMNS (seg VARCHAR(100) PATH '$') |
| | | ) jt2 |
| | | ) * t.area, |
| | | 2 |
| | | ) AS thicknessArea |
| | | FROM |
| | | ( |
| | | SELECT |
| | | rw.reporting_work_time, |
| | | rw.this_process, |
| | | rw.teams_groups_name, |
| | | o.project, |
| | | o.order_id, |
| | | rw.process_id, |
| | | fc.order_number, |
| | | MAX( ogd.child_width ) as width, |
| | | MAX( ogd.child_height ) as height, |
| | | MAX(ogd.child_width) AS width, |
| | | MAX(ogd.child_height) AS height, |
| | | od.edging_type, |
| | | rwd.completed_quantity as completed_quantity, |
| | | ROUND(MAX( ogd.child_width )*MAX( ogd.child_height )*rwd.completed_quantity/1000000,2) as area, |
| | | rwd.completed_quantity AS completed_quantity, |
| | | ROUND(MAX(ogd.child_width) * MAX(ogd.child_height) * rwd.completed_quantity / 1000000, 2) AS area, |
| | | od.product_name, |
| | | JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS code, |
| | | rw.reviewed, |
| | | rw.examine_time, |
| | | rw.device_name, |
| | | o.order_type, |
| | | -- GROUP_CONCAT(ogd.glass_child SEPARATOR '+') as workProcessName |
| | | CASE |
| | | WHEN LOCATE('step',#{laminating})>0 THEN GROUP_CONCAT(ogd.glass_child SEPARATOR '+') |
| | | ELSE MAX( ogd.glass_child ) |
| | | END AS workProcessName, |
| | | o.batch |
| | | FROM |
| | | reporting_work as rw left join reporting_work_detail as rwd on rwd.reporting_work_id=rw.reporting_work_id |
| | | left join flow_card as fc on fc.order_id=rw.order_id and fc.process_id=rw.process_id and fc.order_number=rwd.order_number and fc.technology_number=rwd.technology_number |
| | | left join sd.order_glass_detail as ogd on ogd.order_id=fc.order_id and ogd.order_number=fc.order_number and ogd.technology_number=fc.technology_number |
| | | left join sd.order_detail as od on od.order_id=ogd.order_id and od.order_number=ogd.order_number |
| | | left join sd.`order` as o on o.order_id=od.order_id |
| | | where o.create_order>0 and rw.reviewed_state>=0 and rwd.completed_quantity>0 and |
| | | rw.reporting_work_time >= #{date[0]} |
| | | pp.reporting_work AS rw |
| | | LEFT JOIN pp.reporting_work_detail AS rwd |
| | | ON rwd.reporting_work_id = rw.reporting_work_id |
| | | LEFT JOIN pp.flow_card AS fc |
| | | ON fc.order_id = rw.order_id |
| | | AND fc.process_id = rw.process_id |
| | | AND fc.order_number = rwd.order_number |
| | | AND fc.technology_number = rwd.technology_number |
| | | LEFT JOIN sd.order_glass_detail AS ogd |
| | | ON ogd.order_id = fc.order_id |
| | | AND ogd.order_number = fc.order_number |
| | | AND ogd.technology_number = fc.technology_number |
| | | LEFT JOIN sd.order_detail AS od |
| | | ON od.order_id = ogd.order_id |
| | | AND od.order_number = ogd.order_number |
| | | LEFT JOIN sd.`order` AS o |
| | | ON o.order_id = od.order_id |
| | | WHERE |
| | | o.create_order > 0 |
| | | AND rw.reviewed_state >= 0 |
| | | AND rwd.completed_quantity > 0 |
| | | AND rw.reporting_work_time >= #{date[0]} |
| | | AND rw.reporting_work_time < #{date[1]} |
| | | and position(#{process} in rw.this_process) |
| | | <choose> |
| | | <!-- 有传工序:精确匹配 --> |
| | | <when test="process != null and process != ''"> |
| | | AND rw.this_process = #{process} |
| | | </when> |
| | | <!-- 未传工序:不加限制,查所有) --> |
| | | <otherwise> |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="laminating == ''"> |
| | | GROUP BY |
| | |
| | | rwd.order_number |
| | | </otherwise> |
| | | </choose> |
| | | ) t |
| | | ORDER BY |
| | | rw.this_process, |
| | | rw.process_id, |
| | | rwd.order_number, |
| | | rw.reporting_work_time, |
| | | rw.teams_groups_name |
| | | t.this_process, |
| | | t.process_id, |
| | | t.order_number, |
| | | t.reporting_work_time, |
| | | t.teams_groups_name |
| | | </select> |
| | | |
| | | <select id="teamOutputPageTotal"> |
| | |
| | | ) x |
| | | WHERE 1 = 1 |
| | | <if test="teamOutputDTO.thicknessSum != null and teamOutputDTO.thicknessSum != ''"> |
| | | AND x.thicknessSum REGEXP #{teamOutputDTO.thicknessSum} |
| | | and thicknessSum regexp REGEXP_REPLACE(#{teamOutputDTO.thicknessSum},'\\.0+$','') |
| | | </if> |
| | | <if test="teamOutputDTO.thicknessArea != null and teamOutputDTO.thicknessArea != ''"> |
| | | AND x.thicknessArea REGEXP #{teamOutputDTO.thicknessArea} |
| | |
| | | ) x |
| | | WHERE 1 = 1 |
| | | <if test="teamOutputDTO.thicknessSum != null and teamOutputDTO.thicknessSum != ''"> |
| | | AND x.thicknessSum REGEXP #{teamOutputDTO.thicknessSum} |
| | | and thicknessSum regexp REGEXP_REPLACE(#{teamOutputDTO.thicknessSum},'\\.0+$','') |
| | | </if> |
| | | <if test="teamOutputDTO.thicknessArea != null and teamOutputDTO.thicknessArea != ''"> |
| | | AND x.thicknessArea REGEXP #{teamOutputDTO.thicknessArea} |