diff --git a/src/main/java/com/dev/swms/server/model/shipping/PickTicket.java b/src/main/java/com/dev/swms/server/model/shipping/PickTicket.java index 41008eb..000cb27 100644 --- a/src/main/java/com/dev/swms/server/model/shipping/PickTicket.java +++ b/src/main/java/com/dev/swms/server/model/shipping/PickTicket.java @@ -1013,11 +1013,6 @@ public class PickTicket extends AbstractMoveDoc { } moveDocDetail.allocate(inventory, quantity); this.allocatedQuantity += quantity; - int precision=4;//moveDocDetail.getPackageUnit().getPrecision()) - if (DoubleUtils.compareByPrecision(this.allocatedQuantity, this.orderQuantity, - precision)==0) { - this.setApplyDoc(""); - } this.status = PickTicketStatus.ALLOCATE; setUserTracking(); } diff --git a/src/main/java/com/dev/swms/server/service/picking/allocate/AutoAllocator.java b/src/main/java/com/dev/swms/server/service/picking/allocate/AutoAllocator.java index 92274b5..cae5dd1 100644 --- a/src/main/java/com/dev/swms/server/service/picking/allocate/AutoAllocator.java +++ b/src/main/java/com/dev/swms/server/service/picking/allocate/AutoAllocator.java @@ -92,6 +92,10 @@ public interface AutoAllocator extends BaseManager { @Transactional void unallocate(AbstractMoveDoc moveDoc); + @Transactional + void unallocate(AbstractMoveDoc moveDoc,List details); + + /** * 库内加工作为单子件明细预分配 * @param bomDetail @@ -115,7 +119,7 @@ public interface AutoAllocator extends BaseManager { */ @Transactional void manualAllocate(AbstractMoveDocDetail moveDocDetail, Map inventories); - + /** * 根据类型自动拣货分配(确保同一仓库单进程) * @param ids 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 99be32c..6b6a580 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 @@ -8,6 +8,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.commons.beanutils.BeanComparator; import org.apache.commons.collections.comparators.ComparatorChain; @@ -29,6 +30,7 @@ import com.dev.swms.server.model.base.StorageType; import com.dev.swms.server.model.base.TurnOverMode; import com.dev.swms.server.model.base.Warehouse; import com.dev.swms.server.model.inventory.Inventory; +import com.dev.swms.server.model.inventory.ItemKeyInventory; import com.dev.swms.server.model.inventory.ProcessDoc; import com.dev.swms.server.model.inventory.ProcessDocBOMDetail; import com.dev.swms.server.model.inventory.Stock; @@ -1624,5 +1626,55 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo } return errorMsg; } + + @Override + public void unallocate(AbstractMoveDoc moveDoc, + List details) { + warehouseId = WarehouseHolder.getWarehouse().getId().longValue(); + synchronized (warehouseId) { + for(AbstractMoveDocDetail detail : details){ + List ts = new ArrayList(); + for (Task task: detail.getTasks()) { + if(TaskType.MV_CROSS.equals(task.getType())){ + continue; + } + double quantity = task.getPlanQuantityMU() - task.getMovedQuantityMU(); + if (quantity == 0) { + ts.add(task); + continue; + } + + + if (moveDoc instanceof PickTicket) { + task.unallocatePick(quantity); + } else if(moveDoc instanceof WaveDoc){ + task.unallocateWaveDoc(quantity); + }else if(moveDoc instanceof ProcessDoc){ + task.unallocateProcessDoc(quantity); + }else{ + task.unallocateMove(quantity); + } + + ItemKey itemKey = task.getItemKey(); + Warehouse w=WarehouseHolder.getWarehouse(); + if(moveDoc.getWarehouse()!=null) { + w=moveDoc.getWarehouse(); + }else { + w=task.getSrcLoc().getWarehouse(); + } + Inventory inventory = itemKey.getInventoryWithException(w,task.getSrcLoc(), + task.getPackageUnit(), task.getSrcLP(),null, task.getInventoryStatus(), + task.getStorageDate(), task.getSOI()); + inventory.unallocate(quantity, null, null); + + if (task.getPlanQuantityMU()== 0) { + ts.add(task); + } + } + detail.getTasks().removeAll(ts); + } + } + } + } diff --git a/src/main/java/com/dev/swms/server/service/shipping/PickTicketManager.java b/src/main/java/com/dev/swms/server/service/shipping/PickTicketManager.java index 9950e14..6aecad4 100644 --- a/src/main/java/com/dev/swms/server/service/shipping/PickTicketManager.java +++ b/src/main/java/com/dev/swms/server/service/shipping/PickTicketManager.java @@ -339,6 +339,8 @@ public interface PickTicketManager extends BaseManager { */ @Transactional void manualAllocatePick(Map params,List ids); + + @Transactional void allocateAndPick(PickTicketDetail moveDocDetail,Inventory inv,Long workerId); @@ -420,4 +422,10 @@ public interface PickTicketManager extends BaseManager { @Transactional void allocation(long pickTicketId,long warehouseId); + + @Transactional + void shougongAllocate(Map clientParams,List id); + + @Transactional + void cancellAllocate(List ids); } diff --git a/src/main/java/com/dev/swms/server/service/shipping/pojo/DefaultPickTicketManager.java b/src/main/java/com/dev/swms/server/service/shipping/pojo/DefaultPickTicketManager.java index a86b355..e64727d 100644 --- a/src/main/java/com/dev/swms/server/service/shipping/pojo/DefaultPickTicketManager.java +++ b/src/main/java/com/dev/swms/server/service/shipping/pojo/DefaultPickTicketManager.java @@ -25,6 +25,11 @@ import java.util.Map.Entry; + + + + + import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang.StringUtils; import org.apache.http.HttpEntity; @@ -473,6 +478,8 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements } } + + @SuppressWarnings("unchecked") public void allocateAndPick(PickTicketDetail moveDocDetailo,Inventory invo,Long workerId){ PickTicketDetail moveDocDetail=this.commonDao.get(PickTicketDetail.class, moveDocDetailo.getId()); @@ -3100,4 +3107,52 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements public void allocation(long pickTicketId,long warehouseId) { autoAllocator.allocate(pickTicketId, warehouseId); } + + public void shougongAllocate(Map params,List id) { + PickTicketDetail pickTicketDetail = commonDao.load(PickTicketDetail.class, id.get(0)); + manualAllocate(pickTicketDetail, params); + } + + + public void manualAllocate(AbstractMoveDocDetail moveDocDetail, Map params) { + AbstractMoveDoc pickTicket = moveDocDetail.getAbstractMoveDoc(); + Double unallocateQty = moveDocDetail.getUnallocateQuantity(); + + Set> itor = params.entrySet(); + for (Map.Entry me : itor) { + Inventory inventory = commonDao.load(Inventory.class, me.getKey()); + Double quantity = Double.parseDouble(me.getValue().get(0).toString()); + if(quantity <= 0){ + continue; + } + double kyQty=inventory.getQuantity()-inventory.getQueuedQuantity(); + + if (quantity > kyQty) { + quantity = kyQty; + } + if (quantity > unallocateQty) { + quantity = unallocateQty; + } + unallocateQty -= quantity; + pickTicket.allocate(moveDocDetail, inventory, quantity); + inventory.allocate(quantity, null, null); + + } + + } + + @Override + public void cancellAllocate(List ids) { + List pds=new ArrayList(); + PickTicket pickTicket = null; + for(Long pdId:ids){ + PickTicketDetail pd=this.commonDao.get(PickTicketDetail.class, pdId); + pickTicket=pd.getPickTicket(); + pds.add(pd); + } + autoAllocator.unallocate(pickTicket,pds); + } + + + } \ No newline at end of file diff --git a/src/webapp/WEB-INF/classes/config/origen/shipping/maintainPickTicketDetailManual2Page.xml b/src/webapp/WEB-INF/classes/config/origen/shipping/maintainPickTicketDetailManual2Page.xml new file mode 100644 index 0000000..b0dd4fe --- /dev/null +++ b/src/webapp/WEB-INF/classes/config/origen/shipping/maintainPickTicketDetailManual2Page.xml @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + 'COUNT' and location.disabled=false + ]]> + + + + + + + + + + + + + + + 0 + and inventory.warehouse=#{SESSION_WAREHOUSE} + and item.id=(select d.item.id from PickTicketDetail d where d.id={id} ) + and (inventory.SOI=(select d.pickTicket.relatedBill3 from PickTicketDetail d where d.id={id}) /~ordersAll: or true = {ordersAll}~/ ) + /~company.id: AND company.id = {company.id}~/ + /~location.id: AND inventory.location.id = {location.id}~/ + /~zone.id: AND inventory.location.zone.id = {zone.id}~/ + /~location.type: AND inventory.location.type = {location.type}~/ + /~item.code: AND item.code LIKE {item.code}~/ + /~item.name: AND item.name LIKE {item.name}~/ + /~packageUnit.unit: AND inventory.packageUnit.unit LIKE {packageUnit.unit}~/ + /~LP: AND inventory.LP.LP LIKE {LP}~/ + /~itemKeyLot: AND inventory.itemKey.lot LIKE {itemKeyLot}~/ + /~inventory.SOI: AND inventory.SOI LIKE {inventory.SOI}~/ + /~storageDate1: AND inventory.storageDate >= {storageDate1}~/ + /~storageDate1: AND inventory.storageDate <= {storageDate1}~/ + /~itemKey.content: AND inventory.itemKey.content LIKE {itemKey.content}~/ + /~minQuantity: AND inventory.quantity >= {minQuantity}~/ + /~maxQuantity: AND inventory.quantity <= {maxQuantity}~/ + order by inventory.location.code ,inventory.id desc + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webapp/WEB-INF/classes/config/origen/shipping/maintainPickTicketPage.xml b/src/webapp/WEB-INF/classes/config/origen/shipping/maintainPickTicketPage.xml index bd133e0..ac484f0 100644 --- a/src/webapp/WEB-INF/classes/config/origen/shipping/maintainPickTicketPage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/shipping/maintainPickTicketPage.xml @@ -191,9 +191,14 @@ - - + + + + + diff --git a/src/webapp/WEB-INF/classes/config/origen/shipping/modifyPickTicketManual2Page.xml b/src/webapp/WEB-INF/classes/config/origen/shipping/modifyPickTicketManual2Page.xml new file mode 100644 index 0000000..c835f54 --- /dev/null +++ b/src/webapp/WEB-INF/classes/config/origen/shipping/modifyPickTicketManual2Page.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/jjwms/WEB-INF/classes/com/dev/swms/server/model/shipping/PickTicket.class b/target/jjwms/WEB-INF/classes/com/dev/swms/server/model/shipping/PickTicket.class deleted file mode 100644 index c3d77f4..0000000 Binary files a/target/jjwms/WEB-INF/classes/com/dev/swms/server/model/shipping/PickTicket.class and /dev/null differ diff --git a/target/jjwms/WEB-INF/classes/com/dev/swms/server/service/picking/allocate/AutoAllocator.class b/target/jjwms/WEB-INF/classes/com/dev/swms/server/service/picking/allocate/AutoAllocator.class deleted file mode 100644 index cbad926..0000000 Binary files a/target/jjwms/WEB-INF/classes/com/dev/swms/server/service/picking/allocate/AutoAllocator.class and /dev/null differ diff --git a/target/jjwms/WEB-INF/classes/com/dev/swms/server/service/picking/allocate/DefaultAutoAllocator.class b/target/jjwms/WEB-INF/classes/com/dev/swms/server/service/picking/allocate/DefaultAutoAllocator.class deleted file mode 100644 index e105145..0000000 Binary files a/target/jjwms/WEB-INF/classes/com/dev/swms/server/service/picking/allocate/DefaultAutoAllocator.class and /dev/null differ diff --git a/target/jjwms/WEB-INF/classes/com/dev/swms/server/service/shipping/PickTicketManager.class b/target/jjwms/WEB-INF/classes/com/dev/swms/server/service/shipping/PickTicketManager.class deleted file mode 100644 index 12cc493..0000000 Binary files a/target/jjwms/WEB-INF/classes/com/dev/swms/server/service/shipping/PickTicketManager.class and /dev/null differ diff --git a/target/jjwms/WEB-INF/classes/com/dev/swms/server/service/shipping/pojo/DefaultPickTicketManager.class b/target/jjwms/WEB-INF/classes/com/dev/swms/server/service/shipping/pojo/DefaultPickTicketManager.class deleted file mode 100644 index e4d78e1..0000000 Binary files a/target/jjwms/WEB-INF/classes/com/dev/swms/server/service/shipping/pojo/DefaultPickTicketManager.class and /dev/null differ