PackageDaoImpl.java
package com.mycim.server.workorder.dao.impl;
import com.mycim.framework.jdbc.BatchPreparedStatementSetter;
import com.mycim.framework.jdbc.JdbcTemplate;
import com.mycim.framework.jdbc.Page;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.math.NumberUtils;
import com.mycim.server.workorder.dao.PackageDao;
import com.mycim.valueobject.erp.lotScrapShip.ErpPackage;
import com.mycim.valueobject.erp.lotScrapShip.ErpPackageStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.stereotype.Repository;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@Repository
public class PackageDaoImpl implements PackageDao {
@Autowired
JdbcTemplate jdbcTemplate;
@Override
public void insertPackage(ErpPackage erpPackage) {
String sql = "INSERT INTO ERP_PACKAGE (TRANS_RRN,LPN,WORK_ORDER_ID,LOT_ID,LOT_RRN,PRODUCT_ID," + " BIN," +
"PRINT_COUNT,QUANTITY,LOCATOR,SUB_INVENTORY,BIN_PRODUCT_NAME,PACKAGE_TYPE," + "SEND_FLAG," +
"RECEIVE_FLAG)" + " VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
jdbcTemplate.update(sql, new Object[]{erpPackage.getTransRrn(), NumberUtils.toLong(erpPackage.getLpn(),
0),
erpPackage.getWorkOrderId(), erpPackage.getLotId(), NumberUtils.toLong(
erpPackage.getLotRrn(),
0), erpPackage.getProductId(), erpPackage.getBin(), erpPackage.getPrintCount(),
erpPackage.getQuantity(), erpPackage.getLocator(), erpPackage.getSubInventory(),
erpPackage.getBinProductName(), erpPackage.getPackageType(), erpPackage.getSendFlag(),
erpPackage.getReceiveFlag()});
}
@Override
public void insertPackageUnitList(List<ErpPackage.UnitInfo> unitList, long transRrn) {
String sql = "INSERT INTO ERP_PACKAGE_UNIT (TRANS_RRN,LOT_RRN,LOT_ID,UNIT_ID,UNIT_RRN,BIN,PACKAGE_QUANTITY," +
"SOURCE_QUANTITY, " + " SOURCE_WAFER_ID) VALUES (?,?,?,?,?,?,?,?,?)";
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setLong(1, transRrn);
ps.setLong(2, unitList.get(i).getLotRrn());
ps.setString(3, unitList.get(i).getLotId());
ps.setString(4, unitList.get(i).getUnitId());
ps.setLong(5, unitList.get(i).getUnitRrn());
ps.setString(6, unitList.get(i).getBin());
ps.setInt(7, unitList.get(i).getPackageQuantity());
ps.setInt(8, unitList.get(i).getSourceQuantity());
ps.setString(9, unitList.get(i).getSourceWaferId());
}
@Override
public int getBatchSize() {
return unitList.size();
}
});
}
@Override
public Page getPackage(Page page, String packageType, String lotId, String productId) {
StringBuffer sbf = new StringBuffer("SELECT * FROM ERP_PACKAGE WHERE 1=1 ");
List<Object> args = new ArrayList<Object>();
if (StringUtils.isNotEmptyTrim(packageType)) {
sbf.append("and PACKAGE_TYPE=?");
args.add(packageType);
}
if (StringUtils.isNotEmptyTrim(lotId)) {
sbf.append("and lot_id like ?");
args.add(lotId);
}
if (StringUtils.isNotEmptyTrim(productId)) {
sbf.append("and product_id like ?");
args.add(productId);
}
sbf.append(" ORDER BY TRANS_RRN DESC");
return jdbcTemplate
.queryForPage(page, sbf.toString(), args.toArray(), new BeanPropertyRowMapper(ErpPackage.class));
}
@Override
public List<ErpPackage.UnitInfo> getPackageDetails(Long transRrn) {
String sql = "SELECT * FROM ERP_PACKAGE_UNIT WHERE TRANS_RRN=?";
return jdbcTemplate.query(sql, new Object[]{transRrn}, new BeanPropertyRowMapper(ErpPackage.UnitInfo.class));
}
@Override
public List<ErpPackage> getPackage(long transRrn, String packageType) {
String sql = "SELECT * FROM ERP_PACKAGE WHERE TRANS_RRN >? AND PACKAGE_TYPE=? ORDER BY TRANS_RRN";
return jdbcTemplate
.query(sql, new Object[]{transRrn, packageType}, new BeanPropertyRowMapper(ErpPackage.class));
}
@Override
public int getPackageDieCount(long workorderRrn, String packageType) {
String sql = "SELECT SUM(PU.SOURCE_QUANTITY) FROM ERP_PACKAGE P JOIN ERP_PACKAGE_UNIT PU ON P.TRANS_RRN=PU" +
".TRANS_RRN" + " JOIN WORKORDER W ON W.WORKORDER_ID=P.WORK_ORDER_ID WHERE W.WORKORDER_RRN=? " +
"AND P" + ".PACKAGE_TYPE=? ";
return jdbcTemplate.queryForObjectWithNull(sql, new Object[]{workorderRrn, packageType}, Integer.class);
}
@Override
public int getErpPackageCount(long lotRrn) {
String sql = "SELECT COUNT(*) FROM ERP_PACKAGE WHERE LOT_RRN=?";
return jdbcTemplate.queryForObject(sql, new Object[]{lotRrn}, Integer.class);
}
@Override
public String getMaxLpnNum(String lpnPrex) {
String sql = "SELECT MAX(LPN) FROM ERP_PACKAGE WHERE LPN LIKE ? ";
long i = jdbcTemplate.queryForObjectWithNull(sql, new Object[]{lpnPrex}, long.class);
if (i == 0) {
return null;
} else {
return (new Long(i)).toString();
}
}
@Override
public void setPackageSendFlagY(List<ErpPackage> list) {
String sql = "UPDATE ERP_PACKAGE SET SEND_FLAG='Y' WHERE TRANS_RRN=?";
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setLong(1, list.get(i).getTransRrn());
}
@Override
public int getBatchSize() {
return list.size();
}
});
}
@Override
public void updatePackageFlag(List<ErpPackageStatus> list) {
String sql = "UPDATE ERP_PACKAGE SET RECEIVE_FLAG=? WHERE TRANS_RRN=?";
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setString(1, list.get(i).getReceiveFlag());
ps.setLong(2, list.get(i).getTransRrn());
}
@Override
public int getBatchSize() {
return list.size();
}
});
}
}