shicf
2025-09-03 fa08b41d1ce594b83c5aa4a5532cfc371e95e1c9
实时生产信息导出增加过站信息
已添加1个文件
已修改1个文件
132 ■■■■■ 文件已修改
product-server-data-center/src/main/java/com/product/data/center/entity/ProductDetailEntity.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
product-server-data-center/src/main/java/com/product/data/center/service/ProductionRealTimeInfoService.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
product-server-data-center/src/main/java/com/product/data/center/entity/ProductDetailEntity.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.product.data.center.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@EqualsAndHashCode
public class ProductDetailEntity {
    @ExcelProperty("工序")
    private String groupName;
    @ExcelProperty("产品SN")
    private String serialNumber;
    @ExcelProperty("过站时间")
    private Integer inStationTime;
    @ExcelProperty("状态")
    private Integer errorFlagText;
    @ExcelProperty("数量")
    private Integer itemCount;
    @ExcelProperty("制令单号")
    private String moNumber;
}
product-server-data-center/src/main/java/com/product/data/center/service/ProductionRealTimeInfoService.java
@@ -15,6 +15,7 @@
import com.product.core.service.support.AbstractBaseService;
import com.product.data.center.config.ErrorCode;
import com.product.data.center.entity.ManufacturingOrderEntity;
import com.product.data.center.entity.ProductDetailEntity;
import com.product.data.center.entity.ProductionDetailEntity;
import com.product.data.center.utils.QuerySqlParseUtil;
import com.product.datasource.dao.Dao;
@@ -74,7 +75,7 @@
//        writeSheet = EasyExcel.writerSheet(3, "制令单信息").build();
//        excelWriter.write(manufacturingOrderEntityList, writeSheet);
            String process = fse.getString("process");
            int page=0;
            String[] moNumbers = manufacturingCommandSheet.getData().stream().map(item -> item.getString("mo_number")).toArray(String[]::new);
            for (int i = 1; i <= moNumbers.length; i++) {
                String moNumber = moNumbers[i - 1];
@@ -87,7 +88,7 @@
                    continue;
                }
                fileName = moNumber + "的生产明细";
                writeSheet = EasyExcel.writerSheet(i + 1, fileName).head(ProductionDetailEntity.class).build();
                writeSheet = EasyExcel.writerSheet(++page, fileName).head(ProductionDetailEntity.class).build();
                List<ProductionDetailEntity> productionDetailEntities = new ArrayList<>();
                for (int k = 0; k < processSheet.getRows(); k++) {
                    JSONObject jsonObject = new JSONObject((Map) processSheet.getFieldSetEntity(k).getValues());
@@ -95,6 +96,22 @@
                    productionDetailEntities.add(productionDetail);
                }
                excelWriter.write(productionDetailEntities, writeSheet);
                //查出订单的所有过站明细
                DataTableEntity detail = getProcessSheet(ff);
                if (DataTableEntity.isEmpty(processSheet)) {
                    continue;
                }
                fileName = moNumber + "的过站明细";
                writeSheet = EasyExcel.writerSheet(++page, fileName).head(ProductDetailEntity.class).build();
                DataTableEntity detailSheet = getProductDetailSheet(ff);
                List<ProductDetailEntity> productDetailEntity = new ArrayList<>();
                for (int k = 0; k < processSheet.getRows(); k++) {
                    JSONObject jsonObject = new JSONObject((Map) detailSheet.getFieldSetEntity(k).getValues());
                    ProductDetailEntity productDetail = jsonObject.toJavaObject(ProductDetailEntity.class);
                    productDetailEntity.add(productDetail);
                }
                excelWriter.write(productDetailEntity, writeSheet);
            }
        } catch (Exception e) {
            throw e;
@@ -272,13 +289,77 @@
    /**
     * 2025-09-02改
     * ç”Ÿäº§å®žæ—¶æ•°æ®ï¼Œå› da_t_wip_tracking表display_group='N/A',查不出数据
     * æ”¹ä¸ºæŸ¥ t_wip_DETAIL表 æ›´æ”¹äº†display_group->group_name字段,去掉routeendflage å’Œrouteendflage条件
     * æ”¹ä¸ºæŸ¥ da_t_wip_detail表 æ›´æ”¹äº†display_group->group_name字段,去掉routeendflage å’Œrouteendflage条件
     * @param fse
     * @return
     * @throws BaseException
     */
    public DataTableEntity getProductDetailSheet(FieldSetEntity fse) throws BaseException {
        String trackingTable = "da_t_wip_detail";
        String moNumber = fse.getString("mo_number");
        StringBuilder sql = new StringBuilder(64);
        sql.append("select number_type from [={" + trackingTable + "}{number_type,mo_number}{ where mo_number='" + moNumber + "' and number_type!=0}=] ");
        String parseSql = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), sql.toString());
        FieldSetEntity fs = getBaseDao().getFieldSetEntityBySQL(parseSql, new Object[]{}, false);
        if (fs != null) {
            List<Object> params = new ArrayList<>();
            Integer numberType = NumberUtil.isNumber(fs.getString("number_type")) ? NumberUtil.parseInt(fs.getString("number_type")) : 0;
            if (numberType == null || numberType < 1) {
                return null;
            }
            sql.setLength(0);
            String scrap = "报废";
            String lend = "借出";
            sql.append("\n select t.serial_number,t.in_station_time, ");
            sql.append("\n (case t.group_name when 'n/a' then ' ' else ");
            sql.append("\n (case t.error_flag when '0' then 'ok' when '1' then 'ng' when '3' then ? when '4' then ? else 'ng' end ) end) error_flag_text, ");
            sql.append("\n t.error_flag, ");
            sql.append("\n t.mo_number,t.group_name,t.item_count,t.repair,e.emp_name,t.container_sn, ");
            sql.append("\n t.wait_scrap_qty,t.depanel_flag ");
            sql.append("\n from [={" + trackingTable + " d1}{serial_number,in_station_time,group_name,error_flag,mo_number,item_count,repair,container_sn,wait_scrap_qty,depanel_flag");
            sql.append(",emp_no,number_type }");
            sql.append("{ WHERE number_type='" + numberType + "' and  mo_number='" + moNumber + "'  }");
            sql.append("=] t ");
            sql.append("\n left join ");
            sql.append("\n da_t_co_emp_desc e ");
            sql.append("\n on t.emp_no=e.emp_no ");
            sql.append("\n union all ");
            sql.append("\n select t.serial_number,t.in_station_time, ");
            sql.append("\n (case t.group_name when 'n/a' then ' ' else ");
            sql.append("\n (case t.error_flag when '0' then 'ok' when '1' then 'ng' when '3' then ? when '4' then ? else 'ng' end ) end) error_flag_text, ");
            sql.append("\n t.error_flag, ");
            sql.append("\n t.mo_number,t.group_name,t.item_count,t.repair,e.emp_name,t.container_sn, ");
            sql.append("\n t.wait_scrap_qty,t.depanel_flag ");
            sql.append("\n from [={" + trackingTable + " d2}{serial_number,in_station_time,group_name,error_flag,mo_number,item_count,repair,container_sn,wait_scrap_qty,depanel_flag");
            sql.append(",emp_no,number_type }{ where  number_type='" + numberType + "' and  mo_number='" + moNumber + "'");
            sql.append(" and error_flag='1'}");
            sql.append("=] t");
            sql.append("\n left join ");
            sql.append("\n da_t_co_emp_desc e ");
            sql.append("\n on t.emp_no=e.emp_no ");
            sql.append("\n order by error_flag asc,in_station_time asc ");
            params.add(scrap);
            params.add(lend);
            params.add(scrap);
            params.add(lend);
            System.out.println(sql);
            String parseSql1 = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), sql.toString(), 2);
            return getBaseDao().listTable(parseSql1, params.toArray());
        }
        return null;
    }
    /**
     * 2025-09-02改
     * ç”Ÿäº§å®žæ—¶æ•°æ®ï¼Œå› da_t_wip_tracking表display_group='N/A',查不出数据
     * æ”¹ä¸ºæŸ¥ da_t_wip_detail表 æ›´æ”¹äº†display_group->group_name字段,去掉routeendflage å’Œrouteendflage条件
     * @param fse
     * @return
     * @throws BaseException
     */
    public DataTableEntity getProductSheetV2(FieldSetEntity fse) throws BaseException {
        String trackingTable = "da_t_wip_DETAIL";
        String trackingTable = "da_t_wip_detail";
        String groupNext = fse.getString("group_next");
        String moNumber = fse.getString("mo_number");
        StringBuilder sql = new StringBuilder(64);
@@ -304,8 +385,8 @@
                sql.append("\n t.mo_number,t.group_name,t.item_count,t.repair,e.emp_name,t.container_sn, ");
                sql.append("\n (select sum(count) from [={da_t_pm_product_sn}{COUNT(1) count,product_sn }{GROUP BY product_sn}=] where product_sn=t.serial_number) product_count, ");
                sql.append("\n t.wait_scrap_qty,t.depanel_flag ");
                sql.append("\n from [={" + trackingTable + " d1}{emp_no,number_type,mo_number,GROUP_NAME,item_count,depanel_flag,wait_scrap_qty");
                sql.append("lot_number,in_station_time,serial_number,group_name,error_flag,group_name,repair,container_sn,in_station_time");
                sql.append("\n from [={" + trackingTable + " d1}{emp_no,number_type,mo_number,item_count,depanel_flag,wait_scrap_qty");
                sql.append("lot_number,in_station_time,serial_number,group_name,error_flag,repair,container_sn,in_station_time");
                sql.append("}{where mo_number='" + moNumber + "' and t.number_type='" + numberType + "' and GROUP_NAME='" + groupNext + "' and t.item_count!=0 }=] t ");
                sql.append("\n left join da_t_co_emp_desc e ");
                sql.append("\n on t.emp_no=e.emp_no ");
@@ -320,7 +401,7 @@
                sql.append("\n (select sum(count) from [={da_t_pm_product_sn}{COUNT(1) count,product_sn }{GROUP BY product_sn}=] where product_sn=t.serial_number) product_count, ");
                sql.append("\n t.wait_scrap_qty,t.depanel_flag ");
                sql.append("\n from [={" + trackingTable + " d2}{");
                sql.append("lot_number,in_station_time,serial_number,group_name,error_flag,group_name,repair,container_sn");
                sql.append("lot_number,in_station_time,serial_number,group_name,error_flag,repair,container_sn");
                sql.append(",number_type,mo_number,item_count,in_station_time,depanel_flag,wait_scrap_qty,serial_number,emp_name}");
                sql.append("{where number_type='" + numberType + "' and mo_number='" + moNumber + "' and group_name='" + groupNext + "' ");
                sql.append(" and item_count!=0  and error_flag='1'} ");
@@ -337,7 +418,7 @@
                sql.append("\n ifnull(c.product_count,0) product_count, ");
                sql.append("\n t.wait_scrap_qty,t.depanel_flag ");
                sql.append("\n from [={" + trackingTable + "}");
                sql.append(" {lot_number,in_station_time,serial_number,group_name,error_flag,mo_number,group_name,item_count,repair");
                sql.append(" {lot_number,in_station_time,serial_number,group_name,error_flag,mo_number,item_count,repair");
                sql.append(",container_sn,serial_number,wait_scrap_qty,depanel_flag,number_type,emp_no}");
                sql.append("\n  {where number_type='" + numberType + "'  and mo_number='" + moNumber + "'  ");
@@ -358,7 +439,7 @@
                sql.append("\n t.mo_number,t.group_name,t.item_count,t.repair,e.emp_name,t.container_sn, ");
                sql.append("\n t.wait_scrap_qty,t.depanel_flag ");
                sql.append("\n from [={" + trackingTable + " d1}{serial_number,in_station_time,group_name,error_flag,mo_number,item_count,repair,container_sn,wait_scrap_qty,depanel_flag");
                sql.append(",emp_no,number_type,GROUP_NAME }");
                sql.append(",emp_no,number_type }");
                sql.append("{ WHERE number_type='" + numberType + "' and GROUP_NAME='" + groupNext + "' and  mo_number='" + moNumber + "'  }");
                sql.append("=] t ");
                sql.append("\n left join ");
@@ -375,7 +456,7 @@
                sql.append("\n t.mo_number,t.group_name,t.item_count,t.repair,e.emp_name,t.container_sn, ");
                sql.append("\n t.wait_scrap_qty,t.depanel_flag ");
                sql.append("\n from [={" + trackingTable + " d2}{serial_number,in_station_time,group_name,error_flag,mo_number,item_count,repair,container_sn,wait_scrap_qty,depanel_flag");
                sql.append(",emp_no,number_type,GROUP_NAME }{ where  number_type='" + numberType + "' and  mo_number='" + moNumber + "' and group_name='" + groupNext + "'");
                sql.append(",emp_no,number_type }{ where  number_type='" + numberType + "' and  mo_number='" + moNumber + "' and group_name='" + groupNext + "'");
                sql.append(" and error_flag='1'}");
                sql.append("=] t");
                sql.append("\n left join ");