廖井涛
3 天以前 6d6ae282ee8a58d6846e7c6986649c474444dae7
Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
17个文件已修改
229 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/views/pp/report/CrossProcessBreaking.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/NotCrossProcessBreaking.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/dto/pp/CrossProcessBreakingDTO.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/dto/pp/DamageReportDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/dto/pp/ProcessToBeCompletedDTO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/dto/pp/WorkInProgressDTO.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/ProductDetailMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/Report.xml 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/ProductDetailMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/CrossProcessBreaking.vue
@@ -18,6 +18,9 @@
    {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' }},
north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue
@@ -46,6 +46,7 @@
    {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')},
@@ -55,7 +56,7 @@
  data:[],//表格数据
  url :'/report/damageReport',
  exportUrl :'/report/exportDamageReport',
  exportName:t('report.crossProcessBreakdown'),
  exportName:t('report.secondaryBrokenTotal'),
  footList:['breakageQuantity','area']
})
north-glass-erp/northglass-erp/src/views/pp/report/NotCrossProcessBreaking.vue
@@ -18,6 +18,9 @@
    {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' }},
@@ -28,7 +31,7 @@
  data:[],//表格数据
  url :'/report/notCrossProcessBreaking',
  exportUrl :'/report/exportNotCrossProcessBreaking',
  exportName:t('report.crossProcessBreakdown'),
  exportName:t('report.notCrossProcessBreakdown'),
  footList:['breakageQuantity','area']
})
north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue
@@ -290,6 +290,7 @@
      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: ''}],
north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue
@@ -143,6 +143,7 @@
  }
  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 => {
@@ -180,10 +181,10 @@
  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');
@@ -246,10 +247,10 @@
  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 可能是字符串就用 ==,如果一定是数字就用 ===
@@ -359,6 +360,7 @@
      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: ''}],
@@ -394,7 +396,7 @@
        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 ''
      })
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportController.java
@@ -213,21 +213,21 @@
    }
    @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");
    }
north-glass-erp/src/main/java/com/example/erp/dto/pp/CrossProcessBreakingDTO.java
@@ -27,6 +27,12 @@
    private String breakageType;
    @ExcelProperty("次破原因")
    private String breakageReason;
    @ExcelProperty("宽")
    private Double childWidth;
    @ExcelProperty("高")
    private Double childHeight;
    @ExcelProperty("厚度")
    private String thickness;
    @ExcelProperty("次破数量")
    private Integer breakageQuantity;
    @ExcelProperty("次破面积")
@@ -45,4 +51,5 @@
    private String creator;
    @ExcelProperty("报工编号")
    private String reportingWorkId;
}
north-glass-erp/src/main/java/com/example/erp/dto/pp/DamageReportDTO.java
@@ -48,10 +48,13 @@
    private Double childWidth;
    @ExcelProperty("高")
    private Double childHeight;
    @ExcelProperty("厚度")
    private String thickness;
    @ExcelProperty("报工工序")
    private String thisProcess;
    @ExcelProperty("创建人")
    private String creator;
    @ExcelProperty("报工编号")
    private String reportingWorkId;
}
north-glass-erp/src/main/java/com/example/erp/dto/pp/ProcessToBeCompletedDTO.java
@@ -47,4 +47,6 @@
    private Double incompleteArea;
    @ExcelProperty("成品名称")
    private String productName;
    @ExcelProperty("厚度")
    private String thickness;
}
north-glass-erp/src/main/java/com/example/erp/dto/pp/WorkInProgressDTO.java
@@ -3,6 +3,8 @@
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class WorkInProgressDTO {
    @ExcelProperty("工序")
@@ -31,10 +33,12 @@
    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("在制品名称")
@@ -45,4 +49,5 @@
    private String glassNumber;
    @ExcelProperty("上工序报工班组")
    private String teamsGroupsName;
}
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java
@@ -8,6 +8,7 @@
import java.sql.Date;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@@ -48,13 +49,13 @@
    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);
north-glass-erp/src/main/java/com/example/erp/mapper/sd/ProductDetailMapper.java
@@ -13,4 +13,6 @@
    boolean insertList(List<ProductDetail> getProductDetails);
    String getGlassNameByGroup(Integer productId, Integer minTechnologyNumberByGroup, Integer maxTechnologyNumberByGroup);
    String getGlassName(Integer productId);
}
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
@@ -15,9 +15,11 @@
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;
@@ -32,6 +34,8 @@
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;
@@ -58,6 +62,33 @@
    @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) {
@@ -86,9 +117,11 @@
              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())
@@ -102,9 +135,13 @@
                      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);
          }
        }
@@ -973,12 +1010,22 @@
        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) {
@@ -990,9 +1037,15 @@
//        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) {
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -204,7 +204,7 @@
        }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);
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -278,13 +278,17 @@
               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) &lt;= #{endDate}
          and rw.this_worn_quantity > 0
@@ -331,6 +335,15 @@
        <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}
@@ -354,13 +367,17 @@
        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) &lt;= #{endDate}
        and rw.this_worn_quantity > 0
@@ -406,6 +423,15 @@
        </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
@@ -469,6 +495,15 @@
        <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>
@@ -528,6 +563,15 @@
        </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>
@@ -788,7 +832,8 @@
        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
@@ -797,6 +842,7 @@
        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 &lt;=  #{selectTime2}
@@ -852,6 +898,9 @@
        </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
@@ -870,6 +919,7 @@
        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 &lt;=  #{selectTime2}
@@ -924,6 +974,9 @@
        </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>
@@ -1302,7 +1355,10 @@
               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
@@ -1339,7 +1395,10 @@
               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
@@ -1381,7 +1440,8 @@
               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
@@ -1389,6 +1449,7 @@
            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 &lt;= #{dates[1]}
          AND dd.available = 0 and rw.reviewed_state>=0
@@ -1461,7 +1522,8 @@
               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
@@ -1479,6 +1541,7 @@
                               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]}
@@ -2668,6 +2731,7 @@
                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 &lt;=  #{selectTime2}
@@ -2723,6 +2787,9 @@
        <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">
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -39,7 +39,6 @@
            `order` as a
        where
            year(a.create_time)  = year(now())
            and a.id>400
    </select>
    <select id="selectOrderIdMin">
north-glass-erp/src/main/resources/mapper/sd/ProductDetailMapper.xml
@@ -33,4 +33,10 @@
      and glass_sort >= #{minTechnologyNumberByGroup}
      and glass_sort &gt;= #{minTechnologyNumberByGroup}
    </select>
    <select id="getGlassName">
        SELECT GROUP_CONCAT(detail SEPARATOR '+')
        from sd.product_detail
        where prod_id = #{productId} and detail_type='glass'
    </select>
</mapper>