流程卡修改样式,成品便签添加根据编号一键修改,修改流程卡排序方式,添加配置是否查询样品订单
| | |
| | | // 获取前缀和 orderId |
| | | const prefix = obj.processId.substring(0, 11); |
| | | const orderId = obj.orderId; |
| | | const glassNumber=obj.glassNumber |
| | | |
| | | // 根据 propertyName 更新属性 |
| | | if (propertyName === 'productAbbreviation' && prefix === obj.processId.substring(0, 11)) { |
| | |
| | | if (propertyName === 'project' && orderId === obj.orderId) { |
| | | obj.project = result; |
| | | } |
| | | |
| | | if (propertyName === 'productName' && glassNumber === obj.glassNumber){ |
| | | obj.productName = result; |
| | | } |
| | | }); |
| | | } |
| | | |
| | |
| | | <table v-for="(item,id) in produceList" id="contentTable" :key="id"> |
| | | <thead> |
| | | <tr v-for="(itemFlow,index) in item.detail" :key="index"> |
| | | <td v-if="like='1'" colspan="26"> |
| | | <td v-if="like='1'" colspan="29"> |
| | | <div style="float: left;"><input style="border: none;font-size: 28px;width: 70px;margin: 5px "/></div> |
| | | <div id="bj" style="float: right;font-size: 28px">{{ id + 1 }}</div> |
| | | <div>{{ company.companyName }}</div> |
| | | <div>生产流程卡</div> |
| | | <div v-if="itemFlow.technologyNumberMerge!=''" style="text-align: right;font-weight: bolder">流程卡号: {{ |
| | | <div v-if="itemFlow.technologyNumberMerge!=''" style="text-align: right;font-weight: bolder"> |
| | | {{itemFlow.otherRemarks}} |
| | | 流程卡号: {{ |
| | | itemFlow.process_id |
| | | }}/{{ itemFlow.technologyNumberMerge }} 共 {{ flowCardCount }} 架 |
| | | </div> |
| | | <div v-else style="text-align: right;font-weight: bolder">流程卡号: {{ |
| | | <div v-else style="text-align: right;font-weight: bolder"> |
| | | {{itemFlow.otherRemarks}} |
| | | 流程卡号: {{ |
| | | itemFlow.process_id |
| | | }}/{{ itemFlow.technologyNumber }} 共 {{ flowCardCount }} 架 |
| | | </div> |
| | |
| | | <td class="tdNowrap">项目名称:</td> |
| | | <td colspan="2">{{ items.project }}</td> |
| | | <td class="tdNowrap">工艺流程:</td> |
| | | <td colspan="19" v-if="like='1'" style="width: 500px">{{ items.process }}</td> |
| | | <td colspan="17" v-else style="width: 500px">{{ items.process }}</td> |
| | | <td colspan="22" v-if="like='1'" style="width: 500px">{{ items.process }}</td> |
| | | <td colspan="20" v-else style="width: 500px">{{ items.process }}</td> |
| | | </tr> |
| | | <tr v-for="(itemTr,index) in item.detail" :key="index"> |
| | | <td class="tdNowrap">磨边类型:</td> |
| | |
| | | <td class="tdNowrap">单片名称:</td> |
| | | <td colspan="2">{{ itemTr.glass_child }}</td> |
| | | <td class="tdNowrap">产品名称:</td> |
| | | <td v-if="like=='1'" colspan="19">{{ itemTr.product_name }}</td> |
| | | <td v-else colspan="17">{{ itemTr.product_name }}</td> |
| | | <td v-if="like=='1'" colspan="22">{{ itemTr.product_name }}</td> |
| | | <td v-else colspan="20">{{ itemTr.product_name }}</td> |
| | | </tr> |
| | | <tr> |
| | | <td rowspan='2'>序号</td> |
| | | <td rowspan='2'>编号</td> |
| | | <td v-if="like!=null" rowspan="2">小片顺序</td> |
| | | <td v-else style="display: none;" rowspan="2">小片顺序</td> |
| | | <td rowspan='2'>宽*高</td> |
| | | <td rowspan='2' style="width: 90px">宽*高</td> |
| | | <td rowspan='2'>数量</td> |
| | | <td rowspan='2'>面积</td> |
| | | <td rowspan='2'>周长</td> |
| | |
| | | </tr> |
| | | <tr> |
| | | |
| | | <td>{{ company.printLabel.printFlowCard.patch }}</td> |
| | | <td>{{ company.printLabel.printFlowCard.lackOf }}</td> |
| | | <td>{{ company.printLabel.printFlowCard.patch }}</td> |
| | | <td>{{ company.printLabel.printFlowCard.lackOf }}</td> |
| | | <td>{{ company.printLabel.printFlowCard.patch }}</td> |
| | | <td>{{ company.printLabel.printFlowCard.lackOf }}</td> |
| | | <td>{{ company.printLabel.printFlowCard.patch }}</td> |
| | |
| | | <td></td> |
| | | <td></td> |
| | | <td></td> |
| | | <td></td> |
| | | <td></td> |
| | | <td></td> |
| | | </tr> |
| | | </tbody> |
| | | <tfoot> |
| | | <tr style="height: 14px"> |
| | | <td v-for="(itemsum,index) in item.detail" :key="index" colspan="26"> |
| | | <td v-for="(itemsum,index) in item.detail" :key="index" colspan="29"> |
| | | 数量: |
| | | <label>{{ itemsum.quantity }}</label> |
| | | 面积: |
| | |
| | | </td> |
| | | </tr> |
| | | <tr v-for="(itemtextarea,index) in item.detail" :key="index"> |
| | | <td v-if="like='1'" colspan="4" rowspan="6" style="width: 480px;height: 100px "> |
| | | <div style="width: 100%;height: 100%;"><textarea style="height: 99%;width: 99%;border: none;;font-size: 11px">{{itemtextarea.otherRemarks}}</textarea> |
| | | </div> |
| | | </td> |
| | | <td v-else colspan="6" rowspan="2" style="width: 480px;height: 100px "> |
| | | <!-- <div style="width: 100%;height: 100%"><textarea style="height: 99%;width: 99%;font-size: 11px">{{ itemtextarea.processing_note }}</textarea>--> |
| | | <!-- </div>--> |
| | | <div style="width: 100%;height: 100%;"><textarea style="height: 99%;width: 99%;border: none;;font-size: 11px">{{itemtextarea.otherRemarks}}</textarea> |
| | | </div> |
| | | </td> |
| | | |
| | | <td>完工签名</td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | </tr> |
| | | <tr> |
| | | <td>质检签名</td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2">生产签名</td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | | <td colspan="2"></td> |
| | |
| | | </tr> |
| | | <tr> |
| | | <td>原片箱号</td> |
| | | <td colspan="20"></td> |
| | | <td colspan="28"></td> |
| | | </tr> |
| | | <tr v-for="(qrCodeItem,index) in item.detail" :key="index"> |
| | | <td colspan="23"> |
| | | <td colspan="29"> |
| | | <span style="display: flex;"> |
| | | <span v-for="(qrCodeItems,index) in qrCodeItem.qrcodeList" :key="index" style="display: flex;width: 35%"> |
| | | <div class='qrCode' style="width: 80px;height: 80px;"> |
| | |
| | | </span> |
| | | </td> |
| | | |
| | | </tr> |
| | | <tr v-for="(itemtextareas,index) in item.detail" :key="index"> |
| | | <td v-if="like='1'" colspan="29" rowspan="6" style="width: 480px;height: 150px "> |
| | | <div style="width: 100%;height: 100%;"><textarea style="height: 99%;width: 99%;border: none;;font-size: 12px">{{itemtextareas.processing_note}}</textarea> |
| | | </div> |
| | | </td> |
| | | <td v-else colspan="29" rowspan="2" style="width: 480px;height: 150px "> |
| | | <!-- <div style="width: 100%;height: 100%"><textarea style="height: 99%;width: 99%;font-size: 11px">{{ itemtextarea.processing_note }}</textarea>--> |
| | | <!-- </div>--> |
| | | <div style="width: 100%;height: 100%;"><textarea style="height: 99%;width: 99%;border: none;;font-size: 12px">{{itemtextareas.processing_note}}</textarea> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | </tfoot> |
| | | </table> |
| | |
| | | } |
| | | |
| | | .tdNowrap { |
| | | white-space: nowrap; |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | input{ |
| | | font-weight: bolder; |
| | | border: none; |
| | | } |
| | | |
| | | |
| | | @page { |
| | | size: auto; /* auto is the initial value */ |
| | | margin: 2mm 2mm 0mm 1mm /* this affects the margin in the printer settings */ |
| | | |
| | | } |
| | | |
| | | @media print { |
| | | @page { |
| | | size: auto; /* auto is the initial value */ |
| | | margin: 4mm 5mm 0mm 5mm /* this affects the margin in the printer settings */ |
| | | |
| | | } |
| | | |
| | | table { |
| | | page-break-before: always; |
| | | page-break-inside: auto; |
| | |
| | | let router = useRouter() |
| | | let props = defineProps({ |
| | | processId:null, |
| | | technologyNumber:null |
| | | technologyNumber:null, |
| | | process:null |
| | | }) |
| | | domZindex.setCurrent(3000) |
| | | |
| | |
| | | }) |
| | | |
| | | //第一次加载数据 |
| | | request.post(`/processCard/printFlowCardDetails/${props.processId}/${props.technologyNumber}`,filterData.value).then((res) => { |
| | | request.post(`/processCard/printFlowCardDetails/${props.processId}/${props.technologyNumber}/${props.process}`,filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | produceDetailList.value = (res.data.data) |
| | | xGridDetail.value.reloadData(produceDetailList.value) |
| | |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'process', |
| | | title: t('craft.process'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | |
| | | ], |
| | | //表单验证 |
| | |
| | | //排序 |
| | | let editRow = ref({ |
| | | processId: null, |
| | | technologyNumber: null |
| | | technologyNumber: null, |
| | | process:null |
| | | }) |
| | | |
| | | //打印 |
| | |
| | | case 'edit' : { |
| | | editRow.value.processId = row.process_id |
| | | editRow.value.technologyNumber = row.technology_number |
| | | editRow.value.process = row.process |
| | | printVisible.value = true |
| | | |
| | | // router.push({path: '/sort-detail', query: {processId: row.process_id,technologyNumber:row.technology_number}}) |
| | |
| | | :title="$t('processCard.processCardDetails')" |
| | | destroy-on-close |
| | | style="width: 80%;height:75% "> |
| | | <sort-detail id="child" :processId="editRow.processId" :technologyNumber="editRow.technologyNumber"/> |
| | | <sort-detail id="child" :processId="editRow.processId" :technologyNumber="editRow.technologyNumber" :process="editRow.process"/> |
| | | </el-dialog> |
| | | |
| | | |
| | |
| | | }) |
| | | |
| | | //工序 |
| | | const value = ref() |
| | | const procseeValue = ref() |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | |
| | | form.date1 = getNowTime() |
| | | let startTime = form.date1[0] |
| | | let endTime = form.date1[1] |
| | | let selectProcesses = value.value |
| | | let selectProcesses = procseeValue.value |
| | | |
| | | let total = reactive({ |
| | | pageTotal: 0, |
| | |
| | | |
| | | let startTime = form.date1[0] |
| | | let endTime = form.date1[1] |
| | | let selectProcesses = value.value |
| | | let selectProcesses = procseeValue.value |
| | | |
| | | request.post(`/report/teamOutput/${pageNum.value}/${total.pageSize}/${startTime}/${endTime}/${selectProcesses}`, filterData.value).then((res) => { |
| | | |
| | |
| | | } |
| | | |
| | | function filterChanged(column){ |
| | | let selectProcesses = procseeValue.value |
| | | //gridOptions.loading=true |
| | | //筛选条件发生变化条件发生变化 |
| | | let value = column.datas[0]!=undefined?column.datas[0]:'' |
| | |
| | | |
| | | let startTime = form.date1[0] |
| | | let endTime = form.date1[1] |
| | | console.log(selectProcesses) |
| | | request.post(`/report/teamOutput/1/${total.pageSize}/${startTime}/${endTime}/${selectProcesses}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | |
| | | {field: 'width', width: 100, title: t('order.width')}, |
| | | {field: 'height', width: 100, title: t('order.height')}, |
| | | {field: 'shape', width: 90, title: t('order.shape')}, |
| | | {field: 'thickness', width: 90, title: t('order.totalThickness'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'thickness', width: 90, title: t('order.totalThickness')}, |
| | | {field: 'edgingType', width: 110, title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'completedQuantity', width: 90, title: t('reportingWorks.completedQuantity')}, |
| | | {field: 'area', width: 100, title: t('reportingWorks.completedArea')}, |
| | |
| | | }) |
| | | |
| | | function exportExcel(url, fileName,date) { |
| | | let processes = value.value |
| | | let processes = procseeValue.value |
| | | if(date===null){ |
| | | ElMessage.warning(t('report.pleaseSelectADateFirst')) |
| | | return |
| | |
| | | value-format="YYYY-MM-DD" |
| | | /> |
| | | |
| | | <el-select v-model="value" clearable default-value="default_city" style="width: 120px"> |
| | | <el-select v-model="procseeValue" clearable default-value="default_city" style="width: 120px"> |
| | | <el-option |
| | | v-for="item in titleSelectJson['processType']" |
| | | :key="item.id" |
| | |
| | | class="mytable-scrollbar" |
| | | height="100%" |
| | | v-bind="gridOptions" |
| | | @filter-change="filterChanged" |
| | | |
| | | > |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | |
| | | :layouts="[ 'PrevPage', 'Jump','PageCount', 'NextPage', 'Total']" |
| | | :total="total.dataTotal" |
| | | @page-change="handlePageChange" |
| | | |
| | | > |
| | | </vxe-pager> |
| | | </template> |
| | |
| | | import userInfo from "@/stores/userInfo" |
| | | import { useI18n } from 'vue-i18n' |
| | | import footSum from "@/hook/footSum" |
| | | import companyInfo from "@/stores/sd/companyInfo" |
| | | domZIndex.setCurrent(3000) |
| | | const company = companyInfo() |
| | | //语言获取 |
| | | const { t } = useI18n() |
| | | let brokenVisible = ref(false) |
| | |
| | | //流程卡号 |
| | | let processIdStr = result[1]; |
| | | //层号 |
| | | |
| | | let technologyStr = result[2]; |
| | | request.post(`/reportingWork/addSelectLastWork/${processIdStr}/${technologyStr}/${process}`).then((res) => { |
| | | |
| | | let reportType= company.reportType |
| | | console.log(reportType) |
| | | request.post(`/reportingWork/addSelectLastWork/${processIdStr}/${technologyStr}/${process}/${reportType}`).then((res) => { |
| | | if (res.code == 200) { |
| | | if(res.data.data==null){ |
| | | ElMessage.error(t('reportingWorks.noDataThisProcessCard')) |
| | |
| | | } |
| | | |
| | | @ApiOperation("流程卡打印明细数据排序查询接口") |
| | | @PostMapping("/printFlowCardDetails/{processId}/{technologyNumber}") |
| | | @PostMapping("/printFlowCardDetails/{processId}/{technologyNumber}/{process}") |
| | | public Result printFlowCardDetails(@PathVariable String processId, |
| | | @PathVariable String technologyNumber, |
| | | @PathVariable String process, |
| | | @RequestBody FlowCard flowCard) { |
| | | return Result.seccess(flowCardService.printFlowCardDetailsSv(processId, technologyNumber, flowCard)); |
| | | return Result.seccess(flowCardService.printFlowCardDetailsSv(processId, technologyNumber,process, flowCard)); |
| | | } |
| | | |
| | | @ApiOperation("保存打印排序接口") |
| | |
| | | |
| | | } |
| | | |
| | | @ApiOperation("订单排产计划") |
| | | @ApiOperation("订单排产计划导出") |
| | | @PostMapping("/exportScheduleReport") |
| | | public void exportScheduleReport(HttpServletResponse response, |
| | | @RequestBody Map<String, Object> dates |
| | | ) throws IOException, IllegalAccessException, InstantiationException { |
| | | //参数:相应的数据,实体类信息,相应的方法(数据获取),生成的excel名字 |
| | | System.out.println(dates); |
| | | DownExcel.download(response, ScheduleProductionScheduleDTO.class, reportService.exportScheduleReportSv(dates), "ScheduleProduction"); |
| | | } |
| | | |
| | | @ApiOperation("班组产量导出") |
| | | @PostMapping("/exportTeamOutput") |
| | | public void exportTeamOutput(HttpServletResponse response, |
| | | @RequestBody Map<String, Object> dates |
| | | ) throws IOException, IllegalAccessException, InstantiationException { |
| | | //参数:相应的数据,实体类信息,相应的方法(数据获取),生成的excel名字 |
| | | DownExcel.download(response, TeamOutputDTO.class, reportService.exportTeamOutputSv(dates), "TeamOutput"); |
| | | } |
| | | } |
| | |
| | | |
| | | @ApiOperation("报工新增查询") |
| | | @SaCheckPermission("AddReportingWork.search") |
| | | @PostMapping ("/addSelectLastWork/{processIdStr}/{technologyStr}/{process}") |
| | | @PostMapping ("/addSelectLastWork/{processIdStr}/{technologyStr}/{process}/{reportType}") |
| | | public Result AddSelectLastWork( |
| | | @PathVariable String processIdStr, |
| | | @PathVariable String technologyStr, |
| | | @PathVariable String process) { |
| | | return Result.seccess(reportingWorkService.AddSelectLastWorkSv(processIdStr,technologyStr,process)); |
| | | @PathVariable String process, |
| | | @PathVariable String reportType) { |
| | | return Result.seccess(reportingWorkService.AddSelectLastWorkSv(processIdStr,technologyStr,process,reportType)); |
| | | } |
| | | @ApiOperation("查询工序") |
| | | @PostMapping ("/selectProcess") |
| | |
| | | |
| | | List<Map<String, String>> getPrintLabel1(String processId,Integer technologyNumber); |
| | | |
| | | List<Map<String, String>> printFlowCardDetailsMp(String processId, String technologyNumber, FlowCard flowCard); |
| | | List<Map<String, String>> printFlowCardDetailsMp(String processId, String technologyNumber, String process, FlowCard flowCard); |
| | | |
| | | Boolean printSortMp(String processId, Integer orderNumber, Integer technologyNumber, Integer sort); |
| | | |
| | |
| | | |
| | | List<Map<String, String>> selectReworkPrintMp(Date selectTime1, Date selectTime2, FlowCard flowCard); |
| | | |
| | | List<Map<String, Object>> getDetailListLike(String processId, String technologyNumber); |
| | | List<Map<String, Object>> getDetailListLike(String processId, String technologyNumber, String process); |
| | | |
| | | List<Map<String, String>> getPrimaryListMergeRefund(String processId, String technologyNumber, Integer orderNumber); |
| | | |
| | |
| | | List<Map<String, String>> getRepairPrintCustomDataSemi(String processId, Integer technologyNumber, String reportingWorkId); |
| | | |
| | | List<Map<String, String>> selectPrintAllMp(String orderId); |
| | | |
| | | Boolean printAddSortMp(String processId, Integer orderNumber, Integer technologyNumber, Integer sort, String process); |
| | | |
| | | Integer printAddSortCountMp(String processId, Integer orderNumber, Integer technologyNumber, Integer sort, String process); |
| | | |
| | | Boolean printUpdateSortMp(String processId, Integer orderNumber, Integer technologyNumber, Integer sort, String process); |
| | | } |
| | |
| | | |
| | | Map<String, Integer> workInProgressTotal(Integer offset, Integer pageSize, String orderId, String inputProject, String selectProcesses, WorkInProgressDTO workInProgressDTO); |
| | | |
| | | List<TeamOutputDTO> exportTeamOutputMp(List<LocalDate> date, String process); |
| | | |
| | | |
| | | // Map<String, Integer> getWorkInProgressTotal( |
| | | // @Param("selectTime1") Date selectTime1, @Param("selectTime2") Date selectTime2, |
| | |
| | | public interface ReportingWorkMapper extends BaseMapper<ReportingWork> { |
| | | |
| | | |
| | | ReportingWork AddSelectLastWorkMp(String processIdStr, String technologyStr,String previousProcess,String nextProcess,String process); |
| | | ReportingWork AddSelectLastWorkMp(String processIdStr, String technologyStr, String previousProcess, String nextProcess, String process, String reportType); |
| | | |
| | | List<BasicDataProduce> SelectWorkBasicDeviceMp(String process); |
| | | |
| | |
| | | |
| | | String SelectWorkTechnologyMp(String processIdStr); |
| | | |
| | | List<Map<String,String>> SelectTechnologicalNumMp(String processIdStr, String technologyStr,String process); |
| | | List<Map<String,String>> SelectTechnologicalNumMp(String processIdStr, String technologyStr, String process, String reportType); |
| | | |
| | | List<Map<String,String>> SelectReworlDetailMp(String processIdStr, String technologyStr, String process); |
| | | |
| | |
| | | //是否包含切割 |
| | | boolean containsCutting = flowCard.getProcess().contains("切割"); |
| | | if(String.valueOf(flowCard.getTechnologyNumber()).length()>1 && containsCutting){ |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber())); |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getProcess()); |
| | | itemmap.put("detailList", detailList); |
| | | } |
| | | else { |
| | |
| | | else { |
| | | itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess())); |
| | | |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), printMerge); |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), printMerge, flowCard.getProcess()); |
| | | itemmap.put("detailList", detailList); |
| | | } |
| | | } |
| | |
| | | return map; |
| | | } |
| | | |
| | | public Map<String, Object> printFlowCardDetailsSv(String processId, String technologyNumber, FlowCard flowCard) { |
| | | public Map<String, Object> printFlowCardDetailsSv(String processId, String technologyNumber, String process, FlowCard flowCard) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", flowCardMapper.printFlowCardDetailsMp(processId, technologyNumber, flowCard)); |
| | | map.put("data", flowCardMapper.printFlowCardDetailsMp(processId, technologyNumber,process, flowCard)); |
| | | return map; |
| | | } |
| | | |
| | |
| | | List<FlowCard> FlowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("flowCard")), FlowCard.class); |
| | | if (!FlowCardList.isEmpty()) { |
| | | for (FlowCard flowCard : FlowCardList) { |
| | | flowCardMapper.printSortMp(flowCard.getProcessId(),flowCard.getOrderNumber(),flowCard.getTechnologyNumber(),flowCard.getSort()); |
| | | // flowCardMapper.printSortMp(flowCard.getProcessId(),flowCard.getOrderNumber(),flowCard.getTechnologyNumber(),flowCard.getSort()); |
| | | //判断保存的数据是否已存在 |
| | | Integer count = flowCardMapper.printAddSortCountMp(flowCard.getProcessId(),flowCard.getOrderNumber(),flowCard.getTechnologyNumber(),flowCard.getSort(),flowCard.getProcess()); |
| | | if (count >0){ |
| | | flowCardMapper.printUpdateSortMp(flowCard.getProcessId(),flowCard.getOrderNumber(),flowCard.getTechnologyNumber(),flowCard.getSort(),flowCard.getProcess()); |
| | | }else { |
| | | flowCardMapper.printAddSortMp(flowCard.getProcessId(),flowCard.getOrderNumber(),flowCard.getTechnologyNumber(),flowCard.getSort(),flowCard.getProcess()); |
| | | } |
| | | } |
| | | } |
| | | return true; |
| | |
| | | String process= (String) dates.get("processes"); |
| | | return reportMapper.exportScheduleReportMp(date,process); |
| | | } |
| | | |
| | | public List exportTeamOutputSv(Map<String, Object> dates) { |
| | | List<LocalDate> date= (List<LocalDate>) dates.get("date"); |
| | | String process= (String) dates.get("processes"); |
| | | |
| | | return reportMapper.exportTeamOutputMp(date,process); |
| | | } |
| | | } |
| | |
| | | import com.example.erp.mapper.userInfo.LogMapper; |
| | | import com.example.erp.service.sd.OrderProcessDetailService; |
| | | import com.example.erp.service.userInfo.LogService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | |
| | | this.orderGlassDetailMapper = orderGlassDetailMapper; |
| | | } |
| | | |
| | | public Map<String, Object> AddSelectLastWorkSv(String processIdStr, String technologyStr, String process) { |
| | | public Map<String, Object> AddSelectLastWorkSv(String processIdStr, String technologyStr, String process, String reportType) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | //查询流程卡工艺流程 |
| | | String technologicalProcess = reportingWorkMapper.SelectTechnologicalProcess(processIdStr,technologyStr); |
| | |
| | | nextProcess = processList[i + 1]; |
| | | } |
| | | //查询当前工序的表头数据 |
| | | map.put("data", reportingWorkMapper.AddSelectLastWorkMp(processIdStr, technologyStr, previousProcess, nextProcess, process)); |
| | | map.put("data", reportingWorkMapper.AddSelectLastWorkMp(processIdStr, technologyStr, previousProcess, nextProcess, process,reportType)); |
| | | map.put("thisProcess", processList); |
| | | break; |
| | | } |
| | |
| | | //判断本工序是不是第一道工序 |
| | | if (interceptProcess.equals(process)) { |
| | | //是第一道工序,查询流程卡数据 |
| | | map.put("Detail", reportingWorkMapper.SelectTechnologicalNumMp(processIdStr, technologyStr, process)); |
| | | map.put("Detail", reportingWorkMapper.SelectTechnologicalNumMp(processIdStr, technologyStr, process,reportType)); |
| | | } else { |
| | | //不是第一道工序,查询报工数据 |
| | | List<Map<String,String>> details = reportingWorkMapper.SelectReworlDetailMp(processIdStr, technologyStr, process); |
| | |
| | | ogd.child_height, |
| | | fc.quantity, |
| | | ROUND(ogd.child_width * ogd.child_height * fc.quantity / 1000000, 2) as area, |
| | | fc.sort, |
| | | ogd.glass_child |
| | | ifnull(fcs.sort,'') as sort, |
| | | ogd.glass_child, |
| | | #{process} as process |
| | | 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 fc.technology_number = ogd.technology_number |
| | | left join flow_card_sort as fcs on fcs.process_id = fc.process_id and fcs.order_number = fc.order_number and fcs.technology_number = fc.technology_number |
| | | and fcs.process=#{process} |
| | | where fc.process_id = #{processId} |
| | | and position(fc.technology_number in #{technologyNumber}) |
| | | |
| | | order by IF(fc.sort != NULL || fc.sort != '', fc.sort, fc.order_number) |
| | | </select> |
| | | |
| | |
| | | left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number |
| | | left join sd.product_detail as pd |
| | | on pd.prod_id = od.product_id and pd.glass_sort = ogd.technology_number |
| | | left join flow_card_sort as fcs on fcs.process_id = fc.process_id and fcs.order_number = fc.order_number and fcs.technology_number = fc.technology_number |
| | | and fcs.process=#{process} |
| | | where fc.process_id = #{processId} |
| | | and position(fc.technology_number in #{technologyNumber}) |
| | | group by fc.process_id, fc.order_number, fc.technology_number |
| | | order by IF(sort != NULL || sort != '', sort, fc.order_number) |
| | | order by IF(fcs.sort != NULL || fcs.sort != '', fcs.sort, fc.order_number) |
| | | </select> |
| | | |
| | | <select id="getPrimaryListMergeRefund"> |
| | |
| | | left join sd.order_glass_detail ogd |
| | | on ogd.order_id = o.order_id and ogd.order_number = od.order_number and |
| | | ogd.technology_number = fc.technology_number |
| | | left join flow_card_sort as fcs on fcs.process_id = fc.process_id and fcs.order_number = fc.order_number and fcs.technology_number = fc.technology_number |
| | | and fcs.process=#{process} |
| | | where fc.process_id = #{processId} |
| | | and fc.technology_number = #{technologyNumber} |
| | | and position(fc.technology_number in #{technologyNumber}) |
| | | group by od.order_number, ogd.technology_number, ogd.child_width, ogd.child_height |
| | | order by IF(fc.sort != NULL || fc.sort != '', fc.sort, fc.order_number) |
| | | order by IF(fcs.sort != NULL || fcs.sort != '', fcs.sort, fc.order_number) |
| | | </select> |
| | | |
| | | <select id="selectPrintNotMp"> |
| | |
| | | and process != "" |
| | | GROUP BY order_id,process_id,technology_number,process |
| | | </select> |
| | | |
| | | <insert id="printAddSortMp"> |
| | | insert into flow_card_sort (process_id,order_number,technology_number,process,sort,create_time) |
| | | values (#{processId},#{orderNumber},#{technologyNumber},#{process},#{sort},now()) |
| | | </insert> |
| | | <select id="printAddSortCountMp"> |
| | | select |
| | | count(*) |
| | | from flow_card_sort |
| | | where process_id = #{processId} |
| | | and order_number = #{orderNumber} |
| | | and technology_number = #{technologyNumber} |
| | | and process = #{process} |
| | | </select> |
| | | <update id="printUpdateSortMp"> |
| | | update flow_card_sort |
| | | set sort = #{sort} |
| | | where process_id = #{processId} |
| | | and order_number = #{orderNumber} |
| | | and technology_number = #{technologyNumber} |
| | | and process = #{process} |
| | | </update> |
| | | </mapper> |
| | |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | | |
| | | <select id="exportTeamOutputMp"> |
| | | SELECT |
| | | rw.reporting_work_time, |
| | | rw.this_process, |
| | | rw.teams_groups_name, |
| | | o.project, |
| | | rw.process_id, |
| | | rwd.order_number, |
| | | MAX( ogd.child_width ) as width, |
| | | MAX( ogd.child_height ) as height, |
| | | if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape, |
| | | sum( pd.thickness ) as thickness, |
| | | od.edging_type, |
| | | opd.reporting_work_num as completed_quantity, |
| | | ROUND(MAX( ogd.child_width )*MAX( ogd.child_height )*opd.reporting_work_num/1000000,2) as area, |
| | | od.product_name, |
| | | JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS code |
| | | FROM |
| | | reporting_work AS rw |
| | | LEFT JOIN reporting_work_detail AS rwd ON rw.reporting_work_id = rwd.reporting_work_id |
| | | LEFT JOIN sd.`order` AS o ON o.order_id = rw.order_id |
| | | LEFT JOIN sd.order_detail AS od ON od.order_id = o.order_id |
| | | AND od.order_number = rwd.order_number |
| | | LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id |
| | | AND ogd.order_number = rwd.order_number |
| | | AND ogd.technology_number = rwd.technology_number |
| | | AND ogd.order_number = od.order_number |
| | | LEFT JOIN ( |
| | | SELECT |
| | | prod_id, |
| | | glass_sort, |
| | | REPLACE ( JSON_UNQUOTE( JSON_EXTRACT( separation, '$.thickness' )), 'mm', '' ) AS thickness |
| | | FROM |
| | | sd.product_detail |
| | | WHERE |
| | | detail_type = "glass" |
| | | ) AS pd ON pd.prod_id = od.product_id AND pd.glass_sort = rwd.technology_number |
| | | LEFT JOIN sd.order_process_detail AS opd ON opd.order_id = o.order_id |
| | | AND opd.process_id = rw.process_id |
| | | AND opd.order_number = ogd.order_number |
| | | AND opd.technology_number = ogd.technology_number |
| | | where opd.reporting_work_num > 0 and rw.reviewed_state=1 |
| | | and date(rw.reporting_work_time) >= #{date[0]} |
| | | and date(rw.reporting_work_time) <= #{date[1]} |
| | | and position(#{process} in rw.this_process) |
| | | GROUP BY |
| | | rw.this_process, |
| | | rw.teams_groups_name, |
| | | rw.process_id, |
| | | rwd.order_number |
| | | ORDER BY |
| | | rw.this_process, |
| | | rw.process_id, |
| | | rwd.order_number, |
| | | rw.reporting_work_time, |
| | | rw.teams_groups_name |
| | | </select> |
| | | |
| | | <select id="teamOutputPageTotal"> |
| | | SELECT |
| | | CEILING(count(rwd.id)/#{pageSize}) as 'pageTotal', |
| | |
| | | left join reporting_work_detail as rwd on rw.reporting_work_id = rwd.reporting_work_id and rwd.technology_number=fc.technology_number |
| | | where fc.process_id = #{processIdStr} |
| | | and fc.technology_number = #{technologyStr} |
| | | and if(#{reportType}=1,o.order_type!='样品订单',o.order_id!='') |
| | | GROUP BY fc.process_id |
| | | </select> |
| | | |
| | |
| | | on patch.process_id = fc.process_id |
| | | and patch.order_sort = fc.order_number |
| | | and patch.technology_number = fc.technology_number |
| | | left join sd.`order` as o on o.order_id=od.order_id |
| | | |
| | | WHERE |
| | | fc.process_id = #{processIdStr} |
| | | AND fc.technology_number = #{technologyStr} |
| | | AND odpd.process = #{process} |
| | | and if(#{reportType}=1,o.order_type!='样品订单',o.order_id!='') |
| | | order by fc.order_number |
| | | </select> |
| | | |