Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
| | |
| | | selectOrderListDate:ref(["",""]), |
| | | reportFormDate:ref(["",""]), |
| | | workOrderDate:ref(["",""]), |
| | | reportingWorkDate:ref(["",""]), |
| | | searchOrderListFilter:ref([]),//订单首页筛选] |
| | | searchOrderFilter:{ |
| | | list:ref([]), |
| | |
| | | productName: '', |
| | | computeGrossArea: '', |
| | | processingNote: '', |
| | | } |
| | | } |
| | | |
| | | }, |
| | | //报工查询筛选缓存 |
| | | selectReportingWorksFilter:{ |
| | | list:ref([]), |
| | | data:{ |
| | | order: { |
| | | project: '', |
| | | batch:'' |
| | | }, |
| | | orderGlassDetail: { |
| | | completedArea:'', |
| | | wornArea:'' |
| | | } |
| | | } |
| | | |
| | |
| | | this.selectOrderListDate=["",""] |
| | | this.reportFormDate=["",""] |
| | | this.workOrderDate=["",""] |
| | | this.reportingWorkDate=["",""] |
| | | this.searchOrderFilter={ |
| | | list:[], |
| | | data:{} |
| | |
| | | addListener(xGrid.value,gridOptions,cellArea.value) |
| | | request.post(`/glassOptimize/projectInfo/${projectNo.value}/${username}`).then((res) => { |
| | | if ((Number(res.code) === 200)) { |
| | | const data = res.data.data; |
| | | let data = res.data.data; |
| | | const grindingTrimming = res.data.grindingTrimming; |
| | | optimizeState.value=res.data.optimizeState; |
| | | if(grindingTrimming!==null){ |
| | | |
| | | // 加载磨量配置 |
| | | loadGrindingConfiguration().then((grindConfig) => { |
| | | console.log("加载的磨量配置:", grindConfig); |
| | | |
| | | data = data.map(item => { |
| | | // 保留从后端返回的原始磨量值,如果存在的话 |
| | | const originalLongGrind1 = item.longGrind1; |
| | | const originalLongGrind2 = item.longGrind2; |
| | | const originalShortGrind1 = item.shortGrind1; |
| | | const originalShortGrind2 = item.shortGrind2; |
| | | |
| | | // 如果没有原始磨量值,则初始化为0 |
| | | item.longGrind1 = originalLongGrind1 !== undefined && originalLongGrind1 !== null ? |
| | | parseFloat(originalLongGrind1) : 0; |
| | | item.longGrind2 = originalLongGrind2 !== undefined && originalLongGrind2 !== null ? |
| | | parseFloat(originalLongGrind2) : 0; |
| | | item.shortGrind1 = originalShortGrind1 !== undefined && originalShortGrind1 !== null ? |
| | | parseFloat(originalShortGrind1) : 0; |
| | | item.shortGrind2 = originalShortGrind2 !== undefined && originalShortGrind2 !== null ? |
| | | parseFloat(originalShortGrind2) : 0; |
| | | |
| | | // 处理 grindingTrimming 数据(如果存在) |
| | | if(grindingTrimming!==null && grindingTrimming.length > 0){ |
| | | const formattedData = grindingTrimming.map(item => { |
| | | const formattedItem = {}; |
| | | for (const key in item) { |
| | |
| | | } |
| | | return formattedItem; |
| | | }); |
| | | data.forEach(item => { |
| | | |
| | | // 如果有自动填充配置,使用它来设置磨量 |
| | | if(formattedData[0].autoFillEdge==="true"){ |
| | | const minAutoLenght = parseFloat(formattedData[0].minAutoLenght) || 0; |
| | | const leftEdge = parseFloat(formattedData[0].leftEdge) || 0; |
| | | const rightEdge = parseFloat(formattedData[0].rightEdge) || 0; |
| | | const upEdge = parseFloat(formattedData[0].upEdge) || 0; |
| | | const downEdge = parseFloat(formattedData[0].downEdge) || 0; |
| | | |
| | | if(item.width>=formattedData[0].minAutoLenght){ |
| | | item.longGrind1 = formattedData[0].leftEdge; |
| | | item.longGrind2 = formattedData[0].rightEdge; |
| | | if(item.width >= minAutoLenght){ |
| | | item.longGrind1 = leftEdge; |
| | | item.longGrind2 = rightEdge; |
| | | } |
| | | if(item.height>=formattedData[0].minAutoLenght){ |
| | | item.shortGrind1 = formattedData[0].upEdge; |
| | | item.shortGrind2 = formattedData[0].downEdge; |
| | | if(item.height >= minAutoLenght){ |
| | | item.shortGrind1 = upEdge; |
| | | item.shortGrind2 = downEdge; |
| | | } |
| | | } |
| | | item.longGrind1=0 |
| | | item.longGrind2=0 |
| | | item.shortGrind1=0 |
| | | item.shortGrind2=0 |
| | | } else if(grindConfig) { |
| | | // 使用从 getConfiguration 接口加载的配置 |
| | | if(grindConfig.autoFillEdge==="true"){ |
| | | const minAutoLenght = parseFloat(grindConfig.minAutoLenght) || 0; |
| | | const leftEdge = parseFloat(grindConfig.leftEdge) || 0; |
| | | const rightEdge = parseFloat(grindConfig.rightEdge) || 0; |
| | | const upEdge = parseFloat(grindConfig.upEdge) || 0; |
| | | const downEdge = parseFloat(grindConfig.downEdge) || 0; |
| | | |
| | | if(item.width >= minAutoLenght){ |
| | | item.longGrind1 = leftEdge; |
| | | item.longGrind2 = rightEdge; |
| | | } |
| | | if(item.height >= minAutoLenght){ |
| | | item.shortGrind1 = upEdge; |
| | | item.shortGrind2 = downEdge; |
| | | } |
| | | }else { |
| | | // 即使没有启用自动填充,也应该应用默认的磨量值 |
| | | item.longGrind1 = parseFloat(grindConfig.leftEdge) || 0; |
| | | item.longGrind2 = parseFloat(grindConfig.rightEdge) || 0; |
| | | item.shortGrind1 = parseFloat(grindConfig.upEdge) || 0; |
| | | item.shortGrind2 = parseFloat(grindConfig.downEdge) || 0; |
| | | } |
| | | } |
| | | |
| | | item.height=parseFloat(item.height.toFixed(2)) |
| | | item.width=parseFloat(item.width.toFixed(2)) |
| | | |
| | | return item; |
| | | }); |
| | | } |
| | | |
| | | console.log("处理后的数据:", data); |
| | | |
| | | xGrid.value.loadData(data); |
| | | gridOptions.data = data; |
| | | projectName.value = data[0].project_name; |
| | | quantitys.value=res.data.project.glass_total |
| | | areas.value=res.data.project.glass_total_area |
| | | }); |
| | | } else { |
| | | ElMessage.warning(res.msg); |
| | | } |
| | |
| | | console.error("获取数据出错:", error); |
| | | }); |
| | | }; |
| | | |
| | | |
| | | const firstLoading = async() => { |
| | | request.post(`/glassOptimize/selectOptimizeParms/${username}`).then((res) => { |
| | |
| | | |
| | | // 从子组件SetAmount获取磨量值,并更新表格数据 |
| | | const Amount = (amountData) => { |
| | | fetchData() |
| | | // fetchData() |
| | | const data = gridOptions.data; |
| | | if (data) { |
| | | const updatedData = data.map(item => ({ |
| | | ...item, |
| | | longGrind1: Number(amountData.quicksetTop), |
| | | longGrind2: Number(amountData.quicksetRight), |
| | | shortGrind1: Number(amountData.quicksetBottom), |
| | | shortGrind2: Number(amountData.quicksetLeft) |
| | | })); |
| | | gridOptions.data = updatedData; |
| | | xGrid.value.loadData(updatedData); |
| | | } |
| | | /*nextTick(() => { |
| | | const data = gridOptions.data; |
| | | if (data) { |
| | |
| | | });*/ |
| | | }; |
| | | |
| | | |
| | | const loadGrindingConfiguration = async () => { |
| | | return new Promise((resolve) => { |
| | | request.post(`/glassOptimize/getConfiguration/磨量/${username}`).then((res) => { |
| | | if (res.code == "200") { |
| | | const rawData = res.data.data; |
| | | if (Array.isArray(rawData) && rawData.length > 0) { |
| | | const formattedData = rawData.map(item => { |
| | | const formattedItem = {}; |
| | | for (const key in item) { |
| | | if (typeof item[key] === 'string') { |
| | | //去除字符串属性值开头和结尾的双引号 |
| | | formattedItem[key] = item[key].replace(/^\"|\"$/g, ''); |
| | | } else { |
| | | formattedItem[key] = item[key]; |
| | | } |
| | | } |
| | | return formattedItem; |
| | | }); |
| | | resolve(formattedData[0]); |
| | | } else { |
| | | // 提供默认配置 |
| | | resolve({ |
| | | leftEdge: '0', |
| | | upEdge: '0', |
| | | rightEdge: '0', |
| | | downEdge: '0', |
| | | quickEdge: '1', |
| | | autoFillEdge: 'false', |
| | | minAutoLenght: '0' |
| | | }); |
| | | } |
| | | } else { |
| | | ElMessage.warning(res.msg); |
| | | // 提供默认配置 |
| | | resolve({ |
| | | leftEdge: '0', |
| | | upEdge: '0', |
| | | rightEdge: '0', |
| | | downEdge: '0', |
| | | quickEdge: '1', |
| | | autoFillEdge: 'false', |
| | | minAutoLenght: '0' |
| | | }); |
| | | } |
| | | }).catch(() => { |
| | | // 提供默认配置 |
| | | resolve({ |
| | | leftEdge: '0', |
| | | upEdge: '0', |
| | | rightEdge: '0', |
| | | downEdge: '0', |
| | | quickEdge: '1', |
| | | autoFillEdge: 'false', |
| | | minAutoLenght: '0' |
| | | }); |
| | | }); |
| | | }); |
| | | }; |
| | | |
| | | //中转站接受SetTrimming的值(设置修边) |
| | | const emit = defineEmits([ |
| | | 'changeDialog', |
| | |
| | | </div> |
| | | |
| | | <div style="margin-top: 20px"> |
| | | <span>鼠标点击蓝色图形区域可快速设置磨量</span> |
| | | <span>鼠标点击蓝色图形区域可快速设置磨量(mm)</span> |
| | | <el-input-number v-model="controlValue" class="quickset" placeholder="0" |
| | | controls-position="right" :step="0.1" :min="0"></el-input-number> |
| | | <br> |
| | | <div style="margin-top: 30px"> |
| | | <span>成品边长大于等于多少时自动填充(单位: mm)</span> |
| | | <span>成品边长大于等于多少时自动填充(mm)</span> |
| | | <el-checkbox v-model="check" style="margin: 5px 0 0 12px;"/> |
| | | <vxe-input style="width: 100px; height: 40px; margin-left: 5px" v-model="minAutoLenght" placeholder=""/> |
| | | </div> |
| | |
| | | </div> |
| | | |
| | | <div> |
| | | <span>鼠标点击蓝色图形区域可快速设置修边量</span> |
| | | <span>鼠标点击蓝色图形区域可快速设置修边量(mm)</span> |
| | | <el-input-number v-model="controlValue" class="quickset" placeholder="0" |
| | | controls-position="right" :step="0.1" :min="0"></el-input-number> |
| | | controls-position="right" :step="1" :min="0"></el-input-number> |
| | | <br> |
| | | <span>查询原片时自动填充(单位: mm)</span> |
| | | <span>查询原片时自动填充(mm)</span> |
| | | <el-checkbox v-model="check" style="margin: 20px 0 0 117px;"/> |
| | | </div> |
| | | </div> |
| | |
| | | { |
| | | field: 'processId', width: 135, title: t('processCard.processId'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | filterMethod: filterChanged, |
| | | sortable: true, |
| | | }, |
| | | { |
| | | field: 'orderNumber', |
| | |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | filterMethod: filterChanged, |
| | | sortable: true, |
| | | }, |
| | | { |
| | | field: 'technologyNumber', width: 130, title: t('processCard.technologyNumber'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | filterMethod: filterChanged, |
| | | sortable: true, |
| | | }, |
| | | { |
| | | field: 'project', width: 120, title: t('order.project'), filters: [{data: ''}], |
| | |
| | | <script setup> |
| | | |
| | | import {reactive, ref} from "vue"; |
| | | import {onMounted, reactive, ref} from "vue"; |
| | | import {useRouter} from 'vue-router' |
| | | import request from "@/utils/request"; |
| | | import deepClone from "@/utils/deepClone"; |
| | |
| | | import useUserInfoStore from "@/stores/userInfo"; |
| | | import footSum from "@/hook/footSum" |
| | | import userInfo from "@/stores/userInfo" |
| | | import useOrderInfoStore from "@/stores/sd/order/orderInfo"; |
| | | |
| | | //语言获取 |
| | | const { t } = useI18n() |
| | | const userStore = useUserInfoStore() |
| | | let router=useRouter() |
| | | const user=userInfo() |
| | | const orderInfo = useOrderInfoStore() |
| | | const getTableRow = (row,type) =>{ |
| | | switch (type) { |
| | | case 'edit' :{ |
| | |
| | | // 使用 setDate 方法加一天 |
| | | date.setDate(date.getDate() + 1); |
| | | let newEndTime = date.toISOString().split('T')[0]; // 获取 YYYY-MM-DD 格式的字符串 |
| | | const getReportingWorkList = async () => { |
| | | //第一次加载数据 |
| | | request.post(`/reportingWork/selectReportingWork/1/${total.pageSize}/${startTime}/${newEndTime}/${inputVal}`, filterData.value).then((res) => { |
| | | await request.post(`/reportingWork/selectReportingWork/1/${total.pageSize}/${orderInfo.reportingWorkDate}/${inputVal}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal= res.data.total.pageTotal |
| | | orderInfo.reportingWorkDate = res.data.selectDate |
| | | pageTotal.value = res.data.total |
| | | total.value = res.data.total |
| | | produceList = produceList.value.concat(deepClone(res.data.data)) |
| | |
| | | let modifiedCollection = produceList.map(item => { |
| | | if (item.reviewedState === 1) { |
| | | return { ...item, reviewedState: "已审核" }; |
| | | } |
| | | else if (item.reviewedState === 0) { |
| | | } else if (item.reviewedState === 0) { |
| | | return { ...item, reviewedState: "未审核" }; |
| | | } |
| | | else if (item.reviewedState === 2){ |
| | | } else if (item.reviewedState === 2) { |
| | | return { ...item, reviewedState: "审核不通过" }; |
| | | } |
| | | else { |
| | | } else { |
| | | // 其他情况保持不变 |
| | | return item; |
| | | } |
| | |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | |
| | | } |
| | | //页脚翻页查询 |
| | | const selectPageList = ()=>{ |
| | | let startTime = form.date1[0] |
| | |
| | | date.setDate(date.getDate() + 1); |
| | | let newEndTime = date.toISOString().split('T')[0]; // 获取 YYYY-MM-DD 格式的字符串 |
| | | gridOptions.loading=true |
| | | request.post(`/reportingWork/selectReportingWork/${pageNum.value}/${total.pageSize}/${startTime}/${newEndTime}/${inputVal}`,filterData.value).then((res) => { |
| | | request.post(`/reportingWork/selectReportingWork/${pageNum.value}/${total.pageSize}/${orderInfo.reportingWorkDate}/${inputVal}`,filterData.value).then((res) => { |
| | | if(res.code==200){ |
| | | total.value = res.data.total |
| | | |
| | |
| | | // 使用 setDate 方法加一天 |
| | | date.setDate(date.getDate() + 1); |
| | | let newEndTime = date.toISOString().split('T')[0]; // 获取 YYYY-MM-DD 格式的字符串 |
| | | request.post(`/reportingWork/selectReportingWork/${pageNum.value}/${total.pageSize}/${startTime}/${newEndTime}/${inputVal}`, filterData.value).then((res) => { |
| | | request.post(`/reportingWork/selectReportingWork/${pageNum.value}/${total.pageSize}/${orderInfo.reportingWorkDate}/${inputVal}`, filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal= res.data.total.pageTotal |
| | |
| | | // 使用 setDate 方法加一天 |
| | | date.setDate(date.getDate() + 1); |
| | | let newEndTime = date.toISOString().split('T')[0]; // 获取 YYYY-MM-DD 格式的字符串 |
| | | request.post(`/reportingWork/selectReportingWork/1/${total.pageSize}/${startTime}/${newEndTime}/${inputVal}`, filterData.value).then((res) => { |
| | | request.post(`/reportingWork/selectReportingWork/1/${total.pageSize}/${orderInfo.reportingWorkDate}/${inputVal}`, filterData.value).then((res) => { |
| | | if(res.code==200){ |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal=parseInt(res.data.total) |
| | |
| | | }); |
| | | xGrid.value.loadData(modifiedCollection) |
| | | gridOptions.loading=false |
| | | orderInfo.selectReportingWorksFilter.list = xGrid.value.getCheckedFilters() |
| | | orderInfo.selectReportingWorksFilter.data = filterData.value |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | } |
| | |
| | | |
| | | }) |
| | | |
| | | |
| | | onMounted(async () => { |
| | | filterData.value = orderInfo.selectReportingWorksFilter.data |
| | | await getReportingWorkList() |
| | | orderInfo.selectReportingWorksFilter.list.forEach(item => { |
| | | xGrid.value.getColumnByField(item.field).filters = item.column.filters |
| | | }) |
| | | }) |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 100%;height: 100%"> |
| | | <div class="head"> |
| | | <el-date-picker |
| | | v-model="form.date1" |
| | | v-model="orderInfo.reportingWorkDate" |
| | | type="daterange" |
| | | format="YYYY/MM/DD" |
| | | value-format="YYYY-MM-DD" |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.sql.Date; |
| | | @RestController |
| | |
| | | |
| | | @ApiOperation("报工查询接口") |
| | | @SaCheckPermission("selectReportingWorks.search") |
| | | @PostMapping ("/selectReportingWork/{pageNum}/{pageSize}/{selectTime1}/{selectTime2}/{orderId}") |
| | | @PostMapping ("/selectReportingWork/{pageNum}/{pageSize}/{selectDate}/{orderId}") |
| | | public Result selectReportingWork( |
| | | @PathVariable Integer pageNum, |
| | | @PathVariable Integer pageSize, |
| | | @PathVariable Date selectTime1, |
| | | @PathVariable Date selectTime2, |
| | | @PathVariable List<String> selectDate, |
| | | @PathVariable String orderId, |
| | | @RequestBody ReportingWork reportingWork){ |
| | | return Result.seccess(reportingWorkService.selectReportingWorkSv(pageNum,pageSize,selectTime1,selectTime2,orderId,reportingWork)); |
| | | return Result.seccess(reportingWorkService.selectReportingWorkSv(pageNum,pageSize,selectDate,orderId,reportingWork)); |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | Boolean updateInventoryQuantity(String processId, Object orderNumber, Object technologyNumber, Object completedQuantity); |
| | | |
| | | List<ReportingWork> selectReportingWorkMp(Integer offset, Integer pageSize, Date selectTime1, Date selectTime2, String orderId, ReportingWork reportingWork); |
| | | List<ReportingWork> selectReportingWorkMp(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderId, ReportingWork reportingWork); |
| | | |
| | | List<ReportingWork> selectQualityTestingMp(Integer offset, Integer pageSize, Date selectTime1, Date selectTime2, Integer state, String processId, ReportingWork reportingWork); |
| | | |
| | |
| | | |
| | | String selectOrderid(String processIdStr); |
| | | |
| | | Map<String,Float> getFootSum(Integer offset, Integer pageSize, Date selectTime1, Date selectTime2, String orderId, ReportingWork reportingWork); |
| | | Map<String,Float> getFootSum(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderId, ReportingWork reportingWork); |
| | | |
| | | Integer selectReviewedState(String reportingWorkId); |
| | | |
| | |
| | | } |
| | | |
| | | //报工管理查询 |
| | | public Map<String, Object> selectReportingWorkSv(Integer pageNum, Integer pageSize, java.sql.Date selectTime1, java.sql.Date selectTime2, String orderId, ReportingWork reportingWork) { |
| | | public Map<String, Object> selectReportingWorkSv(Integer pageNum, Integer pageSize, List<String> selectDate, String orderId, ReportingWork reportingWork) { |
| | | Integer offset = (pageNum - 1) * pageSize; |
| | | if ("null".equals(orderId)) { |
| | | orderId = ""; |
| | | } |
| | | String endDate = LocalDate.now().toString(); |
| | | String startDate = LocalDate.now().minusDays(3).toString(); |
| | | if(selectDate !=null && selectDate.size()==2){ |
| | | if(!selectDate.get(0).isEmpty()){ |
| | | startDate = selectDate.get(0); |
| | | } |
| | | if(!selectDate.get(1).isEmpty()){ |
| | | endDate = selectDate.get(1); |
| | | } |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", reportingWorkMapper.selectReportingWorkMp(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork)); |
| | | map.put("data", reportingWorkMapper.selectReportingWorkMp(offset, pageSize, startDate, endDate, orderId, reportingWork)); |
| | | // map.put("total", reportingWorkMapper.getPageTotal(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork)); |
| | | map.put("total" ,reportingWorkMapper.getFootSum(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork)); |
| | | map.put("total" ,reportingWorkMapper.getFootSum(offset, pageSize, startDate, endDate, orderId, reportingWork)); |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(startDate); |
| | | list.add(endDate); |
| | | map.put("selectDate",list); |
| | | return map; |
| | | } |
| | | |
| | |
| | | AND o.create_time < #{selectTime2} |
| | | and position(#{orderId} in od.order_id) |
| | | and position(#{inputProject} in o.project) |
| | | and fc.quantity - odpd.reporting_work_num>0 |
| | | and GREATEST(fc.quantity - odpd.reporting_work_num, 0)>0 |
| | | |
| | | group by fc.process_id, fc.order_number, fc.technology_number |
| | | order by fc.process_id, fc.order_number, fc.technology_number |
| | |
| | | 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 '+') |
| | |
| | | AND cb.technology_number = b.technology_number |
| | | where a.processing_card>0 |
| | | and a.warehousing!=2 |
| | | and (c.quantity-b.reporting_work_num_count)>0 |
| | | and (c.quantity-b.reporting_work_num)>0 |
| | | GROUP BY b.process_id, b.order_number, |
| | | b.technology_number) as f |
| | | LEFT JOIN sd.order_process_detail as e |
| | |
| | | AND cb.technology_number = b.technology_number |
| | | where a.processing_card>0 |
| | | and a.warehousing!=2 |
| | | and (c.quantity-b.reporting_work_num_count)>0 |
| | | and (c.quantity-b.reporting_work_num)>0 |
| | | GROUP BY b.process_id, b.order_number, |
| | | b.technology_number) as f |
| | | LEFT JOIN sd.order_process_detail as e |
| | |
| | | |
| | | left join sd.`order` as o on o.order_id=rw.order_id |
| | | where rw.reviewed_state != 2 |
| | | and rw.reporting_work_time >= #{selectTime1} |
| | | AND rw.reporting_work_time < #{selectTime2} |
| | | and date(rw.reporting_work_time) >= date(#{selectTime1}) |
| | | AND date(rw.reporting_work_time) <= date(#{selectTime2}) |
| | | and position(#{orderId} in rw.order_id) |
| | | and rw.reviewed_state!=-1 |
| | | and o.create_order>0 |
| | |
| | | and o.order_id regexp #{reportingWork.orderId} |
| | | </if> |
| | | <if test="reportingWork.processId != null and reportingWork.processId != ''"> |
| | | and rw.process_id regexp #{reportingWork.processId} |
| | | |
| | | and CONCAT(rw.process_id,'/',rwd.goup) LIKE CONCAT('%', #{reportingWork.processId}, '%') |
| | | </if> |
| | | <if test="reportingWork.order.project != null and reportingWork.order.project != ''"> |
| | | and o.project regexp #{reportingWork.order.project} |