From aba4b755a3afc61a07538e4bfd8217979919907d Mon Sep 17 00:00:00 2001 From: shicf <shi_chongfu@163.com> Date: 星期一, 08 九月 2025 11:42:05 +0800 Subject: [PATCH] 生产实时查询,过站信息修改 制令单关联的工单数据 未找到日志输出 --- product-server-data-center/src/main/java/com/product/data/center/service/ProductionRealTimeInfoService.java | 248 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 245 insertions(+), 3 deletions(-) diff --git a/product-server-data-center/src/main/java/com/product/data/center/service/ProductionRealTimeInfoService.java b/product-server-data-center/src/main/java/com/product/data/center/service/ProductionRealTimeInfoService.java index 88ead0a..015c95b 100644 --- a/product-server-data-center/src/main/java/com/product/data/center/service/ProductionRealTimeInfoService.java +++ b/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; @@ -53,6 +54,7 @@ String fileName = URLEncoder.encode("鍒朵护鍗曠敓浜т俊鎭�" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".xlsx", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName); List<ManufacturingOrderEntity> manufacturingOrderEntityList = new ArrayList<>(); + int page=1; for (int i = 0; i < manufacturingCommandSheet.getRows(); i++) { FieldSetEntity fieldSetEntity = manufacturingCommandSheet.getFieldSetEntity(i); Map<Object, Object> values = fieldSetEntity.getValues(); @@ -74,7 +76,6 @@ // writeSheet = EasyExcel.writerSheet(3, "鍒朵护鍗曚俊鎭�").build(); // excelWriter.write(manufacturingOrderEntityList, writeSheet); String process = fse.getString("process"); - 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]; @@ -86,8 +87,9 @@ if (DataTableEntity.isEmpty(processSheet)) { continue; } - fileName = moNumber + "鐨勭敓浜ф槑缁�"; - writeSheet = EasyExcel.writerSheet(i + 1, fileName).head(ProductionDetailEntity.class).build(); + page++; + fileName = moNumber + "鐢熶骇鏄庣粏"; + 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 +97,24 @@ productionDetailEntities.add(productionDetail); } excelWriter.write(productionDetailEntities, writeSheet); + //2025-09-03鏀� 澧炲姞杩囨护淇℃伅------------------------------- + + //鏌ュ嚭璁㈠崟鐨勬墍鏈夎繃绔欐槑缁� + DataTableEntity detailSheet = getProductDetailSheet(ff); + if (DataTableEntity.isEmpty(detailSheet)) { + continue; + } + page++; + fileName = moNumber + "杩囩珯鏄庣粏"; + writeSheet = EasyExcel.writerSheet(page, fileName).head(ProductDetailEntity.class).build(); + List<ProductDetailEntity> productDetailEntity = new ArrayList<>(); + for (int k = 0; k < detailSheet.getRows(); k++) { + JSONObject jsonObject = new JSONObject((Map) detailSheet.getFieldSetEntity(k).getValues()); + ProductDetailEntity productDetail = jsonObject.toJavaObject(ProductDetailEntity.class); + productDetailEntity.add(productDetail); + } + excelWriter.write(productDetailEntity, writeSheet); + //2025-09-03鏀�------------------------------------------- } } catch (Exception e) { throw e; @@ -269,7 +289,229 @@ return dataTableEntity; } + /** + * 2025-09-03鏀� + * 鐢熶骇瀹炴椂鏁版嵁锛屾煡璇㈠鍑哄鍔犺繃绔欎俊鎭� + * @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琛╠isplay_group='N/A',鏌ヤ笉鍑烘暟鎹� + * 鏀逛负鏌� da_t_wip_detail琛� 鏇存敼浜哾isplay_group->group_name瀛楁锛屽幓鎺塺outeendflage 鍜宺outeendflage鏉′欢 + * @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,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 "); +// 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,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,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 }"); + 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 }{ 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"); -- Gitblit v1.9.2