From a7b18ead641993787f29cfb3c143a39ef3e60b5e Mon Sep 17 00:00:00 2001 From: 许鹏程 <1821349743@qq.com> Date: 星期一, 23 十月 2023 18:49:54 +0800 Subject: [PATCH] commit --- product-server-data-center/src/main/java/com/product/data/center/service/ProductionRealTimeInfoService.java | 1021 ++++++++++---------- product-server-data-center/src/main/java/com/product/data/center/service/SNAssociatedItemService.java | 384 ++++--- product-server-web/src/main/resources/application-prod.properties | 16 product-server-data-center/src/main/java/com/product/data/center/service/TraceToSourceService.java | 255 ++-- product-server-web/resources/license001.dat | 0 product-server-web/src/main/java/com/product/Application.java | 4 product-server-web/lib/product-server-core-1.0.0-releases.jar | 0 product-server-data-center/src/main/java/com/product/data/center/entity/SNAssociatedItemEntity.java | 36 product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService.java | 147 ++ product-server-data-center/src/main/java/com/product/data/center/controller/MesExternalController.java | 7 product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService1.java | 977 ++++++++++++++++++++ product-server-web/resources/LicenseKey.dat | 2 resources/LicenseKey.dat | 1 product-server-web/src/main/resources/application-dev.properties | 6 14 files changed, 1,979 insertions(+), 877 deletions(-) diff --git a/product-server-data-center/src/main/java/com/product/data/center/controller/MesExternalController.java b/product-server-data-center/src/main/java/com/product/data/center/controller/MesExternalController.java index 5a207ff..ac58f4a 100644 --- a/product-server-data-center/src/main/java/com/product/data/center/controller/MesExternalController.java +++ b/product-server-data-center/src/main/java/com/product/data/center/controller/MesExternalController.java @@ -77,6 +77,13 @@ } } + @PostMapping("/split-table-data/{version}") + @ApiVersion(1) + public String splitTableData(HttpServletRequest request) { + mesExternalService.splitTableData(); + return OK(); + } + @PostMapping("rehandle-error/{version}") @ApiVersion(1) public String rehandleError(HttpServletRequest request) { diff --git a/product-server-data-center/src/main/java/com/product/data/center/entity/SNAssociatedItemEntity.java b/product-server-data-center/src/main/java/com/product/data/center/entity/SNAssociatedItemEntity.java index 226f3ec..654c54e 100644 --- a/product-server-data-center/src/main/java/com/product/data/center/entity/SNAssociatedItemEntity.java +++ b/product-server-data-center/src/main/java/com/product/data/center/entity/SNAssociatedItemEntity.java @@ -14,49 +14,49 @@ @ExcelProperty("宸ュ崟") private String moNumber; - + @ExcelProperty("鏁存満MN") private String zj; - + @ExcelProperty("鍐呮満/澶栨満SN") private String pkProductSn; - - @ExcelProperty("鐐瑰嚮MN") + + @ExcelProperty("鐢垫満MN") private String dj; - + @ExcelProperty("鍘嬬缉鏈篠N") private String ysj; - + @ExcelProperty("鍘嬬缉鏈篗N") private String ysjmn; - + @ExcelProperty("鐢垫帶鏉縈N") private String dk; - + @ExcelProperty("鏄剧ず鏉縈N") private String xsq; - + @ExcelProperty("閬ユ帶鍣⊿N") private String ykq; - + @ExcelProperty("涓绘澘杞欢") private String zbrj; - + @ExcelProperty("wifi鏉縎N") private String mk; - + @ExcelProperty("闀垮昂閰嶇") private String ccpg; - + @ExcelProperty("鏂伴缁勪欢") private String xfzj; - + @ExcelProperty("瀹夎鏈嶅姟鐮�") private String fjd; - + @ExcelProperty("绾夸綋") private String areaName; - + @ExcelProperty("涓嬬嚎鏃堕棿") private String inLineTime; @@ -195,6 +195,6 @@ + zbrj + ", mk=" + mk + ", ccpg=" + ccpg + ", xfzj=" + xfzj + ", fjd=" + fjd + ", areaName=" + areaName + ", inLineTime=" + inLineTime + "]"; } - - + + } diff --git a/product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService.java b/product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService.java index 8e98ecc..19092a8 100644 --- a/product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService.java +++ b/product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService.java @@ -3,13 +3,13 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Sets; import com.product.common.utils.spring.SpringUtils; import com.product.core.config.CoreConst; import com.product.core.config.Global; @@ -43,10 +43,7 @@ import java.sql.SQLException; import java.time.format.DateTimeFormatter; import java.util.*; -import java.util.concurrent.Callable; -import java.util.concurrent.CompletionService; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; +import java.util.concurrent.*; import java.util.stream.Collectors; /** @@ -69,6 +66,78 @@ this.commonService = SpringBeanUtil.getBean(CommonService.class); } return commonService; + } + + public static void main(String[] args) { + Date parse = DateUtil.parse("2023-10-23 18:22:50", "yyyy-MM-dd HH:mm:ss"); + Date parse1 = DateUtil.parse("2023-10-23 18:24:11", "yyyy-MM-dd HH:mm:ss"); + Date parse2 = DateUtil.parse("2023-10-23 18:24:21", "yyyy-MM-dd HH:mm:ss"); + + Set<Date> set = Sets.newHashSet(parse, parse1, parse2); + + List<Date> sets = CollectionUtil.toList(set.toArray(new Date[0])); + + Optional<Date> max = sets.stream().max(Comparator.comparing((a) -> a.getTime())); + System.out.println(max.get()); + + } + + + public void splitTableData() { + FieldSetEntity reportDbConfig = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MANAGER, "SYNC_NAME=?", new Object[]{"鎶ヨ〃鏁版嵁搴�"}, false); + if (FieldSetEntity.isEmpty(reportDbConfig)) { + throw new BaseException(ErrorCode.REPORT_DB_CONFIG_FAIL); + } + DataBaseEntity dbe = new DataBaseEntity(reportDbConfig); + Dao reportDao = dbe.getDao(); + Set<String> trackingTableSet = QuerySqlParseUtil.getAllTableName(reportDao, dbe.getDbName(), "da_t_wip_tracking"); + + for (String tableName : trackingTableSet) { + //鑾峰彇骞翠唤浠庤〃鍚嶆渶鍚庝竴涓� 涓嬪垝绾垮紑濮嬫埅鍙� + String year = tableName.substring(tableName.lastIndexOf("_") + 1); + if (StringUtils.equalsAny(year, "2017", "2018") || year.length() > 4) { + continue; + } + //鑾峰彇琛ㄥ墠缂� + String tablePrefix = tableName.substring(0, tableName.lastIndexOf("_")); + ExecutorService executorService = Executors.newFixedThreadPool(12); + for (int i = 1; i <= 12; i++) { + if ("2023".equals(year) && i > 9) { + break; + } + final int finalI = i; + executorService.submit(() -> { + Dao currentDao = dbe.newDao(); + //鑾峰彇褰撳墠鏈堜唤 浠M鏍煎紡鍖� + String month = String.format("%02d", finalI); + //妫�鏌ユ湀浠藉搴旂殑琛ㄦ槸鍚﹀瓨鍦� + String monthTableName = tablePrefix + "_" + year + month; + Set<String> allTableName = QuerySqlParseUtil.getAllTableName(reportDao, dbe.getDbName(), tablePrefix + "_" + year + month); + if (allTableName.size() == 0 || !allTableName.contains(monthTableName)) { + //鏍规嵁鍘熷琛ㄧ粨鏋勫垱寤烘柊琛� + String sql = "create table " + monthTableName + " like " + tableName; + currentDao.executeSql(sql); + SpringMVCContextHolder.getSystemLogger().info("鍒涘缓琛細" + monthTableName); + } + String sql = "INSERT INTO " + monthTableName + " SELECT * FROM " + tableName + " WHERE MONTH(update_date)=" + finalI; + currentDao.executeSql(sql); + currentDao.closeConnection(); + }); + + } + executorService.shutdown(); + while (true) { + try { + if (executorService.awaitTermination(5, TimeUnit.SECONDS)) break; + Thread.sleep(5000); + SpringMVCContextHolder.getSystemLogger().info("绾跨▼绛夊緟涓�..."); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + } + } + reportDao.closeConnection(); } /** @@ -130,6 +199,7 @@ success = true; SpringMVCContextHolder.getSystemLogger().info("鍥炲啓鏈哄彿锛�" + serialNumber + "鎴愬姛"); } catch (Exception e) { + e.printStackTrace(); SpringMVCContextHolder.getSystemLogger().error("鍥炲啓鏈哄彿锛�" + serialNumber + "澶辫触"); SpringMVCContextHolder.getSystemLogger().error(e); throw new BaseException(ErrorCode.INSERT_DATA_FAIL); @@ -161,6 +231,7 @@ } } + /** * 鎻掑叆鏁版嵁鍒颁富搴� * @@ -176,7 +247,16 @@ if (DataTableEntity.isEmpty(masterDataTable)) { continue; } - Object[] objects = masterDataTable.getData().stream().map(item -> item.getString(historyEntity.getPrimaryField())).toArray(); + Object[] objects = masterDataTable.getData().stream().map(item -> { + String primaryValue = item.getString(historyEntity.getPrimaryField()); + //鍒ゆ柇鏄惁涓烘暟鍊间笖鍖呭惈灏忔暟鐐� 灏忔暟鐐瑰悗闈㈡槸鍚﹀叏鏄�0 + if (NumberUtil.isNumber(primaryValue) && primaryValue.contains(".") && primaryValue.substring(primaryValue. + indexOf(".") + 1).matches("^0*$")) { + //杩斿洖鏁存暟瀛楃涓� + return primaryValue.substring(0, primaryValue.indexOf(".")); + } + return primaryValue; + }).toArray(); //鏌ヨ涓诲簱鏁版嵁鏄惁瀛樺湪 DataTableEntity list = dao.getList(historyEntity.getTableName(), BaseUtil.buildQuestionMarkFilter(historyEntity.getPrimaryField(), objects.length, true), @@ -234,7 +314,16 @@ //鏌ヨ宸插瓨鍦ㄧ殑鏁版嵁 DataTableEntity list = dao.getList(historyEntity.getTableName(), BaseUtil.buildQuestionMarkFilter(historyEntity.getPrimaryField(), value.size(), true), - value.stream().map(item -> item.getString(historyEntity.getPrimaryField())).toArray()); + value.stream().map(item -> { + String primaryValue = item.getString(historyEntity.getPrimaryField()); + //鍒ゆ柇鏄惁涓烘暟鍊间笖鍖呭惈灏忔暟鐐� 灏忔暟鐐瑰悗闈㈡槸鍚﹀叏鏄�0 + if (NumberUtil.isNumber(primaryValue) && primaryValue.contains(".") && primaryValue.substring(primaryValue. + indexOf(".") + 1).matches("^0*$")) { + //杩斿洖鏁存暟瀛楃涓� + return primaryValue.substring(0, primaryValue.indexOf(".")); + } + return primaryValue; + }).toArray()); List<String> existIds = DataTableEntity.isEmpty(list) ? null : list.getData().stream().map(item -> item.getString(historyEntity.getPrimaryField())).collect(Collectors.toList()); for (FieldSetEntity fieldSetEntity : value) { String primaryValue = fieldSetEntity.getString(historyEntity.getPrimaryField()); @@ -298,11 +387,41 @@ } } } + if (CmnConst.T_WIP_TRACKING.equalsIgnoreCase(targetTableName) && dt.getRows() > 1) { + List<FieldSetEntity> data = dt.getData(); + FieldSetEntity newData = null; + for (int i = 0; i < data.size(); i++) { + FieldSetEntity fieldSetEntity = data.get(i); + if ("ch-kt".equals(fieldSetEntity.getValue("pre_master_key"))) { + data.remove(i); + dt.removeFieldSetEntity(i); + break; + } else if (newData == null) { + newData = fieldSetEntity; + continue; + } + + Date date = fieldSetEntity.getDate(historyEntity.getTimeField()); + if (date.getTime() > newData.getDate(historyEntity.getTimeField()).getTime()) { + newData = fieldSetEntity; + } + } + if (newData != null) { + dt = new DataTableEntity(); + dt.addFieldSetEntity(newData); + } + //鍦╨ist涓彇鍑烘椂闂存渶杩戠殑鏁版嵁 + Optional<FieldSetEntity> max = data.stream().max(Comparator.comparing((a) -> a.getDate(historyEntity.getTimeField()).getTime())); + + } DataTableEntity subData = dt.clones(); DataTableEntity masterData = dt.clones(); for (int i = 0; i < subData.getRows(); i++) { FieldSetEntity fs = subData.getFieldSetEntity(i); String preMasterKey = fs.getString("pre_master_key"); + if (historyEntity.getPrimaryField().equals(preMasterKey)) { + preMasterKey = null; + } if ("ch-kt".equals(fs.getString("source_info")) && StringUtils.isEmpty(preMasterKey)) { preMasterKey = fs.getString(historyEntity.getPrimaryField()); } @@ -313,6 +432,11 @@ fs.remove("~table_name~"); masterData.getFieldSetEntity(i).remove("~table_name~"); masterData.setFieldValue(i, "pre_master_key", null); + if (StringUtils.isEmpty(historyEntity.getPrimaryField())) { + subData.removeFieldSetEntity(i); + masterData.removeFieldSetEntity(i); + i--; + } } historyEntity.setArchivedDataTable(dt); historyEntity.setMasterDataTable(masterData); @@ -329,17 +453,12 @@ CompletionService<DataTableEntity> objectCompletionService = ThreadUtil.newCompletionService(); //澶氱嚎绋嬫煡璇㈠崟寮犺〃锛岀瓑寰呮墍鏈夌嚎绋嬫煡璇㈠畬姣� for (String tableName : tableArray) { - objectCompletionService.submit(() -> dao.getList("select a.*,'" + tableName + "' as '~table_name~' from " + tableName + "a where " + filterFieldName + " = ?", new Object[]{serialNumber})); + objectCompletionService.submit(() -> dao.getList("select a.*,'" + tableName + "' as '~table_name~' from " + tableName + " a where " + filterFieldName + " = ?", new Object[]{serialNumber})); } DataTableEntity data = new DataTableEntity(); - Future<DataTableEntity> take = objectCompletionService.take(); for (int i = 0; i < tableArray.length; i++) { - DataTableEntity dataTableEntity = take.get(); + DataTableEntity dataTableEntity = objectCompletionService.take().get(); BaseUtil.dataTableMerge(data, dataTableEntity); - } - - if (DataTableEntity.isEmpty(data) && !"product_sn".equals(filterFieldName)) { - throw new BaseException(errorCodes[1]); } return data; } diff --git a/product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService1.java b/product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService1.java new file mode 100644 index 0000000..21428b4 --- /dev/null +++ b/product-server-data-center/src/main/java/com/product/data/center/service/MesExternalService1.java @@ -0,0 +1,977 @@ +//package com.product.data.center.service; +// +//import cn.hutool.core.collection.CollectionUtil; +//import cn.hutool.core.date.DateTime; +//import cn.hutool.core.date.DateUtil; +//import cn.hutool.core.thread.ThreadUtil; +//import cn.hutool.core.util.NumberUtil; +//import cn.hutool.http.HttpRequest; +//import cn.hutool.http.HttpResponse; +//import com.alibaba.fastjson.JSON; +//import com.alibaba.fastjson.JSONObject; +//import com.product.common.utils.spring.SpringUtils; +//import com.product.core.config.CoreConst; +//import com.product.core.config.Global; +//import com.product.core.entity.DataTableEntity; +//import com.product.core.entity.FieldSetEntity; +//import com.product.core.exception.BaseException; +//import com.product.core.service.support.AbstractBaseService; +//import com.product.core.sign.SignUtil; +//import com.product.core.spring.context.SpringBeanUtil; +//import com.product.core.spring.context.SpringMVCContextHolder; +//import com.product.core.transfer.Transactional; +//import com.product.core.util.JsonUtil; +//import com.product.data.center.config.CmnConst; +//import com.product.data.center.config.ErrorCode; +//import com.product.data.center.entity.HistoryEntity; +//import com.product.data.center.service.ide.IMesExternalService; +//import com.product.data.center.utils.QuerySqlParseUtil; +//import com.product.datasource.dao.Dao; +//import com.product.datasource.dao.impl.OracleDaoImpl; +//import com.product.datasource.entity.DataBaseEntity; +//import com.product.quartz.service.IRemoteService; +//import com.product.util.BaseUtil; +//import oracle.jdbc.internal.OracleTypes; +//import org.apache.commons.lang3.StringUtils; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.stereotype.Service; +// +//import javax.servlet.http.HttpServletRequest; +//import java.sql.CallableStatement; +//import java.sql.Connection; +//import java.sql.SQLException; +//import java.util.*; +//import java.util.concurrent.CompletionService; +//import java.util.concurrent.ExecutionException; +//import java.util.concurrent.Future; +//import java.util.stream.Collectors; +// +///** +// * @Author cheng +// * @Date 2022/12/16 13:20 +// * @Desc MES澶栭儴鎺ュ彛 +// */ +//@Service +//public class MesExternalService1 extends AbstractBaseService implements IMesExternalService, IRemoteService, com.product.data.service.impl.IRemoteService { +// +// @Value("${data.system.name}") +// private String dataSystemName; +// +// private CommonService commonService = null; +// +// private FieldSetEntity collectLogCache = null; +// +// public CommonService getCommonService() { +// if (this.commonService == null) { +// this.commonService = SpringBeanUtil.getBean(CommonService.class); +// } +// return commonService; +// } +// +// /** +// * 鑾峰彇鍘嗗彶鏁版嵁 +// */ +// public void getHistoryData(FieldSetEntity fse) throws BaseException, ExecutionException, InterruptedException { +// +// //鏈哄彿 +// String serialNumber = fse.getString("serial_number"); +// SpringMVCContextHolder.getSystemLogger().info("鍑嗗鍥炲啓鏈哄彿鏁版嵁锛�" + serialNumber); +// if (StringUtils.isEmpty(serialNumber)) { +// throw new BaseException(ErrorCode.SERIAL_NUMBER_IS_NULL); +// } +// +// FieldSetEntity fs = getBaseDao().getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MES, "LENGTH(data_source)>1 limit 1", null, false); +// if (FieldSetEntity.isEmpty(fs)) { +// throw new BaseException(ErrorCode.MO_NUMBER_SYNC_DATASOURCE_ERROR); +// } +// FieldSetEntity reportDbConfig = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MANAGER, "SYNC_NAME=?", new Object[]{"鎶ヨ〃鏁版嵁搴�"}, false); +// if (FieldSetEntity.isEmpty(reportDbConfig)) { +// throw new BaseException(ErrorCode.REPORT_DB_CONFIG_FAIL); +// } +// DataTableEntity dt = getBaseDao().listTable(CmnConst.PRODUCT_SYS_DATA_COLLECT, "upper(source_table) in ('T_WIP_TRACKING','T_WIP_PRODUCT_KEYP','T_WIP_DETAIL','T_PM_PRODUCT_SN') and data_source in (select uuid from product_sys_data_sync_manager)", new Object[]{}, new Object[]{"uuid,id,data_source,source_table"}); +// +// Map<String, List<FieldSetEntity>> groupByCollectId = dt.getData().stream().collect(Collectors.groupingBy(item -> item.getString("id"))); +// Map<String, List<FieldSetEntity>> groupBySourceTable = dt.getData().stream().collect(Collectors.groupingBy(item -> item.getString("source_table"))); +// +// DataBaseEntity dbe = new DataBaseEntity(reportDbConfig); +// Dao reportDao = dbe.getDao(); +// String reportDbName = dbe.getDbName(); +// Set<String> trackingTableSet = QuerySqlParseUtil.getAllTableName(reportDao, reportDbName, "da_t_wip_tracking"); +// HistoryEntity trackingData = historyBeforeDispose(getData(reportDao, trackingTableSet, "serial_number", +// serialNumber, new ErrorCode[]{ErrorCode.TRACKING_TABLE_NOT_EXISTS, ErrorCode.NOT_FOUND_SERIAL_NUMBER}), CmnConst.T_WIP_TRACKING); +// +// Set<String> keypTableSet = QuerySqlParseUtil.getAllTableName(reportDao, reportDbName, "da_t_wip_product_keyp"); +// HistoryEntity keypData = historyBeforeDispose(getData(reportDao, keypTableSet, "pk_product_sn", serialNumber, new ErrorCode[]{ErrorCode.KEYP_TABLE_NOT_EXISTS, ErrorCode.KEYP_DATA_NOT_FOUND}), CmnConst.T_WIP_PRODUCT_KEYP); +// +// Set<String> detailTableSet = QuerySqlParseUtil.getAllTableName(reportDao, reportDbName, "da_t_wip_detail"); +// HistoryEntity detailData = historyBeforeDispose(getData(reportDao, detailTableSet, "serial_number", serialNumber, new ErrorCode[]{ErrorCode.DETAIL_TABLE_NOT_EXISTS, ErrorCode.DETAIL_DATA_NOT_FOUND}), CmnConst.T_WIP_DETAIL); +// +//// Set<String> productSnTableSet = QuerySqlParseUtil.getAllTableName(reportDao, reportDbName, "da_t_pm_product_sn"); +//// HistoryEntity productSnData = historyBeforeDispose(getData(reportDao, productSnTableSet, "product_sn", serialNumber, new ErrorCode[]{ErrorCode.PRODUCT_SN_TABLE_NOT_EXISTS, ErrorCode.PRODUCT_SN_DATA_NOT_FOUND}), CmnConst.T_PM_PRODUCT_SN); +// +// +// //涓诲簱鏁版嵁婧愰厤缃� +// String masterDataSource = fs.getString("data_source"); +// dbe = new DataBaseEntity(masterDataSource); +// Map<String, Dao> groupDao = new HashMap<>(); +// Dao dao = dbe.getDao(); +// boolean success = false; +// try { +// Connection connection = dao.getConnection(); +// connection.setAutoCommit(false); +// HistoryEntity[] historyEntities = {trackingData, keypData, detailData}; +// insertMasterTableData(dao, historyEntities); +// insertSubTableData(groupDao, groupByCollectId, groupBySourceTable, historyEntities); +// connection.commit(); +// batchCommit(groupDao); +// success = true; +// SpringMVCContextHolder.getSystemLogger().info("鍥炲啓鏈哄彿锛�" + serialNumber + "鎴愬姛"); +// } catch (Exception e) { +// SpringMVCContextHolder.getSystemLogger().error("鍥炲啓鏈哄彿锛�" + serialNumber + "澶辫触"); +// SpringMVCContextHolder.getSystemLogger().error(e); +// throw new BaseException(ErrorCode.INSERT_DATA_FAIL); +// } finally { +// try { +// if (!success && !dao.getConnection().getAutoCommit()) { +// dao.getConnection().rollback(); +// } +// dao.closeConnection(); +// for (Dao value : groupDao.values()) { +// try (Connection connection = value.getConnection()) { +// if (!connection.getAutoCommit()) { +// connection.rollback(); +// } +// } +// value.closeConnection(); +// +// } +// } catch (Exception e) { +// e.printStackTrace(); +// SpringMVCContextHolder.getSystemLogger().error(e); +// } +// } +// } +// +// public void batchCommit(Map<String, Dao> groupDao) throws SQLException { +// for (Dao value : groupDao.values()) { +// value.getConnection().commit(); +// } +// } +// +// /** +// * 鎻掑叆鏁版嵁鍒颁富搴� +// * +// * @param dao +// * @param historyEntities +// */ +// public void insertMasterTableData(Dao dao, HistoryEntity[] historyEntities) { +// for (HistoryEntity historyEntity : historyEntities) { +// if (historyEntity == null) { +// continue; +// } +// DataTableEntity masterDataTable = historyEntity.getMasterDataTable(); +// if (DataTableEntity.isEmpty(masterDataTable)) { +// continue; +// } +// Object[] objects = masterDataTable.getData().stream().map(item -> item.getString(historyEntity.getPrimaryField())).toArray(); +// //鏌ヨ涓诲簱鏁版嵁鏄惁瀛樺湪 +// DataTableEntity list = dao.getList(historyEntity.getTableName(), +// BaseUtil.buildQuestionMarkFilter(historyEntity.getPrimaryField(), objects.length, true), +// new String[]{historyEntity.getPrimaryField()}, objects); +// List<String> existsPrimaryValues = null; +// if (!DataTableEntity.isEmpty(list)) { +// existsPrimaryValues = list.getData().stream().map(item -> item.getString(historyEntity.getPrimaryField())).collect(Collectors.toList()); +// } +// for (int i = 0; i < masterDataTable.getRows(); i++) { +// String primaryValue = masterDataTable.getString(i, historyEntity.getPrimaryField()); +// if (existsPrimaryValues != null && existsPrimaryValues.contains(primaryValue)) { +// //鏁版嵁瀛樺湪璺宠繃璇ユ暟鎹� +// continue; +// } +// FieldSetEntity fieldSetEntity = masterDataTable.getFieldSetEntity(i); +// fieldSetEntity.getMeta().setTableName(new Object[]{historyEntity.getTableName()}); +// fieldSetEntity.remove("~table_name~"); +// dao.add(fieldSetEntity); +// } +// } +// } +// +// +// /** +// * 鎻掑叆瀛愬簱琛ㄦ暟鎹� +// * +// * @param groupDao 瀛愬簱dao +// * @param groupByCollectId 閲囬泦閰嶇疆鎸夐噰闆唅d鍒嗙粍 +// * @param groupBySourceTable 閲囬泦閰嶇疆鎸夎〃鍚嶅垎缁� +// * @param historyEntities 鍘嗗彶鏁版嵁 +// */ +// public void insertSubTableData(Map<String, Dao> groupDao, Map<String, List<FieldSetEntity>> groupByCollectId, +// Map<String, List<FieldSetEntity>> groupBySourceTable, HistoryEntity[] historyEntities) throws Exception { +// for (HistoryEntity historyEntity : historyEntities) { +// if (historyEntity == null) { +// continue; +// } +// Map<String, List<FieldSetEntity>> groupData = historyEntity.getGroupData(); +// if (groupData == null || groupData.isEmpty()) { +// continue; +// } +// for (Map.Entry<String, List<FieldSetEntity>> entry : groupData.entrySet()) { +// List<Dao> daoList = new ArrayList<>(); +// if ("ch-kt".equals(entry.getKey())) { +// List<FieldSetEntity> fieldSetEntityList = groupBySourceTable.get(historyEntity.getTableName().toLowerCase()); +// Set<String> dataSourceSet = fieldSetEntityList.stream().map(item -> item.getString("data_source")).collect(Collectors.toSet()); +// for (String sourceUuid : dataSourceSet) { +// daoList.add(getDao(groupDao, sourceUuid)); +// } +// } else { +// daoList.add(getDao(groupDao, groupByCollectId.get(entry.getKey()).get(0).getString("data_source"))); +// } +// for (Dao dao : daoList) { +// List<FieldSetEntity> value = entry.getValue(); +// //鏌ヨ宸插瓨鍦ㄧ殑鏁版嵁 +// DataTableEntity list = dao.getList(historyEntity.getTableName(), +// BaseUtil.buildQuestionMarkFilter(historyEntity.getPrimaryField(), value.size(), true), +// value.stream().map(item -> item.getString(historyEntity.getPrimaryField())).toArray()); +// List<String> existIds = DataTableEntity.isEmpty(list) ? null : list.getData().stream().map(item -> item.getString(historyEntity.getPrimaryField())).collect(Collectors.toList()); +// for (FieldSetEntity fieldSetEntity : value) { +// String primaryValue = fieldSetEntity.getString(historyEntity.getPrimaryField()); +// if (existIds != null && existIds.contains(NumberUtil.parseNumber(primaryValue).toString())) { +// continue; +// } +// fieldSetEntity.getMeta().setTableName(new Object[]{historyEntity.getTableName()}); +// fieldSetEntity.remove("~table_name~"); +// dao.add(fieldSetEntity); +// } +// } +// } +// } +// } +// +// public Dao getDao(Map<String, Dao> groupDao, String sourceUuid) throws Exception { +// Dao dao = groupDao.get(sourceUuid); +// if (null == dao) { +// DataBaseEntity dbe = new DataBaseEntity(sourceUuid); +// dao = dbe.getDao(); +// dao.getConnection().setAutoCommit(false); +// groupDao.put(sourceUuid, dao); +// } +// return dao; +// } +// +// public HistoryEntity historyBeforeDispose(DataTableEntity dt, String targetTableName) { +// if (DataTableEntity.isEmpty(dt)) { +// return null; +// } +// HistoryEntity historyEntity = new HistoryEntity(); +// historyEntity.setMoNumberField("mo_number"); +// if (CmnConst.T_WIP_TRACKING.equalsIgnoreCase(targetTableName)) { +// historyEntity.setPrimaryField("wip_id"); +// historyEntity.setTimeField("update_date"); +// } else if (CmnConst.T_WIP_PRODUCT_KEYP.equalsIgnoreCase(targetTableName)) { +// historyEntity.setPrimaryField("pk_id"); +// historyEntity.setTimeField("pk_loadtime"); +// +// historyEntity.setMoNumberField("pk_mo"); +// } else if (CmnConst.T_WIP_DETAIL.equalsIgnoreCase(targetTableName)) { +// historyEntity.setPrimaryField("wip_detail_id"); +// historyEntity.setTimeField("update_date"); +// } else if (CmnConst.T_PM_PRODUCT_SN.equalsIgnoreCase(targetTableName)) { +// historyEntity.setPrimaryField("row_id"); +// historyEntity.setTimeField("update_date"); +// } else { +// return null; +// } +// historyEntity.setTableName(targetTableName.toUpperCase()); +// Date now = new Date(); +// for (int i = 0; i < dt.getRows(); i++) { +// Map<Object, Object> values = dt.getFieldSetEntity(i).getValues(); +// //閬嶅巻map涓殑value鏄惁涓烘暟瀛楋紝濡傛灉鏄暟瀛楀垽鏂皬鏁扮偣鍚庨潰鏄惁鏈夊�硷紝濡傛灉娌℃湁鍊煎垯杞崲涓烘暣鏁� +// for (Map.Entry<Object, Object> entry : values.entrySet()) { +// if (entry.getValue() instanceof Number) { +// Number number = (Number) entry.getValue(); +// if (number.doubleValue() == number.intValue()) { +// entry.setValue(number.intValue()); +// } +// } +// } +// } +// DataTableEntity subData = dt.clones(); +// DataTableEntity masterData = dt.clones(); +// for (int i = 0; i < subData.getRows(); i++) { +// FieldSetEntity fs = subData.getFieldSetEntity(i); +// String preMasterKey = fs.getString("pre_master_key"); +// if ("ch-kt".equals(fs.getString("source_info")) && StringUtils.isEmpty(preMasterKey)) { +// preMasterKey = fs.getString(historyEntity.getPrimaryField()); +// } +// fs.setValue(historyEntity.getPrimaryField(), preMasterKey); +// fs.setValue("pre_master_key", preMasterKey); +// masterData.setFieldValue(i, historyEntity.getTimeField(), now); +// fs.setValue(historyEntity.getTimeField(), now); +// fs.remove("~table_name~"); +// masterData.getFieldSetEntity(i).remove("~table_name~"); +// masterData.setFieldValue(i, "pre_master_key", null); +// } +// historyEntity.setArchivedDataTable(dt); +// historyEntity.setMasterDataTable(masterData); +// historyEntity.setSubDataTable(subData); +// return historyEntity; +// } +// +// public DataTableEntity getData(Dao dao, Set<String> tableSet, String filterFieldName, String +// serialNumber, ErrorCode[] errorCodes) throws InterruptedException, ExecutionException { +// if (CollectionUtil.isEmpty(tableSet)) { +// throw new BaseException(errorCodes[0]); +// } +// String[] tableArray = tableSet.toArray(new String[]{}); +// CompletionService<DataTableEntity> objectCompletionService = ThreadUtil.newCompletionService(); +// //澶氱嚎绋嬫煡璇㈠崟寮犺〃锛岀瓑寰呮墍鏈夌嚎绋嬫煡璇㈠畬姣� +// for (String tableName : tableArray) { +// objectCompletionService.submit(() -> dao.getList("select a.*,'" + tableName + "' as '~table_name~' from " + tableName + "a where " + filterFieldName + " = ?", new Object[]{serialNumber})); +// } +// DataTableEntity data = new DataTableEntity(); +// Future<DataTableEntity> take = objectCompletionService.take(); +// for (int i = 0; i < tableArray.length; i++) { +// DataTableEntity dataTableEntity = take.get(); +// BaseUtil.dataTableMerge(data, dataTableEntity); +// } +// +// if (DataTableEntity.isEmpty(data) && !"product_sn".equals(filterFieldName)) { +// throw new BaseException(errorCodes[1]); +// } +// return data; +// } +// +// +// /** +// * 鍒濆鍖栧埗浠ゅ崟 +// * +// * @param moNumbers +// * @throws BaseException +// */ +// public void initMoBase(String[] moNumbers) throws BaseException { +// FieldSetEntity fs = getBaseDao().getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MES, "LENGTH(data_source)>1 limit 1", null, false); +// if (FieldSetEntity.isEmpty(fs)) { +// throw new BaseException(ErrorCode.MO_NUMBER_SYNC_DATASOURCE_ERROR); +// } +// +// String[] targetDataSource = fs.getString("target_data_source").split(","); +// +// Dao[] targetDao = Arrays.stream(targetDataSource).map(item -> new DataBaseEntity(item).getDao()).toArray(Dao[]::new); +// StringBuilder errorMsg = new StringBuilder(); +// for (Dao dao : targetDao) { +// for (String moNumber : moNumbers) { +// synchronized (moNumber.intern()) { +// try (Connection connection = dao.getConnection(); +// CallableStatement callableStatement = connection.prepareCall( +// "{CALL SMT_T_PM_MO_BASE(?,?,?,?,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,?,null,null" + +// ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null)}")) { +// callableStatement.setInt(1, 5); +// callableStatement.registerOutParameter(2, OracleTypes.SMALLINT); +// callableStatement.registerOutParameter(3, OracleTypes.VARCHAR); +// callableStatement.setString(4, moNumber); +// callableStatement.setString(5, "1"); +// callableStatement.execute(); +// //鎵ц鍚庤繑鍥炵殑閿欒鐮� +// int errorCode = callableStatement.getInt(2); +// //鎵ц鍚庤繑鍥炵殑閿欒淇℃伅 +// String errorText = callableStatement.getString(3); +// if (errorCode != 0) { +// //閿欒鐨� +// errorMsg.append("鍒朵护鍗曞彿:").append(moNumber); +// errorMsg.append("\nerrorCode锛�").append(errorCode); +// errorMsg.append("\nerrorText:").append(errorText); +// } +// } catch (Exception e) { +// SpringMVCContextHolder.getSystemLogger().error(e); +// e.printStackTrace(); +// errorMsg.append("鍒朵护鍗曞彿:").append(moNumber); +// errorMsg.append("\n鎵ц鏃舵湭鐭ラ敊璇細").append(e.getMessage()); +// } +// } +// } +// } +// if (errorMsg.length() > 0) { +// throw new BaseException(ErrorCode.SUB_MO_BASE_INI_FAIL.getValue(), ErrorCode.SUB_MO_BASE_INI_FAIL.getText() + "銆俓n" + errorMsg); +// } +// } +// +// /** +// * @param moNumbers 鍒朵护鍗曞彿,澶氫釜閫楀彿鍒嗛殧 +// * @param type 鎿嶄綔绫诲瀷 1 鍒涘缓鍒朵护鍗� 2 鏇存柊鍒朵护鍗曚腑鐨勬寚瀹氬瓧娈� +// * @throws BaseException +// */ +// public void updateMoBase(String[] moNumbers, int type) throws BaseException { +// FieldSetEntity fs = getBaseDao().getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DATA_SYNC_MES, "LENGTH(data_source)>1 limit 1", null, false); +// if (FieldSetEntity.isEmpty(fs)) { +// throw new BaseException(ErrorCode.MO_NUMBER_SYNC_DATASOURCE_ERROR); +// } +// String dataSource = fs.getString("data_source"); +// String[] targetDataSource = fs.getString("target_data_source").split(","); +// StringBuilder errorMessage = new StringBuilder(); +// DataBaseEntity dbe = new DataBaseEntity(dataSource); +// for (int i = 0; i < moNumbers.length; i++) { +// String moNumber = moNumbers[i]; +// try { +// synchronized (moNumber.intern()) { +// Dao dao = dbe.getDao(); +// FieldSetEntity one = dao.getOne("T_PM_MO_BASE", "MO_NUMBER=?", new Object[]{moNumber}); +// if (FieldSetEntity.isEmpty(one)) { +// throw new BaseException(ErrorCode.MO_NUMBER_RECORD_SELECT_EMPTY); +// } +// one.setTableName("T_PM_MO_BASE"); +// dao.closeConnection(); +// Dao[] targetDao = Arrays.stream(targetDataSource).map(item -> new DataBaseEntity(item).getDao()).toArray(Dao[]::new); +// StringBuilder errorMsg = new StringBuilder(); +// try { +// if (1 == type) { +// createMoBase(errorMsg, one, targetDao); +// } else if (2 == type) { +// updateMoBase(errorMsg, one, targetDao); +// } +// if (errorMsg.length() > 0) { +// //鏈夐敊璇� +// throw new BaseException(ErrorCode.SUB_MO_BASE_CREATE_OR_UPDATE_FAIL.getValue(), ErrorCode.SUB_MO_BASE_CREATE_OR_UPDATE_FAIL.getText() + "銆俓n" + errorMsg); +// } +// } finally { +// for (Dao dao1 : targetDao) { +// dao1.closeConnection(); +// } +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// SpringMVCContextHolder.getSystemLogger().error(e); +// errorMessage.append(e.getMessage()).append("\n"); +// } +// +// } +// if (errorMessage.length() > 0) { +// throw new BaseException(ErrorCode.SUB_MO_BASE_CREATE_OR_UPDATE_FAIL.getValue(), ErrorCode.SUB_MO_BASE_CREATE_OR_UPDATE_FAIL.getText() + "銆俓n" + errorMessage); +// } +// } +// +// /** +// * 鍒涘缓鍒朵护鍗� +// * +// * @param errorMsg +// * @param moBase +// * @param subDao +// */ +// private void createMoBase(StringBuilder errorMsg, FieldSetEntity moBase, Dao[] subDao) { +// String moNumber = moBase.getString("mo_number"); +// for (int i = 0; i < subDao.length; i++) { +// Dao dao = subDao[i]; +// try { +// //妫�鏌ュ伐鍗曡〃鏄惁瀛樺湪 +// FieldSetEntity projectBase = dao.getOne("T_PM_PROJECT_BASE", "PROJECT_ID = ? ", new Object[]{moNumber}); +// if (FieldSetEntity.isEmpty(projectBase)) { +// throw new BaseException(ErrorCode.SUB_PROJECT_BASE_CAN_NOT_EMPTY); +// } +// //妫�鏌ュ埗浠ゅ崟琛ㄦ槸鍚﹀凡瀛樺湪 +// FieldSetEntity fs = dao.getOne(moBase.getTableName(), "mo_number = ? ", new Object[]{moNumber}); +// if (!FieldSetEntity.isEmpty(fs)) { +// //杩涜鏇存柊鎿嶄綔 +// updateMoBase(errorMsg, moBase, new Dao[]{dao}); +// continue; +// } +// //灏� T_PM_MO_BASE.PROJECT_ID 鏇存敼涓哄瓙搴撲腑瀵瑰簲 T_PM_PROJECT_BASE.PROJECT_BASE_ID +// moBase.setValue("project_id", projectBase.getString("project_base_id")); +//// moBase.setValue("row_id", -1); +// dao.add(moBase); +// } catch (BaseException e) { +// errorMsg.append("鍒朵护鍗曞彿锛歔 " + moNumber + " ]IP:[").append(getIp(dao)). +// append("]").append(e.getMessageInfo()); +// e.printStackTrace(); +// SpringMVCContextHolder.getSystemLogger().error(e); +// } catch (Exception e) { +// errorMsg.append("鍒朵护鍗曞彿锛歔 " + moNumber + " ]IP:[").append(getIp(dao)).append("]").append("鍒涘缓鍒朵护鍗曞け璐ワ紝鏈煡鐨勯敊璇�"); +// e.printStackTrace(); +// SpringMVCContextHolder.getSystemLogger().error(e); +// } +// } +// } +// +// /** +// * 鏇存柊鍒朵护鍗� +// * +// * @param errorMsg +// * @param moBase +// * @param subDao +// */ +// private void updateMoBase(StringBuilder errorMsg, FieldSetEntity moBase, Dao[] subDao) { +// String moNumber = moBase.getString("mo_number"); +// for (int i = 0; i < subDao.length; i++) { +// Dao dao = subDao[i]; +// try { +// //妫�鏌ュ埗浠ゅ崟琛ㄦ槸鍚﹀凡瀛樺湪 +// FieldSetEntity fs = dao.getOne(moBase.getTableName(), "mo_number = ? ", new Object[]{moNumber}); +// if (FieldSetEntity.isEmpty(fs)) { +// //杩涜鍒涘缓鎿嶄綔 +// createMoBase(errorMsg, moBase, new Dao[]{dao}); +// continue; +// } +// // 褰撳瓙搴撲腑鍒朵护鍗� input_qty 瀛楁涓� 0 鎴栬�� 涓� null 鏃� 鏇存柊澶氫釜瀛楁锛屽惁鍒欏彧鏇存柊target_qty 瀛楁 +// String[] updateField = StringUtils.isEmpty(fs.getString("input_qty")) || "0".equals(fs.getString("input_qty")) ? +// new String[]{"target_qty", "owner", "mo_create_date", "mo_schedule_date", "mo_due_date", "areaid", "technicsid", "close_flag", "default_group", "end_group"} +// : new String[]{"target_qty"}; +// StringBuilder sql = new StringBuilder(); +// sql.append(" UPDATE T_PM_MO_BASE SET "); +// Object[] params = new Object[updateField.length + 1]; +// for (int k = 0; k < updateField.length; k++) { +// if (k > 0) { +// sql.append(","); +// } +// params[k] = moBase.getObject(updateField[k]); +// sql.append(updateField[k].toUpperCase()).append(" = ? "); +// } +// params[updateField.length] = moNumber; +// sql.append(" WHERE MO_NUMBER = ? "); +// dao.executeSql(sql.toString(), params); +// } catch (BaseException e) { +// errorMsg.append("鍒朵护鍗曞彿锛歔 " + moNumber + " ]IP:[").append(getIp(dao)). +// append("]").append(e.getMessageInfo()); +// e.printStackTrace(); +// SpringMVCContextHolder.getSystemLogger().error(e); +// } catch (Exception e) { +// errorMsg.append("鍒朵护鍗曞彿锛歔 " + moNumber + " ]IP:[").append(getIp(dao)).append("]").append("鏇存柊鍒朵护鍗曞け璐ワ紝鏈煡鐨勯敊璇�"); +// e.printStackTrace(); +// SpringMVCContextHolder.getSystemLogger().error(e); +// } +// } +// } +// +// private String getIp(Dao dao) { +// return ((OracleDaoImpl) dao).getDataBaseEntity().getIp(); +// } +// +// /** +// * 閲囬泦閰嶇疆淇濆瓨 +// * +// * @param request +// * @throws BaseException +// */ +// @Override +// @Transactional +// public void saveCollectConfig(HttpServletRequest request) throws BaseException { +// //鏈嶅姟鍚嶇О +// String serverName = request.getHeader("server-name"); +// if (StringUtils.isEmpty(serverName)) { +// throw new BaseException(ErrorCode.SERVER_NAME_CAN_NOT_EMPTY); +// } +// FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, CmnConst.PRODUCT_SYS_DATA_COLLECT); +// //閲囬泦鏉ユ簮 +// String sourceInfo = fse.getString("id"); +// if (StringUtils.isEmpty(sourceInfo) || StringUtils.contains(sourceInfo, dataSystemName)) { +// throw new BaseException(ErrorCode.COLLECT_SOURCE_VALUE); +// } +// commonSave(fse); +// } +// +// /** +// * 鎻愬彇閰嶇疆淇濆瓨 +// * +// * @param fse +// * @throws BaseException +// */ +// @Override +// @Transactional +// public void saveExtractConfig(FieldSetEntity fse) throws BaseException { +// String dataSource = fse.getString(CmnConst.TABLE_SYNC_MANAGER); +// if (!StringUtils.isEmpty(dataSource)) { +// FieldSetEntity fs = JsonUtil.pareseJsonToFieldSetEntity(dataSource); +// if (!FieldSetEntity.isEmpty(fs)) { +// commonSave(fs); +// } +// } +// commonSave(fse); +// getCommonService().saveDelRecordConfig(2, fse.getUUID()); +// } +// +// /** +// * 褰掓。閰嶇疆淇濆瓨 +// * +// * @param fse +// * @throws BaseException +// */ +// @Override +// @Transactional +// public void saveArchiveConfig(FieldSetEntity fse) throws BaseException { +// commonSave(fse); +// } +// +// /** +// * @param fse +// * @throws BaseException +// */ +// @Override +// public void saveCollectLog(FieldSetEntity fse) throws BaseException { +// this.commonSave(fse); +// } +// +// /** +// * @param fse +// * @throws BaseException +// */ +// @Override +// public void saveExtractLog(FieldSetEntity fse) throws BaseException { +// this.commonSave(fse); +// } +// +// /** +// * 鏁版嵁婧愪繚瀛樹細璋冪敤璇ユ柟娉� +// * +// * @param fse +// * @throws BaseException +// */ +// @Override +// public void saveSyncConnectionConfig(FieldSetEntity fse) throws BaseException { +// //瀛愭湇鍔′繚瀛樻暟鎹簱杩炴帴閰嶇疆鍚庤皟鐢ㄨ鏂规硶锛屼紶杈撴暟鎹埌涓绘湇鍔� +// //TODO +// } +// +// /** +// * 瀹氭椂浠诲姟鐢熸垚鏃ュ織浼氳皟鐢ㄨ鏂规硶 +// * +// * @param fse +// * @throws BaseException +// */ +// @Override +// public void saveTimeLog(FieldSetEntity fse) throws BaseException { +// //涓绘湇鍔℃彁鍙栨棩蹇椾繚瀛樺悗璋冪敤璇ユ柟娉曚紶杈撳埌瀛愭湇鍔� +// //TODO +// +// } +// +// private void commonSave(FieldSetEntity fse) throws BaseException { +// String uuid = fse.getUUID(); +// FieldSetEntity fs = getBaseDao().getFieldSetEntity(fse.getTableName(), new String[]{CmnConst.UUID}, uuid, false); +// Map<String, DataTableEntity> subData = fse.getSubData(); +// if (!CollectionUtil.isEmpty(subData)) { +// DataTableEntity addDt = new DataTableEntity(); +// DataTableEntity updateDt = new DataTableEntity(); +// for (Map.Entry<String, DataTableEntity> entry : subData.entrySet()) { +// String tableName = entry.getKey(); +// DataTableEntity value = entry.getValue(); +// if (DataTableEntity.isEmpty(value)) { +// continue; +// } +// Object[] uuids = value.getUuids(); +// DataTableEntity dt = getBaseDao().listTable(tableName, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuids.length, true), uuids, new String[]{CmnConst.UUID}); +// for (int i = 0; i < value.getRows(); i++) { +// uuid = value.getString(i, CmnConst.UUID); +// List<FieldSetEntity> fieldSetEntity = dt.getFieldSetEntity(uuid); +// if (CollectionUtil.isEmpty(fieldSetEntity)) { +// addDt.addFieldSetEntity(value.getFieldSetEntity(i)); +// value.setFieldValue(i, CoreConst.SYSTEM_DATA_OPERATE_TYPE, "add"); +// } else { +// addDt.addFieldSetEntity(updateDt.getFieldSetEntity(i)); +// value.setFieldValue(i, CoreConst.SYSTEM_DATA_OPERATE_TYPE, "update"); +// } +// } +// if (!DataTableEntity.isEmpty(addDt)) { +// getBaseDao().add(addDt); +// } +// if (!DataTableEntity.isEmpty(updateDt)) { +// getBaseDao().update(updateDt); +// } +// } +// } +// if (FieldSetEntity.isEmpty(fs)) { +// getBaseDao().add(fse, false); +// } else { +// getBaseDao().update(fse, false); +// } +// } +// +// /** +// * 璋冪敤杩滅▼涓绘湇鍔″櫒閲囬泦淇濆瓨 +// * +// * @param fse +// * @return +// * @throws BaseException +// */ +// public FieldSetEntity remoteSaveCollectConfig(FieldSetEntity fse) throws BaseException { +// if ("ch-kt".equals(dataSystemName)) { +// return fse; +// } +// FieldSetEntity fs = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_MES_SERVER, "server_type=0", null, false); +// if (FieldSetEntity.isEmpty(fs)) { +// throw new BaseException(ErrorCode.REMOTE_SERVER_CONFIG_EMPTY); +// } +// //鏈嶅姟鍩熷悕鐨勭鍙� +// String ipPort = fs.getString("server_url"); +// String serverName = fs.getString("server_name"); +// String serverUrl = ipPort + CmnConst.SAVE_COLLECT_URL; +// FieldSetEntity res = doPost(serverUrl, serverName, fse); +// return res; +// } +// +// /** +// * 涓绘湇鍔℃彁鍙栦繚瀛樻棩蹇楀悗璋冪敤璇ユ柟娉曚紶鍏ュ埌瀛愭湇鍔′繚瀛� +// * +// * @param fse +// * @return +// * @throws BaseException +// */ +// public void remoteSaveExtractLog(FieldSetEntity fse) throws BaseException { +// try { +// if ("ch-kt".equals(dataSystemName)) { +// //涓绘湇鍔¢噰闆嗘棩蹇梪uid +// String preStepUuid = fse.getString(CmnConst.PRE_STEP_UUID); +// StringBuilder sql = new StringBuilder(); +// sql.append("\nSELECT "); +// sql.append("\nserver.* "); +// sql.append("\nFROM ").append(CmnConst.PRODUCT_SYS_DATA_COLLECT).append(" collect "); +// sql.append("\nJOIN ").append(CmnConst.PRODUCT_SYS_DATA_CENTER_LOG).append(" log "); +// sql.append("\nON log.config_uuid=collect.uuid and log.type=1 "); +// sql.append("\nJOIN ").append(CmnConst.PRODUCT_MES_SERVER).append(" server "); +// sql.append("\nON collect.id like concat(server.server_name,'%') "); +// sql.append("\nWHERE log.uuid=? and collect.id not like concat(?,'%') limit 1"); +// FieldSetEntity fs = getBaseDao().getFieldSetBySQL(sql.toString(), new Object[]{preStepUuid, dataSystemName}, false); +// if (FieldSetEntity.isEmpty(fs)) { +// return; +// } +// String ipPort = fs.getString("server_url"); +// String serverName = fs.getString("server_name"); +// String serverUrl = ipPort + CmnConst.SAVE_EXTRACT_LOG_URL; +// doPostAsync(serverUrl, serverName, fse); +// } +// } catch (Exception e) { +// //鎹曡幏寮傚父涓轰簡浣块噰闆嗗畾鏃朵换鍔℃甯歌繍琛� +// SpringMVCContextHolder.getSystemLogger().error(e); +// e.printStackTrace(); +// } +// } +// +// /** +// * 璋冪敤杩滅▼涓绘湇鍔″櫒淇濆瓨 +// * +// * @param fse +// * @return +// * @throws BaseException +// */ +// public void remoteSaveExtractConfig(FieldSetEntity fse) throws BaseException { +// DataTableEntity dt = getRemoteSubServer(); +// if (DataTableEntity.isEmpty(dt)) { +// return; +// } +// FieldSetEntity extractTargetSource = getBaseDao().getFieldSetEntity(CmnConst.TABLE_SYNC_MANAGER, fse.getString("extract_target_source"), false); +// if (!FieldSetEntity.isEmpty(extractTargetSource)) { +// extractTargetSource.setValue(CoreConst.SYSTEM_TABLE_NAME_LABEL, CmnConst.TABLE_SYNC_MANAGER); +// fse.setValue(CmnConst.TABLE_SYNC_MANAGER, BaseUtil.fieldSetEntityToJson(extractTargetSource)); +// } +// for (int i = 0; i < dt.getRows(); i++) { +// FieldSetEntity fs = dt.getFieldSetEntity(i); +// //鏈嶅姟鍩熷悕鐨勭鍙� +// String ipPort = fs.getString("server_url"); +// String serverName = fs.getString("server_name"); +// String serverUrl = ipPort + CmnConst.SAVE_EXTRACT_URL; +// doPost(serverUrl, serverName, fse); +// } +// } +// +// /** +// * 璋冪敤杩滅▼涓绘湇鍔″櫒淇濆瓨 +// * +// * @param fse +// * @return +// * @throws BaseException +// */ +// public void remoteSaveArchiveConfig(FieldSetEntity fse) throws BaseException { +// DataTableEntity dt = getRemoteSubServer(); +// if (DataTableEntity.isEmpty(dt)) { +// return; +// } +// for (int i = 0; i < dt.getRows(); i++) { +// FieldSetEntity fs = dt.getFieldSetEntity(i); +// //鏈嶅姟鍩熷悕鐨勭鍙� +// String ipPort = fs.getString("server_url"); +// String serverName = fs.getString("server_name"); +// String serverUrl = ipPort + CmnConst.SAVE_ARCHIVE_URL; +// doPost(serverUrl, serverName, fse); +// } +// } +// +// /** +// * 璋冪敤杩滅▼涓绘湇鍔″櫒淇濆瓨 +// * +// * @param fse +// * @return +// * @throws BaseException +// */ +// public void remoteSaveCollectLog(FieldSetEntity fse) throws BaseException { +// if ("ch-kt".equals(dataSystemName) || FieldSetEntity.isEmpty(fse)) { +// return; +// } +// FieldSetEntity fs = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_MES_SERVER, "server_type=0", null, false); +// if (FieldSetEntity.isEmpty(fs)) { +// throw new BaseException(ErrorCode.REMOTE_SERVER_CONFIG_EMPTY); +// } +// //鏈嶅姟鍩熷悕鐨勭鍙� +// String ipPort = fs.getString("server_url"); +// String serverName = fs.getString("server_name"); +// String serverUrl = ipPort + CmnConst.SAVE_COLLECT_LOG_URL; +// doPost(serverUrl, serverName, fse); +// } +// +// +// /** +// * 鑾峰彇瀛愭湇鍔¢厤缃� +// * +// * @return +// * @throws BaseException +// */ +// private DataTableEntity getRemoteSubServer() throws BaseException { +// return getBaseDao().listTable(CmnConst.PRODUCT_MES_SERVER, "server_type!=0"); +// } +// +// // @Async +// void doPostAsync(String url, String serverName, FieldSetEntity fse) throws BaseException { +// doPost(url, serverName, fse); +// } +// +// public String getDataSystemName() { +// return dataSystemName; +// } +// +// public boolean remoteRehandle(FieldSetEntity fse) { +// String type = fse.getString(CmnConst.TYPE);//绫诲瀷 +// String logUuid; +// if ("2".equals(type)) { +// logUuid = fse.getString(CmnConst.PRE_STEP_UUID); +// } else if ("1".equals(type)) { +// logUuid = fse.getUUID(); +// } else { +// return false; +// } +// FieldSetEntity fs = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_SYS_DATA_COLLECT, "uuid =(select config_uuid FROM product_sys_data_center_log where uuid=?)", new Object[]{logUuid}, false); +// if (!FieldSetEntity.isEmpty(fs)) { +// //閲囬泦id +// String collectId = fs.getString(CmnConst.ID); +// if (collectId.indexOf(dataSystemName) == -1) { +// fs = getBaseDao().getFieldSetByFilter(CmnConst.PRODUCT_MES_SERVER, "server_type=1 and ? like concat(server_name,'%')", new Object[]{collectId}, false); +// if (!FieldSetEntity.isEmpty(fs)) { +// //鏈嶅姟鍩熷悕鐨勭鍙� +// String ipPort = fs.getString("server_url"); +// String serverName = fs.getString("server_name"); +// String serverUrl = ipPort + CmnConst.REHANDLE_ERROR_URL; +// doPost(serverUrl, serverName, fse); +// //鏍囪鏃ュ織鎴愬姛 +// JournalManagerService journalManagerService = SpringUtils.getBean(JournalManagerService.class); +// journalManagerService.writeBackReDealResult(fse, true); +// } +// return true; +// } +// } +// return false; +// } +// +// /** +// * post 璇锋眰 +// * +// * @param url +// * @param serverName +// * @param fse +// * @throws BaseException +// */ +// private FieldSetEntity doPost(String url, String serverName, FieldSetEntity fse) throws BaseException { +// fse.setValue(CoreConst.SYSTEM_TABLE_NAME_LABEL, fse.getTableName()); +// JSONObject requestBody = BaseUtil.fieldSetEntityToJson(fse); +// String requestData = requestBody.toJSONString(); +// //绛惧悕 +// String signature = SignUtil.getHmacSHA1(requestData, Global.getSystemConfig("signature.key", "")); +// try (HttpResponse response = HttpRequest.post(url) +// .contentType("application/x-www-form-urlencoded") +// .header(CoreConst.SYSTEM_LANGUAGE_CODE_, "zh-CN") //璇█缂栫爜 +// .header(CoreConst.SYSTEM_CLIENT_TYPE_, "Web") //瀹㈡埛绔被鍨� +// .header(CoreConst.SYSTEM_CLIENT_VERSION_, "1.0.0") //瀹㈡埛绔増鏈� +// .header("server-name", serverName) //绯荤粺鍚嶇О +// .header("signature", signature) //绛惧悕 +// .body("formData=" + requestData).execute()) { +// if (response.getStatus() == 200) { +// //璇锋眰鎴愬姛 +// String res = response.body(); +// if (!StringUtils.isEmpty(res)) { +// JSONObject resBody = JSON.parseObject(res); +// if (resBody != null) { +// String code = resBody.getString(CoreConst.API_RETURN_KEY_CODE); +// if (!CoreConst.API_RETURN_VALUE_CODE_200.equals(code)) { +// //鏈嶅姟鍐呴儴鎶涘嚭鐨勯敊璇� +// throw new BaseException("璋冪敤鎺ュ彛澶辫触锛�", resBody.getString(CoreConst.API_RETURN_KEY_MSG)); +// } +// String formData = resBody.getString(CoreConst.API_RETURN_KEY_DATA); +// if (StringUtils.isEmpty(formData)) { +// return null; +// } +// FieldSetEntity result = JsonUtil.pareseJsonToFieldSetEntity(formData); +// return result; +// } +// } +// } +// throw new BaseException(ErrorCode.OPEN_API_REQUEST_FAIL); +// } +// +// } +// +// /** +// * 鑾峰彇閲囬泦鏃ュ織 +// * +// * @return +// */ +// public FieldSetEntity getCollectLog() { +// collectLogCache = null; +// if (collectLogCache == null) { +// loadCollectLogCache(); +// } +// +// return collectLogCache; +// } +// +// public void loadCollectLogCache() { +// StringBuilder sql = new StringBuilder(); +// sql.append("\n with no_extract as ( "); +// sql.append("\n SELECT "); +// sql.append("\n a.* "); +// sql.append("\n FROM "); +// sql.append("\n product_sys_data_center_log A "); +// sql.append("\n LEFT JOIN product_sys_data_center_log b ON a.uuid = b.pre_step_uuid "); +// sql.append("\n WHERE "); +// sql.append("\n a.type = 1 "); +// sql.append("\n and a.result=1 and (a.deal_flag is null or a.deal_flag =0) "); +// sql.append("\n AND ( "); +// sql.append("\n b.pre_step_uuid IS NULL "); +// sql.append("\n OR "); +// sql.append("\n ( "); +// sql.append("\n b.pre_step_uuid=a.uuid "); +// sql.append("\n AND "); +// sql.append("\n (b.result=0 and (b.deal_result = 0 or b.deal_flag is null)) "); +// sql.append("\n ) "); +// sql.append("\n ) "); +// sql.append("\n ), "); +// sql.append("\n last_run_log as ( "); +// sql.append("\n select max(created_utc_datetime) last_time,config_uuid from product_sys_data_center_log where type=1 and result=1 and deal_flag=0 GROUP BY config_uuid "); +// sql.append("\n ) "); +// sql.append("\n "); +// sql.append("\n SELECT ifnull(COUNT(no_extract.uuid),0) unextracted_batch ,ifnull(sum(no_extract.count),0) unextracted_total_count,b.`name`,(select last_time from last_run_log where b.uuid=last_run_log.config_uuid) last_success_time FROM product_sys_data_collect b "); +// sql.append("\n left join no_extract on no_extract.config_uuid=b.uuid "); +// sql.append("\n GROUP BY b.uuid "); +// sql.append("\n order by b.`name` "); +// +// FieldSetEntity fse = new FieldSetEntity(); +// fse.setTableName("temp"); +// fse.setValue("load_log_time", DateTime.now().toString()); +// DataTableEntity dataTableEntity = getBaseDao().listTable(sql.toString(), new Object[]{}); +// if (!DataTableEntity.isEmpty(dataTableEntity)) { +// fse.setValue("list", BaseUtil.dataTableEntityToJson(dataTableEntity, f -> { +// JSONObject jsonObject = f[0]; +// Date lastSuccessTime = jsonObject.getDate("last_success_time"); +// if (lastSuccessTime != null) { +// jsonObject.put("last_success_time", DateUtil.format(lastSuccessTime, "yyyy-MM-dd HH:mm:ss")); +// } +// })); +// } else { +// fse.setValue("list", "[]"); +// } +// this.collectLogCache = fse; +// } +//} 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 c10e3ad..88ead0a 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 @@ -41,577 +41,574 @@ public class ProductionRealTimeInfoService extends AbstractBaseService { - public void getReportExcel(HttpServletRequest request, HttpServletResponse response) throws BaseException, IOException { - FieldSetEntity fse = BaseUtil.getFieldSetEntity(request); - DataTableEntity manufacturingCommandSheet = this.getManufacturingCommandSheet(fse); - if (DataTableEntity.isEmpty(manufacturingCommandSheet)) { - throw new BaseException(ErrorCode.NOT_EXPORT_DATA); - } - response.setContentType("multipart/form-data"); - response.setCharacterEncoding("utf-8"); - // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴 - String fileName = URLEncoder.encode("鍒朵护鍗曠敓浜т俊鎭�" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".xlsx", "UTF-8"); - response.setHeader("Content-disposition", "attachment;filename=" + fileName); - List<ManufacturingOrderEntity> manufacturingOrderEntityList = new ArrayList<>(); - for (int i = 0; i < manufacturingCommandSheet.getRows(); i++) { - FieldSetEntity fieldSetEntity = manufacturingCommandSheet.getFieldSetEntity(i); - Map<Object, Object> values = fieldSetEntity.getValues(); - JSONObject jsonObject = new JSONObject((Map) values); + public void getReportExcel(HttpServletRequest request, HttpServletResponse response) throws BaseException, IOException { + FieldSetEntity fse = BaseUtil.getFieldSetEntity(request); + DataTableEntity manufacturingCommandSheet = this.getManufacturingCommandSheet(fse); + if (DataTableEntity.isEmpty(manufacturingCommandSheet)) { + throw new BaseException(ErrorCode.NOT_EXPORT_DATA); + } + response.setContentType("multipart/form-data"); + response.setCharacterEncoding("utf-8"); + // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴 + String fileName = URLEncoder.encode("鍒朵护鍗曠敓浜т俊鎭�" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".xlsx", "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName); + List<ManufacturingOrderEntity> manufacturingOrderEntityList = new ArrayList<>(); + for (int i = 0; i < manufacturingCommandSheet.getRows(); i++) { + FieldSetEntity fieldSetEntity = manufacturingCommandSheet.getFieldSetEntity(i); + Map<Object, Object> values = fieldSetEntity.getValues(); + JSONObject jsonObject = new JSONObject((Map) values); - ManufacturingOrderEntity manufacturingOrderEntity = jsonObject.toJavaObject(ManufacturingOrderEntity.class); - manufacturingOrderEntityList.add(manufacturingOrderEntity); - } - ServletOutputStream outputStream = response.getOutputStream(); - ExcelWriter excelWriter = EasyExcel.write(outputStream, ManufacturingOrderEntity.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); - try { - // 鍘昏皟鐢ㄥ啓鍏�,杩欓噷鎴戣皟鐢ㄤ簡浜旀锛屽疄闄呬娇鐢ㄦ椂鏍规嵁鏁版嵁搴撳垎椤电殑鎬荤殑椤垫暟鏉ャ�傝繖閲屾渶缁堜細鍐欏埌5涓猻heet閲岄潰 - // 姣忔閮借鍒涘缓writeSheet 杩欓噷娉ㄦ剰蹇呴』鎸囧畾sheetNo 鑰屼笖sheetName蹇呴』涓嶄竴鏍� - WriteSheet writeSheet = EasyExcel.writerSheet(1, "鍒朵护鍗曚俊鎭�").build(); - // 鍒嗛〉鍘绘暟鎹簱鏌ヨ鏁版嵁 杩欓噷鍙互鍘绘暟鎹簱鏌ヨ姣忎竴椤电殑鏁版嵁 - excelWriter.write(manufacturingOrderEntityList, writeSheet); + ManufacturingOrderEntity manufacturingOrderEntity = jsonObject.toJavaObject(ManufacturingOrderEntity.class); + manufacturingOrderEntityList.add(manufacturingOrderEntity); + } + ServletOutputStream outputStream = response.getOutputStream(); + ExcelWriter excelWriter = EasyExcel.write(outputStream, ManufacturingOrderEntity.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); + try { + // 鍘昏皟鐢ㄥ啓鍏�,杩欓噷鎴戣皟鐢ㄤ簡浜旀锛屽疄闄呬娇鐢ㄦ椂鏍规嵁鏁版嵁搴撳垎椤电殑鎬荤殑椤垫暟鏉ャ�傝繖閲屾渶缁堜細鍐欏埌5涓猻heet閲岄潰 + // 姣忔閮借鍒涘缓writeSheet 杩欓噷娉ㄦ剰蹇呴』鎸囧畾sheetNo 鑰屼笖sheetName蹇呴』涓嶄竴鏍� + WriteSheet writeSheet = EasyExcel.writerSheet(1, "鍒朵护鍗曚俊鎭�").build(); + // 鍒嗛〉鍘绘暟鎹簱鏌ヨ鏁版嵁 杩欓噷鍙互鍘绘暟鎹簱鏌ヨ姣忎竴椤电殑鏁版嵁 + excelWriter.write(manufacturingOrderEntityList, writeSheet); // writeSheet = EasyExcel.writerSheet(2, "鍒朵护鍗曚俊鎭�").build(); // excelWriter.write(manufacturingOrderEntityList, writeSheet); // writeSheet = EasyExcel.writerSheet(3, "鍒朵护鍗曚俊鎭�").build(); // excelWriter.write(manufacturingOrderEntityList, writeSheet); - String process = fse.getString("process"); + 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]; - FieldSetEntity ff = new FieldSetEntity(); - ff.setTableName("temp"); - ff.setValue("process", process); - ff.setValue("mo_number", moNumber); - DataTableEntity processSheet = getProcessSheet(ff); - if (DataTableEntity.isEmpty(processSheet)) { - continue; - } - fileName = moNumber + "鐨勭敓浜ф槑缁�"; - writeSheet = EasyExcel.writerSheet(i + 1, 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()); - ProductionDetailEntity productionDetail = jsonObject.toJavaObject(ProductionDetailEntity.class); - productionDetailEntities.add(productionDetail); - } - excelWriter.write(productionDetailEntities, writeSheet); - } - } catch (Exception e) { - throw e; - } finally { - excelWriter.finish(); - outputStream.flush(); - outputStream.close(); - } - } + 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]; + FieldSetEntity ff = new FieldSetEntity(); + ff.setTableName("temp"); + ff.setValue("process", process); + ff.setValue("mo_number", moNumber); + DataTableEntity processSheet = getProcessSheet(ff); + if (DataTableEntity.isEmpty(processSheet)) { + continue; + } + fileName = moNumber + "鐨勭敓浜ф槑缁�"; + writeSheet = EasyExcel.writerSheet(i + 1, 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()); + ProductionDetailEntity productionDetail = jsonObject.toJavaObject(ProductionDetailEntity.class); + productionDetailEntities.add(productionDetail); + } + excelWriter.write(productionDetailEntities, writeSheet); + } + } catch (Exception e) { + throw e; + } finally { + excelWriter.finish(); + outputStream.flush(); + outputStream.close(); + } + } - /** - * 宸ュ簭鍒楄〃鑾峰彇 - * - * @return - */ - public DataTableEntity getProcessList() { - StringBuilder sql = new StringBuilder(); - sql.append(" SELECT "); - sql.append(" group_next "); - sql.append(" FROM da_t_co_route_control where state_flag <> '2' AND group_next <> '0' AND isrotegroup = 'Y' "); - sql.append(" GROUP BY group_next "); - return getBaseDao().listTable(sql.toString(), new Object[]{}); - } + /** + * 宸ュ簭鍒楄〃鑾峰彇 + * + * @return + */ + public DataTableEntity getProcessList() { + StringBuilder sql = new StringBuilder(); + sql.append(" SELECT "); + sql.append(" group_next "); + sql.append(" FROM da_t_co_route_control where state_flag <> '2' AND group_next <> '0' AND isrotegroup = 'Y' "); + sql.append(" GROUP BY group_next "); + return getBaseDao().listTable(sql.toString(), new Object[]{}); + } - // T_CO_ROUTE_CONTROL T_PM_MO_BASE T_CO_CUSTOMER T_CO_AREA T_PM_PROJECT_BASE T_CO_ITEM T_WIP_STATION_REC - // T_PM_PRODUCT T_WIP_TRACKING T_CO_EMP_DESC T_SMO_TECHNICS - // T_WIP_ERROR_SCRAP T_WIP_DETAIL + // T_CO_ROUTE_CONTROL T_PM_MO_BASE T_CO_CUSTOMER T_CO_AREA T_PM_PROJECT_BASE T_CO_ITEM T_WIP_STATION_REC + // T_PM_PRODUCT T_WIP_TRACKING T_CO_EMP_DESC T_SMO_TECHNICS + // T_WIP_ERROR_SCRAP T_WIP_DETAIL - public void test() { - DataBaseEntity dataBaseEntity = new DataBaseEntity("ef7b1348-b2ec-40d1-a0b8-76cd29b99a1232d"); - Dao dao = dataBaseEntity.getDao(); - double ceil = Math.ceil(48548455 / 500); - try { - Connection connection = dao.getConnection(); - PreparedStatement pst = connection.prepareStatement("\n" + - "\n" + - " update T_PM_PRODUCT_SN SET CREATE_DATE=to_date((select '20'||(select trunc(dbms_random.value(17,22)) from dual)||'-'||(select trunc(dbms_random.value(1,10)) from dual)||'-'||(select trunc(dbms_random.value(1,28)) from dual)||' 00:00:00'\n" + - "\t from dual),'yyyy-mm-dd hh24:mi:ss')\n" + - "\t where product_sn in (\n" + - "\t\tSELECT PRODUCT_SN from T_PM_PRODUCT_SN where CREATE_DATE=TO_DATE('2022-11-17 16:30:28','yyyy-mm-dd hh24:mi:ss') and rownum<=500\n" + - "\t )"); - for (int i = 0; i < ceil; i++) { + public void test() { + DataBaseEntity dataBaseEntity = new DataBaseEntity("ef7b1348-b2ec-40d1-a0b8-76cd29b99a1232d"); + Dao dao = dataBaseEntity.getDao(); + double ceil = Math.ceil(48548455 / 500); + try { + Connection connection = dao.getConnection(); + PreparedStatement pst = connection.prepareStatement("\n" + + "\n" + + " update T_PM_PRODUCT_SN SET CREATE_DATE=to_date((select '20'||(select trunc(dbms_random.value(17,22)) from dual)||'-'||(select trunc(dbms_random.value(1,10)) from dual)||'-'||(select trunc(dbms_random.value(1,28)) from dual)||' 00:00:00'\n" + + "\t from dual),'yyyy-mm-dd hh24:mi:ss')\n" + + "\t where product_sn in (\n" + + "\t\tSELECT PRODUCT_SN from T_PM_PRODUCT_SN where CREATE_DATE=TO_DATE('2022-11-17 16:30:28','yyyy-mm-dd hh24:mi:ss') and rownum<=500\n" + + "\t )"); + for (int i = 0; i < ceil; i++) { - pst.execute(); - System.out.println("鍓╀綑--" + (ceil - i + 1)); - } - } catch (Exception e) { - e.printStackTrace(); - } - } + pst.execute(); + System.out.println("鍓╀綑--" + (ceil - i + 1)); + } + } catch (Exception e) { + e.printStackTrace(); + } + } - /** - * 鑾峰彇鍒朵护鍗曚俊鎭� - * - * @param fse - * @return - * @throws BaseException - */ - public DataTableEntity getManufacturingCommandSheet(FieldSetEntity fse) throws BaseException { - Integer cpage = fse.getInteger("cpage"); - if (cpage == null || cpage <= 0) { - cpage = 1; - } - Integer pageSize = fse.getInteger("page_size"); - if (pageSize == null || pageSize <= 0) { - pageSize = Integer.MAX_VALUE; - } - //杩戞湡 - String queryTime = fse.getString("query_time"); - String timeValue = fse.getString("time_value"); - String areaName = fse.getString("areaname"); - String productMaterial = fse.getString("product_material"); - String moNumber = fse.getString("mo_number"); + /** + * 鑾峰彇鍒朵护鍗曚俊鎭� + * + * @param fse + * @return + * @throws BaseException + */ + public DataTableEntity getManufacturingCommandSheet(FieldSetEntity fse) throws BaseException { + Integer cpage = fse.getInteger("cpage"); + if (cpage == null || cpage <= 0) { + cpage = 1; + } + Integer pageSize = fse.getInteger("page_size"); + if (pageSize == null || pageSize <= 0) { + pageSize = Integer.MAX_VALUE; + } + //杩戞湡 + String queryTime = fse.getString("query_time"); + String timeValue = fse.getString("time_value"); + String areaName = fse.getString("areaname"); + String productMaterial = fse.getString("product_material"); + String moNumber = fse.getString("mo_number"); // String projectId = fse.getString("project_id"); - String closeFlag = fse.getString("close_flag"); - String timeFilter = fse.getString("time_filter"); - String timeField = fse.getString("timeField"); - if (StringUtils.isAllEmpty(areaName, productMaterial, moNumber, productMaterial) - && ((!"1".equals(timeFilter) || StringUtils.isEmpty(timeValue)) && !"1".equals(queryTime))) { + String closeFlag = fse.getString("close_flag"); + String timeFilter = fse.getString("time_filter"); + String timeField = fse.getString("timeField"); + if (StringUtils.isAllEmpty(areaName, productMaterial, moNumber, productMaterial) + && ((!"1".equals(timeFilter) || StringUtils.isEmpty(timeValue)) && !"1".equals(queryTime))) { - throw new BaseException(ErrorCode.REPORT_SELECT_TIME_FILTER_CANNOT_EMPTY); - } - StringBuilder sql = new StringBuilder(128); - sql.append("\n select distinct "); - sql.append("\n p.project_id as project_name , ");//--宸ュ崟鍙�, - sql.append("\n p.destroy_no , ");//--璁㈠崟鍙�, - sql.append("\n p.product_material , ");//--鏈虹, - sql.append("\n m.co_item_name as product_name , ");//--鍝佸悕, - sql.append("\n m.co_item_spec as product_standard , ");//--瑙勬牸, + throw new BaseException(ErrorCode.REPORT_SELECT_TIME_FILTER_CANNOT_EMPTY); + } + StringBuilder sql = new StringBuilder(128); + sql.append("\n select distinct "); + sql.append("\n p.project_id as project_name , ");//--宸ュ崟鍙�, + sql.append("\n p.destroy_no , ");//--璁㈠崟鍙�, + sql.append("\n p.product_material , ");//--鏈虹, + sql.append("\n m.co_item_name as product_name , ");//--鍝佸悕, + sql.append("\n m.co_item_spec as product_standard , ");//--瑙勬牸, // sql.append("\n c.customer , ");//--瀹㈡埛鍚嶇О, - sql.append("\n ifnull(p.product_count,0) product_count ,");//--宸ュ崟鏁伴噺, - sql.append("\n t.mo_number , ");//--鍒朵护鍗曞彿, - sql.append("\n case "); - sql.append("\n when process_face = 'a' then '鍗曢潰' "); - sql.append("\n when process_face = 's' then '姝i潰' "); - sql.append("\n when process_face = 'c' then '鍙嶉潰' "); - sql.append("\n else '' end process_face , ");//--鍔犲伐闈�, - sql.append("\n case "); - sql.append("\n when master_flag='Y' then '鏄�' "); - sql.append("\n else '鍚�' end master_flag , ");//--浜у嚭鏍囪瘑, - sql.append("\n a.areaname , ");//--鍖哄煙鍚嶇О, - sql.append("\n t.target_qty , ");//--鐩爣鏁伴噺, - sql.append("\n t.input_qty ,");//--鎶曞叆鏁伴噺, - sql.append("\n t.output_qty , ");//--浜у嚭鏁伴噺, - sql.append("\n t.input_qty-t.output_qty wip_qty , ");//--鍦ㄥ埗鍝佹暟閲�, - sql.append("\n t.total_scrap_qty , ");//--浣滃簾鏁伴噺, - sql.append("\n ifnull(t.tp_number,0) tp_number , ");//--鍗曠墖鐐规暟, - sql.append("\n ifnull(t.output_qty *t.tp_number,0) totoaltp_number, ");//--鎬荤偣鏁�, - sql.append("\n t.mo_create_date , ");//--寮�绔嬫椂闂�, - sql.append("\n t.mo_start_date , ");//--瀹為檯鎶曞叆鏃堕棿, - sql.append("\n t.mo_due_date , ");//--棰勫叧缁撴椂闂�, - sql.append("\n t.mo_close_date ");//--鍏崇粨鏃堕棿 - sql.append("\n from "); - sql.append("\n [={da_t_pm_mo_base}{areaid,project_id,master_flag,process_face,target_qty,input_qty,output_qty,total_scrap_qty"); - sql.append(",tp_number,mo_create_date,mo_start_date,mo_due_date,mo_close_date"); - sql.append(",close_flag,mo_number}"); - boolean isF = false; - if ("1".equals(queryTime) && (StringUtils.isEmpty(timeValue) || !"1".equals(timeFilter))) { - //娌℃湁鏃堕棿鏉′欢涓斿嬀閫変簡鍙煡鐪嬭繎涓ゅ勾鐨勬暟鎹� -// DateTime offset = DateUtil.offset(new Date(), DateField.YEAR, -2); -// sql.append(" {where ( mo_create_date >= str_to_date('" + DateUtil.format(offset, "yyyy-MM-dd") + "','%Y-%m-%d') )}"); -// filterParams.add(DateUtil.format(offset, "yyyy-MM-dd")); - } else if (!StringUtils.isEmpty(timeValue) && "1".equals(timeFilter)) { - //鏈夋椂闂存潯浠舵牴鎹敤鎴烽�夋嫨鐨勬椂闂磋繃婊� - String[] times = timeValue.split(","); - String startTime = times[0]; - String endTime = times[1]; - sql.append(" {WHERE"); - if ("production_time".equals(timeField)) { - //鐗规畩锛� 鐢熶骇鏃堕棿 - sql.append(" (mo_number in (SELECT mo_number from [={da_t_wip_station_rec}{mo_number}"); - sql.append("{where create_date >=str_to_date('" + startTime + "','%Y-%m-%d %H:%i:%s') and create_date<=str_to_date('" + endTime + "','%Y-%m-%d %H:%i:%s')}=] "); - sql.append(" ) "); - } else { - //鏃堕棿鏉′欢 - sql.append("\n (").append(timeField).append(">= str_to_date('" + startTime + "','%Y-%m-%d %H:%i:%s')"); - sql.append("\n and ").append(timeField).append("<=str_to_date('" + endTime + "','%Y-%m-%d %H:%i:%s') )"); - } - sql.append("}"); - } - sql.append("=] t "); + sql.append("\n ifnull(p.product_count,0) product_count ,");//--宸ュ崟鏁伴噺, + sql.append("\n t.mo_number , ");//--鍒朵护鍗曞彿, + sql.append("\n case "); + sql.append("\n when process_face = 'a' then '鍗曢潰' "); + sql.append("\n when process_face = 's' then '姝i潰' "); + sql.append("\n when process_face = 'c' then '鍙嶉潰' "); + sql.append("\n else '' end process_face , ");//--鍔犲伐闈�, + sql.append("\n case "); + sql.append("\n when master_flag='Y' then '鏄�' "); + sql.append("\n else '鍚�' end master_flag , ");//--浜у嚭鏍囪瘑, + sql.append("\n a.areaname , ");//--鍖哄煙鍚嶇О, + sql.append("\n t.target_qty , ");//--鐩爣鏁伴噺, + sql.append("\n t.input_qty ,");//--鎶曞叆鏁伴噺, + sql.append("\n t.output_qty , ");//--浜у嚭鏁伴噺, + sql.append("\n t.input_qty-t.output_qty wip_qty , ");//--鍦ㄥ埗鍝佹暟閲�, + sql.append("\n t.total_scrap_qty , ");//--浣滃簾鏁伴噺, + sql.append("\n ifnull(t.tp_number,0) tp_number , ");//--鍗曠墖鐐规暟, + sql.append("\n ifnull(t.output_qty *t.tp_number,0) totoaltp_number, ");//--鎬荤偣鏁�, + sql.append("\n t.mo_create_date , ");//--寮�绔嬫椂闂�, + sql.append("\n t.mo_start_date , ");//--瀹為檯鎶曞叆鏃堕棿, + sql.append("\n t.mo_due_date , ");//--棰勫叧缁撴椂闂�, + sql.append("\n t.mo_close_date ");//--鍏崇粨鏃堕棿 + sql.append("\n from "); + sql.append("\n [={da_t_pm_mo_base}{areaid,project_id,master_flag,process_face,target_qty,input_qty,output_qty,total_scrap_qty"); + sql.append(",tp_number,mo_create_date,mo_start_date,mo_due_date,mo_close_date"); + sql.append(",close_flag,mo_number}"); + boolean isF = false; +// if ("1".equals(queryTime) && (StringUtils.isEmpty(timeValue) || !"1".equals(timeFilter))) { +// //娌℃湁鏃堕棿鏉′欢涓斿嬀閫変簡鍙煡鐪嬭繎涓ゅ勾鐨勬暟鎹� +//// DateTime offset = DateUtil.offset(new Date(), DateField.YEAR, -2); +//// sql.append(" {where ( mo_create_date >= str_to_date('" + DateUtil.format(offset, "yyyy-MM-dd") + "','%Y-%m-%d') )}"); +//// filterParams.add(DateUtil.format(offset, "yyyy-MM-dd")); +// } else + if (!StringUtils.isEmpty(timeValue) && "1".equals(timeFilter)) { + //鏈夋椂闂存潯浠舵牴鎹敤鎴烽�夋嫨鐨勬椂闂磋繃婊� + String[] times = timeValue.split(","); + String startTime = times[0]; + String endTime = times[1]; +// sql.append(" (mo_number in (SELECT mo_number from [={da_t_wip_station_rec}{mo_number}"); +// sql.append("{where create_date >=str_to_date('" + startTime + "','%Y-%m-%d %H:%i:%s') and create_date<=str_to_date('" + endTime + "','%Y-%m-%d %H:%i:%s')}=] "); +// sql.append(" ) "); + //鏃堕棿鏉′欢 + if (!"production_time".equals(timeField)) { + sql.append(" {WHERE"); + sql.append("\n (").append(timeField).append(">= str_to_date('" + startTime + "','%Y-%m-%d %H:%i:%s')"); + sql.append("\n and ").append(timeField).append("<=str_to_date('" + endTime + "','%Y-%m-%d %H:%i:%s') )"); + + } + sql.append("}=] t"); + if ("production_time".equals(timeField)) { + //鐗规畩锛� 鐢熶骇鏃堕棿 + sql.append(" JOIN [={da_t_wip_station_rec}{mo_number}{where create_date >=str_to_date('" + startTime + "','%Y-%m-%d %H:%i:%s') and create_date<=str_to_date('" + endTime + "','%Y-%m-%d %H:%i:%s')}=] rec ON rec.mo_number = t.mo_number "); + } + } else { + sql.append("=] t "); + } + // sql.append("\n left join [=da_t_co_customer=] c on t.cust_code = c.cust_code "); - sql.append("\n left join da_t_co_area a on t.areaid = a.areaid "); - sql.append("\n left join [={da_t_pm_project_base}{project_base_id,product_material"); - sql.append(",project_id,destroy_no,product_count"); - sql.append("}=] p on p.project_base_id = t.project_id "); - sql.append("\n left join [={da_t_co_item}{co_item_code,co_item_name,co_item_spec}=] m on p.product_material = m.co_item_code "); + sql.append("\n left join da_t_co_area a on t.areaid = a.areaid "); + sql.append("\n left join [={da_t_pm_project_base}{project_base_id,product_material"); + sql.append(",project_id,destroy_no,product_count"); + sql.append("}=] p on p.project_base_id = t.project_id "); + sql.append("\n left join [={da_t_co_item}{co_item_code,co_item_name,co_item_spec}=] m on p.product_material = m.co_item_code "); + boolean isFilter = false; + StringBuilder sqlFilter = new StringBuilder(); + List<Object> filterParams = new ArrayList<>(); - boolean isFilter = false; - StringBuilder sqlFilter = new StringBuilder(); - List<Object> filterParams = new ArrayList<>(); + isFilter = appendLikeFilter(areaName, "a.areaname", sqlFilter, filterParams, isFilter); + isFilter = appendLikeFilter(productMaterial, "p.product_material", false, sqlFilter, filterParams, isFilter); + isFilter = appendLikeFilter(moNumber, "t.mo_number", sqlFilter, filterParams, isFilter); + if (!"-1".equals(closeFlag)) { + isFilter = appendLikeFilter(closeFlag, "t.close_flag", false, sqlFilter, filterParams, isFilter); + } - isFilter = appendLikeFilter(areaName, "a.areaname", sqlFilter, filterParams, isFilter); - isFilter = appendLikeFilter(productMaterial, "p.product_material", false, sqlFilter, filterParams, isFilter); - isFilter = appendLikeFilter(moNumber, "t.mo_number", sqlFilter, filterParams, isFilter); - if (!"-1".equals(closeFlag)) { - isFilter = appendLikeFilter(closeFlag, "t.close_flag", false, sqlFilter, filterParams, isFilter); - } + if (isFilter) { + sql.append(" where (").append(sqlFilter).append(") "); + } + sql.append(" order by mo_create_date"); + System.out.println(sql); + String parseSql = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), sql.toString(), 2); + DataTableEntity dataTableEntity = getBaseDao().listTable(parseSql, filterParams.toArray(), pageSize, cpage); - if (isFilter) { - sql.append(" where (").append(sqlFilter).append(") "); - } - sql.append(" order by mo_create_date"); - String parseSql = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), sql.toString(), 2); - DataTableEntity dataTableEntity = getBaseDao().listTable(parseSql, filterParams.toArray(), pageSize, cpage); + return dataTableEntity; + } - return dataTableEntity; - } + public DataTableEntity getProductSheet(FieldSetEntity fse) throws BaseException { + String trackingTable = "da_t_wip_tracking"; + 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<>(); - public DataTableEntity getProductSheet(FieldSetEntity fse) throws BaseException { - String bak = fse.getString("~bak~"); - String trackingTable = "da_t_wip_tracking"; - if ("1".equals(bak)) { - trackingTable = "da_t_wip_tracking_bak"; - } - 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); - 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,display_group,item_count,routeendflage,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 display_group='" + groupNext + "' and t.item_count!=0 and routeendflage<>'Y'}=] t "); - sql.append("\n left join da_t_co_emp_desc e "); - sql.append("\n on t.emp_no=e.emp_no "); + 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,display_group,item_count,routeendflage,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 display_group='" + groupNext + "' and t.item_count!=0 and routeendflage<>'Y'}=] 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.display_group=? "); // sql.append("\n and t.item_count!=0 and routeendflage<>'Y' "); - 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,routeendflage,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 routeendflage<>'Y' 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 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,routeendflage,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 routeendflage<>'Y' 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 + "' and routeendflage='Y' "); - 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 "); + sql.append("\n {where number_type='" + numberType + "' and mo_number='" + moNumber + "' and routeendflage='Y' "); + 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,display_group,routeendflage}"); - sql.append("{ WHERE number_type='" + numberType + "' and display_group='" + groupNext + "' and mo_number='" + moNumber + "' and routeendflage<>'Y' }"); - 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 "); + } 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,display_group,routeendflage}"); + sql.append("{ WHERE number_type='" + numberType + "' and display_group='" + groupNext + "' and mo_number='" + moNumber + "' and routeendflage<>'Y' }"); + 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.display_group=? "); // sql.append("\n and routeendflage<>'Y' "); - 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,display_group,routeendflage}{ where number_type='" + numberType + "' and mo_number='" + moNumber + "' and group_name='" + groupNext + "'"); - sql.append(" and routeendflage<>'Y' 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 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,display_group,routeendflage}{ where number_type='" + numberType + "' and mo_number='" + moNumber + "' and group_name='" + groupNext + "'"); + sql.append(" and routeendflage<>'Y' 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 routeendflage<>'Y' and error_flag='1' "); - sql.append("\n order by error_flag asc,in_station_time asc "); + 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 + "' and routeendflage='Y'}"); - sql.append("=] t "); - sql.append("\n left join "); - sql.append("\n da_t_co_emp_desc e on t.emp_no=e.emp_no "); + } 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 + "' and routeendflage='Y'}"); + 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=? and routeendflage='Y' "); - sql.append("\n order by error_flag asc,in_station_time asc "); + sql.append("\n order by error_flag asc,in_station_time asc "); - } else { - return null; - } - if (!"娴佺▼缁撴潫".equals(groupNext)) { - params.add(scrap); - params.add(lend); + } 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(scrap); + params.add(lend); // params.add(numberType); // params.add(moNumber); // params.add(groupNext); - } else { - params.add(scrap); - params.add(lend); + } 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; - } + } + System.out.println(sql); + String parseSql1 = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), sql.toString(), 2); + return getBaseDao().listTable(parseSql1, params.toArray()); + } + return null; + } - /** - * 宸ュ簭鎶ヨ〃 - * - * @param fse - * @return - * @throws BaseException - */ - public DataTableEntity getProcessSheet(FieldSetEntity fse) throws BaseException { - String bak = fse.getString("~bak~"); - String detailTable = "da_t_wip_detail"; - String trackTable = "da_t_wip_tracking"; - if ("1".equals(bak)) { - detailTable = "da_t_wip_detail_bak"; - trackTable = "da_t_wip_tracking_bak"; - } - //鍒朵护鍗曞彿 - String moNumber = fse.getString("mo_number"); - //宸ュ簭 - String process = fse.getString("process"); - StringBuilder sql = new StringBuilder(128); - sql.append("\n select "); - sql.append("\n * "); - sql.append("\n from "); - sql.append("\n ( "); - sql.append("\n select "); - sql.append("\n c.* "); - sql.append("\n from "); - sql.append("\n ( "); - sql.append("\n select "); - sql.append("\n a.*, "); - sql.append("\n ifnull( c1.wait_scrap_qty_all, 0 ) wait_scrap_qty_all, "); - sql.append("\n ifnull( l.pass_itemcount, 0 ) pass_itemcount, "); - sql.append("\n ifnull( k.second_passcount, 0 ) second_passcount, "); - sql.append("\n ifnull( m.use_itemcount, 0 ) use_itemcount, "); - sql.append("\n ifnull( n.error_itemcount, 0 ) error_itemcount "); - sql.append("\n from "); - sql.append("\n ( "); - sql.append("\n select "); - sql.append("\n v.route_code, "); - sql.append("\n v.group_next, "); - sql.append("\n min( v.step_sequence ) as step_sequence, "); - sql.append("\n min( state_flag ) as state_flag, "); - sql.append("\n v.mo_number "); - sql.append("\n from "); - sql.append("\n ( "); - sql.append("\n select "); - sql.append("\n a.route_groupid, "); - sql.append("\n a.route_code, "); - sql.append("\n a.group_code, "); - sql.append("\n a.group_name, "); - sql.append("\n a.group_next, "); - sql.append("\n a.state_flag, "); - sql.append("\n a.step_sequence, "); - sql.append("\n a.ismustpass, "); - sql.append("\n a.isrotegroup, "); - sql.append("\n a.ms_code, "); - sql.append("\n a.route_inout_flag, "); - sql.append("\n a.route_cycle_time, "); - sql.append("\n b.technicsid, "); - sql.append("\n c.mo_number "); - sql.append("\n from "); - sql.append("\n da_t_co_route_control a "); - sql.append("\n left join da_t_smo_technics b on a.route_code = b.route_code "); - sql.append("\n join [={da_t_pm_mo_base b1}{technicsid,mo_number}{ where mo_number = '" + moNumber + "' }=] c on b.technicsid = c.technicsid "); - sql.append("\n ) v "); - sql.append("\n left join da_t_co_group g on v.group_next = g.group_name "); - sql.append("\n where "); + /** + * 宸ュ簭鎶ヨ〃 + * + * @param fse + * @return + * @throws BaseException + */ + public DataTableEntity getProcessSheet(FieldSetEntity fse) throws BaseException { + String detailTable = "da_t_wip_detail"; + String trackTable = "da_t_wip_tracking"; + //鍒朵护鍗曞彿 + String moNumber = fse.getString("mo_number"); + //宸ュ簭 + String process = fse.getString("process"); + StringBuilder sql = new StringBuilder(128); + sql.append("\n select "); + sql.append("\n * "); + sql.append("\n from "); + sql.append("\n ( "); + sql.append("\n select "); + sql.append("\n c.* "); + sql.append("\n from "); + sql.append("\n ( "); + sql.append("\n select "); + sql.append("\n a.*, "); + sql.append("\n ifnull( c1.wait_scrap_qty_all, 0 ) wait_scrap_qty_all, "); + sql.append("\n ifnull( l.pass_itemcount, 0 ) pass_itemcount, "); + sql.append("\n ifnull( k.second_passcount, 0 ) second_passcount, "); + sql.append("\n ifnull( m.use_itemcount, 0 ) use_itemcount, "); + sql.append("\n ifnull( n.error_itemcount, 0 ) error_itemcount "); + sql.append("\n from "); + sql.append("\n ( "); + sql.append("\n select "); + sql.append("\n v.route_code, "); + sql.append("\n v.group_next, "); + sql.append("\n min( v.step_sequence ) as step_sequence, "); + sql.append("\n min( state_flag ) as state_flag, "); + sql.append("\n v.mo_number "); + sql.append("\n from "); + sql.append("\n ( "); + sql.append("\n select "); + sql.append("\n a.route_groupid, "); + sql.append("\n a.route_code, "); + sql.append("\n a.group_code, "); + sql.append("\n a.group_name, "); + sql.append("\n a.group_next, "); + sql.append("\n a.state_flag, "); + sql.append("\n a.step_sequence, "); + sql.append("\n a.ismustpass, "); + sql.append("\n a.isrotegroup, "); + sql.append("\n a.ms_code, "); + sql.append("\n a.route_inout_flag, "); + sql.append("\n a.route_cycle_time, "); + sql.append("\n b.technicsid, "); + sql.append("\n c.mo_number "); + sql.append("\n from "); + sql.append("\n da_t_co_route_control a "); + sql.append("\n left join da_t_smo_technics b on a.route_code = b.route_code "); + sql.append("\n join [={da_t_pm_mo_base b1}{technicsid,mo_number}{ where mo_number = '" + moNumber + "' }=] c on b.technicsid = c.technicsid "); + sql.append("\n ) v "); + sql.append("\n left join da_t_co_group g on v.group_next = g.group_name "); + sql.append("\n where "); // sql.append("\n v.mo_number = '"+moNumber+"' "); - sql.append("\n v.state_flag <> '2' "); - sql.append("\n and v.group_next <> '0' "); - sql.append("\n and v.isrotegroup = 'Y' "); - sql.append("\n group by "); - sql.append("\n v.route_code, "); - sql.append("\n v.group_next, "); - sql.append("\n v.mo_number "); - sql.append("\n order by "); - sql.append("\n v.route_code, "); - sql.append("\n v.group_next, "); - sql.append("\n v.mo_number "); - sql.append("\n ) a "); - sql.append("\n left join ( select scrap_process, mo_number, sum( ng_count ) wait_scrap_qty_all from da_t_wip_error_scrap where mo_number = '" + moNumber + "' group by scrap_process, mo_number ) c1 on a.group_next = c1.scrap_process "); - sql.append("\n and a.mo_number = c1.mo_number "); - sql.append("\n left join ( "); - sql.append("\n select "); - sql.append("\n count( distinct a.serial_number ) pass_itemcount, "); - sql.append("\n a.group_name, "); - sql.append("\n a.mo_number "); - sql.append("\n from "); - sql.append("\n [={" + detailTable + " d1}{serial_number,group_name,mo_number,reflux_flag}{ where mo_number='" + moNumber + "' and reflux_flag='N' }=] a "); + sql.append("\n v.state_flag <> '2' "); + sql.append("\n and v.group_next <> '0' "); + sql.append("\n and v.isrotegroup = 'Y' "); + sql.append("\n group by "); + sql.append("\n v.route_code, "); + sql.append("\n v.group_next, "); + sql.append("\n v.mo_number "); + sql.append("\n order by "); + sql.append("\n v.route_code, "); + sql.append("\n v.group_next, "); + sql.append("\n v.mo_number "); + sql.append("\n ) a "); + sql.append("\n left join ( select scrap_process, mo_number, sum( ng_count ) wait_scrap_qty_all from da_t_wip_error_scrap where mo_number = '" + moNumber + "' group by scrap_process, mo_number ) c1 on a.group_next = c1.scrap_process "); + sql.append("\n and a.mo_number = c1.mo_number "); + sql.append("\n left join ( "); + sql.append("\n select "); + sql.append("\n count( distinct a.serial_number ) pass_itemcount, "); + sql.append("\n a.group_name, "); + sql.append("\n a.mo_number "); + sql.append("\n from "); + sql.append("\n [={" + detailTable + " d1}{serial_number,group_name,mo_number,reflux_flag}{ where mo_number='" + moNumber + "' and reflux_flag='N' }=] a "); // sql.append("\n where "); // sql.append("\n a.mo_number = '"+moNumber+"' "); // sql.append("\n and a.reflux_flag = 'N' "); - sql.append("\n group by "); - sql.append("\n group_name, "); - sql.append("\n mo_number "); - sql.append("\n ) l on a.mo_number = l.mo_number "); - sql.append("\n and a.group_next = l.group_name "); - sql.append("\n left join ( "); - sql.append("\n select "); - sql.append("\n sum( item_count ) second_passcount, "); - sql.append("\n group_name, "); - sql.append("\n mo_number "); - sql.append("\n from "); - sql.append("\n ( "); - sql.append("\n select "); - sql.append("\n a.group_name, "); - sql.append("\n a.mo_number, "); - sql.append("\n a.serial_number, "); - sql.append("\n min( item_count ) item_count "); - sql.append("\n from "); - sql.append("\n [={" + detailTable + " d2}{group_name,mo_number,serial_number,item_count,reflux_flag}{where mo_number='" + moNumber + "' and reflux_flag='Y'}=] a "); + sql.append("\n group by "); + sql.append("\n group_name, "); + sql.append("\n mo_number "); + sql.append("\n ) l on a.mo_number = l.mo_number "); + sql.append("\n and a.group_next = l.group_name "); + sql.append("\n left join ( "); + sql.append("\n select "); + sql.append("\n sum( item_count ) second_passcount, "); + sql.append("\n group_name, "); + sql.append("\n mo_number "); + sql.append("\n from "); + sql.append("\n ( "); + sql.append("\n select "); + sql.append("\n a.group_name, "); + sql.append("\n a.mo_number, "); + sql.append("\n a.serial_number, "); + sql.append("\n min( item_count ) item_count "); + sql.append("\n from "); + sql.append("\n [={" + detailTable + " d2}{group_name,mo_number,serial_number,item_count,reflux_flag}{where mo_number='" + moNumber + "' and reflux_flag='Y'}=] a "); // sql.append("\n where "); // sql.append("\n a.mo_number = '"+moNumber+"' "); // sql.append("\n and reflux_flag = 'Y' "); - sql.append("\n group by "); - sql.append("\n a.group_name, "); - sql.append("\n a.mo_number, "); - sql.append("\n a.serial_number "); - sql.append("\n ) tttt "); - sql.append("\n group by "); - sql.append("\n group_name, "); - sql.append("\n mo_number "); - sql.append("\n ) k on a.mo_number = k.mo_number "); - sql.append("\n and a.group_next = k.group_name "); - sql.append("\n left join ( "); - sql.append("\n select "); - sql.append("\n display_group, "); - sql.append("\n mo_number, "); - sql.append("\n sum( item_count ) use_itemcount "); - sql.append("\n from "); - sql.append("\n [={"+trackTable+" t1}{display_group,mo_number,item_count,routeendflage,depanel_flag}{ where mo_number='" + moNumber + "' and routeendflage <> 'Y' and depanel_flag <> 'Y' }=] "); + sql.append("\n group by "); + sql.append("\n a.group_name, "); + sql.append("\n a.mo_number, "); + sql.append("\n a.serial_number "); + sql.append("\n ) tttt "); + sql.append("\n group by "); + sql.append("\n group_name, "); + sql.append("\n mo_number "); + sql.append("\n ) k on a.mo_number = k.mo_number "); + sql.append("\n and a.group_next = k.group_name "); + sql.append("\n left join ( "); + sql.append("\n select "); + sql.append("\n display_group, "); + sql.append("\n mo_number, "); + sql.append("\n sum( item_count ) use_itemcount "); + sql.append("\n from "); + sql.append("\n [={" + trackTable + " t1}{display_group,mo_number,item_count,routeendflage,depanel_flag}{ where mo_number='" + moNumber + "' and routeendflage <> 'Y' and depanel_flag <> 'Y' }=] "); // sql.append("\n where "); // sql.append("\n mo_number = '"+moNumber+"' "); // sql.append("\n and routeendflage <> 'Y' "); // sql.append("\n and depanel_flag <> 'Y' "); - sql.append("\n group by "); - sql.append("\n display_group, "); - sql.append("\n mo_number "); - sql.append("\n ) m on a.group_next = m.display_group "); - sql.append("\n and a.mo_number = m.mo_number "); - sql.append("\n left join ( select group_name, mo_number, sum( repair ) error_itemcount from [={"+trackTable+" t2}{group_name,mo_number,repair,error_flag}{where mo_number = '" + moNumber + "' and error_flag = '1'}=] group by group_name, mo_number ) n on a.group_next = n.group_name "); - sql.append("\n and a.mo_number = n.mo_number "); - sql.append("\n ) c union all "); - sql.append("\n select "); - sql.append("\n 0 route_code, "); - sql.append("\n '娴佺▼缁撴潫' group_next, "); - sql.append("\n 150 step_sequence, "); - sql.append("\n 5 state_flag, "); - sql.append("\n '" + moNumber + "' mo_number, "); - sql.append("\n ifnull( ( select sum( wait_scrap_qty ) from [={"+trackTable+" t3}{wait_scrap_qty,mo_number}{ where mo_number = '" + moNumber + "' }=] as tt ), 0 ) wait_scrap_qty_all, "); - sql.append("\n 0 pass_itemcount, "); - sql.append("\n 0 second_passcount, "); - sql.append("\n ifnull( ( select sum( item_count ) from [={"+trackTable+" t4}{item_count,mo_number,routeendflage}{where mo_number = '" + moNumber + "' and routeendflage = 'Y'}=] as ccc ), 0 ) use_itemcount, "); - sql.append("\n 0 error_itemcount "); - sql.append("\n from "); - sql.append("\n dual "); - sql.append("\n ) a "); + sql.append("\n group by "); + sql.append("\n display_group, "); + sql.append("\n mo_number "); + sql.append("\n ) m on a.group_next = m.display_group "); + sql.append("\n and a.mo_number = m.mo_number "); + sql.append("\n left join ( select group_name, mo_number, sum( repair ) error_itemcount from [={" + trackTable + " t2}{group_name,mo_number,repair,error_flag}{where mo_number = '" + moNumber + "' and error_flag = '1'}=] group by group_name, mo_number ) n on a.group_next = n.group_name "); + sql.append("\n and a.mo_number = n.mo_number "); + sql.append("\n ) c union all "); + sql.append("\n select "); + sql.append("\n 0 route_code, "); + sql.append("\n '娴佺▼缁撴潫' group_next, "); + sql.append("\n 150 step_sequence, "); + sql.append("\n 5 state_flag, "); + sql.append("\n '" + moNumber + "' mo_number, "); + sql.append("\n ifnull( ( select sum( wait_scrap_qty ) from [={" + trackTable + " t3}{wait_scrap_qty,mo_number}{ where mo_number = '" + moNumber + "' }=] as tt ), 0 ) wait_scrap_qty_all, "); + sql.append("\n 0 pass_itemcount, "); + sql.append("\n 0 second_passcount, "); + sql.append("\n ifnull( ( select sum( item_count ) from [={" + trackTable + " t4}{item_count,mo_number,routeendflage}{where mo_number = '" + moNumber + "' and routeendflage = 'Y'}=] as ccc ), 0 ) use_itemcount, "); + sql.append("\n 0 error_itemcount "); + sql.append("\n from "); + sql.append("\n dual "); + sql.append("\n ) a "); - if (!StringUtils.isEmpty(process)) { - String[] processArray = process.split(","); - sql.append("\n where ").append(BaseUtil.buildQuestionMarkFilter("group_next", processArray, true)); - } - sql.append("\n ORDER BY "); - sql.append("\n state_flag ASC, "); - sql.append("\n step_sequence ASC "); + if (!StringUtils.isEmpty(process)) { + String[] processArray = process.split(","); + sql.append("\n where ").append(BaseUtil.buildQuestionMarkFilter("group_next", processArray, true)); + } + sql.append("\n ORDER BY "); + sql.append("\n state_flag ASC, "); + sql.append("\n step_sequence ASC "); - String parseSql = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), sql.toString(), 2); + String parseSql = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), sql.toString(), 2); - return getBaseDao().listTable(parseSql, new Object[]{}); - } + return getBaseDao().listTable(parseSql, new Object[]{}); + } - private boolean appendLikeFilter(String value, String field, StringBuilder sqlFilter, List<Object> filterParams, boolean isFilter) { - return appendLikeFilter(value, field, true, sqlFilter, filterParams, isFilter); - } + private boolean appendLikeFilter(String value, String field, StringBuilder sqlFilter, List<Object> filterParams, boolean isFilter) { + return appendLikeFilter(value, field, true, sqlFilter, filterParams, isFilter); + } - private boolean appendLikeFilter(String value, String field, boolean like, StringBuilder sqlFilter, List<Object> filterParams, boolean isFilter) { - if (!StringUtils.isEmpty(value)) { - if (isFilter) { - sqlFilter.append(" AND \n"); - } - sqlFilter.append("\n ( ").append(field); - if (like) { - sqlFilter.append(" like concat(?,'%') "); - } else { - sqlFilter.append("= ?"); - } - sqlFilter.append(" ) "); - filterParams.add(value); - isFilter = true; - } - return isFilter; - } + private boolean appendLikeFilter(String value, String field, boolean like, StringBuilder sqlFilter, List<Object> filterParams, boolean isFilter) { + if (!StringUtils.isEmpty(value)) { + if (isFilter) { + sqlFilter.append(" AND \n"); + } + sqlFilter.append("\n ( ").append(field); + if (like) { + sqlFilter.append(" like concat(?,'%') "); + } else { + sqlFilter.append("= ?"); + } + sqlFilter.append(" ) "); + filterParams.add(value); + isFilter = true; + } + return isFilter; + } } diff --git a/product-server-data-center/src/main/java/com/product/data/center/service/SNAssociatedItemService.java b/product-server-data-center/src/main/java/com/product/data/center/service/SNAssociatedItemService.java index a2fc10a..3ff044d 100644 --- a/product-server-data-center/src/main/java/com/product/data/center/service/SNAssociatedItemService.java +++ b/product-server-data-center/src/main/java/com/product/data/center/service/SNAssociatedItemService.java @@ -2,15 +2,14 @@ import java.io.IOException; import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.text.DateFormat; +import java.util.*; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import cn.hutool.core.date.DateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -31,50 +30,50 @@ import cn.hutool.json.JSONObject; /** - * SN鍏宠仈鐗╂枡 - * @author 86151 + * SN鍏宠仈鐗╂枡 * + * @author 86151 */ @Component -public class SNAssociatedItemService extends AbstractBaseService{ - +public class SNAssociatedItemService extends AbstractBaseService { + @Autowired BaseDao baseDao; - + /** - * 杩囩珯淇℃伅 + * 杩囩珯淇℃伅 + * * @param fse * @return */ public JSONObject listSNItemInfo(FieldSetEntity fse) { - - JSONObject jsonReturn=new JSONObject(); - - String isBakTable = fse.getString(CmnConst.IS_BAK_TABLE); //鏄惁鍒囪〃 - Integer isRecentData = fse.getInteger(CmnConst.IS_RECENT_DATA);//鏄惁杩戞湡鏁版嵁 - Integer pageSize = fse.getInteger(CmnConst.PAGESIZE); //椤垫暟澶у皬 - Integer cpage = fse.getInteger(CmnConst.CPAGE); //鐩爣椤� - + + JSONObject jsonReturn = new JSONObject(); + + String isBakTable = fse.getString(CmnConst.IS_BAK_TABLE); //鏄惁鍒囪〃 + boolean isRecentData = fse.getBoolean(CmnConst.IS_RECENT_DATA) == true;//鏄惁杩戞湡鏁版嵁 + Integer pageSize = fse.getInteger(CmnConst.PAGESIZE); //椤垫暟澶у皬 + Integer cpage = fse.getInteger(CmnConst.CPAGE); //鐩爣椤� + //鍒涘缓tracking琛⊿QL锛屽苟鑾峰彇杩囨护鐨勬暟鎹� - String parseTrackingSql=createTrackingSql(fse, isBakTable); - DataTableEntity dtTracking= baseDao.listTable(parseTrackingSql, new Object[] {}, pageSize, cpage); + String parseTrackingSql = createTrackingSql(fse, isBakTable, isRecentData); + DataTableEntity dtTracking = baseDao.listTable(parseTrackingSql, new Object[]{}, pageSize, cpage); if (!BaseUtil.dataTableIsEmpty(dtTracking)) { - + //鑾峰彇鎬绘潯鏁� // String totalTrackingSql="SELECT COUNT(*)count_total FROM ("+parseTrackingSql+")t"; // FieldSetEntity fseTotalTracking=baseDao.getFieldSetBySQL(totalTrackingSql, new Object[] {}, false); // jsonReturn.set("total", fseTotalTracking.getInteger("count_total")); - int totalTrackingSql=dtTracking.getSqle().getTotalCount(); + int totalTrackingSql = dtTracking.getSqle().getTotalCount(); jsonReturn.set("total", totalTrackingSql); - + //閫氳繃tracking杩囨护keyp //Method1:浣跨敤OR鏌ヨ - Object [] serialNumbers = dtTracking.getUuids(); - String keypSql = createKeypSql(serialNumbers, isBakTable); - System.out.println(keypSql); - DataTableEntity dtKeyp=baseDao.listTable(keypSql, new Object[] {}); - + Object[] serialNumbers = dtTracking.getUuids(); + String keypSql = createKeypSql(serialNumbers, isBakTable, isRecentData); + DataTableEntity dtKeyp = baseDao.listTable(keypSql, new Object[]{}); + if (!BaseUtil.dataTableIsEmpty(dtKeyp)) { //灏唗racking琛ㄧ殑鏁版嵁杞负(key锛寁alue)褰㈠紡瀛樺偍 JSONObject json = convertDataTableToJson(dtTracking); @@ -82,97 +81,91 @@ jsonReturn.set("keyp_info", BaseUtil.dataTableEntityToJson(dtKeyp)); return jsonReturn; } - + //Method2:浣跨敤宸﹀叧鑱旀煡璇紙鑰冭檻鍒癝QL鐨勯暱搴︽爣鍑嗭紝寤鸿涓嶄娇鐢級 - - }else { + + } else { jsonReturn.set("total", 0); } return null; } - + /** - * 鏍规嵁杩囨护鏉′欢瑙f瀽tacking鐨凷QL + * 鏍规嵁tacking琛ㄧ殑SN瑙f瀽keyp琛� + * + * @param serialNumbers + * @param isBakTable 鏄惁BAK琛� + * @return + */ + public String createKeypSql(Object[] serialNumbers, String isBakTable, boolean isRecentData) { + String keypFilter = BaseUtil.buildQuestionMarkFilter(CmnConst.PK_PRODUCT_SN, serialNumbers, true); + + StringBuilder keypSql = new StringBuilder(2056); + keypSql.append(" SELECT ") + .append(" t.pk_product_sn AS pk_product_sn,b1.zj,c.dj,b.ysj, ") + .append(" d1.ysjmn,d.dk,e1.xsq,x1.ykq,c1.xfzj, ") + .append(" REGEXP_SUBSTR(d.dk, '[^|]+', 1, 5) zbrj, ") + .append(" e.mk,f.fjd,h.ccpg ") + .append(" FROM(SELECT DISTINCT pk_product_sn FROM [={"); + keypSql.append("da_t_wip_product_keyp"); + keypSql.append("}{pk_product_sn,pk_keyp_sn,pk_item_source_type}{") + .append(" WHERE instr( pk_mo,'DK' )=0 AND ") + .append(keypFilter) + .append("}=]) t ") + .append(" LEFT JOIN(SELECT u.pk_product_sn, u.pk_keyp_sn ysj FROM ").append("da_t_wip_product_keyp").append(" u WHERE u.pk_item_source_type= 'YSJ' AND u.pk_keyp_sn NOT LIKE 'R_%') b ON t.pk_product_sn = b.pk_product_sn ") + .append(" LEFT JOIN(SELECT v.pk_product_sn, v.pk_keyp_sn dj FROM ").append("da_t_wip_product_keyp").append(" v WHERE v.pk_item_source_type= 'DJ' AND v.pk_keyp_sn NOT LIKE 'R_%') c ON t.pk_product_sn = c.pk_product_sn ") + .append(" LEFT JOIN(SELECT w.pk_product_sn, w.pk_keyp_sn dk FROM ").append("da_t_wip_product_keyp").append(" w WHERE w.pk_item_source_type= 'DK' AND w.pk_keyp_sn NOT LIKE 'R_%') d ON t.pk_product_sn = d.pk_product_sn ") + .append(" LEFT JOIN(SELECT x.pk_product_sn, x.pk_keyp_sn mk FROM ").append("da_t_wip_product_keyp").append(" x WHERE x.pk_item_source_type= 'MK' AND x.pk_keyp_sn NOT LIKE 'R_%') e ON t.pk_product_sn = e.pk_product_sn ") + .append(" LEFT JOIN(SELECT y.pk_product_sn, y.pk_keyp_sn fjd FROM ").append("da_t_wip_product_keyp").append(" y WHERE y.pk_item_source_type= 'FJD' AND y.pk_keyp_sn NOT LIKE 'R_%') f ON t.pk_product_sn = f.pk_product_sn ") + .append(" LEFT JOIN(SELECT z.pk_product_sn, z.pk_keyp_sn zj FROM ").append("da_t_wip_product_keyp").append(" z WHERE (z.pk_item_source_type= 'ZJNJMN' or z.pk_item_source_type= 'ZJWJMN') AND z.pk_keyp_sn NOT LIKE 'R_%') b1 ON t.pk_product_sn = b1.pk_product_sn ") + .append(" LEFT JOIN(SELECT v1.pk_product_sn, v1.pk_keyp_sn ysjmn FROM ").append("da_t_wip_product_keyp").append(" v1 WHERE v1.pk_item_source_type= 'YSJMN' AND v1.pk_keyp_sn NOT LIKE 'R_%') d1 ON t.pk_product_sn = d1.pk_product_sn ") + .append(" LEFT JOIN(SELECT w1.pk_product_sn, w1.pk_keyp_sn xsq FROM ").append("da_t_wip_product_keyp").append(" w1 WHERE w1.pk_item_source_type= 'XSQ' AND w1.pk_keyp_sn NOT LIKE 'R_%') e1 ON t.pk_product_sn = e1.pk_product_sn ") + .append(" LEFT JOIN(SELECT x1.pk_product_sn, x1.pk_keyp_sn ykq FROM ").append("da_t_wip_product_keyp").append(" x1 WHERE x1.pk_item_source_type= 'YKQ' AND x1.pk_keyp_sn NOT LIKE 'R_%') x1 ON t.pk_product_sn = x1.pk_product_sn ") + .append(" LEFT JOIN(SELECT x1.pk_product_sn, x1.pk_keyp_sn xfzj FROM ").append("da_t_wip_product_keyp").append(" x1 WHERE x1.pk_item_source_type= 'XFZJ' AND x1.pk_keyp_sn NOT LIKE 'R_%') c1 ON t.pk_product_sn = c1.pk_product_sn ") + .append(" LEFT JOIN (SELECT x1.pk_product_sn, x1.pk_keyp_sn ccpg FROM ").append("da_t_wip_product_keyp").append(" x1 WHERE x1.pk_item_source_type = 'CCPG' AND x1.pk_keyp_sn NOT LIKE 'R_%') h ON t.pk_product_sn = h.pk_product_sn "); + + String parseKeypSql = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), keypSql.toString(), isRecentData ? 2 : 0, false); + return parseKeypSql; + } + + /** + * 鏍规嵁杩囨护鏉′欢瑙f瀽tacking鐨凷QL + * * @param fse * @param isBakTable 鏄惁BAK琛� * @return */ - public String createTrackingSql(FieldSetEntity fse, String isBakTable) { - - StringBuilder trackingSql=new StringBuilder(256); + public String createTrackingSql(FieldSetEntity fse, String isBakTable, boolean isRecentData) { + + StringBuilder trackingSql = new StringBuilder(256); trackingSql.append("SELECT a.mo_number AS moNumber,a.in_line_time AS inLineTime,a.area_name AS areaName,a.serial_number AS uuid,a.technicsid ") - .append(" FROM [={"); - if ("1".equals(isBakTable)) { - trackingSql.append("da_t_wip_tracking_bak"); - }else { - trackingSql.append("da_t_wip_tracking"); - } - trackingSql.append("}{mo_number,in_line_time,area_name,serial_number,technicsid}{") - .append(parseCondition(fse,0)) - .append("}=] a") - .append(" JOIN da_t_smo_technics h ON a.technicsid =h.technicsid ") - .append(parseCondition(fse,1)); - + .append(" FROM [={da_t_wip_tracking}"); + trackingSql.append("{mo_number,in_line_time,area_name,serial_number,technicsid}{") + .append(parseCondition(fse, 0)) + .append("}=] a") + .append(" JOIN da_t_smo_technics h ON a.technicsid =h.technicsid ") + .append(parseCondition(fse, 1)); + //瑙f瀽SQL - String parseTrackingSql= QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), trackingSql.toString(), 2, false); + String parseTrackingSql = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), trackingSql.toString(), isRecentData ? 2 : 0, false); return parseTrackingSql; } - + /** - * 鏍规嵁tacking琛ㄧ殑SN瑙f瀽keyp琛� - * @param serialNumbers - * @param isBakTable 鏄惁BAK琛� - * @return - */ - public String createKeypSql(Object[] serialNumbers, String isBakTable) { - String keypFilter = BaseUtil.buildQuestionMarkFilter(CmnConst.PK_PRODUCT_SN, serialNumbers, true); - - StringBuilder keypSql = new StringBuilder(2056); - keypSql.append(" SELECT ") - .append(" t.pk_product_sn AS pkProductSn,b1.zj,c.dj,b.ysj, ") - .append(" d1.ysjmn,d.dk,e1.xsq,x1.ykq,c1.xfzj, ") - .append(" REGEXP_SUBSTR(d.dk, '[^|]+', 1, 5) zbrj, ") - .append(" e.mk,f.fjd,h.ccpg ") - .append(" FROM(SELECT DISTINCT pk_product_sn FROM [={"); - if ("1".equals(isBakTable)) { - keypSql.append("da_t_wip_product_keyp_bak"); - }else { - keypSql.append("da_t_wip_product_keyp"); - } - keypSql.append("}{pk_product_sn,pk_keyp_sn,pk_item_source_type}{") - .append(" WHERE instr( pk_mo,'DK' )=0 AND ") - .append(keypFilter) - .append("}=]) t ") - .append(" LEFT JOIN(SELECT u.pk_product_sn, u.pk_keyp_sn ysj FROM ").append("1".equals(isBakTable)?"da_t_wip_product_keyp_bak":"da_t_wip_product_keyp").append(" u WHERE u.pk_item_source_type= 'YSJ' AND u.pk_keyp_sn NOT LIKE 'R_%') b ON t.pk_product_sn = b.pk_product_sn ") - .append(" LEFT JOIN(SELECT v.pk_product_sn, v.pk_keyp_sn dj FROM ").append("1".equals(isBakTable)?"da_t_wip_product_keyp_bak":"da_t_wip_product_keyp").append(" v WHERE v.pk_item_source_type= 'DJ' AND v.pk_keyp_sn NOT LIKE 'R_%') c ON t.pk_product_sn = c.pk_product_sn ") - .append(" LEFT JOIN(SELECT w.pk_product_sn, w.pk_keyp_sn dk FROM ").append("1".equals(isBakTable)?"da_t_wip_product_keyp_bak":"da_t_wip_product_keyp").append(" w WHERE w.pk_item_source_type= 'DK' AND w.pk_keyp_sn NOT LIKE 'R_%') d ON t.pk_product_sn = d.pk_product_sn ") - .append(" LEFT JOIN(SELECT x.pk_product_sn, x.pk_keyp_sn mk FROM ").append("1".equals(isBakTable)?"da_t_wip_product_keyp_bak":"da_t_wip_product_keyp").append(" x WHERE x.pk_item_source_type= 'MK' AND x.pk_keyp_sn NOT LIKE 'R_%') e ON t.pk_product_sn = e.pk_product_sn ") - .append(" LEFT JOIN(SELECT y.pk_product_sn, y.pk_keyp_sn fjd FROM ").append("1".equals(isBakTable)?"da_t_wip_product_keyp_bak":"da_t_wip_product_keyp").append(" y WHERE y.pk_item_source_type= 'FJD' AND y.pk_keyp_sn NOT LIKE 'R_%') f ON t.pk_product_sn = f.pk_product_sn ") - .append(" LEFT JOIN(SELECT z.pk_product_sn, z.pk_keyp_sn zj FROM ").append("1".equals(isBakTable)?"da_t_wip_product_keyp_bak":"da_t_wip_product_keyp").append(" z WHERE (z.pk_item_source_type= 'ZJNJMN' or z.pk_item_source_type= 'ZJWJMN') AND z.pk_keyp_sn NOT LIKE 'R_%') b1 ON t.pk_product_sn = b1.pk_product_sn ") - .append(" LEFT JOIN(SELECT v1.pk_product_sn, v1.pk_keyp_sn ysjmn FROM ").append("1".equals(isBakTable)?"da_t_wip_product_keyp_bak":"da_t_wip_product_keyp").append(" v1 WHERE v1.pk_item_source_type= 'YSJMN' AND v1.pk_keyp_sn NOT LIKE 'R_%') d1 ON t.pk_product_sn = d1.pk_product_sn ") - .append(" LEFT JOIN(SELECT w1.pk_product_sn, w1.pk_keyp_sn xsq FROM ").append("1".equals(isBakTable)?"da_t_wip_product_keyp_bak":"da_t_wip_product_keyp").append(" w1 WHERE w1.pk_item_source_type= 'XSQ' AND w1.pk_keyp_sn NOT LIKE 'R_%') e1 ON t.pk_product_sn = e1.pk_product_sn ") - .append(" LEFT JOIN(SELECT x1.pk_product_sn, x1.pk_keyp_sn ykq FROM ").append("1".equals(isBakTable)?"da_t_wip_product_keyp_bak":"da_t_wip_product_keyp").append(" x1 WHERE x1.pk_item_source_type= 'YKQ' AND x1.pk_keyp_sn NOT LIKE 'R_%') x1 ON t.pk_product_sn = x1.pk_product_sn ") - .append(" LEFT JOIN(SELECT x1.pk_product_sn, x1.pk_keyp_sn xfzj FROM ").append("1".equals(isBakTable)?"da_t_wip_product_keyp_bak":"da_t_wip_product_keyp").append(" x1 WHERE x1.pk_item_source_type= 'XFZJ' AND x1.pk_keyp_sn NOT LIKE 'R_%') c1 ON t.pk_product_sn = c1.pk_product_sn ") - .append(" LEFT JOIN (SELECT x1.pk_product_sn, x1.pk_keyp_sn ccpg FROM ").append("1".equals(isBakTable)?"da_t_wip_product_keyp_bak":"da_t_wip_product_keyp").append(" x1 WHERE x1.pk_item_source_type = 'CCPG' AND x1.pk_keyp_sn NOT LIKE 'R_%') h ON t.pk_product_sn = h.pk_product_sn "); - - String parseKeypSql= QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), keypSql.toString(), 2, false); - return parseKeypSql; - } - - /** - * tracking淇℃伅杞寲 + * tracking淇℃伅杞寲 + * * @param dtTracking * @return */ public JSONObject convertDataTableToJson(DataTableEntity dtTracking) { - JSONObject json=new JSONObject(); - for(int i=0; i<dtTracking.getRows();i++) { - String serialNumber=dtTracking.getFieldSetEntity(i).getString(CmnConst.UUID); - String areaName=dtTracking.getFieldSetEntity(i).getString(CmnConst.AREANAME); - String moNumber=dtTracking.getFieldSetEntity(i).getString(CmnConst.MONUMBER); - String inLineTime=dtTracking.getFieldSetEntity(i).getString(CmnConst.INLINETIME); - List<String> trackInfo=new ArrayList<>(); + JSONObject json = new JSONObject(); + for (int i = 0; i < dtTracking.getRows(); i++) { + String serialNumber = dtTracking.getFieldSetEntity(i).getString(CmnConst.UUID); + String areaName = dtTracking.getFieldSetEntity(i).getString(CmnConst.AREANAME); + String moNumber = dtTracking.getFieldSetEntity(i).getString(CmnConst.MONUMBER); + String inLineTime = dtTracking.getFieldSetEntity(i).getString(CmnConst.INLINETIME); + List<String> trackInfo = new ArrayList<>(); trackInfo.add(areaName); trackInfo.add(moNumber); trackInfo.add(inLineTime); @@ -180,108 +173,122 @@ } return json; } - + /** - * 灏唗racking淇℃伅娣诲姞鑷砶eyp + * 灏唗racking淇℃伅娣诲姞鑷砶eyp + * * @param json * @param dtKeyp */ public void addKeypInfo(JSONObject json, DataTableEntity dtKeyp) { for (int i = 0; i < dtKeyp.getRows(); i++) { - FieldSetEntity fseKeyp=dtKeyp.getFieldSetEntity(i); - String pkProductSN=fseKeyp.getString(CmnConst.PKPRODUCTSN); + FieldSetEntity fseKeyp = dtKeyp.getFieldSetEntity(i); + String pkProductSN = fseKeyp.getString("pk_product_sn"); + fseKeyp.setValue(CmnConst.PKPRODUCTSN, pkProductSN); @SuppressWarnings("unchecked") List<String> trackInfo = (List<String>) json.get(pkProductSN); - if (trackInfo.size()==3) { - fseKeyp.setValue(CmnConst.AREANAME, trackInfo.get(0)); - fseKeyp.setValue(CmnConst.MONUMBER, trackInfo.get(1)); - fseKeyp.setValue(CmnConst.INLINETIME, trackInfo.get(2)); + if (trackInfo.size() == 3) { + fseKeyp.setValue("area_name", trackInfo.get(0)); + fseKeyp.setValue("mo_number", trackInfo.get(1)); + fseKeyp.setValue("in_line_time", trackInfo.get(2)); } } } - + /** - * 瑙f瀽鎶ヨ〃杩囨护鏉′欢 + * 瑙f瀽鎶ヨ〃杩囨护鏉′欢 + * * @param fse * @return */ - public String parseCondition(FieldSetEntity fse ,int type) { - - StringBuilder sqlFilter=new StringBuilder(128); - - if (type==1) { - String poka_yoke = fse.getString(CmnConst.POKA_YOKE); //闃插憜瑙勫垯锛堝皬绫筹紝闈炲皬绫筹級 - if (!BaseUtil.strIsNull(poka_yoke)) { - if ("0".equals(poka_yoke)) { - sqlFilter.append(" WHERE h.poka_yoke=1 "); - }else { - sqlFilter.append(" WHERE h.poka_yoke!=1 "); - } - } - }else { - sqlFilter.append(" WHERE scrap_flag IS NULL "); - String moNumber = fse.getString(CmnConst.MO_NUMBER); //宸ュ崟鍙� - String factory = fse.getString(CmnConst.FACTORY); //鍘傚埆 - String areasn = fse.getString(CmnConst.AREA_SN); //绾夸綋 - String startTime = fse.getString(CmnConst.START_TIME); //寮�濮嬫椂闂� - String endTime = fse.getString(CmnConst.END_TIME); //缁撴潫鏃堕棿 - - if(!BaseUtil.strIsNull(moNumber)) { - sqlFilter.append(" AND mo_number = '") - .append(moNumber) - .append("'"); + public String parseCondition(FieldSetEntity fse, int type) { + + StringBuilder sqlFilter = new StringBuilder(128); + + if (type == 1) { + String poka_yoke = fse.getString(CmnConst.POKA_YOKE); //闃插憜瑙勫垯锛堝皬绫筹紝闈炲皬绫筹級 + if (!BaseUtil.strIsNull(poka_yoke)) { + if ("0".equals(poka_yoke)) { + sqlFilter.append(" WHERE h.poka_yoke=1 "); + } else { + sqlFilter.append(" WHERE h.poka_yoke!=1 "); + } } - + } else { + sqlFilter.append(" WHERE scrap_flag IS NULL "); + String moNumber = fse.getString(CmnConst.MO_NUMBER); //宸ュ崟鍙� + String factory = fse.getString(CmnConst.FACTORY); //鍘傚埆 + String areasn = fse.getString(CmnConst.AREA_SN); //绾夸綋 + Date startTime = fse.getDate(CmnConst.START_TIME); //寮�濮嬫椂闂� + Date endTime = fse.getDate(CmnConst.END_TIME); //缁撴潫鏃堕棿 + + if (!BaseUtil.strIsNull(moNumber)) { + sqlFilter.append(" AND mo_number = '") + .append(moNumber) + .append("'"); + } + // if (!BaseUtil.strIsNull(factory)) { // sqlFilter.append(""); // } - - if(!BaseUtil.strIsNull(areasn)) { - String [] areasns=areasn.split(","); - if (areasns.length>1) { + + if (!BaseUtil.strIsNull(areasn)) { + String[] areasns = areasn.split(","); + if (areasns.length > 1) { sqlFilter.append(" AND "); sqlFilter.append(BaseUtil.buildQuestionMarkFilter(CmnConst.AREA_SN, areasns, true)); - }else { + } else { sqlFilter.append(" AND area_sn = '") - .append(areasn) - .append("'"); + .append(areasn) + .append("'"); } } - - if(!BaseUtil.strIsNull(startTime)) { - sqlFilter.append(" AND in_station_time >STR_TO_DATE('") - .append(startTime) - .append("','%Y-%m-%d %H:%i:%s')"); + + if (startTime != null) { + sqlFilter.append(" AND in_station_time >=STR_TO_DATE('") + .append(DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss")) + .append("','%Y-%m-%d %H:%i:%s')"); } - - if (!BaseUtil.strIsNull(endTime)) { - sqlFilter.append(" AND in_station_time <STR_TO_DATE('") - .append(endTime) - .append("','%Y-%m-%d %H:%i:%s')"); + + if (endTime != null) { + //鍒ゆ柇缁撴潫鏃堕棿鏄惁涓哄綋澶╃殑寮�濮嬫椂闂� 00:00:00 + DateTime dateTime = new DateTime(endTime); + Calendar calendar = dateTime.toCalendar(); + if (calendar.get(Calendar.HOUR_OF_DAY) == 0 && calendar.get(Calendar.MINUTE) == 0 && calendar.get(Calendar.SECOND) == 0) { + //璁剧疆涓�23:59:59 + calendar.set(Calendar.HOUR_OF_DAY, 23); + calendar.set(Calendar.MINUTE, 59); + calendar.set(Calendar.SECOND, 59); + endTime = calendar.getTime(); + } + sqlFilter.append(" AND in_station_time <=STR_TO_DATE('") + .append(DateUtil.format(endTime, "yyyy-MM-dd HH:mm:ss")) + .append("','%Y-%m-%d %H:%i:%s')"); } } - - return sqlFilter.toString(); + + return sqlFilter.toString(); } - - /** - * 鐢熸垚EXCEL淇℃伅 - * @param request - * @param response - * @throws IOException - */ - public void getReportExcel(HttpServletRequest request, HttpServletResponse response) throws IOException { + + /** + * 鐢熸垚EXCEL淇℃伅 + * + * @param request + * @param response + * @throws IOException + */ + public void getReportExcel(HttpServletRequest request, HttpServletResponse response) throws IOException { //鑾峰彇鏈哄彿鏌ヨ淇℃伅 FieldSetEntity fse = BaseUtil.getFieldSetEntity(request); DataTableEntity workCenterOperationInfomationSheet = this.dtSNItemInfo(fse); - + //鍒濆EXCEL淇℃伅 response.setContentType("multipart/form-data"); - response.setCharacterEncoding("utf-8"); - //杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 - String fileName = URLEncoder.encode("SN鍏宠仈鐗╂枡" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".xlsx", "UTF-8"); - response.setHeader("Content-disposition", "attachment;filename=" + fileName); - + response.setCharacterEncoding("utf-8"); + //杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 + String fileName = URLEncoder.encode("SN鍏宠仈鐗╂枡" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".xlsx", "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName); + List<SNAssociatedItemEntity> traceSNItemEntityList = new ArrayList<>(); for (int i = 0; i < workCenterOperationInfomationSheet.getRows(); i++) { FieldSetEntity fieldSetEntity = workCenterOperationInfomationSheet.getFieldSetEntity(i); @@ -294,49 +301,50 @@ ExcelWriter excelWriter = EasyExcel.write(outputStream, SNAssociatedItemEntity.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); try { WriteSheet writeSheet = EasyExcel.writerSheet(1, "data").build(); - excelWriter.write(traceSNItemEntityList, writeSheet); + excelWriter.write(traceSNItemEntityList, writeSheet); } catch (Exception e) { throw e; } finally { excelWriter.finish(); } } - - /** - * 杩囩珯淇℃伅 + + /** + * 杩囩珯淇℃伅 + * * @param fse * @return */ public DataTableEntity dtSNItemInfo(FieldSetEntity fse) { - + String isBakTable = fse.getString(CmnConst.IS_BAK_TABLE); - Integer isRecentData = fse.getInteger(CmnConst.IS_RECENT_DATA);//鏄惁杩戞湡鏁版嵁 - Integer pageSize = fse.getInteger(CmnConst.PAGESIZE); //椤垫暟澶у皬 - Integer cpage = fse.getInteger(CmnConst.CPAGE); //鐩爣椤� - + boolean isRecentData = fse.getBoolean(CmnConst.IS_RECENT_DATA) == true;//鏄惁杩戞湡鏁版嵁 + Integer pageSize = fse.getInteger(CmnConst.PAGESIZE); //椤垫暟澶у皬 + Integer cpage = fse.getInteger(CmnConst.CPAGE); //鐩爣椤� + //鍒涘缓tracking琛⊿QL锛屽苟鑾峰彇杩囨护鐨勬暟鎹� - String parseTrackingSql=createTrackingSql(fse, isBakTable); - DataTableEntity dtTracking= baseDao.listTable(parseTrackingSql, new Object[] {}, pageSize, cpage); + String parseTrackingSql = createTrackingSql(fse, isBakTable, isRecentData); + DataTableEntity dtTracking = baseDao.listTable(parseTrackingSql, new Object[]{}, pageSize, cpage); if (!BaseUtil.dataTableIsEmpty(dtTracking)) { - + //鑾峰彇鎬绘潯鏁� - String totalTrackingSql="SELECT COUNT(*)count_total FROM ("+parseTrackingSql+")t"; - FieldSetEntity fseTotalTracking=baseDao.getFieldSetBySQL(totalTrackingSql, new Object[] {}, false); - + String totalTrackingSql = "SELECT COUNT(*)count_total FROM (" + parseTrackingSql + ")t"; +// FieldSetEntity fseTotalTracking = baseDao.getFieldSetBySQL(totalTrackingSql, new Object[]{}, false); + //閫氳繃tracking杩囨护keyp //Method1:浣跨敤OR鏌ヨ - Object [] serialNumbers = dtTracking.getUuids(); - String keypSql = createKeypSql(serialNumbers, isBakTable); + Object[] serialNumbers = dtTracking.getUuids(); + String keypSql = createKeypSql(serialNumbers, isBakTable, isRecentData); System.out.println(keypSql); - DataTableEntity dtKeyp=baseDao.listTable(keypSql, new Object[] {}); - + DataTableEntity dtKeyp = baseDao.listTable(keypSql, new Object[]{}); + if (!BaseUtil.dataTableIsEmpty(dtKeyp)) { //灏唗racking琛ㄧ殑鏁版嵁杞负(key锛寁alue)褰㈠紡瀛樺偍 JSONObject json = convertDataTableToJson(dtTracking); addKeypInfo(json, dtKeyp); return dtKeyp; } - } + } return null; } } diff --git a/product-server-data-center/src/main/java/com/product/data/center/service/TraceToSourceService.java b/product-server-data-center/src/main/java/com/product/data/center/service/TraceToSourceService.java index deb321b..ec70e7f 100644 --- a/product-server-data-center/src/main/java/com/product/data/center/service/TraceToSourceService.java +++ b/product-server-data-center/src/main/java/com/product/data/center/service/TraceToSourceService.java @@ -35,49 +35,46 @@ /** - * SN杩芥函鏌ヨ - * @author du + * SN杩芥函鏌ヨ * + * @author du */ @Service -public class TraceToSourceService extends AbstractBaseService{ +public class TraceToSourceService extends AbstractBaseService { @Autowired BaseDao baseDao; /** - * 鐗╂枡SN鍙嶈拷婧巻鍙叉煡璇� - * @param querySNSN 涓讳欢SN + * 鐗╂枡SN鍙嶈拷婧巻鍙叉煡璇� + * + * @param querySNSN 涓讳欢SN * @param isBakTable 鏄惁BAK琛� * @return */ public JSONObject antitraceReport(String querySN, String isBakTable) { - JSONObject jsonInfo=new JSONObject(); + JSONObject jsonInfo = new JSONObject(); //鏌ヨ鍏抽敭浠讹紝鑾峰彇鏈哄彿SN - String currentSql = ""; - if ("1".equals(isBakTable)) { - currentSql = "SELECT DISTINCT pk_product_sn FROM [={da_t_wip_product_keyp_bak}{}{WHERE pk_keyp_sn = '"+querySN+"' }=]"; - }else { - currentSql = "SELECT DISTINCT pk_product_sn FROM [={da_t_wip_product_keyp}{}{WHERE pk_keyp_sn = '"+querySN+"' }=]"; - } - + String currentSql = "SELECT DISTINCT pk_product_sn FROM [={da_t_wip_product_keyp}{}{WHERE pk_keyp_sn = '" + querySN + "' }=]"; + String parseSql = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), currentSql); - FieldSetEntity fse=baseDao.getFieldSetBySQL(parseSql, new Object[] {}, false); - if (fse!=null) { - jsonInfo=traceReport(fse.getString(CmnConst.PK_PRODUCT_SN), isBakTable); + FieldSetEntity fse = baseDao.getFieldSetBySQL(parseSql, new Object[]{}, false); + if (fse != null) { + jsonInfo = traceReport(fse.getString(CmnConst.PK_PRODUCT_SN), isBakTable); } return jsonInfo; } /** - * SN杩芥函鍘嗗彶鏌ヨ - * @param 鏈哄櫒SN 鏈哄櫒搴忓垪鍙� + * SN杩芥函鍘嗗彶鏌ヨ + * + * @param 鏈哄櫒SN 鏈哄櫒搴忓垪鍙� * @param isBakTable 鏄惁BAK琛� * @return */ public JSONObject traceReport(String querySN, String isBakTable) { - JSONObject jsonInfo=new JSONObject(); + JSONObject jsonInfo = new JSONObject(); jsonInfo.set("orderInfo", BaseUtil.fieldSetEntityToJson(getManufacturingOrderInformation(querySN, isBakTable))); jsonInfo.set("materialInfo", BaseUtil.dataTableEntityToJson(getWorkCenterOperationInfomation(querySN, isBakTable))); @@ -89,7 +86,8 @@ } /** - * 鑾峰彇鍒朵护鍗曚俊鎭� + * 鑾峰彇鍒朵护鍗曚俊鎭� + * * @param querySN * @param isBakTable 鏄惁BAK琛� * @return @@ -98,33 +96,29 @@ //璁㈠崟淇℃伅 StringBuilder sb1 = new StringBuilder(1024); sb1.append("SELECT ") - .append(" t.mo_number,t.model_name,t.area_name,t.container_sn, ") - .append(" t.next_station,t.station_name,t.display_group, ") - .append(" t.old_begin_time,t.old_end_time,w.pi_sn, ") - .append(" DATE_FORMAT(p.mo_start_date, '%Y-%m-%d %H:%i:%s') mo_start_date, ") - .append(" DATE_FORMAT(t.in_station_time, '%Y-%m-%d %H:%i:%s') in_station_time, ") - .append(" (CASE t.group_name WHEN 'N/A' THEN t.next_station ELSE t.group_name END) group_name, ") - .append(" (CASE t.error_flag WHEN '0' THEN '姝e父' WHEN '1' THEN '涓嶈壇' WHEN '3' THEN '鎶ュ簾' ELSE 'N/A' END) error_flag ") - .append("") - .append(" FROM [=da_t_pm_mo_base=] p,[={"); - if ("1".equals(isBakTable)) { - sb1.append("da_t_wip_tracking_bak"); - }else { - sb1.append("da_t_wip_tracking"); - } - + .append(" t.mo_number,t.model_name,t.area_name,t.container_sn, ") + .append(" t.next_station,t.station_name,t.display_group, ") + .append(" t.old_begin_time,t.old_end_time,w.pi_sn, ") + .append(" DATE_FORMAT(p.mo_start_date, '%Y-%m-%d %H:%i:%s') mo_start_date, ") + .append(" DATE_FORMAT(t.in_station_time, '%Y-%m-%d %H:%i:%s') in_station_time, ") + .append(" (CASE t.group_name WHEN 'N/A' THEN t.next_station ELSE t.group_name END) group_name, ") + .append(" (CASE t.error_flag WHEN '0' THEN '姝e父' WHEN '1' THEN '涓嶈壇' WHEN '3' THEN '鎶ュ簾' ELSE 'N/A' END) error_flag ") + .append("") + .append(" FROM [=da_t_pm_mo_base=] p,[={"); + sb1.append("da_t_wip_tracking"); + sb1.append("}{}{WHERE serial_number = '") - .append(querySN) - .append("'}=] t ") - .append(" LEFT JOIN [={da_t_wip_packaging_infor}{}{WHERE pi_product_sn='") - .append(querySN) - .append("'}=] w ON t.serial_number = w.pi_product_sn ") - .append(" WHERE p.mo_number = t.mo_number AND t.serial_number = ?"); + .append(querySN) + .append("'}=] t ") + .append(" LEFT JOIN [={da_t_wip_packaging_infor}{}{WHERE pi_product_sn='") + .append(querySN) + .append("'}=] w ON t.serial_number = w.pi_product_sn ") + .append(" WHERE p.mo_number = t.mo_number AND t.serial_number = ?"); //鎶ヨ〃瑙f瀽SQL锛岀敓鎴怶ITH String finalSql = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), sb1.toString()); - FieldSetEntity orderInfo=baseDao.getFieldSetEntityBySQL(finalSql, new Object[] {querySN} , false); - if (orderInfo!=null) { + FieldSetEntity orderInfo = baseDao.getFieldSetEntityBySQL(finalSql, new Object[]{querySN}, false); + if (orderInfo != null) { orderInfo.setValue("outPack", this.getOutermostContainer(querySN)); } return orderInfo; @@ -132,7 +126,8 @@ /** - * 鑾峰彇鏈�澶栧眰瀹瑰櫒SN + * 鑾峰彇鏈�澶栧眰瀹瑰櫒SN + * * @param querySN * @return */ @@ -140,12 +135,12 @@ //鍗曠嫭鏌ヨ鍖呰淇℃伅 StringBuilder sb = new StringBuilder(); sb.append("SELECT pi_sn,pi_pack_level,pi_child_sn") - .append(" FROM [={da_t_wip_packaging_infor}{pi_sn,ROUND(pi_pack_level)pi_pack_level,pi_child_sn}{WHERE pi_product_sn='") - .append(querySN) - .append("'}=] "); + .append(" FROM [={da_t_wip_packaging_infor}{pi_sn,ROUND(pi_pack_level)pi_pack_level,pi_child_sn}{WHERE pi_product_sn='") + .append(querySN) + .append("'}=] "); // .append(" WHERE pi_product_sn=? "); String finalSql = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), sb.toString()); - DataTableEntity dtPackingInfo=baseDao.listTable(finalSql, new Object[] {}); + DataTableEntity dtPackingInfo = baseDao.listTable(finalSql, new Object[]{}); if (!BaseUtil.dataTableIsEmpty(dtPackingInfo)) { //鐩爣SN闆嗗悎锛堢储寮曠瓑浜庢繁搴︼紝绱㈠紩瀵瑰簲鍊肩瓑浜庡悓娣卞害鐨勪换鎰忎竴涓猄N锛屽嵆绱㈠紩鏈�澶х殑SN涓虹洰鏍嘢N锛� @@ -153,18 +148,18 @@ for (int i = 0; i < dtPackingInfo.getRows(); i++) { FieldSetEntity fseBaseData = dtPackingInfo.getFieldSetEntity(i); //cheng 2022骞�12鏈�29鏃�14:16:52 - int level= NumberUtil.parseInt(fseBaseData.getString("pi_pack_level")); - String ID=fseBaseData.getString("pi_sn"); - while (listLevel.size()<level) { + int level = NumberUtil.parseInt(fseBaseData.getString("pi_pack_level")); + String ID = fseBaseData.getString("pi_sn"); + while (listLevel.size() < level) { listLevel.add(new HashMap<>()); } - listLevel.get(level-1).put(ID, fseBaseData); + listLevel.get(level - 1).put(ID, fseBaseData); } //鍙屽惊鐜亶鍘嗗幓鎺夐潪涓婁笅绾х殑鍖呰鏁版嵁 for (int i = 1; i < listLevel.size(); i++) { - Map<String, FieldSetEntity> mapPreCommonLevel=listLevel.get(i-1); - Map<String, FieldSetEntity> mapCommonLevel=listLevel.get(i); + Map<String, FieldSetEntity> mapPreCommonLevel = listLevel.get(i - 1); + Map<String, FieldSetEntity> mapCommonLevel = listLevel.get(i); for (Map.Entry<String, FieldSetEntity> entry : mapCommonLevel.entrySet()) { String key = entry.getKey(); FieldSetEntity val = entry.getValue(); @@ -173,14 +168,14 @@ } } if (mapCommonLevel.isEmpty()) { - listLevel.remove(listLevel.subList(i, listLevel.size()-1)); + listLevel.remove(listLevel.subList(i, listLevel.size() - 1)); } } //杩斿洖鏈�澶栧眰鍖呰鏉$爜 - for (Map.Entry<String, FieldSetEntity> entry : listLevel.get(listLevel.size()-1).entrySet()) { - String key=entry.getKey(); - if (key!=null) { + for (Map.Entry<String, FieldSetEntity> entry : listLevel.get(listLevel.size() - 1).entrySet()) { + String key = entry.getKey(); + if (key != null) { return key; } } @@ -190,7 +185,8 @@ /** - * 鑾峰彇宸ヤ綔涓績鐗╂枡浣滀笟淇℃伅 + * 鑾峰彇宸ヤ綔涓績鐗╂枡浣滀笟淇℃伅 + * * @param querySN * @param isBakTable 鏄惁BAK琛� * @return @@ -199,33 +195,30 @@ //鐗╂枡浣滀笟淇℃伅 StringBuilder sb2 = new StringBuilder(1024); sb2.append("SELECT ") - .append(" DISTINCT pk_station_name AS stationName, ") - .append(" l.pk_product_lot AS lot_number,l.pk_item_code AS keyPartNo, ") - .append(" c.co_item_name AS assistantToolName,c.co_item_spec AS itemSpec, ") - .append(" pk_keyp_sn AS itemSN,pk_keyp_sn_qty AS itemCount, ") - .append(" DATE_FORMAT(pk_loadtime,'%Y-%m-%d %H:%i:%s') AS loadTime, ") - .append(" (SELECT d.emp_name FROM da_t_co_emp_desc d WHERE d.emp_no=l.pk_empno)empName, ") - .append(" (CASE 0 WHEN 0 THEN '涓婃枡' WHEN '1' THEN '涓嬫枡' WHEN '2' THEN '鎹㈡枡' WHEN '3' THEN '寮傚父鎹㈡枡' ELSE '' END) actionType ") - .append(" FROM [={"); - if ("1".equals(isBakTable)) { - sb2.append("da_t_wip_product_keyp_bak"); - }else { - sb2.append("da_t_wip_product_keyp"); - } + .append(" DISTINCT pk_station_name AS stationName, ") + .append(" l.pk_product_lot AS lot_number,l.pk_item_code AS keyPartNo, ") + .append(" c.co_item_name AS assistantToolName,c.co_item_spec AS itemSpec, ") + .append(" pk_keyp_sn AS itemSN,pk_keyp_sn_qty AS itemCount, ") + .append(" DATE_FORMAT(pk_loadtime,'%Y-%m-%d %H:%i:%s') AS loadTime, ") + .append(" (SELECT d.emp_name FROM da_t_co_emp_desc d WHERE d.emp_no=l.pk_empno)empName, ") + .append(" (CASE 0 WHEN 0 THEN '涓婃枡' WHEN '1' THEN '涓嬫枡' WHEN '2' THEN '鎹㈡枡' WHEN '3' THEN '寮傚父鎹㈡枡' ELSE '' END) actionType ") + .append(" FROM [={"); + sb2.append("da_t_wip_product_keyp"); sb2.append("}{}{ WHERE pk_replace_flag='N' AND pk_product_sn='") - .append(querySN) - .append("'}=] l ") - .append(" LEFT JOIN [=da_t_co_item=] c ON c.co_item_code=l.pk_item_code ") - .append(" WHERE l.pk_replace_flag='N' AND l.pk_product_sn=? ") - .append(" ORDER BY loadtime "); + .append(querySN) + .append("'}=] l ") + .append(" LEFT JOIN [=da_t_co_item=] c ON c.co_item_code=l.pk_item_code ") + .append(" WHERE l.pk_replace_flag='N' AND l.pk_product_sn=? ") + .append(" ORDER BY loadtime "); //鎶ヨ〃瑙f瀽SQL锛岀敓鎴怶ITH String finalSql2 = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), sb2.toString()); - DataTableEntity materialInfo=baseDao.listTable(finalSql2, new Object[] {querySN}); + DataTableEntity materialInfo = baseDao.listTable(finalSql2, new Object[]{querySN}); return materialInfo; } /** - * 鑾峰彇鍘嗗彶杩囩珯淇℃伅 + * 鑾峰彇鍘嗗彶杩囩珯淇℃伅 + * * @param querySN * @param isBakTable 鏄惁BAK琛� * @return @@ -234,41 +227,38 @@ //杩囩珯淇℃伅 StringBuilder sb3 = new StringBuilder(); sb3.append(" SELECT ") - .append(" t.mo_number,t.lot_number,t.model_name,t.area_name, ") - .append(" t.group_name,t.next_station,t.station_name, ") - .append(" t.customer_no,t.emp_no,c.emp_name,t.item_count,t.serial_number, ") - .append(" DATE_FORMAT(t.in_station_time, '%Y-%m-%d %H:%i:%s') AS in_station_time, ") - .append(" (CASE t.error_flag WHEN '0' THEN '姝e父' WHEN '1' THEN '涓嶈壇' WHEN '3' THEN '鎶ュ簾' ELSE 'N/A' END) error_flag ") - .append(" FROM [={"); - if ("1".equals(isBakTable)) { - sb3.append("da_t_wip_detail_bak"); - }else { - sb3.append("da_t_wip_detail"); - } + .append(" t.mo_number,t.lot_number,t.model_name,t.area_name, ") + .append(" t.group_name,t.next_station,t.station_name, ") + .append(" t.customer_no,t.emp_no,c.emp_name,t.item_count,t.serial_number, ") + .append(" DATE_FORMAT(t.in_station_time, '%Y-%m-%d %H:%i:%s') AS in_station_time, ") + .append(" (CASE t.error_flag WHEN '0' THEN '姝e父' WHEN '1' THEN '涓嶈壇' WHEN '3' THEN '鎶ュ簾' ELSE 'N/A' END) error_flag ") + .append(" FROM [={"); + sb3.append("da_t_wip_detail"); sb3.append("}{}{") - .append(" WHERE serial_number = ( ") - .append(" SELECT '") - .append(querySN) - .append("' old_sn ") - .append(" UNION ") - .append(" SELECT DISTINCT old_sn ") - .append(" FROM da_t_co_sn_relation ") - .append(" WHERE new_sn = '") - .append(querySN) - .append("' ") - .append(" ) ") - .append("}=] t ") - .append(" LEFT JOIN da_t_co_emp_desc c ON t.emp_no = c.emp_no ") - .append(" ORDER BY t.in_station_time "); + .append(" WHERE serial_number = ( ") + .append(" SELECT '") + .append(querySN) + .append("' old_sn ") + .append(" UNION ") + .append(" SELECT DISTINCT old_sn ") + .append(" FROM da_t_co_sn_relation ") + .append(" WHERE new_sn = '") + .append(querySN) + .append("' ") + .append(" ) ") + .append("}=] t ") + .append(" LEFT JOIN da_t_co_emp_desc c ON t.emp_no = c.emp_no ") + .append(" ORDER BY t.in_station_time "); //鎶ヨ〃瑙f瀽SQL锛岀敓鎴怶ITH String finalSql3 = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), sb3.toString()); - DataTableEntity crossInfo=baseDao.listTable(finalSql3, new Object[] {}); + DataTableEntity crossInfo = baseDao.listTable(finalSql3, new Object[]{}); return crossInfo; } /** - * 鑾峰彇鍘嗗彶缁翠慨璁板綍 + * 鑾峰彇鍘嗗彶缁翠慨璁板綍 + * * @param querySN * @return */ @@ -276,47 +266,48 @@ //缁翠慨璁板綍 StringBuilder sb4 = new StringBuilder(); sb4.append(" SELECT ") - .append(" c.error_desc,d.reason_desc,m.repair_moth, ") - .append(" e.test_code,e.ng_count,e.test_point, ") - .append(" r.reason_code,r.duty_type,r.repair_station, ") - .append(" r.repair_group,r.error_item,r.item_desc, ") - .append(" r.date_code,r.repair_desc,r.repairer, ") - .append(" r.repair_time,s.emp_name,t.duty_desc ") - .append(" FROM [=da_t_wip_repair=] r ") - .append(" LEFT JOIN [={da_t_wip_error}{test_code,ng_count,test_point,ng_record_id,serial_number}{WHERE serial_number='") - .append(querySN) - .append("'}=] e ON e.ng_record_id = r.ng_record_id ") - .append(" LEFT JOIN da_t_co_error_code c ON e.test_code = c.error_code ") - .append(" LEFT JOIN da_t_co_repair_moth m ON r.repair_month_code = m.repair_code ") - .append(" LEFT JOIN da_t_co_reason_code d ON r.reason_code = d.reason_code ") - .append(" LEFT JOIN da_t_co_duty t ON r.duty_type = t.duty_type ") - .append(" LEFT JOIN da_t_co_emp_desc s ON r.repairer = s.emp_no ") - .append(" WHERE e.serial_number= ?"); + .append(" c.error_desc,d.reason_desc,m.repair_moth, ") + .append(" e.test_code,e.ng_count,e.test_point, ") + .append(" r.reason_code,r.duty_type,r.repair_station, ") + .append(" r.repair_group,r.error_item,r.item_desc, ") + .append(" r.date_code,r.repair_desc,r.repairer, ") + .append(" r.repair_time,s.emp_name,t.duty_desc ") + .append(" FROM [=da_t_wip_repair=] r ") + .append(" LEFT JOIN [={da_t_wip_error}{test_code,ng_count,test_point,ng_record_id,serial_number}{WHERE serial_number='") + .append(querySN) + .append("'}=] e ON e.ng_record_id = r.ng_record_id ") + .append(" LEFT JOIN da_t_co_error_code c ON e.test_code = c.error_code ") + .append(" LEFT JOIN da_t_co_repair_moth m ON r.repair_month_code = m.repair_code ") + .append(" LEFT JOIN da_t_co_reason_code d ON r.reason_code = d.reason_code ") + .append(" LEFT JOIN da_t_co_duty t ON r.duty_type = t.duty_type ") + .append(" LEFT JOIN da_t_co_emp_desc s ON r.repairer = s.emp_no ") + .append(" WHERE e.serial_number= ?"); //鎶ヨ〃瑙f瀽SQL锛岀敓鎴怶ITH String finalSql4 = QuerySqlParseUtil.parseSplitTableSql(getBaseDao(), sb4.toString()); - DataTableEntity repairInfo=baseDao.listTable(finalSql4, new Object[] {querySN}); + DataTableEntity repairInfo = baseDao.listTable(finalSql4, new Object[]{querySN}); return repairInfo; } /** - * 鐢熸垚EXCEL鏁版嵁 + * 鐢熸垚EXCEL鏁版嵁 + * * @param request * @param response - * @throws IOException + * @throws IOException */ public void getReportExcel(HttpServletRequest request, HttpServletResponse response) throws IOException { //鑾峰彇鏈哄彿鏌ヨ淇℃伅 FieldSetEntity fse = BaseUtil.getFieldSetEntity(request); DataTableEntity workCenterOperationInfomationSheet = this.getWorkCenterOperationInfomation(fse.getString(CmnConst.SERIAL_NUMBER), fse.getString(CmnConst.IS_BAK_TABLE)); - + //鍒濆EXCEL淇℃伅 response.setContentType("multipart/form-data"); - response.setCharacterEncoding("utf-8"); - //杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 - String fileName = URLEncoder.encode("SN鍘嗗彶杩芥函" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".xlsx", "UTF-8"); - response.setHeader("Content-disposition", "attachment;filename=" + fileName); - + response.setCharacterEncoding("utf-8"); + //杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 + String fileName = URLEncoder.encode("SN鍘嗗彶杩芥函" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".xlsx", "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName); + List<TraceSNItemEntity> traceSNItemEntityList = new ArrayList<>(); for (int i = 0; i < workCenterOperationInfomationSheet.getRows(); i++) { FieldSetEntity fieldSetEntity = workCenterOperationInfomationSheet.getFieldSetEntity(i); @@ -329,7 +320,7 @@ ExcelWriter excelWriter = EasyExcel.write(outputStream, TraceSNItemEntity.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); try { WriteSheet writeSheet = EasyExcel.writerSheet(1, "鐗╂枡浣滀笟淇℃伅").build(); - excelWriter.write(traceSNItemEntityList, writeSheet); + excelWriter.write(traceSNItemEntityList, writeSheet); } catch (Exception e) { throw e; } finally { diff --git a/product-server-web/lib/product-server-core-1.0.0-RELEASES.jar b/product-server-web/lib/product-server-core-1.0.0-releases.jar similarity index 100% rename from product-server-web/lib/product-server-core-1.0.0-RELEASES.jar rename to product-server-web/lib/product-server-core-1.0.0-releases.jar Binary files differ diff --git a/product-server-web/resources/LicenseKey.dat b/product-server-web/resources/LicenseKey.dat index 924c535..6cc1bfd 100644 --- a/product-server-web/resources/LicenseKey.dat +++ b/product-server-web/resources/LicenseKey.dat @@ -1 +1 @@ -01BC8AA83EB75F3C5839DC34763D25F9D4D7FBE3E961E786868CEC17D5F70B3AAF8239EC0E6754FA3A085623FAC377E3ACB89C05E0F2369E682EB5881EF53A954E6B6E917A8CA6708C379DA4090E4E655E2C546FC3FC644A4BADB3359AFE99E8A889304A8155AEB75382886DC57D7A63796F92E21337F8E2842F2CF17A5BB62C1A856ED7AEE240FEA701250B93D8403C7F7EA3581674312703FFD3953564AB0F9B00A5F9F08DC5EC628BEB28348C02A8C5A7B5788F2CD34C4757ADD7F5223C46384B9F6A7C541AD86558D4937138AD973655178E6CFA438F09BD89489B7FA4D6DD2920ECB70ABD68148F451457536976F5414DE01F0D0E7CEA698A627163D3095B54815CC86C8B9DCE2EB3602BB1586ECBD959D2DBFFF4163734D296FC84B2D0ED10777F225FB2F854B674A6F34E28F36E2F3A4035C20690AD5AF663138301456E3CEA67E17FECEA06309BC40BD6734A563736D2E3EA9DBC9DCA7B4AE23BD8C77E98F44943CC3C12ECA786DAF17BACE8567D4C901608BFAF520C052FF71DDEE8DD268EC0DAF9DCE22435FB828644CB17380A3FF81E6FA2B68B49559D93D8BA869E2D14E374B9CFB9E80C3097A9B60CBD55E7B495163D5DAE0A55888814F148ED1EAF1B9DF0B639568374FEA4298860562870523730EA0518BD5DF6E9796FFB32D4019A616A60E217C74AD441A6270DBB649BB56EE06F56CCCDB40A1EC774A921 \ No newline at end of file +7373F609D2DCF63105362A4556F3DBD03DDE005CE3839FE2A1D4AB8895082B9F7F2B031AEB44487E0CF23020A8DD4ACC7CC7BEBB55AADBB2411DE029662CF6B08EA69D97D0284FC0ABC6C02D9EA17A2EC33300DD5B6135DCE70B7EB3B37B7600C13EEC15A033E5D9437680A4ED29851BA3C7679EF8E3B3C3847F5DB74B653D2B796A087D1FA30D733682F393E31E05E06A241230AE9FCFE6E34219F57C272CA9C9F0E52A66744A2D8117F8718385612183BD0164E2B448069D9814704BA67F8565F27D0CA38A290AD162721E7FAD62DE3210BED393072644FE40B200B69A97D89184CE5F636AA949E7AFF39BAD0FB851E2BFAF32ADEA42CC37FAABAD1D972C6086C7F28F21A916E6F00CA3544C99FAC2B4DECD74B9D8A4E80CF7510C7A46B7CDD078DF9142713F03B30CE81D8861F5CD951E3A2B3A024E08ECE6918910FF2029B96CE9BC55CECD331DBD75EEE04BD985F27AF348FA79FA1EBF33942F29C52B10395E294F65FA2149B10458EE1C246CA6A0359442D610188B98C0E927FD6A6DF7 \ No newline at end of file diff --git a/product-server-web/resources/license001.dat b/product-server-web/resources/license001.dat index c614fcd..bcae8e8 100644 --- a/product-server-web/resources/license001.dat +++ b/product-server-web/resources/license001.dat Binary files differ diff --git a/product-server-web/src/main/java/com/product/Application.java b/product-server-web/src/main/java/com/product/Application.java index fc78f79..b310f1a 100644 --- a/product-server-web/src/main/java/com/product/Application.java +++ b/product-server-web/src/main/java/com/product/Application.java @@ -37,7 +37,7 @@ SpringApplication.run(Application.class, args); boolean cacheFlat = DataPoolCacheImpl.getInstance().cacheALLData(); boolean codeFlat = DataPoolCacheImpl.getInstance().initCodeManager(); - boolean serialFlat = DataPoolCacheImpl.getInstance().initSerialNumberManager(); +// boolean serialFlat = DataPoolCacheImpl.getInstance().initSerialNumberManager(); RegistValidate.getInstance().registValidateParameter(); boolean connFlat = DataSourceManager.getInstance().initClientConnectionPool(); InitialLoad.runInitialization(); @@ -46,7 +46,7 @@ Global.setPropertyValue("jdk.home", System.getProperties().getProperty("java.home")); SpringMVCContextHolder.getSystemLogger().info("root.path:" + rootPath); SpringMVCContextHolder.getSystemLogger().info("jdk.home:" + System.getProperties().getProperty("java.home")); - if (cacheFlat && codeFlat && serialFlat && connFlat) { + if (cacheFlat && codeFlat && connFlat) { SpringMVCContextHolder.getSystemLogger().info("Successful System Startup ! "); } else { System.err.println("System startup failed, Please contact the administrator!"); diff --git a/product-server-web/src/main/resources/application-dev.properties b/product-server-web/src/main/resources/application-dev.properties index 2f778b3..0496a53 100644 --- a/product-server-web/src/main/resources/application-dev.properties +++ b/product-server-web/src/main/resources/application-dev.properties @@ -15,7 +15,7 @@ #\u662F\u5426\u542F\u7528\u63A5\u53E3\u7B7E\u540D\u8BA4\u8BC1 signature.isEnable=true #\u5728\u542F\u7528\u63A5\u53E3\u7B7E\u540D\u8BA4\u8BC1\u65F6\uFF0C\u6392\u9664\u6307\u5B9A\u63A5\u53E3\u65E0\u9700\u7B7E\u540D\u8BA4\u8BC1 -signature.exclude.path=/api/rsa/getKey/v1,/api/token/refresh/v1,/api/mobile/network/check/v1,/api/system/config/info/v1,/api/fileManager/get-static-file,/api/mes/sync-data/v1,/static/**,/api/open-mes/update-mo-base/v1,/api/open-mes/get-history-data/v1,/api/open-mes/get-collect-log/v1 +signature.exclude.path=/api/rsa/getKey/v1,/api/token/refresh/v1,/api/mobile/network/check/v1,/api/system/config/info/v1,/api/fileManager/get-static-file,/api/mes/sync-data/v1,/static/**,/api/open-mes/update-mo-base/v1,/api/open-mes/get-history-data/v1,/api/open-mes/get-collect-log/v1,/api/open-mes/split-table-data/v1 #\u7B7E\u540D\u8BA4\u8BC1Key signature.key=299cb5bb4c9040a29c58304c25001d72 #\u63A5\u53E3\u7B7E\u540D\u8BA4\u8BC1\u6709\u6548\u671F\uFF0C\u5355\u4F4D\u79D2,0\u8868\u793A\u4E0D\u9A8C\u8BC1 @@ -83,9 +83,9 @@ # \u6D4B\u8BD5\u670D\u52A1\u5668 #data.source.url=jdbc:mysql://10.4.69.68:3306/ch_kt_mes_apply?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useNewIO=true&useSSL=false&serverTimezone=Asia/Shanghai # \u6B63\u5F0F\u670D\u52A1\u5668-\u91C7\u96C6 -data.source.url=jdbc:mysql://10.13.1.39:3306/ch_kt_mes_apply?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useNewIO=true&useSSL=false&serverTimezone=Asia/Shanghai +#data.source.url=jdbc:mysql://10.13.1.39:3306/ch_kt_mes_apply?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useNewIO=true&useSSL=false&serverTimezone=Asia/Shanghai # \u6B63\u5F0F\u670D\u52A1\u5668-\u62A5\u8868 -#data.source.url=jdbc:mysql://10.13.1.39:3307/ch_kt_mes_apply?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useNewIO=true&useSSL=false&serverTimezone=Asia/Shanghai +data.source.url=jdbc:mysql://10.13.1.39:3306/ch_kt_mes_apply?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useNewIO=true&useSSL=false&serverTimezone=Asia/Shanghai data.source.user=root #data.source.password=root123 #data.source.password=a123 diff --git a/product-server-web/src/main/resources/application-prod.properties b/product-server-web/src/main/resources/application-prod.properties index a895a2a..dd299bb 100644 --- a/product-server-web/src/main/resources/application-prod.properties +++ b/product-server-web/src/main/resources/application-prod.properties @@ -1,6 +1,8 @@ #======================================# #=============\u7CFB\u7EDF\u53C2\u6570 \u76F8\u5173\u914D\u7F6E==============# #======================================# +#鏁版嵁绯荤粺鍚嶇О鐢ㄤ簬閲囬泦 鍚嶇О鍊煎彧鑳藉寘鍚嫳鏂囧拰 "-" +data.system.name=ch-kt #\u4E0A\u4F20\u6587\u4EF6\u8DEF\u5F84,\u7EDD\u5BF9 #\u542F\u7528\u65E5\u5FD7\u6253\u5370 logger.isEnable=true @@ -74,9 +76,9 @@ data.source.type=mysql data.source.driver=com.mysql.jdbc.Driver ##################local############################### -data.source.url=jdbc:mysql://127.0.0.1:3306/lx_product_db?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useNewIO=true&useSSL=false&serverTimezone=Asia/Shanghai +data.source.url=jdbc:mysql://10.13.1.39:3307/ch_kt_mes_apply?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useNewIO=true&useSSL=false&serverTimezone=Asia/Shanghai data.source.user=root -data.source.password=root123 +data.source.password=CHKTADMIN #-------------------------druid\u8FDE\u63A5\u6C60\u7684\u914D\u7F6E\u4FE1\u606F------------------------ # \u521D\u59CB\u5316\u5927\u5C0F\uFF0C\u6700\u5C0F\uFF0C\u6700\u5927 druid.datasource.initialSize=5 @@ -88,7 +90,7 @@ druid.datasource.maxWait=60000 # \u914D\u7F6E\u95F4\u9694\u591A\u4E45\u624D\u8FDB\u884C\u4E00\u6B21\u68C0\u6D4B\uFF0C\u68C0\u6D4B\u9700\u8981\u5173\u95ED\u7684\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2 10\u5206\u949F\u5C0F\u65F6\u68C0\u67E5 druid.datasource.timeBetweenEvictionRunsMillis=600000 -# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5C0F\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2 \u8FDE\u63A5\u4FDD\u6301\u7A7A\u95F2\u800C\u4E0D\u88AB\u9A71\u9010\u7684\u6700\u5C0F\u65F6\u95F4 +# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5C0F\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2 \u8FDE\u63A5\u4FDD\u6301\u7A7A\u95F2\u800C\u4E0D\u88AB\u9A71\u9010\u7684\u6700\u5C0F\u65F6\u95F4 druid.datasource.minEvictableIdleTimeMillis=1800000 #\u7528\u6765\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548\u7684sql\uFF0C\u8981\u6C42\u662F\u4E00\u4E2A\u67E5\u8BE2\u8BED\u53E5 druid.datasource.validationQuery=SELECT 1 @@ -118,7 +120,7 @@ #========== Server settings ===========# #======================================# server.servlet.context-path=/lx -server.port=9998 +server.port=9999 #HTTP encoding spring.servlet.multipart.enabled=false spring.http.encoding.force=true @@ -215,7 +217,7 @@ source_domain=https://www.baidu.com default_domain=https://lx.blob.core.windows.net # \u7B49\u4E8Etrue \u5B9A\u65F6\u4EFB\u52A1\u624D\u80FD\u542F\u52A8 -org.quartz.task.isEnable=true +org.quartz.task.isEnable=false #============================================================== #Configure Main Scheduler Properties #============================================================== @@ -235,7 +237,7 @@ #\u662F\u5426\u52A0\u5165\u96C6\u7FA4 ##spring.quartz.properties.org.quartz.jobStore.isClustered = true #\u8C03\u5EA6\u5B9E\u4F8B\u5931\u6548\u7684\u68C0\u67E5\u65F6\u95F4\u95F4\u9694 -##spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval = 1000 +##spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval = 1000 ##spring.quartz.properties.org.quartz.jobStore.maxMisfiresToHandleAtATime = 20 # \u4FE1\u606F\u4FDD\u5B58\u65F6\u95F4 \u9ED8\u8BA4\u503C60\u79D2 ##spring.quartz.properties.org.quartz.jobStore.misfireThreshold = 60000 @@ -279,4 +281,4 @@ #\u624B\u673A\u7AEF \u524D\u7AEF\u670D\u52A1\u5730\u5740 web.server.url= #\u662F\u5426\u542F\u7528\u5F3A\u5236\u9A8C\u8BC1\u767B\u5F55APP\u7684mac -mobile.mac.valid.isEnable=false \ No newline at end of file +mobile.mac.valid.isEnable=false diff --git a/resources/LicenseKey.dat b/resources/LicenseKey.dat new file mode 100644 index 0000000..f87eeb4 --- /dev/null +++ b/resources/LicenseKey.dat @@ -0,0 +1 @@ +765F1622DAEEB425045CAFA1545A6874332D8A7EE7F3587DA9645C9B9265C9547E5B5060EE4F70F60D064222A282FC7777D0F53750264B4942D65D176E58795C83401C1BD80B932DA12493F898FD6F6CC37F50CA5F543603ED6B4229BEBCA889C64FA4BDA7F7226546A53583EE651D26A270CD31F2235B898FB4B1E7469EF82C78AFF86F18B075713B64C13EEC4536EB6DDC0EF9AB8280CAE3752F317099E9A7C1AF508F6AA26D0E807A023385E916B084777CD5EAC8FCA89AFD5F4749B6EC8C6977311EA003E212D6AE396B7A66D3AA3C3EA57D9AA6A74EFD564337B752D837969554716558C03FEFADCDF6A6B759A6E9D86332A78F0A7E30A899E51E8141B683A39ED426712403FCC1D1C24B86ED5BBCD7426DB0AB6CAD0D5A32817ADC01F1D713D92B4FCE4094B66994498B650698960EC7B93EDDD860EB136C7516105499B43CED2F5C45529B1EBD0A3CE54EEC97FC6651E8F907F626B250FC2626ADDF88394847CA62F84626BA753435178F973EABFD2F85D84D998099C97332F46E3551 \ No newline at end of file -- Gitblit v1.9.2