已重命名1个文件
已添加2个文件
已修改11个文件
| | |
| | | } |
| | | } |
| | | |
| | | @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) { |
| | |
| | | |
| | | @ExcelProperty("å·¥å") |
| | | private String moNumber; |
| | | |
| | | |
| | | @ExcelProperty("æ´æºMN") |
| | | private String zj; |
| | | |
| | | |
| | | @ExcelProperty("å
æº/夿ºSN") |
| | | private String pkProductSn; |
| | | |
| | | @ExcelProperty("ç¹å»MN") |
| | | |
| | | @ExcelProperty("çµæºMN") |
| | | private String dj; |
| | | |
| | | |
| | | @ExcelProperty("å缩æºSN") |
| | | private String ysj; |
| | | |
| | | |
| | | @ExcelProperty("å缩æºMN") |
| | | private String ysjmn; |
| | | |
| | | |
| | | @ExcelProperty("çµæ§æ¿MN") |
| | | private String dk; |
| | | |
| | | |
| | | @ExcelProperty("æ¾ç¤ºæ¿MN") |
| | | private String xsq; |
| | | |
| | | |
| | | @ExcelProperty("饿§å¨SN") |
| | | private String ykq; |
| | | |
| | | |
| | | @ExcelProperty("主æ¿è½¯ä»¶") |
| | | private String zbrj; |
| | | |
| | | |
| | | @ExcelProperty("wifiæ¿SN") |
| | | private String mk; |
| | | |
| | | |
| | | @ExcelProperty("é¿å°ºé
管") |
| | | private String ccpg; |
| | | |
| | | |
| | | @ExcelProperty("æ°é£ç»ä»¶") |
| | | private String xfzj; |
| | | |
| | | |
| | | @ExcelProperty("å®è£
æå¡ç ") |
| | | private String fjd; |
| | | |
| | | |
| | | @ExcelProperty("线ä½") |
| | | private String areaName; |
| | | |
| | | |
| | | @ExcelProperty("ä¸çº¿æ¶é´") |
| | | private String inLineTime; |
| | | |
| | |
| | | + zbrj + ", mk=" + mk + ", ccpg=" + ccpg + ", xfzj=" + xfzj + ", fjd=" + fjd + ", areaName=" + areaName |
| | | + ", inLineTime=" + inLineTime + "]"; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | 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(); |
| | | //è·åå½åæä»½ 以MMæ ¼å¼å |
| | | 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(); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æå
¥æ°æ®å°ä¸»åº |
| | | * |
| | |
| | | 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), |
| | |
| | | //æ¥è¯¢å·²åå¨çæ°æ® |
| | | 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()); |
| | |
| | | } |
| | | } |
| | | } |
| | | 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); |
| | | } |
| | | //å¨listä¸ååºæ¶é´æè¿çæ°æ® |
| | | 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()); |
| | | } |
| | |
| | | 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); |
| | |
| | | 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; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | //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 ééé
ç½®æééidåç» |
| | | // * @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)) { |
| | | // //主æå¡é鿥å¿uuid |
| | | // 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; |
| | | // } |
| | | //} |
| | |
| | | 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å¯ä»¥é²æ¢ä¸æä¹±ç å½ç¶åeasyexcel没æå
³ç³» |
| | | 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å¯ä»¥é²æ¢ä¸æä¹±ç å½ç¶åeasyexcel没æå
³ç³» |
| | | 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个sheetéé¢ |
| | | // æ¯æ¬¡é½è¦å建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个sheetéé¢ |
| | | // æ¯æ¬¡é½è¦å建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 'æ£é¢' "); |
| | | 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 'æ£é¢' "); |
| | | 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; |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | 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; |
| | | |
| | |
| | | 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表SQLï¼å¹¶è·åè¿æ»¤çæ°æ® |
| | | 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)) { |
| | | //å°trackingè¡¨çæ°æ®è½¬ä¸º(keyï¼value)å½¢å¼åå¨ |
| | | JSONObject json = convertDataTableToJson(dtTracking); |
| | |
| | | jsonReturn.set("keyp_info", BaseUtil.dataTableEntityToJson(dtKeyp)); |
| | | return jsonReturn; |
| | | } |
| | | |
| | | |
| | | //Method2:使ç¨å·¦å
³èæ¥è¯¢ï¼èèå°SQLçé¿åº¦æ åï¼å»ºè®®ä¸ä½¿ç¨ï¼ |
| | | |
| | | }else { |
| | | |
| | | } else { |
| | | jsonReturn.set("total", 0); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * æ ¹æ®è¿æ»¤æ¡ä»¶è§£ætackingçSQL |
| | | * æ ¹æ®tacking表çSNè§£æ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; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®è¿æ»¤æ¡ä»¶è§£ætackingçSQL |
| | | * |
| | | * @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)); |
| | | |
| | | //è§£æ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è§£æ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); |
| | |
| | | } |
| | | return json; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å°trackingä¿¡æ¯æ·»å è³keyp |
| | | * å°trackingä¿¡æ¯æ·»å è³keyp |
| | | * |
| | | * @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)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * è§£ææ¥è¡¨è¿æ»¤æ¡ä»¶ |
| | | * è§£ææ¥è¡¨è¿æ»¤æ¡ä»¶ |
| | | * |
| | | * @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); |
| | |
| | | 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表SQLï¼å¹¶è·åè¿æ»¤çæ°æ® |
| | | 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)) { |
| | | //å°trackingè¡¨çæ°æ®è½¬ä¸º(keyï¼value)å½¢å¼åå¨ |
| | | JSONObject json = convertDataTableToJson(dtTracking); |
| | | addKeypInfo(json, dtKeyp); |
| | | return dtKeyp; |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |
| | |
| | | |
| | | |
| | | /** |
| | | * 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))); |
| | |
| | | } |
| | | |
| | | /** |
| | | * è·åå¶ä»¤åä¿¡æ¯ |
| | | * è·åå¶ä»¤åä¿¡æ¯ |
| | | * |
| | | * @param querySN |
| | | * @param isBakTable æ¯å¦BAK表 |
| | | * @return |
| | |
| | | //订åä¿¡æ¯ |
| | | 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 'æ£å¸¸' 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 'æ£å¸¸' 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 = ?"); |
| | | |
| | | //æ¥è¡¨è§£æSQLï¼çæWITH |
| | | 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; |
| | |
| | | |
| | | |
| | | /** |
| | | * è·åæå¤å±å®¹å¨SN |
| | | * è·åæå¤å±å®¹å¨SN |
| | | * |
| | | * @param querySN |
| | | * @return |
| | | */ |
| | |
| | | //åç¬æ¥è¯¢å
è£
ä¿¡æ¯ |
| | | 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éåï¼ç´¢å¼çäºæ·±åº¦ï¼ç´¢å¼å¯¹åºå¼çäºå深度çä»»æä¸ä¸ªSNï¼å³ç´¢å¼æå¤§çSNä¸ºç®æ SNï¼ |
| | |
| | | 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(); |
| | |
| | | } |
| | | } |
| | | 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; |
| | | } |
| | | } |
| | |
| | | |
| | | |
| | | /** |
| | | * è·åå·¥ä½ä¸å¿ç©æä½ä¸ä¿¡æ¯ |
| | | * è·åå·¥ä½ä¸å¿ç©æä½ä¸ä¿¡æ¯ |
| | | * |
| | | * @param querySN |
| | | * @param isBakTable æ¯å¦BAK表 |
| | | * @return |
| | |
| | | //ç©æä½ä¸ä¿¡æ¯ |
| | | 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 "); |
| | | //æ¥è¡¨è§£æSQLï¼çæWITH |
| | | 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 |
| | |
| | | //è¿ç«ä¿¡æ¯ |
| | | 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 'æ£å¸¸' 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 'æ£å¸¸' 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 "); |
| | | |
| | | //æ¥è¡¨è§£æSQLï¼çæWITH |
| | | 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 |
| | | */ |
| | |
| | | //ç»´ä¿®è®°å½ |
| | | 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= ?"); |
| | | |
| | | //æ¥è¡¨è§£æSQLï¼çæWITH |
| | | 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); |
| | |
| | | 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 { |
| | |
| | | 01BC8AA83EB75F3C5839DC34763D25F9D4D7FBE3E961E786868CEC17D5F70B3AAF8239EC0E6754FA3A085623FAC377E3ACB89C05E0F2369E682EB5881EF53A954E6B6E917A8CA6708C379DA4090E4E655E2C546FC3FC644A4BADB3359AFE99E8A889304A8155AEB75382886DC57D7A63796F92E21337F8E2842F2CF17A5BB62C1A856ED7AEE240FEA701250B93D8403C7F7EA3581674312703FFD3953564AB0F9B00A5F9F08DC5EC628BEB28348C02A8C5A7B5788F2CD34C4757ADD7F5223C46384B9F6A7C541AD86558D4937138AD973655178E6CFA438F09BD89489B7FA4D6DD2920ECB70ABD68148F451457536976F5414DE01F0D0E7CEA698A627163D3095B54815CC86C8B9DCE2EB3602BB1586ECBD959D2DBFFF4163734D296FC84B2D0ED10777F225FB2F854B674A6F34E28F36E2F3A4035C20690AD5AF663138301456E3CEA67E17FECEA06309BC40BD6734A563736D2E3EA9DBC9DCA7B4AE23BD8C77E98F44943CC3C12ECA786DAF17BACE8567D4C901608BFAF520C052FF71DDEE8DD268EC0DAF9DCE22435FB828644CB17380A3FF81E6FA2B68B49559D93D8BA869E2D14E374B9CFB9E80C3097A9B60CBD55E7B495163D5DAE0A55888814F148ED1EAF1B9DF0B639568374FEA4298860562870523730EA0518BD5DF6E9796FFB32D4019A616A60E217C74AD441A6270DBB649BB56EE06F56CCCDB40A1EC774A921 |
| | | 7373F609D2DCF63105362A4556F3DBD03DDE005CE3839FE2A1D4AB8895082B9F7F2B031AEB44487E0CF23020A8DD4ACC7CC7BEBB55AADBB2411DE029662CF6B08EA69D97D0284FC0ABC6C02D9EA17A2EC33300DD5B6135DCE70B7EB3B37B7600C13EEC15A033E5D9437680A4ED29851BA3C7679EF8E3B3C3847F5DB74B653D2B796A087D1FA30D733682F393E31E05E06A241230AE9FCFE6E34219F57C272CA9C9F0E52A66744A2D8117F8718385612183BD0164E2B448069D9814704BA67F8565F27D0CA38A290AD162721E7FAD62DE3210BED393072644FE40B200B69A97D89184CE5F636AA949E7AFF39BAD0FB851E2BFAF32ADEA42CC37FAABAD1D972C6086C7F28F21A916E6F00CA3544C99FAC2B4DECD74B9D8A4E80CF7510C7A46B7CDD078DF9142713F03B30CE81D8861F5CD951E3A2B3A024E08ECE6918910FF2029B96CE9BC55CECD331DBD75EEE04BD985F27AF348FA79FA1EBF33942F29C52B10395E294F65FA2149B10458EE1C246CA6A0359442D610188B98C0E927FD6A6DF7 |
| | |
| | | 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(); |
| | |
| | | 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!"); |
| | |
| | | #\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 |
| | |
| | | # \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 |
| | |
| | | #======================================# |
| | | #=============\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 |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | #========== 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 |
| | |
| | | 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 |
| | | #============================================================== |
| | |
| | | #\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 |
| | |
| | | #\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 |
| | | mobile.mac.valid.isEnable=false |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 765F1622DAEEB425045CAFA1545A6874332D8A7EE7F3587DA9645C9B9265C9547E5B5060EE4F70F60D064222A282FC7777D0F53750264B4942D65D176E58795C83401C1BD80B932DA12493F898FD6F6CC37F50CA5F543603ED6B4229BEBCA889C64FA4BDA7F7226546A53583EE651D26A270CD31F2235B898FB4B1E7469EF82C78AFF86F18B075713B64C13EEC4536EB6DDC0EF9AB8280CAE3752F317099E9A7C1AF508F6AA26D0E807A023385E916B084777CD5EAC8FCA89AFD5F4749B6EC8C6977311EA003E212D6AE396B7A66D3AA3C3EA57D9AA6A74EFD564337B752D837969554716558C03FEFADCDF6A6B759A6E9D86332A78F0A7E30A899E51E8141B683A39ED426712403FCC1D1C24B86ED5BBCD7426DB0AB6CAD0D5A32817ADC01F1D713D92B4FCE4094B66994498B650698960EC7B93EDDD860EB136C7516105499B43CED2F5C45529B1EBD0A3CE54EEC97FC6651E8F907F626B250FC2626ADDF88394847CA62F84626BA753435178F973EABFD2F85D84D998099C97332F46E3551 |