diff --git a/src/main/java/com/dev/swms/server/service/inventory/pojo/DefaultInventoryManager.java b/src/main/java/com/dev/swms/server/service/inventory/pojo/DefaultInventoryManager.java index a6a7e0c..7eb7dcb 100644 --- a/src/main/java/com/dev/swms/server/service/inventory/pojo/DefaultInventoryManager.java +++ b/src/main/java/com/dev/swms/server/service/inventory/pojo/DefaultInventoryManager.java @@ -126,6 +126,7 @@ import com.dev.energy.server.util.LocalizedMessage; import com.dev.energy.server.web.security.UserHolder; import com.sun.mail.util.MailSSLSocketFactory; import com.sun.org.apache.xpath.internal.operations.And; + import org.apache.log4j.Logger; /** * @author dev @@ -3706,42 +3707,43 @@ public class DefaultInventoryManager extends DefaultBaseManager implements Inven } } + /*输送线上的库存*/ + private static List invIds =new ArrayList(); //添加整理库存 - public void createReceivingInventory(ReceivedRecord receivedRecord,Location dstloc) { - - ASNDetail ad=commonDao.load(ASNDetail.class, receivedRecord.getAsnDetail().getId()); - if(ad.getLotInfo()!=null - &&ad.getLotInfo().getPropC2()!=null - &&ad.getLotInfo().getPropC2().length()>0) { - String hql=" from PlantLocation p where p.code='"+ad.getLotInfo().getPropC2()+"' " - + " and p.plantInfo.code='"+ad.getLotInfo().getPropC9()+"' and p.disabled=false"; - List list=commonDao.findByQuery(hql); - if(list.size()>0) { - ASN asn=commonDao.load(ASN.class, ad.getAsn().getId()); - PlantLocation p=list.get(0); - if(p.isBeRegister()) { - ReceivingInventory r=new ReceivingInventory(); - r.setBarCode(receivedRecord.getBarCode()); - r.setDescription(receivedRecord.getDescription()); - r.setItemKey(receivedRecord.getItemKey()); - r.setLocation(dstloc); - r.setOperator(receivedRecord.getOperator()); - r.setReceiveDate(receivedRecord.getReceiveDate()); - r.setReceivedQuantity(receivedRecord.getReceivedQuantity()); - r.setReceivedQuantityMU(receivedRecord.getReceivedQuantityMU()); - r.setReceivedRecordId(receivedRecord.getId()); - r.setVolume(receivedRecord.getVolume()); - r.setWeight(receivedRecord.getWeight()); -// r.setStrBill1(ad.getLotInfo().getPropC7()); - r.setStrBill1(asn.getUserName()); - r.setStrBill2(ad.getStrBill7()); - r.setStrBill3(ad.getStrBill8()); - commonDao.store(r); - } - } - + public void createReceivingInventory(ReceivedRecord receivedRecord,Location dstloc) { + + ASNDetail ad=commonDao.load(ASNDetail.class, receivedRecord.getAsnDetail().getId()); + if(ad.getLotInfo()!=null + &&ad.getLotInfo().getPropC2()!=null + &&ad.getLotInfo().getPropC2().length()>0) { + String hql=" from PlantLocation p where p.code='"+ad.getLotInfo().getPropC2()+"' " + + " and p.plantInfo.code='"+ad.getLotInfo().getPropC9()+"' and p.disabled=false"; + List list=commonDao.findByQuery(hql); + if(list.size()>0) { + ASN asn=commonDao.load(ASN.class, ad.getAsn().getId()); + PlantLocation p=list.get(0); + if(p.isBeRegister()) { + ReceivingInventory r=new ReceivingInventory(); + r.setBarCode(receivedRecord.getBarCode()); + r.setDescription(receivedRecord.getDescription()); + r.setItemKey(receivedRecord.getItemKey()); + r.setLocation(dstloc); + r.setOperator(receivedRecord.getOperator()); + r.setReceiveDate(receivedRecord.getReceiveDate()); + r.setReceivedQuantity(receivedRecord.getReceivedQuantity()); + r.setReceivedQuantityMU(receivedRecord.getReceivedQuantityMU()); + r.setReceivedRecordId(receivedRecord.getId()); + r.setVolume(receivedRecord.getVolume()); + r.setWeight(receivedRecord.getWeight()); +// r.setStrBill1(ad.getLotInfo().getPropC7()); + r.setStrBill1(asn.getUserName()); + r.setStrBill2(ad.getStrBill7()); + r.setStrBill3(ad.getStrBill8()); + commonDao.store(r); } - } - + + } + + } } \ No newline at end of file diff --git a/src/main/java/com/dev/swms/server/service/picking/allocate/DefaultAutoAllocator.java b/src/main/java/com/dev/swms/server/service/picking/allocate/DefaultAutoAllocator.java index 13c098a..c6e87ab 100644 --- a/src/main/java/com/dev/swms/server/service/picking/allocate/DefaultAutoAllocator.java +++ b/src/main/java/com/dev/swms/server/service/picking/allocate/DefaultAutoAllocator.java @@ -16,6 +16,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.stream.Collectors; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -97,6 +98,7 @@ import com.dev.energy.server.model.EntityFactory; import com.dev.energy.server.service.pojo.DefaultBaseManager; import com.dev.energy.server.util.LocalizedMessage; import com.dev.energy.server.web.security.UserHolder; + import org.apache.log4j.Logger; /** * @author dev @@ -1524,9 +1526,8 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo } } } - @Override - public void allocateWaveDoc(List WaveDocIds) { + public void allocateWaveDoc(List WaveDocIds) { for(Long id:WaveDocIds){ WaveDoc wd =this.load(WaveDoc.class, id);//波次单 if(wd.getAllocatedQuantity()==0){ @@ -1535,10 +1536,21 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo new String[] { "id"},new Object[] {wd.getId()}); if(PickTicketDetails.size()>0){ for(PickTicketDetail ptd :PickTicketDetails){ + StringBuffer sqlBuffer=new StringBuffer(); + sqlBuffer.append(" from Inventory i where i.itemKey.item.id=:id and i.status='已入库' and i.location.type not in ('RECEIVE','SHIP') and i.quantity-i.queuedQuantity>0 " + +" order by "); + if (invIds.size()>0) { + sqlBuffer.append(" CASE " + +" WHEN i.id IN ("+invIds.stream() + .map(String::valueOf) + .collect(Collectors.joining(","))+") THEN 1 " + +" ELSE 0 " + +" END, "); + } + sqlBuffer.append("i.itemKey.lotInfo.propC3,i.itemKey.lotInfo.propC1,i.quantity"); //分配库存 List Inventorys = commonDao.findByQuery( - " from Inventory i where i.itemKey.item.id=:id and i.status='已入库' and i.location.type not in ('RECEIVE','SHIP') and i.quantity-i.queuedQuantity>0 " - +" order by i.itemKey.lotInfo.propC3,i.itemKey.lotInfo.propC1,i.quantity", + sqlBuffer.toString(), new String[] { "id" },new Object[] { ptd.getItem().getId() }); if (Inventorys.size() > 0) { double allocatedQuantity = 0; @@ -1573,6 +1585,17 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo task.setItemKey(inventory.getItemKey()); task.setStorageDate(inventory.getStorageDate()); task.setSrcLoc(inventory.getLocation()); + if (inventory.getLocation().getStock()!=null) { + task.setStrBill7(inventory.getLocation().getStock().getLP()); + } + String tItemCode=item.getCode().substring(0, 9); + String ptCode = ptd.getPickTicket().getCode(); + char lastChar = ptCode.charAt(ptCode.length() - 1); + if (Character.isUpperCase(lastChar)) { + //System.out.println("最后一位是大写字母"); + task.setStrBill8(tItemCode+lastChar); + } + task.setSOI(inventory.getSOI()); task.setPlanQuantity(allocateQty); task.setPlanQuantityMU(allocateQty); @@ -1594,8 +1617,7 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo }else{ logger.info("无波次任务!"+"\n"); } - } - + } } public void allocatePlanAll(List WaveDocIds) {