From fa08b41d1ce594b83c5aa4a5532cfc371e95e1c9 Mon Sep 17 00:00:00 2001
From: shicf <shi_chongfu@163.com>
Date: 星期三, 03 九月 2025 18:27:19 +0800
Subject: [PATCH] 实时生产信息导出增加过站信息

---
 product-server-data-center/src/main/java/com/product/data/center/service/ProductionRealTimeInfoService.java |  101 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 91 insertions(+), 10 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 9e2501d..b689509 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;
@@ -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琛╠isplay_group='N/A',鏌ヤ笉鍑烘暟鎹�
-	 * 鏀逛负鏌� t_wip_DETAIL琛� 鏇存敼浜哾isplay_group->group_name瀛楁锛屽幓鎺塺outeendflage 鍜宺outeendflage鏉′欢
+	 * 鏀逛负鏌� da_t_wip_detail琛� 鏇存敼浜哾isplay_group->group_name瀛楁锛屽幓鎺塺outeendflage 鍜宺outeendflage鏉′欢
+	 * @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 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 ");

--
Gitblit v1.9.2