diff --git a/src/main/java/com/dev/swms/server/model/base/Item.java b/src/main/java/com/dev/swms/server/model/base/Item.java
index 2c1e8b0..cbf5e35 100644
--- a/src/main/java/com/dev/swms/server/model/base/Item.java
+++ b/src/main/java/com/dev/swms/server/model/base/Item.java
@@ -137,47 +137,7 @@ public class Item extends Entity {
     private String barcode;//
     private boolean beExtend1=false;//扩展1
     private boolean beExtend2=false;//扩展2
-    
-    
-    public boolean isBeExtend1() {
-		return beExtend1;
-	}
-
-	public void setBeExtend1(boolean beExtend1) {
-		this.beExtend1 = beExtend1;
-	}
-
-	public boolean isBeExtend2() {
-		return beExtend2;
-	}
-
-	public void setBeExtend2(boolean beExtend2) {
-		this.beExtend2 = beExtend2;
-	}
-
-	public boolean isBeInventory() {
-		return beInventory;
-	}
-
-	public void setBeInventory(boolean beInventory) {
-		this.beInventory = beInventory;
-	}
-
-	public boolean isBeInv() {
-		return beInv;
-	}
-
-	public void setBeInv(boolean beInv) {
-		this.beInv = beInv;
-	}
-
-	public boolean isBeSAPItem() {
-		return beSAPItem;
-	}
-
-	public void setBeSAPItem(boolean beSAPItem) {
-		this.beSAPItem = beSAPItem;
-	}
+    private boolean beUnpacking=false;//是否最小包装
 
 	private Double multipleOrder=0d;//
     
@@ -229,6 +189,55 @@ public class Item extends Entity {
 	private Number largeWidth ;
 	private Number largeHeight;
 	
+    
+    public boolean isBeUnpacking() {
+		return beUnpacking;
+	}
+
+	public void setBeUnpacking(boolean beUnpacking) {
+		this.beUnpacking = beUnpacking;
+	}
+
+	public boolean isBeExtend1() {
+		return beExtend1;
+	}
+
+	public void setBeExtend1(boolean beExtend1) {
+		this.beExtend1 = beExtend1;
+	}
+
+	public boolean isBeExtend2() {
+		return beExtend2;
+	}
+
+	public void setBeExtend2(boolean beExtend2) {
+		this.beExtend2 = beExtend2;
+	}
+
+	public boolean isBeInventory() {
+		return beInventory;
+	}
+
+	public void setBeInventory(boolean beInventory) {
+		this.beInventory = beInventory;
+	}
+
+	public boolean isBeInv() {
+		return beInv;
+	}
+
+	public void setBeInv(boolean beInv) {
+		this.beInv = beInv;
+	}
+
+	public boolean isBeSAPItem() {
+		return beSAPItem;
+	}
+
+	public void setBeSAPItem(boolean beSAPItem) {
+		this.beSAPItem = beSAPItem;
+	}
+
 	
 	public WarehouseArea getWarehouseArea() {
 		return warehouseArea;
diff --git a/src/main/java/com/dev/swms/server/model/base/item.hbm.xml b/src/main/java/com/dev/swms/server/model/base/item.hbm.xml
index 5e71463..1ca32f8 100644
--- a/src/main/java/com/dev/swms/server/model/base/item.hbm.xml
+++ b/src/main/java/com/dev/swms/server/model/base/item.hbm.xml
@@ -178,6 +178,7 @@
 		
 		
 		
+		
 	
 	
 		
diff --git a/src/main/java/com/dev/swms/server/model/inventory/Task.java b/src/main/java/com/dev/swms/server/model/inventory/Task.java
index 2e03e15..d3682dd 100644
--- a/src/main/java/com/dev/swms/server/model/inventory/Task.java
+++ b/src/main/java/com/dev/swms/server/model/inventory/Task.java
@@ -141,8 +141,8 @@ public class Task extends VersionalEntity {
 	private String strBill5;//合单人
 	private String strBill6;//是否未未拆包装
 	private String strBill7;//库位的容器
-	private String strBill8;//
-	private String strBill9;//
+	private String strBill8;//拆分号分组
+	private String strBill9;//头物料
 	private String strBill10;//退料属性(T)
 	private Date dateBill1=new Date();//下发日期
 	private Date dateBill2;//合单移动日期
@@ -155,9 +155,26 @@ public class Task extends VersionalEntity {
 	private String  positionStatus;//位置状态
 	private String oldGzz;//原工作站
 	private String oldZrw;//原子任务
+	private boolean beUnpacking=false;//是否最小包装
+	private String ncrCode;//不良品的NCR号
 	
 	
-	
+	public String getNcrCode() {
+		return ncrCode;
+	}
+
+	public void setNcrCode(String ncrCode) {
+		this.ncrCode = ncrCode;
+	}
+
+	public boolean isBeUnpacking() {
+		return beUnpacking;
+	}
+
+	public void setBeUnpacking(boolean beUnpacking) {
+		this.beUnpacking = beUnpacking;
+	}
+
 	public String getOldGzz() {
 		return oldGzz;
 	}
diff --git a/src/main/java/com/dev/swms/server/model/inventory/task.hbm.xml b/src/main/java/com/dev/swms/server/model/inventory/task.hbm.xml
index 30ba7c2..9873fe2 100644
--- a/src/main/java/com/dev/swms/server/model/inventory/task.hbm.xml
+++ b/src/main/java/com/dev/swms/server/model/inventory/task.hbm.xml
@@ -173,7 +173,8 @@
 		
 		
 		
-		
+		
+		
 	
 	
 	
diff --git a/src/main/java/com/dev/swms/server/service/base/pojo/DefaultItemManager.java b/src/main/java/com/dev/swms/server/service/base/pojo/DefaultItemManager.java
index d812555..58d1a20 100644
--- a/src/main/java/com/dev/swms/server/service/base/pojo/DefaultItemManager.java
+++ b/src/main/java/com/dev/swms/server/service/base/pojo/DefaultItemManager.java
@@ -142,6 +142,7 @@ public class DefaultItemManager extends DefaultBaseManager implements
 		i.setBeInventory(item.isBeInventory());
 		i.setBeExtend1(item.isBeExtend1());
 		i.setBeExtend2(item.isBeExtend2());
+		i.setBeUnpacking(item.isBeUnpacking());
 		double a=length*width*height;
 		if(i.getPackNumber()>0) {
 			i.setVolume(a/i.getPackNumber());
diff --git a/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultQueryAppManager.java b/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultQueryAppManager.java
index 59a7359..41653ae 100644
--- a/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultQueryAppManager.java
+++ b/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultQueryAppManager.java
@@ -2081,7 +2081,8 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
 												+ " MAX(item.STR_EXTEND1) as STR_EXTEND1,MAX(item.unit)  as unit,"
 												+ "max(item.be_Extend1) as be_Extend1,max(item.be_Extend2) as be_Extend2, "
 												+ "max(ik.PROP_LC2) as propLC2,max(ik.PROP_LC3) as propLC3,max(pt.sourceType) as sourceType ,"
-												+ " max(lt.TO_CELL_CODE)  as END_REGION ,max(z.LEVELS) as LEVELS,max(ptd.strBill13) as strBill13"
+												+ " max(lt.TO_CELL_CODE)  as END_REGION ,max(z.LEVELS) as LEVELS,max(ptd.strBill13) as strBill13,"
+												+ " item.BE_UNPACKING as BE_UNPACKING "
 												  + " from task t   "
 												  + " left join PICK_TICKET_DETAIL ptd on ptd.id=t.PICK_TICKET_DETAIL_ID   "
 												  + " left join PICK_TICKET pt on pt.id=ptd.PICK_TICKET_ID   "
@@ -2115,7 +2116,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
 						}
 						sql.append(" group by t.END_REGION,t.BILLCODE,item.id,item.code,item.BE_MARK_WEIGHT,loc.id,"
 								+ "loc.code,ik.PROP_C1,ik.PROP_C2,ik.PROP_C3,"
-								+ "ik.PROP_D1,ik.PROP_D2,item.ISBOM ");
+								+ "ik.PROP_D1,ik.PROP_D2,item.ISBOM,item.BE_UNPACKING ");
 						sql.append(" order by max(lt.finish_Date) ,min(t.skips ),max(loc.code) asc, item.id,t.BILLCODE ");
 						
 						
@@ -2271,7 +2272,15 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
 									obj.put("isScode", "false");//是否扫描容器
 								}
 								String receiver=arrier[30]==null?"":arrier[30].toString();
+								String beUnpacking=arrier[31]==null?"":arrier[31].toString();
+								
 								obj.put("receiver", receiver);
+								if(beUnpacking.equals("1")||beUnpacking.equals("true")) {
+									beUnpacking="true";
+								}else {
+									beUnpacking="false";
+								}
+								obj.put("beUnpacking", beUnpacking);
 								array.add(obj);
 								break;
 							}
@@ -3447,6 +3456,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
 							obj.put("propLC2",thb.getPropLC3());
 							obj.put("be_Extend1",item.isBeExtend1());
 							obj.put("be_Extend2",item.isBeExtend2());
+							obj.put("beUnpacking",item.isBeUnpacking());//是否最小包装
 							if(thb.getSourceType()!=null&&thb.getSourceType().equals("313")) {
 								obj.put("be_Supernova","true");//是否超发
 							}else {
@@ -6170,6 +6180,9 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
 				int y=0;
 				for(String id :result){
 //					try{
+					if (unQty == 0) {
+						break;
+					}
 						 t=commonDao.load(Task.class, Long.parseLong(id));
 						 ptd=commonDao.load(PickTicketDetail.class, t.getPickTicketDetail().getId());
 						 pt=commonDao.load(PickTicket.class, ptd.getPickTicket().getId());
@@ -6203,9 +6216,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
 						String macs="";
 						String printName="";
 						double qty=0;//当前拣货数量
-						if (unQty == 0) {
-							break;
-						}
+						
 						if(quantity>t.getPlanQuantity()){
 							qty=t.getPlanQuantity();
 							quantity=quantity-t.getPlanQuantity();
@@ -6639,6 +6650,9 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
 							int y=0;
 							for(String id :result){
 //								try{
+								if (unQty == 0) {
+									break;
+								}
 									 t=commonDao.load(Task.class, Long.parseLong(id));
 									 ptd=commonDao.load(PickTicketDetail.class, t.getPickTicketDetail().getId());
 									 pt=commonDao.load(PickTicket.class, ptd.getPickTicket().getId());
@@ -6667,9 +6681,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
 									String macs="";
 									String printName="";
 									double qty=0;//拣货数量
-									if (unQty == 0) {
-										break;
-									}
+									
 									if(quantity>t.getPlanQuantity()){
 										qty=t.getPlanQuantity();
 										quantity=quantity-t.getPlanQuantity();
@@ -9842,7 +9854,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
 									}else {
 									if(hx.length()>0) {
 										int hs=Integer.parseInt(hx);
-										if(hs>30) {
+										if(hs>15) {
 											data1.put("soi", "2");//2绿色颜色
 										}else {
 											data1.put("soi", "0");//0无颜色
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 2181476..a888281 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
@@ -3194,9 +3194,11 @@ public class DefaultInventoryManager extends DefaultBaseManager implements Inven
 		stock.setType(status);
 		commonDao.store(stock);
 		for (Inventory inventory : inventories) {
+			if(inventory.getStatus().equals("整理中")) {
 			inventory.setStatus(status);
 			inventory.setMoveStatus(null);
 			commonDao.store(inventory); 
+			}
 		}
 	}
 
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 7107730..ea1b403 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
@@ -416,12 +416,14 @@ public interface PickTicketManager extends BaseManager {
 	/**美务转换*/
 	@Transactional
 	void mwzh(List ids,Date date,int qty,String driver,String cph,String remark);
-	
+	//手工分配
 	@Transactional
 	void manualAllocate(Map clientParams,List  id);
 	@Transactional
 	void manualAllocate(Long ptdid,Long invid);
-	
+	//不良品手工分配
+	@Transactional
+	void defectiveManualAllocate(Map clientParams,List  id);
 	/**取消分配*/
 	@Transactional
 	void cancellAllocate(List ids);
@@ -705,9 +707,12 @@ public interface PickTicketManager extends BaseManager {
 		void createSeedWallArrangeTask();
 		@Transactional
 		void createAGVtask(List ids,Long id);
-		
+		//打印标签
 		@Transactional
 		void updatePrintTask(List ids,Long pId,int nuber);
+		//记录标签补打次数
+		@Transactional
+		void reprintPrintTask(String barCode,Long pId,int nuber,Long workerId);
 		
 		@Transactional
 		Task createTask(Inventory inventory, PickTicketDetail ptd, double allocateQty);
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 e7870d6..b84fdbb 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
@@ -73,6 +73,7 @@ import com.dev.swms.server.model.count.CountRecord;
 import com.dev.swms.server.model.count.CountStatus;
 import com.dev.swms.server.model.delivery.PlantLocation;
 import com.dev.swms.server.model.interfaceLog.InterfaceLog;
+import com.dev.swms.server.model.interfaceLog.OperationHis;
 import com.dev.swms.server.model.interfaces.InterfaceWmsOut;
 import com.dev.swms.server.model.inventory.AgvTask;
 import com.dev.swms.server.model.inventory.Configuration;
@@ -2878,7 +2879,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick
 		task.setPlanQuantityMU(allocateQty);
 		task.setInventoryStatus(inventory.getStatus());
 		task.setCreateTime(new Date());
-		
+		task.setStrBill10(inventory.getStatuss());
 		task.setWarehouseArea(inventory.getLocation().getZone());
 		task.setBarCode(inventory.getBarCode());
 		task.setSrcLP(inventory.getLocation().getStock());
@@ -4141,10 +4142,10 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick
 					invsql += " AND inv.itemKey.lotInfo.propD2 is null ";
 				}
 				//是否是退料
-				if(task.getStrBill10()!=null) {
+				if(task.getStrBill10()!=null&&task.getStrBill10().length()>0) {
 					invsql += " AND inv.statuss='"+task.getStrBill10()+"' ";
 				}else {
-					invsql += " AND inv.statuss is null ";
+					invsql += " AND (inv.statuss is null or inv.statuss='' ) ";
 				}
 			}
 			invsql+=" order by inv.queuedQuantity desc ";
@@ -7220,6 +7221,9 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick
 					 w = this.load(Worker.class, t.getWorker4().getId());  
 				}
 				PrintEquipment printEquipment = commonDao.load(PrintEquipment.class, pId);
+				if(printEquipment==null) {
+					throw new BusinessException("请选择打印机");
+				}
 				SimpleDateFormat ymd = new SimpleDateFormat("yyyyMMdd");
 				SimpleDateFormat ymd1 = new SimpleDateFormat("yyyy-MM-dd");
 				String macs = "";
@@ -10066,4 +10070,145 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick
 		data=obj.toString();
 		return data;
 	}	
+	
+	public void reprintPrintTask(String barCode,Long pId,int nuber,Long workerId) {
+		if(barCode!=null&&barCode.length()>0) {
+			String billCode="";//料号
+			String itemcode="";//子任务号
+			String itemNuber="";//行号
+			String [] str=null;
+			if(barCode.indexOf("/")!=-1){
+				str=barCode.split("/");
+				if(str.length>=2){
+					billCode=str[1].trim();
+					itemNuber=str[2].trim();
+					itemcode=str[3].trim();
+				}
+				if(nuber<=0) {
+					throw new BusinessException("打印张数必须大于0"); 
+				}
+				String sql ="select t.id from Task t where t.movedQuantityMU>0 and "
+						+ " t.billCode='"+billCode+"' and t.itemKey.item.code='"+itemcode+"'"
+								+ " and t.pickTicketDetail.lineNumber='"+itemNuber+"'";
+			List list=commonDao.findByQuery(sql);
+				if(list.size()>0) {
+					updatePrintTask(list, pId, nuber);
+					OperationHis his =null;
+					String hql=" from OperationHis o where o.sourceType='补打标签' and actionName='补打标签' ";
+					List ohs=commonDao.findByQuery(hql);
+					if(ohs.size()>0) {
+						his=ohs.get(0);
+					}
+					if(his==null) {
+						his= (OperationHis) EntityFactory.getEntity(OperationHis.class);
+						his.setSourceId(pId);
+						his.setSourceNo(barCode);
+						his.setSourceType("补打标签");
+						his.setActionName("补打标签");
+						his.setQuantity(his.getQuantity()+1);
+						
+						his.setRemark("补打标签");
+						his.setWarehouseId(1L);
+						his.setExtendStr1("WMS");
+						his.setUserId(workerId);
+						his.setUpdateTime(new Date());
+						this.commonDao.store(his);
+					}
+//					wmsOperationHisManager.storeOperationHis(pId, barCode, null, "", "补打标签", "补打标签", null, null, 0,
+//							nuber, 0, 0, "", "WMS");
+				}else {
+					throw new BusinessException("二维码查询失败"); 
+				}
+				
+			}
+		}
+	}
+	
+	public void defectiveManualAllocate(Map params, List id) {
+		PickTicketDetail ptd = commonDao.load(PickTicketDetail.class, id.get(0));
+		PickTicket pt = null;
+		if (ptd != null) {
+			pt = commonDao.load(PickTicket.class, ptd.getPickTicket().getId());
+		}
+		List tasks=new ArrayList();
+		Set> itor = params.entrySet();
+		double allocatedQuantity = 0;
+		
+		for (Map.Entry me : itor) {
+			ReceivingInventory rd = this.load(ReceivingInventory.class, Long.parseLong(me.getKey().toString()));
+			double rd_qty=rd.getReceivedQuantity()-rd.getShippedQuantity();
+			double quantity = Double.parseDouble(me.getValue().get(0).toString());
+			double unallocateQty = ptd.getOrderQuantity() - ptd.getAllocatedQuantity();
+			if(rd_qty<=0) {
+				throw new BusinessException("不良品数量不足");
+			}
+			if(quantity>rd_qty) {
+				throw new BusinessException("输入数量不能大于库存数量");
+			}
+			if(rd.getStrBill1()==null||rd.getStrBill1().length()==0) {
+				throw new BusinessException("NCR号不能为空");
+			}
+			if (unallocateQty == 0) {
+				break;
+			}
+			if (quantity > unallocateQty) {
+				allocatedQuantity = unallocateQty;
+			} else {
+				allocatedQuantity = quantity;
+			}
+			//
+			String hql=" from Inventory inv where inv.location.id="+rd.getLocation().getId()
+					+" and inv.itemKey.item.id="+rd.getItemKey().getItem().getId()
+					+" and inv.itemKey.lotInfo.propC2='"+rd.getItemKey().getLotInfo().getPropC2()+"' "
+					+" and inv.itemKey.lotInfo.propC9='"+rd.getItemKey().getLotInfo().getPropC9()+"' "
+					+ " and inv.quantity-inv.queuedQuantity>"+allocatedQuantity
+					+ "  ";
+				if(rd.getBarCode()!=null&&rd.getBarCode().length()>0) {
+					hql=" and inv.barCode='"+rd.getBarCode()+"' ";
+				}
+			List invsList=commonDao.findByQuery(hql);
+//			for(Inventory inventory:invsList) {
+//				
+//			}
+			if(invsList.size()>0) {
+				Inventory inventory=invsList.get(0);
+				Task task = createTask(inventory, ptd, allocatedQuantity);
+				task.setNcrCode(rd.getStrBill1());
+				commonDao.store(task);
+				tasks.add(task);
+				inventory.setQueuedQuantity(inventory.getQueuedQuantity()+allocatedQuantity);
+				commonDao.store(inventory);
+				ptd.setAllocatedQuantity(ptd.getAllocatedQuantity() + allocatedQuantity);
+				if(task.getBarCode()!=null&&!task.getBarCode().equals("")) {
+					if(ptd.getStrBill14()!=null&&ptd.getStrBill14().length()>0) {
+						if(ptd.getStrBill15()!=null&&ptd.getStrBill15().equals("1")) {
+							ptd.setStrBill14(task.getBarCode());
+						}else {
+							if(!task.getBarCode().equals(ptd.getStrBill14())) {
+								throw new BusinessException("" + "必须分配该序列号"+ptd.getStrBill14());
+							}
+						}
+					}else {
+						ptd.setStrBill14(task.getBarCode());
+						ptd.setStrBill15("1");
+					}
+				}
+				commonDao.store(ptd);
+			}else {
+				throw new BusinessException("库存汇总库存不足!");
+			}
+			}
+			
+		//回传状态,工单出库才回传
+		if (pt != null && pt.getCode().indexOf("CP") == -1
+				&&pt.getBillType().getName().indexOf("工单")>=0&&tasks.size()>0) {
+//			List pdids = new ArrayList();
+//			pdids.add(ptd.getId());
+			interfaceReqManager.wmsSapZhuantaihuichuang(tasks, 0,"",1);// 状态回传
+		}
+		if(pt!=null) {
+		refreshOrderQuantity(pt);
+		}
+	}
+	
 }
\ No newline at end of file
diff --git a/src/main/java/com/dev/swms/server/web/servlet/ASNReceiveServlet.java b/src/main/java/com/dev/swms/server/web/servlet/ASNReceiveServlet.java
index 3183819..0e8f46b 100644
--- a/src/main/java/com/dev/swms/server/web/servlet/ASNReceiveServlet.java
+++ b/src/main/java/com/dev/swms/server/web/servlet/ASNReceiveServlet.java
@@ -457,6 +457,7 @@ public class ASNReceiveServlet extends HttpServlet {
 			String billCode =json.has("taskCode")?json.getString("taskCode"):"";//子任务好
 			String sid=json.has("s_id")?json.getString("s_id"):"";//容器
 			String str_loc=json.has("str_loc")?json.getString("str_loc"):"";//LOC
+			
 			String applicant=json.has("applicantName")?json.getString("applicantName"):"";//申请人
 			String location_id=json.has("location_id")?json.getString("location_id"):"0";//合单库位
 			if(sid==null||sid.equals("")) {
@@ -472,6 +473,8 @@ public class ASNReceiveServlet extends HttpServlet {
 			String mac =json.has("mac")?json.getString("mac"):"";
 			String pqty =json.has("pqty")?json.getString("pqty"):"1";
 			String itemCode =json.has("item_code")?json.getString("item_code"):"";
+			String beUnpacking=json.has("beUnpacking")?json.getString("beUnpacking"):"";//是否最小包装
+			
 			try {
 				resultJson=app.picking(taskId,s_id,billCode,serials,itemCode,mac,quantity,lsCode,Long.parseLong(number), workerId, wId,false,applicant,loc_id);
 				try {
diff --git a/src/main/java/com/dev/swms/server/web/servlet/PrintServlet.java b/src/main/java/com/dev/swms/server/web/servlet/PrintServlet.java
index 6a2945a..99adc77 100644
--- a/src/main/java/com/dev/swms/server/web/servlet/PrintServlet.java
+++ b/src/main/java/com/dev/swms/server/web/servlet/PrintServlet.java
@@ -32,6 +32,7 @@ import com.dev.swms.server.model.shipping.PrintEquipment;
 import com.dev.swms.server.model.shipping.PrintTask;
 import com.dev.swms.server.service.base.WorkerManager;
 import com.dev.swms.server.service.interfaceLog.QueryAppManager;
+import com.dev.swms.server.service.shipping.PickTicketManager;
 import com.dev.swms.server.service.shipping.WaveDocManager;
 import org.apache.log4j.Logger;
 /**
@@ -128,6 +129,14 @@ private static Logger logger = Logger.getLogger(PrintServlet.class);
 			String pc1 =json.has("pc1")?json.getString("pc1"):"";
 			long ptId = json.has("ptId")?Long.parseLong(json.getString("ptId").equals("")?"0":json.getString("ptId")):0;
 			resultJson=this.printTask(itemId,ptId,barCodes, pc1,commonDao);
+		}else if("reprintPrintTask".equals(methodType)){
+			//补打标签
+			String barCodes =json.has("barCodes")?json.getString("barCodes"):"";
+			long ptId = json.has("ptId")?Long.parseLong(json.getString("ptId").equals("")?"0":json.getString("ptId")):0;
+			long quantity = json.has("quantity")?Long.parseLong(json.getString("quantity").equals("")?"0":json.getString("quantity")):0;
+			String mac =json.has("mac")?json.getString("mac"):"";
+			String printName =json.has("printName")?json.getString("printName"):"";
+			resultJson=this.reprintPrintTask(ptId,barCodes, quantity,workerId,commonDao);
 		}
 		logger.info("======"+resultJson.toString());
 		PrintWriter out = null;
@@ -438,5 +447,31 @@ private static Logger logger = Logger.getLogger(PrintServlet.class);
 		resultJson.put("data", data);
 		return resultJson;
 	}
-	
+	/**
+	 * 打印确认
+	 * @param ptId
+	 * @param commonDao
+	 * @return
+	 */
+	public  synchronized JSONObject reprintPrintTask(long ptId,String barCodes,Long qty,Long workerId,CommonDao commonDao){
+		JSONObject resultJson = new JSONObject();
+		String status="0";
+		String msg="";
+		String data="";
+		if(ptId>0){
+			try {
+				PickTicketManager pick = (PickTicketManager) ac.getBean("pickTicketManager");
+				pick.reprintPrintTask(barCodes,ptId,  qty.intValue(),workerId);
+				status="1";
+			} catch (Exception e) {
+				msg=e.getMessage();
+			}
+		}else{
+			msg="ptId参数为null或参数错误!";
+		}
+		resultJson.put("status", status);
+		resultJson.put("msg", msg);
+		resultJson.put("data", data);
+		return resultJson;
+	}
 }
diff --git a/src/main/java/com/dev/swms/server/web/servlet/export/impl/XLSExportGenerator.java b/src/main/java/com/dev/swms/server/web/servlet/export/impl/XLSExportGenerator.java
index 3ceb839..9b1b9ed 100644
--- a/src/main/java/com/dev/swms/server/web/servlet/export/impl/XLSExportGenerator.java
+++ b/src/main/java/com/dev/swms/server/web/servlet/export/impl/XLSExportGenerator.java
@@ -144,7 +144,7 @@ public class XLSExportGenerator implements ExportExcelGenerator, ApplicationCont
 
 	        
 	      }
-	      return data;
+	      return data.trim();
 	   }
    
    public void delFile(String filePath){
diff --git a/src/test/yao/2024.sql b/src/test/yao/2024.sql
index e5755fe..f788b5a 100644
--- a/src/test/yao/2024.sql
+++ b/src/test/yao/2024.sql
@@ -455,3 +455,18 @@ ALTER TABLE   LOCATION_STORAGE    add be_auto tinyint  NULL;
 GO
 update LOCATION_STORAGE set be_auto=0 where be_auto is null;
 GO
+
+--------2025-02-19
+ALTER TABLE   ITEM    add BE_UNPACKING tinyint  NULL;
+GO
+update ITEM set BE_UNPACKING=0 where BE_UNPACKING is null;
+GO
+
+ALTER TABLE   task    add BE_UNPACKING tinyint  NULL;
+GO
+update task set BE_UNPACKING=0 where BE_UNPACKING is null;
+GO
+
+ALTER TABLE   task    add NCR_CODE varchar(50) COLLATE Chinese_PRC_CI_AS  NULL;
+GO
+
diff --git a/src/webapp/WEB-INF/classes/config/origen/base/editItemDetailPage.xml b/src/webapp/WEB-INF/classes/config/origen/base/editItemDetailPage.xml
index 10115a4..6e40034 100644
--- a/src/webapp/WEB-INF/classes/config/origen/base/editItemDetailPage.xml
+++ b/src/webapp/WEB-INF/classes/config/origen/base/editItemDetailPage.xml
@@ -88,7 +88,7 @@
                  
                  
                  
-                 
+                 
 		
 		
 			
diff --git a/src/webapp/WEB-INF/classes/config/origen/shipping/maintainBillPage.xml b/src/webapp/WEB-INF/classes/config/origen/shipping/maintainBillPage.xml
index ba9cd4f..92f19b4 100644
--- a/src/webapp/WEB-INF/classes/config/origen/shipping/maintainBillPage.xml
+++ b/src/webapp/WEB-INF/classes/config/origen/shipping/maintainBillPage.xml
@@ -193,7 +193,7 @@
  /~inventory.SOI: AND task.billCode LIKE {inventory.SOI}~/
   /~task.strBill4: AND task.strBill4 LIKE {task.strBill4}~/
  /~propC2: AND itemKey.lotInfo.propC2 like {propC2} ~/)
-  /~billType.name: AND billType.id = {billType.name}~/
+  /~billType.name: AND pickTicket.billType.id = {billType.name}~/
  /~szone.id: AND szone.id = {szone.id}~/
  order by task.pickTicketDetail.pickTicket.orderDate,task.id desc
  ]]>
diff --git a/src/webapp/WEB-INF/classes/config/origen/shipping/maintainReceivingInventoryManualPage.xml b/src/webapp/WEB-INF/classes/config/origen/shipping/maintainReceivingInventoryManualPage.xml
new file mode 100644
index 0000000..b382fb6
--- /dev/null
+++ b/src/webapp/WEB-INF/classes/config/origen/shipping/maintainReceivingInventoryManualPage.xml
@@ -0,0 +1,135 @@
+
+
+
+	
+		
+			
+				
+				
+				
+					 'COUNT' and location.disabled=false
+ ]]>
+				
+				
+				
+				
+				
+					
+				
	
+			
+		
+		 0 
+ AND location.warehouse = #{SESSION_WAREHOUSE} 
+ /~location.id: AND rd.location.id = {location.id}~/
+ /~itemKeyLot: AND rd.strBill1 LIKE {itemKeyLot}~/
+ /~inventory.barCode: AND rd.barCode LIKE {inventory.barCode}~/
+ /~inventory.propC2: AND rd.itemKey.lotInfo.propC2 LIKE {inventory.propC2}~/
+ /~inventory.storageDate: AND rd.storageDate = {inventory.storageDate}~/
+ 	order by rd.receiveDate asc,rd.id asc
+ ]]>
+		
+			
+			
+			
+			
+			
+			
+			
+				
+			
+			
+			
+				
+			
+			
+			
+			
+					
+			
+		
+		
+			
+				
+					
+					
+				
+				
+					
+				
+				
+					
+					
+					
+				
+			
+		
+	
+
diff --git a/src/webapp/WEB-INF/classes/config/origen/shipping/modifyPickTicketManualPage.xml b/src/webapp/WEB-INF/classes/config/origen/shipping/modifyPickTicketManualPage.xml
index fb6b8c5..c74e247 100644
--- a/src/webapp/WEB-INF/classes/config/origen/shipping/modifyPickTicketManualPage.xml
+++ b/src/webapp/WEB-INF/classes/config/origen/shipping/modifyPickTicketManualPage.xml
@@ -75,6 +75,12 @@
 							editEnabled="true" />
 					
 				
+				
+					0)  ]]>
+					
+				
 			
 		
 	
diff --git a/src/webapp/WEB-INF/classes/config/origen/shipping/setPickedQuantityPage.xml b/src/webapp/WEB-INF/classes/config/origen/shipping/setPickedQuantityPage.xml
index 99fb563..df514be 100644
--- a/src/webapp/WEB-INF/classes/config/origen/shipping/setPickedQuantityPage.xml
+++ b/src/webapp/WEB-INF/classes/config/origen/shipping/setPickedQuantityPage.xml
@@ -44,7 +44,7 @@ where location.code like :param
  ]]>
 			
 			
-			
 		
@@ -59,12 +59,12 @@ where location.code like :param
 					
 					
 					
-					
+					
 					
 				
 				
 					
+						parameter="task.id,task.dstLP.id,task.srcLoc.id,task.itemKey.propC1,task.planQuantity,workerId,beUrgent,task.ncrCode,loc_id" />