2025-09-02改
* 生产实时数据,因da_t_wip_tracking表display_group='N/A',查不出数据
* 改为查 t_wip_DETAIL表
已修改2个文件
167 ■■■■■ 文件已修改
product-server-data-center/src/main/java/com/product/data/center/controller/ProductionRealTimeInfoController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
product-server-data-center/src/main/java/com/product/data/center/service/ProductionRealTimeInfoService.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
product-server-data-center/src/main/java/com/product/data/center/controller/ProductionRealTimeInfoController.java
@@ -93,7 +93,13 @@
    public String getProductReport(HttpServletRequest request) {
        try {
            FieldSetEntity fse = BaseUtil.getFieldSetEntity(request);
            return OK_List(productionRealTimeInfoService.getProductSheet(fse));
            /**
             * 2025-09-02改
             * 生产实时数据,因da_t_wip_tracking表display_group='N/A',查不出数据
             * 改为查 t_wip_DETAIL表
             */
//            return OK_List(productionRealTimeInfoService.getProductSheet(fse));
            return OK_List(productionRealTimeInfoService.getProductSheetV2(fse));
        } catch (BaseException e) {
            e.printStackTrace();
            return error(e);
product-server-data-center/src/main/java/com/product/data/center/service/ProductionRealTimeInfoService.java
@@ -269,7 +269,166 @@
        return dataTableEntity;
    }
    /**
     * 2025-09-02改
     * 生产实时数据,因da_t_wip_tracking表display_group='N/A',查不出数据
     * 改为查 t_wip_DETAIL表
     * @param fse
     * @return
     * @throws BaseException
     */
    public DataTableEntity getProductSheetV2(FieldSetEntity fse) throws BaseException {
        String trackingTable = "da_t_wip_DETAIL";
        String groupNext = fse.getString("group_next");
        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 = "借出";
            if (1 == numberType && !"流程结束".equals(groupNext)) {
                sql.append("\n select t.lot_number,t.in_station_time,t.serial_number, ");
                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 (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("}{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 ");
//                sql.append("\n where t.number_type=? and t.mo_number=? and t.GROUP_NAME=? ");
//                sql.append("\n and t.item_count!=0 ");
                sql.append("\n union all ");
                sql.append("\n select t.lot_number,t.in_station_time,t.serial_number, ");
                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 (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(",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'} ");
                sql.append("=] t ");
                sql.append("\n left join 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 ");
            } else if (2 == numberType && "流程结束".equals(groupNext)) {
                sql.append("\n select t.lot_number,t.in_station_time,t.serial_number, ");
                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 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(",container_sn,serial_number,wait_scrap_qty,depanel_flag,number_type,emp_no}");
                sql.append("\n  {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 LEFT JOIN ");
                sql.append("\n(SELECT SUM(COUNT) product_count,product_sn  FROM [={da_t_pm_product_sn}{COUNT(1) count,product_sn}{WHERE product_sn in (select serial_number from " + trackingTable + ") group by product_sn }=] group by product_sn  ) C ");
                sql.append("\n ON t.serial_number=c.product_sn ");
                sql.append("\n order by error_flag asc,in_station_time asc ");
            } else if (2 == numberType && !"流程结束".equals(groupNext)) {
                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,GROUP_NAME }");
                sql.append("{ WHERE number_type='" + numberType + "' and GROUP_NAME='" + groupNext + "' 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 where t.number_type=? ");
//                sql.append("\n and t.mo_number=? and t.GROUP_NAME=? ");
//                sql.append("\n  ");
                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,GROUP_NAME }{ 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 ");
                sql.append("\n da_t_co_emp_desc e ");
                sql.append("\n on t.emp_no=e.emp_no ");
//                sql.append("\n where t.number_type=? ");
//                sql.append("\n and t.mo_number=? and t.group_name=? ");
//                sql.append("\n and error_flag='1' ");
                sql.append("\n order by error_flag asc,in_station_time asc ");
            } else if (1 == numberType && "流程结束".equals(groupNext)) {
                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 + "}");
                sql.append("{serial_number,in_station_time,group_name,error_flag,mo_number,item_count,repair,emp_name,container_sn,");
                sql.append("wait_scrap_qty,depanel_flag,emp_no,number_type}{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 on t.emp_no=e.emp_no ");
//                sql.append("\n where t.number_type=? ");
//                sql.append("\n and t.mo_number=?  ");
                sql.append("\n order by error_flag asc,in_station_time asc ");
            } else {
                return null;
            }
            if (!"流程结束".equals(groupNext)) {
                params.add(scrap);
                params.add(lend);
//                params.add(numberType);
//                params.add(moNumber);
//                params.add(groupNext);
                params.add(scrap);
                params.add(lend);
//                params.add(numberType);
//                params.add(moNumber);
//                params.add(groupNext);
            } else {
                params.add(scrap);
                params.add(lend);
//                params.add(moNumber);
//                params.add(numberType);
            }
            System.out.println(sql);
            String parseSql1 = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), sql.toString(), 2);
            return getBaseDao().listTable(parseSql1, params.toArray());
        }
        return null;
    }
    public DataTableEntity getProductSheet(FieldSetEntity fse) throws BaseException {
        String trackingTable = "da_t_wip_tracking";
        String groupNext = fse.getString("group_next");