PackageManagerImpl.java
package com.mycim.server.workorder.manager.impl;
import com.mycim.framework.jdbc.Page;
import com.mycim.framework.oid.IDGenerators;
import com.mycim.framework.oid.type.IDNames;
import com.mycim.framework.oid.type.SequenceNames;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.server.workorder.dao.PackageDao;
import com.mycim.server.workorder.manager.PackageManager;
import com.mycim.server.workorder.manager.WorkOrderManager;
import com.mycim.valueobject.erp.lotScrapShip.ErpPackage;
import com.mycim.valueobject.erp.lotScrapShip.ErpPackage.UnitInfo;
import com.mycim.valueobject.erp.lotScrapShip.ErpPackageStatus;
import com.mycim.valueobject.prp.WorkOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@Service
@Transactional
public class PackageManagerImpl implements PackageManager {
@Autowired
private PackageDao packageDao;
@Autowired
private WorkOrderManager workOrderManager;
@Override
public String savePackageData(ErpPackage packageData) {
Long transRrn = Long
.valueOf(IDGenerators.get(IDNames.SEQUENCE).generateId(SequenceNames.MODULE_SEQ_TRANSACTION_RRN));
packageData.setTransRrn(transRrn);
String lpnPrex = DateUtils.formatDate(new Date(), "yyyyMMdd");
String maxLpn = packageDao.getMaxLpnNum(lpnPrex + "%");
if (maxLpn != null) {
String lpnPost = String.format("%03d", Integer.valueOf(maxLpn.substring(lpnPrex.length())) + 1);
packageData.setLpn(lpnPrex + lpnPost);
} else {
packageData.setLpn(lpnPrex + String.format("%03d", 1));
}
packageData.setPrintCount(1);
packageData.setSendFlag("N");
packageData.setQuantity(packageData.getUnitInfo().stream().mapToInt(UnitInfo::getPackageQuantity).sum());
packageDao.insertPackage(packageData);
packageDao.insertPackageUnitList(packageData.getUnitInfo(), packageData.getTransRrn());
//完成后关闭那个workorder
WorkOrder workOrderById = workOrderManager.getWorkOrderById(packageData.getWorkOrderId());
int compleWf = workOrderManager.getCompleteDieQtyByWorkOrderRrn(workOrderById.getWorkorderRrn());
if (compleWf >= workOrderById.getOrderDieQty()) {
workOrderManager.completeWorkOrder(workOrderById.getWorkorderRrn());
}
return packageData.getLpn();
}
@Override
public Page getPackage(Page page, String packageType, String lotId, String productId) {
return packageDao.getPackage(page, packageType, lotId, productId);
}
@Override
public List<ErpPackage.UnitInfo> getPackageDetails(Long transRrn) {
return packageDao.getPackageDetails(transRrn);
}
@Override
public int getPackageDieCount(long workorderRrn, String packageType) {
return packageDao.getPackageDieCount(workorderRrn, packageType);
}
@Override
public int getErpPackageCount(long lotRrn) {
return packageDao.getErpPackageCount(lotRrn);
}
@Override
public List<ErpPackage> getPackage(long transRrn, String type) {
return packageDao.getPackage(transRrn, type);
}
@Override
public void setPackageSendFlagY(List<ErpPackage> list) {
packageDao.setPackageSendFlagY(list);
}
@Override
public void updatePackageFlag(List<ErpPackageStatus> list) {
packageDao.updatePackageFlag(list);
}
}