| | |
| | | v-model="dataList[itme.process_type][itme1.process_type]" |
| | | placeholder="" |
| | | clearable |
| | | filterable |
| | | style="width: 120px" |
| | | > |
| | | <el-option |
| | |
| | | const validRules = ref({ |
| | | "cancelAvailable": [{ |
| | | validator (e) { |
| | | if (parseInt(e.row.cancelAvailable) > e.row.quantity) { |
| | | if (parseInt(e.row.cancelAvailable) > e.row.quantityAvailable) { |
| | | return new Error(t('ingredientsStock.msg2')) |
| | | } |
| | | const regex = /^[1-9]\d*$/g |
| | |
| | | {field: 'breakageReason', width: 100,title: t('reportingWorks.breakageReason'), sortable: true,showOverflow:"ellipsis"}, |
| | | {field: 'breakageQuantity', width: 100,title: t('reportingWorks.quantityBroken'), sortable: true}, |
| | | {field: 'responsiblePersonnel', width: 120,title: t('rework.responsibilityInformation'), sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'childWidth', width: 100, title: t('order.width'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'childHeight', width: 100, title: t('order.height'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'thickness',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 90, title: t('order.totalThickness')}, |
| | | {field: 'area',width: 100, title: t('reportingWorks.wornArea'), sortable: true}, |
| | | {field: 'creator',width: 120, title: t('product.creator'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'project', width: 120,title: t('order.project'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | |
| | | {field: 'creator',width: 120, title: t('product.creator'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'childWidth', width: 100, title: t('order.width'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'childHeight', width: 100, title: t('order.height'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'thickness',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 90, title: t('order.totalThickness')}, |
| | | {field: 'breakageQuantity', width: 120, title: t('reportingWorks.quantityBroken')}, |
| | | {field: 'area', width: 120, title: t('reportingWorks.wornArea')}, |
| | | {field: 'personnel', width: 120, title: t('reportingWorks.responsiblePersonnel')}, |
| | |
| | | data:[],//表格数据 |
| | | url :'/report/damageReport', |
| | | exportUrl :'/report/exportDamageReport', |
| | | exportName:t('report.crossProcessBreakdown'), |
| | | exportName:t('report.secondaryBrokenTotal'), |
| | | footList:['breakageQuantity','area'] |
| | | }) |
| | | |
| | |
| | | {field: 'breakageReason', width: 100,title: t('reportingWorks.breakageReason'), sortable: true,showOverflow:"ellipsis"}, |
| | | {field: 'breakageQuantity', width: 100,title: t('reportingWorks.quantityBroken'), sortable: true}, |
| | | {field: 'responsiblePersonnel', width: 120,title: t('rework.responsibilityInformation'), sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'childWidth', width: 100, title: t('order.width'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'childHeight', width: 100, title: t('order.height'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'thickness',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 90, title: t('order.totalThickness')}, |
| | | {field: 'area',width: 100, title: t('reportingWorks.wornArea'), sortable: true}, |
| | | {field: 'creator',width: 120, title: t('product.creator'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'project', width: 120,title: t('order.project'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | |
| | | data:[],//表格数据 |
| | | url :'/report/notCrossProcessBreaking', |
| | | exportUrl :'/report/exportNotCrossProcessBreaking', |
| | | exportName:t('report.crossProcessBreakdown'), |
| | | exportName:t('report.notCrossProcessBreakdown'), |
| | | footList:['breakageQuantity','area'] |
| | | }) |
| | | |
| | |
| | | filterMethod: filterChanged}, |
| | | {field: 'thickness',filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged, |
| | | width: 90, title: t('order.totalThickness')}, |
| | | |
| | | {field: 'quantity', width: 120, title: t('order.quantity'),filters: [{data: ''}], |
| | |
| | | } |
| | | request.post(`/report/workInProgress/${pageNum.value}/${total.pageSize}/${inputVal}/${inputProject}/${selectProcesses}/${optionVal}/${terminationVals}`, filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | |
| | | total.value = res.data.total |
| | | produceList = deepClone(res.data.data) |
| | | produceList.forEach(item => { |
| | |
| | | request.post(`/report/workInProgress/${pageNum.value}/${total.pageSize}/${inputVal}/${inputProject}/${selectProcesses}/${optionVal}/${terminationVals}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | total.dataTotal = res.data.total.total * 1 |
| | | total.pageTotal = res.data.total.pageTotal |
| | | pageTotal.value = res.data.total |
| | | total.value = res.data.total |
| | | total.value = res.data.total; |
| | | total.dataTotal = res.data.total.total * 1; |
| | | total.pageTotal = res.data.total.pageTotal; |
| | | pageTotal.value = res.data.total; |
| | | res.data.data.forEach(item => { |
| | | // 如果 shape 可能是字符串就用 ==,如果一定是数字就用 === |
| | | item.shape = (item.shape == 2) ? t('order.alien') : t('order.universalShape'); |
| | |
| | | request.post(`/report/workInProgress/${pageNum.value}/${total.pageSize}/${inputVal}/${inputProject}/${selectProcesses}/${optionVal}/${terminationVals}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | total.dataTotal = res.data.total.total * 1 |
| | | total.pageTotal = res.data.total.pageTotal |
| | | pageTotal.value = res.data.total |
| | | total.value = res.data.total |
| | | total.value = res.data.total; |
| | | total.dataTotal = res.data.total.total * 1; |
| | | total.pageTotal = res.data.total.pageTotal; |
| | | pageTotal.value = res.data.total; |
| | | produceList = deepClone(res.data.data) |
| | | produceList.forEach(item => { |
| | | // 如果 shape 可能是字符串就用 ==,如果一定是数字就用 === |
| | |
| | | slots: {filter: 'num1_filter'},}, |
| | | {field: 'childHeight', width: 120, title: t('order.height'),visible: true,filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'},}, |
| | | {field: 'thickness',width: 90, title: t('order.totalThickness'),visible: true}, |
| | | {field: 'stockNum', width: 120, title: t('productStock.inventoryQuantity'),visible: true,filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'},}, |
| | | {field: 'stockArea', width: 120, title: t('report.inventoryArea'),visible: true,filters: [{data: ''}], |
| | |
| | | const List = ["quantity",'stockNum','stockArea',] |
| | | if (List.includes(column.field)) { |
| | | //return footSum(data, column.field) |
| | | return footSum(data, column.field) |
| | | return total.value?.[column.field] ?? 0 |
| | | } |
| | | return '' |
| | | }) |
| | |
| | | otherMoney:otherMoney.value, |
| | | deliveryIdType:company.deliveryIdType, |
| | | deliveryOutbound:company.deliveryOutbound, |
| | | type:2 |
| | | type:1 |
| | | |
| | | }) |
| | | gridOptions.toolbarConfig.buttons[0].disabled = true |
| | |
| | | } |
| | | @ApiOperation("跨工序次破报表导出") |
| | | @PostMapping("/exportCrossProcessBreaking") |
| | | public void exportCrossProcessBreaking(HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException { |
| | | public void exportCrossProcessBreaking(HttpServletResponse response, @RequestBody List<String> dates) throws IOException, IllegalAccessException, InstantiationException { |
| | | //参数:相应的数据,实体类信息,相应的方法(数据获取),生成的excel名字 |
| | | DownExcel.download(response, CrossProcessBreakingDTO.class, reportService.exportCrossProcessBreakingSv(dates), "CrossProcessBreaking"); |
| | | } |
| | | |
| | | @ApiOperation("非跨工序次破报表导出") |
| | | @PostMapping("/exportNotCrossProcessBreaking") |
| | | public void exportNotCrossProcessBreaking(HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException { |
| | | public void exportNotCrossProcessBreaking(HttpServletResponse response, @RequestBody List<String> dates) throws IOException, IllegalAccessException, InstantiationException { |
| | | //参数:相应的数据,实体类信息,相应的方法(数据获取),生成的excel名字 |
| | | DownExcel.download(response, CrossProcessBreakingDTO.class, reportService.exportNotCrossProcessBreakingSv(dates), "CrossProcessBreaking"); |
| | | } |
| | | |
| | | @ApiOperation("次破明细报表导出") |
| | | @PostMapping("/exportDamageReport") |
| | | public void exportDamageReport(HttpServletResponse response, @RequestBody Map<String, Object> dates) throws IOException, IllegalAccessException, InstantiationException { |
| | | public void exportDamageReport(HttpServletResponse response, @RequestBody List<String> dates) throws IOException, IllegalAccessException, InstantiationException { |
| | | //参数:相应的数据,实体类信息,相应的方法(数据获取),生成的excel名字 |
| | | DownExcel.download(response, DamageReportDTO.class, reportService.exportDamageReportSv(dates), "DamageReport"); |
| | | } |
| | |
| | | private String breakageType; |
| | | @ExcelProperty("次破原因") |
| | | private String breakageReason; |
| | | @ExcelProperty("宽") |
| | | private Double childWidth; |
| | | @ExcelProperty("高") |
| | | private Double childHeight; |
| | | @ExcelProperty("厚度") |
| | | private String thickness; |
| | | @ExcelProperty("次破数量") |
| | | private Integer breakageQuantity; |
| | | @ExcelProperty("次破面积") |
| | |
| | | private String creator; |
| | | @ExcelProperty("报工编号") |
| | | private String reportingWorkId; |
| | | |
| | | } |
| | |
| | | private Double childWidth; |
| | | @ExcelProperty("高") |
| | | private Double childHeight; |
| | | @ExcelProperty("厚度") |
| | | private String thickness; |
| | | @ExcelProperty("报工工序") |
| | | private String thisProcess; |
| | | @ExcelProperty("创建人") |
| | | private String creator; |
| | | @ExcelProperty("报工编号") |
| | | private String reportingWorkId; |
| | | |
| | | } |
| | |
| | | private Double incompleteArea; |
| | | @ExcelProperty("成品名称") |
| | | private String productName; |
| | | @ExcelProperty("厚度") |
| | | private String thickness; |
| | | } |
| | |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | public class WorkInProgressDTO { |
| | | @ExcelProperty("工序") |
| | |
| | | private Double childWidth; |
| | | @ExcelProperty("高") |
| | | private Double childHeight; |
| | | @ExcelProperty("厚度") |
| | | private BigDecimal thickness; |
| | | @ExcelProperty("库存数") |
| | | private Integer stockNum; |
| | | @ExcelProperty("库存面积") |
| | | private Double stockArea; |
| | | private BigDecimal stockArea; |
| | | @ExcelProperty("成品名称") |
| | | private String productName; |
| | | @ExcelProperty("在制品名称") |
| | |
| | | private String glassNumber; |
| | | @ExcelProperty("上工序报工班组") |
| | | private String teamsGroupsName; |
| | | |
| | | } |
| | |
| | | |
| | | import java.sql.Date; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | |
| | | List<Map<String, String>> rawMaterialRequisitionMp(Date selectTime1, Date selectTime2, Report report); |
| | | |
| | | List<CrossProcessBreakingDTO> exportCrossProcessBreakingMp(List<LocalDate> dates); |
| | | List<CrossProcessBreakingDTO> exportCrossProcessBreakingMp(List<String> dates); |
| | | |
| | | List<CrossProcessBreakingDTO> exportNotCrossProcessBreakingMp(List<LocalDate> dates); |
| | | List<CrossProcessBreakingDTO> exportNotCrossProcessBreakingMp(List<LocalDateTime> dates); |
| | | |
| | | Map<String, Integer> getDamageReportPageTotal(Integer offset, Integer pageSize, String selectTime1, String selectTime2, DamageReportDTO damageReportDTO); |
| | | |
| | | List<DamageReportDTO> exportDamageReportMp(List<LocalDate> dates); |
| | | List<DamageReportDTO> exportDamageReportMp(List<LocalDateTime> dates); |
| | | |
| | | List<OrderPlanDecompositionDTO> exportOrderPlanDecompositionMp(List<LocalDate> dates); |
| | | |
| | |
| | | boolean insertList(List<ProductDetail> getProductDetails); |
| | | |
| | | String getGlassNameByGroup(Integer productId, Integer minTechnologyNumberByGroup, Integer maxTechnologyNumberByGroup); |
| | | |
| | | String getGlassName(Integer productId); |
| | | } |
| | |
| | | import com.example.erp.entity.pp.Report; |
| | | import com.example.erp.mapper.pp.*; |
| | | import com.example.erp.mapper.sd.*; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.StringUtils; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | |
| | | import javax.annotation.PreDestroy; |
| | | import javax.annotation.Resource; |
| | |
| | | import java.util.*; |
| | | import java.util.concurrent.*; |
| | | import java.util.function.Function; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.hutool.core.convert.Convert.toDouble; |
| | |
| | | @Resource |
| | | private AsyncQueryExecutor asyncExecutor; |
| | | |
| | | |
| | | //根据在制品名称获取厚度 |
| | | private List<BigDecimal> parseGlassThicknessList(String glassName) { |
| | | List<BigDecimal> list = new ArrayList<>(); |
| | | if (glassName == null || glassName.isEmpty()) { |
| | | return list; |
| | | } |
| | | |
| | | // 匹配所有 "数字 + mm",支持小数,例如 3.2mm、5mm、8mm |
| | | Pattern pattern = Pattern.compile("(\\d+(?:\\.\\d+)?)mm"); |
| | | Matcher matcher = pattern.matcher(glassName); |
| | | |
| | | while (matcher.find()) { |
| | | String numStr = matcher.group(1); // 捕获 5、8、3.2 |
| | | try { |
| | | list.add(new BigDecimal(numStr)); |
| | | } catch (Exception ignore) { |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | //玻璃厚度求和 |
| | | private BigDecimal calcGlassThicknessSum(String glassName) { |
| | | return parseGlassThicknessList(glassName).stream() |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | } |
| | | |
| | | //上工序报工班组 |
| | | private void mergeTeamsGroupsName( List<WorkInProgressDTO> dataList1,List<WorkInProgressDTO> dataList2) { |
| | |
| | | if(productDetail!=null){ |
| | | dto1.setGlassName(productDetail.getDetail()); |
| | | } |
| | | BigDecimal thicknessSum = calcGlassThicknessSum(productDetail.getDetail()); |
| | | dto1.setThickness(thicknessSum); |
| | | |
| | | //basicData.getNickname().equals("stepC") |
| | | }else if(basicData.getNickname().equals("stepC")){ |
| | | }else if(basicData.getNickname().equals("stepC")){//夹层 |
| | | OrderGlassDetail orderGlassDetailGroup = orderGlassDetailMapper |
| | | .selectOne(new QueryWrapper<OrderGlassDetail>() |
| | | .eq("order_id", dto1.getOrderId()) |
| | |
| | | orderGlassDetailMapper.getMaxTechnologyNumberByGroup(dto1.getOrderId(),dto1.getOrderNumber(), String.valueOf(orderGlassDetailGroup.getGroup())) |
| | | ); |
| | | dto1.setGlassName(glassName); |
| | | |
| | | }else{ |
| | | dto1.setGlassName(dto1.getProductName()); |
| | | BigDecimal thicknessSum = calcGlassThicknessSum(glassName); |
| | | dto1.setThickness(thicknessSum); |
| | | }else{//中空 |
| | | String glassName = productDetailMapper.getGlassName(orderDetail.getProductId()); |
| | | dto1.setGlassName(glassName); |
| | | BigDecimal thicknessSum = calcGlassThicknessSum(glassName); |
| | | dto1.setThickness(thicknessSum); |
| | | } |
| | | |
| | | } |
| | |
| | | return map; |
| | | } |
| | | |
| | | public List exportCrossProcessBreakingSv(List<LocalDate> dates) { |
| | | public List exportCrossProcessBreakingSv(List<String> dates) { |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | List<LocalDateTime> dateTimeList = dates.stream() |
| | | .map(s -> LocalDateTime.parse(s, formatter)) |
| | | .collect(Collectors.toList()); |
| | | return reportMapper.exportCrossProcessBreakingMp(dates); |
| | | } |
| | | |
| | | public List exportNotCrossProcessBreakingSv(List<LocalDate> dates) { |
| | | return reportMapper.exportNotCrossProcessBreakingMp(dates); |
| | | public List exportNotCrossProcessBreakingSv(List<String> dates) { |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | List<LocalDateTime> dateTimeList = dates.stream() |
| | | .map(s -> LocalDateTime.parse(s, formatter)) |
| | | .collect(Collectors.toList()); |
| | | return reportMapper.exportNotCrossProcessBreakingMp(dateTimeList); |
| | | } |
| | | |
| | | // public List exportTeamOutputSv(Map<String, Object> dates) { |
| | |
| | | // String laminating = reportMapper.getLaminating(process); |
| | | // return reportMapper.exportTeamOutputMp(date,process,laminating); |
| | | // } |
| | | public List exportDamageReportSv(Map<String, Object> dates) { |
| | | List<LocalDate> date= (List<LocalDate>) dates.get("date"); |
| | | return reportMapper.exportDamageReportMp(date); |
| | | public List exportDamageReportSv(List<String> dates) { |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | List<LocalDateTime> dateTimeList = dates.stream() |
| | | .map(s -> LocalDateTime.parse(s, formatter)) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // 这里用 LocalDateTime 去调用 mapper |
| | | return reportMapper.exportDamageReportMp(dateTimeList); |
| | | } |
| | | |
| | | public List exportOrderPlanDecompositionSv(List<LocalDate> dates) { |
| | |
| | | |
| | | }else if(dateType.equals("year")){ |
| | | Integer maxOrderId = orderMapper.selectMaxOrderIdByYear(); |
| | | String formattedNumber = String.format("%"+(orderIdTypeMantissa+4)+"d", maxOrderId+1); |
| | | String formattedNumber = String.format("%0"+(orderIdTypeMantissa+4)+"d", maxOrderId+1); |
| | | Date currentDate = new Date(); |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat("yy"); |
| | | String formattedDate = dateFormat.format(currentDate); |
| | |
| | | |
| | | <select id="getSelectFinishedGlassShelfInformationInventoryArea"> |
| | | SELECT |
| | | MAX(CAST(REGEXP_REPLACE(glass_shelf_number, '[^0-9]', '')AS UNSIGNED)) AS maxDindex |
| | | ifnull(MAX(CAST(REGEXP_REPLACE(glass_shelf_number, '[^0-9]', '')AS UNSIGNED)),0) AS maxDindex |
| | | FROM |
| | | finished_glass_shelf_information |
| | | WHERE |
| | |
| | | from (select * |
| | | from mm.finished_operate_log aa where aa.operate_type = #{type} and aa.status!='已作废') fol |
| | | left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number |
| | | left join mm.finished_goods_inventory fgi on fgi.order_id = fol.order_id and fol.operation_number = fgi.order_number |
| | | left join mm.finished_goods_inventory fgi on fgi.order_id = fol.order_id and fol.operation_number = fgi.order_number and fgi.box_no=fol.remarks |
| | | left join sd.`order` o on o.order_id=fol.order_id |
| | | <where> |
| | | date(fol.operate_time)>=#{startDate} and date(fol.operate_time) <= #{endDate} |
| | |
| | | and o.project regexp #{finishedOperateLog.order.project} |
| | | </if> |
| | | </where> |
| | | group by fol.order_id,fol.operation_number,fol.remarks |
| | | order by fol.operate_time desc |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | | |
| | | <select id="getSelectStorageRecordLogPageTotal"> |
| | | select CEILING(count(fol.id)/#{pageSize}) as 'pageTotal', |
| | | count(fol.id) as 'total' |
| | | select |
| | | CEILING(count(zu.id)/#{pageSize}) as 'pageTotal', |
| | | count(zu.id) as 'total' from ( |
| | | select fol.id |
| | | from (select * |
| | | from mm.finished_operate_log aa where aa.operate_type = #{type} and aa.status!='已作废') fol |
| | | left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number |
| | | left join mm.finished_goods_inventory fgi on fgi.order_id = fol.order_id and fol.operation_number = fgi.order_number |
| | | left join mm.finished_goods_inventory fgi on fgi.order_id = fol.order_id and fol.operation_number = fgi.order_number and fgi.box_no=fol.remarks |
| | | left join sd.`order` o on o.order_id=fol.order_id |
| | | <where> |
| | | date(fol.operate_time)>=#{startDate} and date(fol.operate_time) <= #{endDate} |
| | |
| | | and o.project regexp #{finishedOperateLog.order.project} |
| | | </if> |
| | | </where> |
| | | group by fol.order_id,fol.operation_number,fol.remarks |
| | | order by fol.`status` desc |
| | | ) as zu |
| | | </select> |
| | | |
| | | <update id="updateToExamine"> |
| | |
| | | JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS code, |
| | | CONCAT(rw.process_id,'/',GROUP_CONCAT(distinct dd.technology_number SEPARATOR '')) as process_id, |
| | | rw.creator, |
| | | rw.reporting_work_id |
| | | rw.reporting_work_id, |
| | | ogd.child_width, |
| | | ogd.child_height, |
| | | JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) as thickness |
| | | from |
| | | sd.`order` as o left join sd.order_detail as od on o.order_id=od.order_id |
| | | left join sd.order_glass_detail as ogd on ogd.order_id=od.order_id and ogd.order_number=od.order_number |
| | | left join pp.reporting_work as rw on rw.order_id=o.order_id |
| | | left join pp.damage_details as dd on dd.reporting_work_id=rw.reporting_work_id and dd.order_number=ogd.order_number |
| | | and dd.technology_number=ogd.technology_number |
| | | left join sd.product_detail as pd on pd.prod_id=od.product_id |
| | | where (rw.reporting_work_time) >= #{startDate} |
| | | and (rw.reporting_work_time) <= #{endDate} |
| | | and rw.this_worn_quantity > 0 |
| | |
| | | <if test="crossProcessBreakingDTO.reportingWorkId != null and crossProcessBreakingDTO.reportingWorkId != ''"> |
| | | and rw.reporting_work_id like concat('%', #{crossProcessBreakingDTO.reportingWorkId}, '%') |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.childWidth != null and crossProcessBreakingDTO.childWidth != ''"> |
| | | and ogd.child_width regexp REGEXP_REPLACE(#{crossProcessBreakingDTO.childWidth},'\\.0+$','') |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.childHeight != null and crossProcessBreakingDTO.childHeight != ''"> |
| | | and ogd.child_height regexp REGEXP_REPLACE(#{crossProcessBreakingDTO.childHeight},'\\.0+$','') |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.thickness != null and crossProcessBreakingDTO.thickness != ''"> |
| | | and JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) like concat('%', #{crossProcessBreakingDTO.thickness}, '%') |
| | | </if> |
| | | GROUP BY dd.id |
| | | order by dd.id desc |
| | | limit #{offset},#{pageSize} |
| | |
| | | JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS code, |
| | | CONCAT(rw.process_id,'/',GROUP_CONCAT(distinct dd.technology_number SEPARATOR '')) as process_id, |
| | | rw.creator, |
| | | rw.reporting_work_id |
| | | rw.reporting_work_id, |
| | | ogd.child_width, |
| | | ogd.child_height, |
| | | JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) as thickness |
| | | from |
| | | sd.`order` as o left join sd.order_detail as od on o.order_id=od.order_id |
| | | left join sd.order_glass_detail as ogd on ogd.order_id=od.order_id and ogd.order_number=od.order_number |
| | | left join pp.reporting_work as rw on rw.order_id=o.order_id |
| | | left join pp.damage_details as dd on dd.reporting_work_id=rw.reporting_work_id and dd.order_number=ogd.order_number |
| | | and dd.technology_number=ogd.technology_number |
| | | left join sd.product_detail as pd on pd.prod_id=od.product_id |
| | | where (rw.reporting_work_time) >= #{startDate} |
| | | and (rw.reporting_work_time) <= #{endDate} |
| | | and rw.this_worn_quantity > 0 |
| | |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.reportingWorkId != null and crossProcessBreakingDTO.reportingWorkId != ''"> |
| | | and rw.reporting_work_id like concat('%', #{crossProcessBreakingDTO.reportingWorkId}, '%') |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.childWidth != null and crossProcessBreakingDTO.childWidth != ''"> |
| | | and ogd.child_width regexp REGEXP_REPLACE(#{crossProcessBreakingDTO.childWidth},'\\.0+$','') |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.childHeight != null and crossProcessBreakingDTO.childHeight != ''"> |
| | | and ogd.child_height regexp REGEXP_REPLACE(#{crossProcessBreakingDTO.childHeight},'\\.0+$','') |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.thickness != null and crossProcessBreakingDTO.thickness != ''"> |
| | | and JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) like concat('%', #{crossProcessBreakingDTO.thickness}, '%') |
| | | </if> |
| | | GROUP BY dd.id |
| | | order by dd.id desc |
| | |
| | | <if test="crossProcessBreakingDTO.reportingWorkId != null and crossProcessBreakingDTO.reportingWorkId != ''"> |
| | | and rw.reporting_work_id like concat('%', #{crossProcessBreakingDTO.reportingWorkId}, '%') |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.childWidth != null and crossProcessBreakingDTO.childWidth != ''"> |
| | | and ogd.child_width regexp REGEXP_REPLACE(#{crossProcessBreakingDTO.childWidth},'\\.0+$','') |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.childHeight != null and crossProcessBreakingDTO.childHeight != ''"> |
| | | and ogd.child_height regexp REGEXP_REPLACE(#{crossProcessBreakingDTO.childHeight},'\\.0+$','') |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.thickness != null and crossProcessBreakingDTO.thickness != ''"> |
| | | and JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) like concat('%', #{crossProcessBreakingDTO.thickness}, '%') |
| | | </if> |
| | | order by dd.id desc |
| | | </select> |
| | | |
| | |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.reportingWorkId != null and crossProcessBreakingDTO.reportingWorkId != ''"> |
| | | and rw.reporting_work_id like concat('%', #{crossProcessBreakingDTO.reportingWorkId}, '%') |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.childWidth != null and crossProcessBreakingDTO.childWidth != ''"> |
| | | and ogd.child_width regexp REGEXP_REPLACE(#{crossProcessBreakingDTO.childWidth},'\\.0+$','') |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.childHeight != null and crossProcessBreakingDTO.childHeight != ''"> |
| | | and ogd.child_height regexp REGEXP_REPLACE(#{crossProcessBreakingDTO.childHeight},'\\.0+$','') |
| | | </if> |
| | | <if test="crossProcessBreakingDTO.thickness != null and crossProcessBreakingDTO.thickness != ''"> |
| | | and JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) like concat('%', #{crossProcessBreakingDTO.thickness}, '%') |
| | | </if> |
| | | order by dd.id desc |
| | | </select> |
| | |
| | | ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') AS glassNumber, |
| | | rw.this_process, |
| | | rw.creator, |
| | | rw.reporting_work_id |
| | | rw.reporting_work_id, |
| | | JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) AS thickness |
| | | FROM |
| | | sd.ORDER AS o |
| | | LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id |
| | |
| | | AND dd.order_number = ogd.order_number |
| | | AND dd.technology_number = ogd.technology_number |
| | | left join sd.order_detail as od on o.order_id = od.order_id and od.order_number=ogd.order_number |
| | | left join sd.product_detail as pd on pd.prod_id=od.product_id |
| | | WHERE |
| | | rw.reporting_work_time >= #{selectTime1} |
| | | AND rw.reporting_work_time <= #{selectTime2} |
| | |
| | | </if> |
| | | <if test="damageReportDTO.childHeight != null and damageReportDTO.childHeight != ''"> |
| | | and ogd.child_height regexp REGEXP_REPLACE(#{damageReportDTO.childHeight},'\\.0+$','') |
| | | </if> |
| | | <if test="damageReportDTO.thickness != null and damageReportDTO.thickness != ''"> |
| | | and JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) like concat('%', #{damageReportDTO.thickness}, '%') |
| | | </if> |
| | | GROUP BY |
| | | dd.id |
| | |
| | | AND dd.order_number = ogd.order_number |
| | | AND dd.technology_number = ogd.technology_number |
| | | left join sd.order_detail as od on o.order_id = od.order_id and od.order_number=ogd.order_number |
| | | left join sd.product_detail as pd on pd.prod_id=od.product_id |
| | | WHERE |
| | | rw.reporting_work_time >= #{selectTime1} |
| | | AND rw.reporting_work_time <= #{selectTime2} |
| | |
| | | </if> |
| | | <if test="damageReportDTO.childHeight != null and damageReportDTO.childHeight != ''"> |
| | | and ogd.child_height regexp REGEXP_REPLACE(#{damageReportDTO.childHeight},'\\.0+$','') |
| | | </if> |
| | | <if test="damageReportDTO.thickness != null and damageReportDTO.thickness != ''"> |
| | | and JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) like concat('%', #{damageReportDTO.thickness}, '%') |
| | | </if> |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | |
| | | JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS code, |
| | | CONCAT(rw.process_id,'/',GROUP_CONCAT(distinct dd.technology_number SEPARATOR '')) as process_id, |
| | | rw.creator, |
| | | rw.reporting_work_id |
| | | rw.reporting_work_id, |
| | | ogd.child_width, |
| | | ogd.child_height, |
| | | JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) as thickness |
| | | from damage_details as dd |
| | | left join reporting_work as rw |
| | | on rw.reporting_work_id = dd.reporting_work_id |
| | |
| | | JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS code, |
| | | CONCAT(rw.process_id,'/',GROUP_CONCAT(distinct dd.technology_number SEPARATOR '')) as process_id, |
| | | rw.creator, |
| | | rw.reporting_work_id |
| | | rw.reporting_work_id, |
| | | ogd.child_width, |
| | | ogd.child_height, |
| | | JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) as thickness |
| | | from damage_details as dd |
| | | left join reporting_work as rw |
| | | on rw.reporting_work_id = dd.reporting_work_id |
| | |
| | | ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') AS glassNumber, |
| | | rw.this_process, |
| | | rw.creator, |
| | | rw.reporting_work_id |
| | | rw.reporting_work_id, |
| | | JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) AS thickness |
| | | FROM sd.ORDER AS o |
| | | LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id |
| | | LEFT JOIN reporting_work AS rw ON rw.order_id = o.order_id |
| | |
| | | AND dd.order_number = ogd.order_number |
| | | AND dd.technology_number = ogd.technology_number |
| | | left join sd.order_detail as od on o.order_id = od.order_id and od.order_number=ogd.order_number |
| | | left join sd.product_detail as pd on pd.prod_id=od.product_id |
| | | WHERE rw.reporting_work_time >= #{dates[0]} |
| | | and rw.reporting_work_time <= #{dates[1]} |
| | | AND dd.available = 0 and rw.reviewed_state>=0 |
| | |
| | | od.quantity - odpd.reporting_work_num as incompleteNum, |
| | | ROUND(ogd.child_width * ogd.child_height * (od.quantity - odpd.reporting_work_num) / 1000000, |
| | | 2) as incompleteArea, |
| | | od.product_name |
| | | od.product_name, |
| | | JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) AS thickness |
| | | |
| | | from sd.order_detail AS od |
| | | LEFT JOIN sd.order_glass_detail AS ogd |
| | |
| | | and odpd.process_id = fc.process_id |
| | | left join sd.`order` as o |
| | | on o.order_id = od.order_id |
| | | left join sd.product_detail as pd on pd.prod_id=od.product_id |
| | | where o.create_order>0 |
| | | and odpd.process = #{process} |
| | | and date(o.create_time) >= #{date[0]} |
| | |
| | | AND dd.technology_number = ogd.technology_number |
| | | LEFT JOIN sd.order_detail AS od ON o.order_id = od.order_id |
| | | AND od.order_number = ogd.order_number |
| | | left join sd.product_detail as pd on pd.prod_id=od.product_id |
| | | WHERE |
| | | rw.reporting_work_time >= #{selectTime1} |
| | | AND rw.reporting_work_time <= #{selectTime2} |
| | |
| | | <if test="damageReportDTO.childHeight != null and damageReportDTO.childHeight != ''"> |
| | | and ogd.child_height regexp REGEXP_REPLACE(#{damageReportDTO.childHeight},'\\.0+$','') |
| | | </if> |
| | | <if test="damageReportDTO.thickness != null and damageReportDTO.thickness != ''"> |
| | | and JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) like concat('%', #{damageReportDTO.thickness}, '%') |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="teamOutputFootSum"> |
| | |
| | | `order` as a |
| | | where |
| | | year(a.create_time) = year(now()) |
| | | and a.id>400 |
| | | </select> |
| | | |
| | | <select id="selectOrderIdMin"> |
| | |
| | | and glass_sort >= #{minTechnologyNumberByGroup} |
| | | and glass_sort >= #{minTechnologyNumberByGroup} |
| | | </select> |
| | | |
| | | <select id="getGlassName"> |
| | | SELECT GROUP_CONCAT(detail SEPARATOR '+') |
| | | from sd.product_detail |
| | | where prod_id = #{productId} and detail_type='glass' |
| | | </select> |
| | | </mapper> |