LotQueryInfoMapper.java
package com.mycim.server.wip.dao.mapper;
import com.mycim.framework.jdbc.mapper.RowMapper;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.valueobject.LotConstants;
import com.mycim.valueobject.wip.LotStatus;
import com.mycim.valueobject.wip.LotStepStatSpeedTime;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class LotQueryInfoMapper implements RowMapper<Map<String, Object>> {
private final int countLot;
private final int countQty;
public LotQueryInfoMapper(int countLot, int countQty) {
this.countLot = countLot;
this.countQty = countQty;
}
@Override
public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
Map<String, Object> dataMap = new HashMap<String, Object>();
String priority = StringUtils.EMPTY;
if(StringUtils.isNotBlank(rs.getString("PRIORITY"))){
priority = rs.getString("PRIORITY");
}
dataMap.put("lotCount", countLot);
dataMap.put("qtyCount", countQty);
dataMap.put("processStepIdVersion", rs.getString("process_step_id_version"));
dataMap.put("processStepVersion", rs.getString("process_step_version"));
dataMap.put("lotID", rs.getString("LOT_ID"));
dataMap.put("lotRRN", rs.getLong("LOT_RRN"));
dataMap.put("eqpRrn", rs.getLong("eqpt_rrn"));
dataMap.put("lotStatus", rs.getString("LOT_STATUS"));
dataMap.put("statusFlag", rs.getString("LOT_STATUS"));
dataMap.put("lotType", rs.getString("LOT_TYPE"));
dataMap.put("lotOwer", rs.getString("lot_owner"));
dataMap.put("lotPiority", rs.getString("hot_flag") + "-" + priority); // 已拼接
dataMap.put("qty1", rs.getInt("QTY1")); // 数量
dataMap.put("carrierRrn", rs.getString("CARRIER_RRN"));
dataMap.put("productRrn", rs.getLong("PRODUCT_RRN"));
dataMap.put("routeSeq", rs.getString("ROUTE_SEQ"));
dataMap.put("stepSeq", rs.getString("operation_seq"));
dataMap.put("Step_Sequence", rs.getString("Step_Sequence"));
dataMap.put("processRrn", rs.getLong("PROCESS_RRN"));
dataMap.put("stepRrn", rs.getLong("operation_rrn"));
dataMap.put("lotCategory", rs.getString("CREATE_CATEGORY"));
LocalDateTime queueTime = rs.getTimestamp("QUEUE_TIMESTAMP").toLocalDateTime();
Duration queueTimeDuration = Duration.between(queueTime, LocalDateTime.now());
long spent = queueTimeDuration.toMinutes();
String waitTimeHr = (new java.text.DecimalFormat("#0.00")).format(spent / 60f);
dataMap.put("queueTime", waitTimeHr); // 小时 new Long(spent / 60 / 60)
if (LotConstants.QTIME_DEFUALT_VALUE != rs.getDouble("Q_TIME")){
dataMap.put("timeLimit", rs.getDouble("Q_TIME"));
}
if (StringUtils.equalsIgnoreCase(LotStatus.HOLD, rs.getString("LOT_STATUS")) ||
StringUtils.equalsIgnoreCase(LotStatus.RUNNINGHOLD, rs.getString("LOT_STATUS"))) {
if (rs.getTimestamp("HOLD_TIMESTAMP") != null) {
LocalDateTime holdTime = rs.getTimestamp("HOLD_TIMESTAMP").toLocalDateTime();
Duration holdTimeDuration = Duration.between(holdTime, LocalDateTime.now());
long holdSpent = holdTimeDuration.toMinutes();
String holdTimeHr = (new java.text.DecimalFormat("#0.00")).format(holdSpent / 60f);
dataMap.put("holdTime", holdTimeHr);
}
}
dataMap.put("stageID", rs.getString("STAGE_ID"));
dataMap.put("pollutionLevel", rs.getString("POLLUTION_LEVEL"));
dataMap.put("recipePara", rs.getString("RECIPE_STRING"));// 工艺规格
dataMap.put("isRework", rs.getString("REWORK_CATEGORY"));
// dataMap.put("lotCategory", rs.getString("CREATE_CATEGORY"));
dataMap.put("processVersion", rs.getString("PROCESS_VERSION"));
dataMap.put("shippingCode", rs.getString("SHIPPING_CODE"));
dataMap.put("customerId", rs.getString("CUSTOMER_ID"));
dataMap.put("outerOrderNO", rs.getString("OUTER_ORDER_NO"));
dataMap.put("outOrderType", rs.getString("OUT_ORDER_TYPE"));
dataMap.put("workOrderId", rs.getString("INNER_ORDER_NO"));
dataMap.put("customerLotId", rs.getString("CUSTOMER_LOT_ID"));
dataMap.put("wflSeq", rs.getString("FLOW_SEQ"));
dataMap.put("locationRrn", rs.getLong("LOCATION"));
dataMap.put("pLocationRrn", rs.getLong("PLOCATION"));
// dataMap.put("recipeRrn", rs.getLong("RECIPE_RRN"));
// dataMap.put("routeRrn", rs.getLong("ROUTE_RRN"));
dataMap.put("lotPurpose", rs.getString("lot_comments"));
dataMap.put("materialLotId", rs.getString("unit_alias_2"));
dataMap.put("processLocation", rs.getString("process_location"));
dataMap.put("jobRrn", rs.getLong("JOB_RRN"));
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date(rs.getTimestamp("due_date").getTime());
dataMap.put("dueDate", format.format(date));
byte[] dataStruct= rs.getBytes("CURRENT_STEP_TIME_STRUCT");
LotStepStatSpeedTime lotStepStatSpeedTime= new LotStepStatSpeedTime(dataStruct);
dataMap.putAll(lotStepStatSpeedTime.resolveDataStruct());
return dataMap;
}
}