diff --git a/src/main/java/com/dev/swms/server/model/base/Location.java b/src/main/java/com/dev/swms/server/model/base/Location.java index b74b9b3..ae0164f 100644 --- a/src/main/java/com/dev/swms/server/model/base/Location.java +++ b/src/main/java/com/dev/swms/server/model/base/Location.java @@ -38,6 +38,7 @@ public class Location extends VersionalEntity { private boolean mixItem = false; /** 是否允许批次混放 */ private boolean mixLot = false; + /** 容器 */ private Container container; diff --git a/src/main/java/com/dev/swms/server/model/base/LotInfo.java b/src/main/java/com/dev/swms/server/model/base/LotInfo.java index b1e2374..ad0ffe2 100644 --- a/src/main/java/com/dev/swms/server/model/base/LotInfo.java +++ b/src/main/java/com/dev/swms/server/model/base/LotInfo.java @@ -49,10 +49,11 @@ public class LotInfo extends DomainModel implements ApplicationContextAware{ private Long propL2;// private Long propL3;// private String propLC1;//OA暂存库存标记 - private String propLC2;//成品标记 - private String propLC3;//元值 + private String propLC2;//成品标记/扩展2 + private String propLC3;//元值/扩展1 private String propLC4;//币种 - + private String propLC5;//用途 + private String propLC6;// private static ApplicationContext ac; private CommonDao commonDao; @@ -86,6 +87,7 @@ public class LotInfo extends DomainModel implements ApplicationContextAware{ this.propL1 = propL1; this.propL2 = propL2; this.propL3 = propL3; + } public LotInfo(){ @@ -128,6 +130,23 @@ public class LotInfo extends DomainModel implements ApplicationContextAware{ } } + + public String getPropLC5() { + return propLC5; + } + + public void setPropLC5(String propLC5) { + this.propLC5 = propLC5; + } + + public String getPropLC6() { + return propLC6; + } + + public void setPropLC6(String propLC6) { + this.propLC6 = propLC6; + } + public double getPropN4() { return propN4; } diff --git a/src/main/java/com/dev/swms/server/model/base/itemKey.hbm.xml b/src/main/java/com/dev/swms/server/model/base/itemKey.hbm.xml index bd9db92..e7321a2 100644 --- a/src/main/java/com/dev/swms/server/model/base/itemKey.hbm.xml +++ b/src/main/java/com/dev/swms/server/model/base/itemKey.hbm.xml @@ -81,6 +81,10 @@ length="250" /> + + diff --git a/src/main/java/com/dev/swms/server/model/inventory/InventoryLog.java b/src/main/java/com/dev/swms/server/model/inventory/InventoryLog.java index ba34345..77644d3 100644 --- a/src/main/java/com/dev/swms/server/model/inventory/InventoryLog.java +++ b/src/main/java/com/dev/swms/server/model/inventory/InventoryLog.java @@ -62,8 +62,8 @@ public class InventoryLog extends Entity { private String serial;//序列号 private String endRegion;//-工作站 private String strbill1;//移动类型 - private String strbill2;//- - private String strbill3;// + private String strbill2;//-LOC + private String strbill3;//工厂 public String getStrbill1() { diff --git a/src/main/java/com/dev/swms/server/model/inventory/InventoryView.java b/src/main/java/com/dev/swms/server/model/inventory/InventoryView.java index f58e699..4b9b146 100644 --- a/src/main/java/com/dev/swms/server/model/inventory/InventoryView.java +++ b/src/main/java/com/dev/swms/server/model/inventory/InventoryView.java @@ -29,6 +29,11 @@ public class InventoryView extends Entity{ private String propC7;// private String propC8;// private String propC9;//工厂 + private String propLC1;//OA暂存库存标记 + private String propLC2;//成品标记/扩展2 + private String propLC3;//元值/扩展1 + private String propLC4;//币种 + private String propLC5;//用途 private String soi;// private Date propD1;//生产日期 private Date propD2;//失效日期 @@ -62,6 +67,36 @@ public class InventoryView extends Entity{ + public String getPropLC1() { + return propLC1; + } + public void setPropLC1(String propLC1) { + this.propLC1 = propLC1; + } + public String getPropLC2() { + return propLC2; + } + public void setPropLC2(String propLC2) { + this.propLC2 = propLC2; + } + public String getPropLC3() { + return propLC3; + } + public void setPropLC3(String propLC3) { + this.propLC3 = propLC3; + } + public String getPropLC4() { + return propLC4; + } + public void setPropLC4(String propLC4) { + this.propLC4 = propLC4; + } + public String getPropLC5() { + return propLC5; + } + public void setPropLC5(String propLC5) { + this.propLC5 = propLC5; + } public Date getPropD3() { return propD3; } diff --git a/src/main/java/com/dev/swms/server/model/inventory/inventoryView.hbm.xml b/src/main/java/com/dev/swms/server/model/inventory/inventoryView.hbm.xml index 3d716f8..cb4a798 100644 --- a/src/main/java/com/dev/swms/server/model/inventory/inventoryView.hbm.xml +++ b/src/main/java/com/dev/swms/server/model/inventory/inventoryView.hbm.xml @@ -23,6 +23,11 @@ + + + + + diff --git a/src/main/java/com/dev/swms/server/model/receiving/asnDetail.hbm.xml b/src/main/java/com/dev/swms/server/model/receiving/asnDetail.hbm.xml index 3573bbd..8af6d0c 100644 --- a/src/main/java/com/dev/swms/server/model/receiving/asnDetail.hbm.xml +++ b/src/main/java/com/dev/swms/server/model/receiving/asnDetail.hbm.xml @@ -62,6 +62,10 @@ length="250" /> + + diff --git a/src/main/java/com/dev/swms/server/service/base/ImportFileManager.java b/src/main/java/com/dev/swms/server/service/base/ImportFileManager.java index 542373a..b3fd9a4 100644 --- a/src/main/java/com/dev/swms/server/service/base/ImportFileManager.java +++ b/src/main/java/com/dev/swms/server/service/base/ImportFileManager.java @@ -63,4 +63,11 @@ public interface ImportFileManager extends BaseManager{ /**华工高理_客户导入*/ @Transactional void importCustomer(File file); + + /** + * 导入工单明细 + * @param file + */ + @Transactional + void importOutOrderDetail(File file); } diff --git a/src/main/java/com/dev/swms/server/service/base/pojo/DefaultAgvTaskManager.java b/src/main/java/com/dev/swms/server/service/base/pojo/DefaultAgvTaskManager.java index 6c08354..aedd797 100644 --- a/src/main/java/com/dev/swms/server/service/base/pojo/DefaultAgvTaskManager.java +++ b/src/main/java/com/dev/swms/server/service/base/pojo/DefaultAgvTaskManager.java @@ -2305,6 +2305,9 @@ public class DefaultAgvTaskManager extends DefaultBaseManager implements AgvTask boolean flag=false; AgvTask agv=commonDao.load(AgvTask.class, id); if(agv.isBeIssue()&&agv.getStatus().equals(STATUS.ATCALL)) { + if(agv.getJobPriorityType()>0&&agv.getJobPriority()>200) { + break; + } agv.setJobPriorityType(1L); agv.setJobPriority(h); String str = interfaceReqManager.doWmsReqAgv(ApiURL.eoutAGV,agv.yxjAGVJSON(agv),agv.getRobotJobId()); diff --git a/src/main/java/com/dev/swms/server/service/base/pojo/DefaultImportFileManager.java b/src/main/java/com/dev/swms/server/service/base/pojo/DefaultImportFileManager.java index 587f866..9879133 100644 --- a/src/main/java/com/dev/swms/server/service/base/pojo/DefaultImportFileManager.java +++ b/src/main/java/com/dev/swms/server/service/base/pojo/DefaultImportFileManager.java @@ -1741,5 +1741,121 @@ public class DefaultImportFileManager extends DefaultBaseManager implements Impo e.printStackTrace(); } } - + + @Override + public void importOutOrderDetail(File file) { + try { + Workbook workbook = Workbook.getWorkbook(file); + Sheet sheet = workbook.getSheet(0);// 得到excel第一页的内容 + /* 查询单据类型*/ + List billTypes=commonDao.findByQuery( + "from BillType bt where code='YINVENTORY' "); + Warehouse warehouse=this.load(Warehouse.class, 1l); + for (int i = 1; i resultList = commonDao.findByQuery(" from PickTicket pt where pt.code=:RQORD and " + + "pt.status='OPEN' ",new String[] { "RQORD"},new Object[] {code.trim()}); + if (resultList.size()>0) { + pickTicket=resultList.get(0); + }else { + /* 新建工单*/ + pickTicket.setSourceType(sourceType); + pickTicket.setCode(code); + pickTicket.setCollectNo(code); + pickTicket.setRelatedBill2(code); + try { + pickTicket.setOrderDate(sdf.parse(orderDate1)); + } catch (Exception e) { + e.printStackTrace(); + } + pickTicket.setStatus(status); + pickTicket.setPackageQuantity(0); + pickTicket.setBOLQuantity(0); + pickTicket.setOrderQuantity(0); + pickTicket.setAllocatedQuantity(0); + pickTicket.setPickedQuantity(0); + pickTicket.setShippedQuantity(0); + if(billTypes.size()>0) { + pickTicket.setBillType(billTypes.get(0)); + } + pickTicket.setWorkerName1(lotPropC9); + pickTicket.setUpdateTime(new Date()); + pickTicket.setWarehouse(warehouse); + commonDao.store(pickTicket); + /*写入工单集合*/ + } + Item item=null; + List itemList=commonDao.findByQuery( + "from Item i where i.code=:code", + new String[] { "code" }, new Object[] { itemCode}); + if (itemList.size()>0) { + item=itemList.get(0); + }else { + break; + } + PickTicketDetail pickTicketDetail=new PickTicketDetail(); + List pickTicketDetailList=commonDao.findByQuery( + "from PickTicketDetail ptd where ptd.pickTicket.id=:ptId and ptd.lineNumber=:lineNumber and ptd.item.code=:itemCode", + new String[] { "ptId","lineNumber","itemCode" }, new Object[] { pickTicket.getId(),lineNumber,itemCode }); + if (pickTicketDetailList.size()>0) { + /*重复明细*/ + pickTicketDetail=pickTicketDetailList.get(0); + pickTicket.setOrderQuantity(pickTicket.getOrderQuantity()+Double.valueOf(orderQuantity)-pickTicketDetail.getOrderQuantity()); + commonDao.store(pickTicket); + }else { + /* 新增明细*/ + pickTicket.setOrderQuantity(pickTicket.getOrderQuantity()+Double.valueOf(orderQuantity)); + pickTicket.setPackageQuantity(pickTicket.getPackageQuantity()+1); + commonDao.store(pickTicket); + } + pickTicketDetail.setItem(item); + pickTicketDetail.setLineNumber(lineNumber); + pickTicketDetail.setPickTicket(pickTicket); + pickTicketDetail.getLineNumber(); +// pickTicketDetail.setSOI(SOI); + pickTicketDetail.setOrderQuantity(Double.valueOf(orderQuantity)); + pickTicketDetail.setAllocatedQuantity(0); + pickTicketDetail.setPickedQuantity(0); + NewLotInfo newLotInfo=new NewLotInfo(); + newLotInfo.setPropC2(lotPropC2); + newLotInfo.setPropC9(lotPropC9); + newLotInfo.setPropC3(lotPropC3); + newLotInfo.setPropC5(lotPropC5); + pickTicketDetail.setNewLotInfo(newLotInfo); + pickTicketDetail.setStrBill9(strBill9); + pickTicketDetail.setLocType(locType); + pickTicketDetail.setStrBill14(barCode); + commonDao.store(pickTicketDetail); + } + } catch (BiffException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } } 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 25a8288..b7db53a 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 @@ -391,6 +391,9 @@ public class DefaultItemManager extends DefaultBaseManager implements dbKey.getLotInfo().setPropLC1(itemKey.getLotInfo().getPropLC1()); dbKey.getLotInfo().setPropLC2(itemKey.getLotInfo().getPropLC2()); dbKey.getLotInfo().setPropLC3(itemKey.getLotInfo().getPropLC3()); + dbKey.getLotInfo().setPropLC4(itemKey.getLotInfo().getPropLC4()); + dbKey.getLotInfo().setPropLC5(itemKey.getLotInfo().getPropLC5()); + dbKey.getLotInfo().setPropLC6(itemKey.getLotInfo().getPropLC6()); try { dbKey.getLotInfo().setPropD1(itemKey.getLotInfo().getPropD1()==null ? null : sdf.parse(sdf.format(itemKey.getLotInfo().getPropD1()))); dbKey.getLotInfo().setPropD2(itemKey.getLotInfo().getPropD2()==null ? null : sdf.parse(sdf.format(itemKey.getLotInfo().getPropD2()))); @@ -527,6 +530,24 @@ public class DefaultItemManager extends DefaultBaseManager implements if ("".equals(lotInfo.getPropC9())) { lotInfo.setPropC9(null); } + if ("".equals(lotInfo.getPropLC1())) { + lotInfo.setPropLC1(null); + } + if ("".equals(lotInfo.getPropLC2())) { + lotInfo.setPropLC2(null); + } + if ("".equals(lotInfo.getPropLC3())) { + lotInfo.setPropLC3(null); + } + if ("".equals(lotInfo.getPropLC4())) { + lotInfo.setPropLC4(null); + } + if ("".equals(lotInfo.getPropLC5())) { + lotInfo.setPropLC5(null); + } + if ("".equals(lotInfo.getPropLC6())) { + lotInfo.setPropLC6(null); + } //保质期处理 /* if (item.getDefaultLotRule() != null && item.getDefaultLotRule().getLotRuleComponent().getTrackPropD1()) { if(lotInfo.getPropD1()==null){ @@ -537,13 +558,13 @@ public class DefaultItemManager extends DefaultBaseManager implements } }*/ //写入供应商的名称到lotInfo - if (lotInfo.getPropL1() != null && lotInfo.getPropL1() != 0) { - Structure supplier = this.commonDao.load(Structure.class, lotInfo.getPropL1()); - lotInfo.setPropLC1(supplier.getName()); - } else { - lotInfo.setPropL1(null); - lotInfo.setPropLC1(null); - } +// if (lotInfo.getPropL1() != null && lotInfo.getPropL1() != 0) { +// Structure supplier = this.commonDao.load(Structure.class, lotInfo.getPropL1()); +// lotInfo.setPropLC1(supplier.getName()); +// } else { +// lotInfo.setPropL1(null); +// lotInfo.setPropLC1(null); +// } //校验批次属性是否符合管理要求 /*if (verifyLot) { diff --git a/src/main/java/com/dev/swms/server/service/count/pojo/DefaultCountPlanManager.java b/src/main/java/com/dev/swms/server/service/count/pojo/DefaultCountPlanManager.java index 6f49e72..c9d47d7 100644 --- a/src/main/java/com/dev/swms/server/service/count/pojo/DefaultCountPlanManager.java +++ b/src/main/java/com/dev/swms/server/service/count/pojo/DefaultCountPlanManager.java @@ -1135,7 +1135,7 @@ public class DefaultCountPlanManager extends DefaultBaseManager implements }else { //料号库位盘点任务 String hql=" from Inventory inv where inv.queuedQuantity=0 and inv.quantity>0 " - + "and inv.status='已入库' and i.itemKey.item.id<>2254883 "; + + "and inv.status='已入库' and inv.itemKey.item.id<>2254883 "; //盘点等级 if(countPlan.getCountCode()!=null&&!countPlan.getCountCode().equals("")) { String code=""; diff --git a/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceReqManager.java b/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceReqManager.java index b43372b..0837f0a 100644 --- a/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceReqManager.java +++ b/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceReqManager.java @@ -1194,6 +1194,7 @@ public class DefaultInterfaceReqManager extends DefaultBaseManager implements In if(pickTicket!=null&&pickTicket.getCode().indexOf("CP")==-1 &&((pickTicket.getSourceId()!=null&&pickTicket.getSourceId().indexOf("OT")== -1) || pickTicket.getSourceId()==null )) { + String bs=doWmsReqSap(getPropertiesParm("ldxt.SAP")+ApiURL.doWmsReqSap, jsonobj.toString(),"数据"+pickTicket.getCode()); if(bs!=null&&!bs.equals("")&&OUTPUT(bs)) { diff --git a/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceRespManager.java b/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceRespManager.java index a7b7ee1..2e27437 100644 --- a/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceRespManager.java +++ b/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceRespManager.java @@ -1450,7 +1450,7 @@ public class DefaultInterfaceRespManager extends DefaultBaseManager implements I lotInfo.setPropC9(company); lotInfo.setPropLC3(metaValue); lotInfo.setPropLC4(currencyType); - + lotInfo.setPropLC5(USAGE);//用途 asnDetail.setExpectedQuantity(quantity);//订单数量 asnDetail.setItem(item);//物料描述(货品)(物料料号) asnDetail.setLotInfo(lotInfo); @@ -1779,7 +1779,7 @@ public class DefaultInterfaceRespManager extends DefaultBaseManager implements I String WAERS=asn.has("WAERS") ? asn.getString("WAERS") : "";//货币单位 String MENGE=asn.has("MENGE") ? asn.getString("MENGE") : "";//数量 String requisitioner=asn.has("requisitioner") ? asn.getString("requisitioner") : "";//工号 - + String USAGE=asn.has("USAGE")? asn.getString("USAGE"):"";//用途 List asns = commonDao.findByQuery(" from ASN asn where asn.code=:code ", new String[] { "code"},new Object[] {PO}); ASN asndb=EntityFactory.getEntity(ASN.class); @@ -2003,6 +2003,7 @@ public class DefaultInterfaceRespManager extends DefaultBaseManager implements I lotInfo.setPropC5(propC5); lotInfo.setPropC6(requisitioner); lotInfo.setPropC7(requestor); + if(item.getFeeType()!=null&&item.getFeeType().equals("OA")&& requisitioner!=null&&requisitioner.length()>0) { List list= commonDao.findByQuery(" from Personnel p where p.number='"+requisitioner+"'"); @@ -2012,10 +2013,9 @@ public class DefaultInterfaceRespManager extends DefaultBaseManager implements I lotInfo.setPropC7(p.getCode()); lotInfo.setPropC4(p.getBumen()); } - } - lotInfo.setPropC9(WERKS); - + lotInfo.setPropC9(WERKS);//工厂 + lotInfo.setPropLC5(USAGE);//用途 lotInfo.setPropC1(pc1); asnDetail.setLotInfo(lotInfo); asnDetail.setAsn(asndb); @@ -3018,7 +3018,7 @@ public class DefaultInterfaceRespManager extends DefaultBaseManager implements I sb.append( "select max(inv.id) id,max(ik.PROP_C6) as PROP_C6,max(ik.PROP_C4) as PROP_C4,(CONVERT(VARCHAR(10),min(inv.STORAGE_DATE),120)) TACDA," + " max(ik.PROP_C8),(CONVERT(VARCHAR(10),max(ik.PROP_D3),120)) as PROP_D3,ik.PROP_C9,max(i.NAME) iname,i.code icode," + "max(i.UNIT) unit,sum(inv.QUANTITY) sum ,inv.status , max(ik.PROP_C7),(CONVERT(VARCHAR(10),min(inv.STORAGE_DATE),120)) as STORAGE_DATE" - + " ,max(i.STR_EXTEND3) STR_EXTEND3,max(i.STR_EXTEND2) STR_EXTEND2" + + " ,max(i.STR_EXTEND3) STR_EXTEND3,max(i.STR_EXTEND2) STR_EXTEND2,max(ik.PROP_LC5) as PROP_LC5 " + " from INVENTORY inv " +" left join ITEM_KEY ik on inv.ITEM_KEY_ID=ik.ID " +" left join ITEM i on ik.ITEM_ID=i.ID " @@ -3091,6 +3091,7 @@ public class DefaultInterfaceRespManager extends DefaultBaseManager implements I item.put("unitPrice", 0);//单价 } item.put("currencyType", inventory[15]+"");//单价币种 + item.put("USAGE", inventory[16]+"");//用途 jsonA.add(item); } 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 4e834d7..def79c8 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 @@ -3591,14 +3591,12 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA @Override - public JSONObject scanpickItemCode(String taskId,String jhItem,long userId,long warehouseId) { + public synchronized JSONObject scanpickItemCode(String taskId,String jhItem,long userId,long warehouseId) { JSONObject resultJson = new JSONObject(); JSONObject obj = new JSONObject(); String status = "0"; String msg = ""; String data = ""; - - try { if (userId > 0) { @@ -5107,6 +5105,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA commonDao.store(newtask); }else{ cancelAllcate(taskId, userId, warehouseId,false); + //取消分配 Task newtask=againAllcate(ptd, invId, quantity, endRegion,worker==null?"":worker.getName()); //发送AGV任务 if(wa.getId()==1766) { 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 868aef3..c0fb3b1 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 @@ -2292,7 +2292,6 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo String hql1=" from Inventory i where i.itemKey.item.id=:id and i.location.type in('存货','不良品') " + "and i.status='已入库' and i.quantity-i.queuedQuantity>0 and i.counPlan is null " + " "; - //指定序列号 if(ptd.getStrBill14()!=null&&!ptd.getStrBill14().equals("")) { hql1+=" and i.barCode='"+ptd.getStrBill14()+"'"; diff --git a/src/main/java/com/dev/swms/server/service/receiving/MoveDocManager.java b/src/main/java/com/dev/swms/server/service/receiving/MoveDocManager.java index 7f6747e..0442f21 100644 --- a/src/main/java/com/dev/swms/server/service/receiving/MoveDocManager.java +++ b/src/main/java/com/dev/swms/server/service/receiving/MoveDocManager.java @@ -302,7 +302,8 @@ public interface MoveDocManager extends BaseManager { /** 出空托*/ @Transactional - void stockCk(Inventory inventory,String gzz); + void stockCk(String gzz,List invlist); + @Transactional LibraryTask stockCk(Stock st,String gzzCode,String libraryTaskType,String relatedBill1,String classification,String relatedBill4); diff --git a/src/main/java/com/dev/swms/server/service/receiving/pojo/DefaultMoveDocManager.java b/src/main/java/com/dev/swms/server/service/receiving/pojo/DefaultMoveDocManager.java index e9ff065..5fb1453 100644 --- a/src/main/java/com/dev/swms/server/service/receiving/pojo/DefaultMoveDocManager.java +++ b/src/main/java/com/dev/swms/server/service/receiving/pojo/DefaultMoveDocManager.java @@ -3779,12 +3779,17 @@ public class DefaultMoveDocManager extends DefaultBaseManager implements MoveDoc return t2; } @Override - public void stockCk(Inventory inventory,String gzzCode) { + public void stockCk(String gzz,List invlist) { int seq = 1; int i = 1; - String endRegion=gzzCode; - Stock st = inventory.getLP(); - stockCk(st, gzzCode,LibraryTaskType.ckt,null,"出空托","1"); + for(Long id:invlist) { + Inventory inventory=commonDao.load(Inventory.class, id); + inventory.setQueuedQuantity(inventory.getQuantity()); + Stock st = inventory.getLP(); + commonDao.store(inventory); + stockCk(st, gzz,LibraryTaskType.ckt,null,"出空托","1"); + } + } /** 查询当前库位组对应的任务*/ private LibraryTask findLibraryTaskFor1(LocationStorage ls) { @@ -3808,21 +3813,8 @@ public class DefaultMoveDocManager extends DefaultBaseManager implements MoveDoc public void stockCk(List ids) { // int gzz=602; // TODO 自动生成的方法存根 - for (Long id : ids) { - Inventory inventory=this.load(Inventory.class, id); - /*if (inventory.getQueuedQuantity()>0) { - inventory.setQueuedQuantity(inventory.getQuantity()); - commonDao.store(inventory); - stockCk(inventory); - }*/ - inventory.setQueuedQuantity(inventory.getQuantity()); - commonDao.store(inventory); - stockCk(inventory,603+""); - /*gzz++; - if (gzz==605) { - gzz=602; - }*/ - } + stockCk(603+"",ids); + } @Override 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 38754d8..1d94add 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 @@ -469,7 +469,7 @@ public interface PickTicketManager extends BaseManager { @Transactional List new411pickConfirmBar(Long pickTicketId, Long workerId,List ids); - /**311转库*/ + /**000转库*/ @Transactional void newdeposit(Long pickTicketId, Long workerId); 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 9b5ad28..d6cd785 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 @@ -402,19 +402,19 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick commonDao.store(pt); refreshOrderQuantity(pt); } else { - PickTicketDetail newpickTicketDetail = this.load(PickTicketDetail.class, pickTicketDetail.getId()); - newpickTicketDetail.setItem(item); - newpickTicketDetail.setOrderQuantity(pickTicketDetail.getOrderQuantity()); - newpickTicketDetail.setOrderQtyOfMasterUnit(pickTicketDetail.getOrderQuantity()); - newpickTicketDetail.getNewLotInfo().setPropC2(pickTicketDetail.getNewLotInfo().getPropC2()); - newpickTicketDetail.getNewLotInfo().setPropC3(pickTicketDetail.getNewLotInfo().getPropC3()); - newpickTicketDetail.getNewLotInfo().setPropC9(pickTicketDetail.getNewLotInfo().getPropC9()); - newpickTicketDetail.setStrBill13(pt.getDescription()); - newpickTicketDetail.setStrBill14(pickTicketDetail.getStrBill14()); - newpickTicketDetail.setStrBill15(pickTicketDetail.getStrBill15()); - newpickTicketDetail.setStrBill12(pickTicketDetail.getStrBill12()); - commonDao.store(newpickTicketDetail); - pt.addPickTicketDetail(newpickTicketDetail); +// PickTicketDetail newpickTicketDetail = this.load(PickTicketDetail.class, pickTicketDetail.getId()); +// newpickTicketDetail.setItem(item); +// newpickTicketDetail.setOrderQuantity(pickTicketDetail.getOrderQuantity()); +// newpickTicketDetail.setOrderQtyOfMasterUnit(pickTicketDetail.getOrderQuantity()); +// newpickTicketDetail.getNewLotInfo().setPropC2(pickTicketDetail.getNewLotInfo().getPropC2()); +// newpickTicketDetail.getNewLotInfo().setPropC3(pickTicketDetail.getNewLotInfo().getPropC3()); +// newpickTicketDetail.getNewLotInfo().setPropC9(pickTicketDetail.getNewLotInfo().getPropC9()); +// newpickTicketDetail.setStrBill13(pt.getDescription()); +// newpickTicketDetail.setStrBill14(pickTicketDetail.getStrBill14()); +// newpickTicketDetail.setStrBill15(pickTicketDetail.getStrBill15()); +// newpickTicketDetail.setStrBill12(pickTicketDetail.getStrBill12()); + commonDao.store(pickTicketDetail); +// pt.addPickTicketDetail(newpickTicketDetail); // pt.setOrderDate(new Date()); commonDao.store(pt); refreshOrderQuantity(pt); @@ -4113,9 +4113,11 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick Location srcLoc = commonDao.load(Location.class, srcLocId);// 目标库位 Stock dstLP = commonDao.load(Stock.class, dstLPId);// 目标容器 + if (pt.getSourceType() != null && !pt.getSourceType().equals("411")) { if(dstLP==null) { throw new BusinessException("无容器码,请绑定"); } + } ItemKey itemKey =commonDao.load(ItemKey.class, task.getItemKey().getId()); Item item = this.load(Item.class, itemKey.getItem().getId()); Location loc = this.load(Location.class, task.getSrcLoc().getId()); @@ -4270,6 +4272,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick task.getSrcLoc(),pt.getSourceType()); } else { + Inventory newInventory = EntityFactory.getEntity(Inventory.class); newInventory.setLocation(dstLoc); Warehouse warehouse = this.load(Warehouse.class, 1l); @@ -4298,6 +4301,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick ItemKey itemKey1 = itemManager.getItemKey(new ItemKey("", item, lot, null, ""), Boolean.TRUE); commonDao.store(itemKey1); + String sql = " from Inventory inv where inv.itemKey.id=" + itemKey1.getId() + " and inv.location.id=" + srcLoc.getId(); if (task.getBarCode() != null && task.getBarCode().length() > 0) { @@ -8393,7 +8397,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick public void newdeposit(Long pickTicketId, Long workerId) { PickTicket pickTicket = this.load(PickTicket.class, pickTicketId); - if (pickTicket.getSourceType() != null && (pickTicket.getSourceType().equals("311") + if (pickTicket.getSourceType() != null && (pickTicket.getSourceType().equals("000") ||pickTicket.getSourceType().equals("313"))) { List ts = this.commonDao.findByQuery("from Task t where t.pickTicketDetail.pickTicket.id=" + pickTicket.getId() + " and t.movedQuantityMU0 " + +" and inv.quantity>0 "; + if(t.getBarCode()!=null&&t.getBarCode().length()>0) { + sql+=" and inv.barCode='"+t.getBarCode()+"' "; + } List invs=commonDao.findByQuery(sql); if(invs.size()>0) { PickTicketDetail ptd=commonDao.load(PickTicketDetail.class, t.getPickTicketDetail().getId()); @@ -8432,7 +8439,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick lot.setPropC8(t.getItemKey().getLotInfo().getPropC8()); } if(t.getItemKey().getLotInfo().getPropC9()!=null) { - lot.setPropC9(t.getItemKey().getLotInfo().getPropC9()); + lot.setPropC9(t.getPickTicketDetail().getStrBill9()); } if(t.getItemKey().getLotInfo().getPropD1()!=null) { lot.setPropD1(t.getItemKey().getLotInfo().getPropD1()); @@ -8440,12 +8447,20 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick if(t.getItemKey().getLotInfo().getPropD2()!=null) { lot.setPropD2(t.getItemKey().getLotInfo().getPropD2()); } - ItemKey itemkey=null; + if(t.getItemKey().getLotInfo().getPropD3()!=null) { + lot.setPropD3(t.getItemKey().getLotInfo().getPropD3()); + } + if(t.getItemKey().getLotInfo().getPropLC5()!=null) { + lot.setPropLC5(t.getItemKey().getLotInfo().getPropLC5()); + } + double t_qty=t.getPlanQuantity()-t.getMovedQuantityMU();//拣货数 + + ItemKey itemkey=null; itemkey=itemManager.getItemKey(new ItemKey( "", t.getItemKey().getItem(), lot, new Date(), ""), Boolean.TRUE); t.setAgvStatus(3); t.setInventoryStatus("交单完成"); - t.setDstLoc(commonDao.load(Location.class, 97845L)); + t.setDstLoc(commonDao.load(Location.class, 88242L)); t.setMovedQuantityMU(t.getPlanQuantity()); // t.setOperateTime(new Date()); t.setOperator(UserHolder.getUser().getName()); @@ -8457,14 +8472,79 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick commonDao.store(t); commonDao.store(ptd); commonDao.store(pickTicket); - Inventory inv =invs.get(0); - inv.setQueuedQuantity(0); - inv.setItemKey(itemkey); - commonDao.store(inv); - inventoryManager.addInventoryLog(InventoryLogType.SHIPPING, -1, t.getBillCode(), t.getDstLoc(), null, - inv.getItemKey(), inv.getStorageDate(), inv.getSOI(), t.getPlanQuantity(), null, - inv.getStatus(), inv.getId(), "转库", t.getPickTicketDetail().getPickTicket().getBillType(), - 0L, inv.getBarCode(),t.getSrcLoc(),t.getPickTicketDetail().getPickTicket().getSourceType()); + double invqty1=0; + double invqty2=0; + for(Inventory inv:invs) { + invqty1=inv.getQueuedQuantity();//占用数量 + invqty2=inv.getQuantity();//库存数量 + + if(invqty2<=t_qty) { + inv.setQueuedQuantity(0); + inv.setItemKey(itemkey); + commonDao.store(inv); + t_qty=t_qty-t_qty; + inventoryManager.addInventoryLog(InventoryLogType.SHIPPING, -1, t.getBillCode(), t.getDstLoc(), null, + inv.getItemKey(), inv.getStorageDate(), inv.getSOI(), t.getPlanQuantity(), null, + inv.getStatus(), inv.getId(), "转库", t.getPickTicketDetail().getPickTicket().getBillType(), + 0L, inv.getBarCode(),t.getSrcLoc(),t.getPickTicketDetail().getPickTicket().getSourceType()); + }else { + if(invqty2>t_qty) { + + Inventory newInventory = EntityFactory.getEntity(Inventory.class); + newInventory.setLocation(inv.getLocation()); + Warehouse warehouse = this.load(Warehouse.class, 1l); + newInventory.setWarehouse(warehouse); + newInventory.setQuantity(t_qty); + newInventory.setQueuedQuantity(0); + newInventory.setQtyOfMasterPack(t_qty); + newInventory.setStatus(inv.getStatus()); + newInventory.setSOI(t.getBillCode()); + newInventory.setStorageDate(t.getStorageDate()); + newInventory.setItemKey(itemkey); +// newInventory.setLP(dstLP); + newInventory.setWarehouseArea(inv.getWarehouseArea()); + newInventory.setBarCode(t.getBarCode()); + newInventory.setStatuss(inv.getStatuss()); + String sql1 = " from Inventory inv where inv.itemKey.id=" + itemkey.getId() + + " and inv.location.id=" + inv.getLocation().getId(); + if (t.getBarCode() != null && t.getBarCode().length() > 0) { + sql += " and inv.barCode='" + t.getBarCode() + "'"; + } + List listinvs = commonDao.findByQuery(sql1); + if (listinvs.size() > 0) { + newInventory = listinvs.get(0); + newInventory.setQuantity(newInventory.getQuantity() + t_qty); + newInventory.setQtyOfMasterPack(newInventory.getQuantity()); + } else { + newInventory.setLocation(inv.getLocation()); + newInventory.setItemKey(itemkey); + newInventory.setStatus("已入库"); + newInventory.setTaskid(null); + } + commonDao.store(newInventory); + inv.setQuantity(inv.getQuantity() - t_qty); + if(inv.getQuantity()<0) { + throw new BusinessException(inv.getLocation().getCode()+"不能大于可用数量"+inv.getQuantity()+""); + } + inv.setQtyOfMasterPack(inv.getQuantity()); + //输入拣货数量大于当前task未拣货数量,库存占用只减去未拣货数量 + inv.setQueuedQuantity(inv.getQueuedQuantity() - t_qty); + if(inv.getQueuedQuantity()<=0) { + inv.setQueuedQuantity(0); + } + commonDao.store(inv); + inventoryManager.addInventoryLog(InventoryLogType.SHIPPING, -1, t.getBillCode(), t.getDstLoc(), null, + inv.getItemKey(), inv.getStorageDate(), inv.getSOI(), t.getPlanQuantity(), null, + inv.getStatus(), inv.getId(), "转库", t.getPickTicketDetail().getPickTicket().getBillType(), + 0L, inv.getBarCode(),t.getSrcLoc(),t.getPickTicketDetail().getPickTicket().getSourceType()); + t_qty=0; + } + } + if(t_qty==0) { + break; + } + } + }else { throw new BusinessException("该料号:"+t.getItemKey().getItem().getCode()+"库存不能直接转"); } @@ -8472,10 +8552,10 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick ids.add(t.getId()); } - boolean saphs= interfaceReqManager.wmsSapFaliaohuichuang(ids); - submitWMSTask(pickTicket, ids, saphs); +// boolean saphs= interfaceReqManager.wmsSapFaliaohuichuang(ids); +// submitWMSTask(pickTicket, ids, saphs); } else { - throw new BusinessException("该出库单不是311转库"); + throw new BusinessException("该出库单不是000转库"); } } 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 7a6df2c..cd3039b 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 @@ -75,6 +75,7 @@ public class ASNReceiveServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static Logger logger = Logger.getLogger(ASNReceiveServlet.class); protected static ApplicationContext ac; + private final Object lock = new Object(); /** * @see HttpServlet#HttpServlet() */ @@ -457,7 +458,7 @@ public class ASNReceiveServlet extends HttpServlet { //PDA扫描料号 String taskId =json.has("taskId")?json.getString("taskId"):""; String jhItem =json.has("jhItem")?json.getString("jhItem"):""; - synchronized ("scanpickItemCode") { + synchronized (lock) { resultJson=app.scanpickItemCode(taskId,jhItem,workerId, wId); } }else if("picking".equals(methodType)){ diff --git a/src/test/yao/2025.sql b/src/test/yao/2025.sql index 5b6949d..20e667b 100644 --- a/src/test/yao/2025.sql +++ b/src/test/yao/2025.sql @@ -33,5 +33,13 @@ CREATE TABLE WorkOrderAllocationInfo ( ); GO +-----------2025-04-02 - +ALTER TABLE ITEM_KEY add PROP_LC5 varchar(50) COLLATE Chinese_PRC_CI_AS NULL; +GO +ALTER TABLE ITEM_KEY add PROP_LC6 varchar(50) COLLATE Chinese_PRC_CI_AS NULL; +GO +ALTER TABLE ASN_DETAIL add PROP_LC5 varchar(50) COLLATE Chinese_PRC_CI_AS NULL; +GO +ALTER TABLE ASN_DETAIL add PROP_LC6 varchar(50) COLLATE Chinese_PRC_CI_AS NULL; +GO \ No newline at end of file diff --git a/src/webapp/WEB-INF/classes/config/origen/base/editBillTypeConfigPage.xml b/src/webapp/WEB-INF/classes/config/origen/base/editBillTypeConfigPage.xml index 04a362a..e30b835 100644 --- a/src/webapp/WEB-INF/classes/config/origen/base/editBillTypeConfigPage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/base/editBillTypeConfigPage.xml @@ -16,10 +16,19 @@ where 1=1 order by plantInfo.name asc ]]> - + + + + + + + diff --git a/src/webapp/WEB-INF/classes/config/origen/base/maintainPlantLocationPage.xml b/src/webapp/WEB-INF/classes/config/origen/base/maintainPlantLocationPage.xml index a4696ca..b531147 100644 --- a/src/webapp/WEB-INF/classes/config/origen/base/maintainPlantLocationPage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/base/maintainPlantLocationPage.xml @@ -4,9 +4,15 @@ - + + + @@ -26,7 +32,7 @@ left join pl.plantInfo where 1=1 /~carrierType.disabled: and pl.disabled = {carrierType.disabled}~/ - /~carrierType.code: and pl.code like {carrierType.code}~/ + /~carrierType.code: and pl.plantInfo.code like {carrierType.code}~/ ]]> diff --git a/src/webapp/WEB-INF/classes/config/origen/inventory/maintainOAXuliehaoPage.xml b/src/webapp/WEB-INF/classes/config/origen/inventory/maintainOAXuliehaoPage.xml index 16009a8..83e6fc5 100644 --- a/src/webapp/WEB-INF/classes/config/origen/inventory/maintainOAXuliehaoPage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/inventory/maintainOAXuliehaoPage.xml @@ -110,6 +110,7 @@ inventory.propD3, inventory.kqName, inventory.storageDate, + inventory.propLC5, inventory.lock FROM InventoryView inventory WHERE 1=1 @@ -159,6 +160,7 @@ + diff --git a/src/webapp/WEB-INF/classes/config/origen/receiving/editNullNewStockPage.xml b/src/webapp/WEB-INF/classes/config/origen/receiving/editNullNewStockPage.xml index 21afe9c..2925146 100644 --- a/src/webapp/WEB-INF/classes/config/origen/receiving/editNullNewStockPage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/receiving/editNullNewStockPage.xml @@ -15,7 +15,7 @@ and ls.name in ('602','603','604','605') ]]> - + - + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webapp/WEB-INF/classes/config/origen/shipping/editPickTicketDetailPage.xml b/src/webapp/WEB-INF/classes/config/origen/shipping/editPickTicketDetailPage.xml index cd2571a..86001c8 100644 --- a/src/webapp/WEB-INF/classes/config/origen/shipping/editPickTicketDetailPage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/shipping/editPickTicketDetailPage.xml @@ -52,7 +52,13 @@ inVisible="false" trimSpace="true" isPrecision="true" /> + inVisible="false" trimSpace="true" isPrecision="true" /> + + diff --git a/src/webapp/WEB-INF/classes/config/origen/shipping/editPickTicketPage.xml b/src/webapp/WEB-INF/classes/config/origen/shipping/editPickTicketPage.xml index 00e35bd..7f0941c 100644 --- a/src/webapp/WEB-INF/classes/config/origen/shipping/editPickTicketPage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/shipping/editPickTicketPage.xml @@ -87,7 +87,9 @@ pickTicketDetail.strBill2, pickTicketDetail.strBill1, pickTicketDetail.SOI, - pickTicketDetail.strBill15, + pickTicketDetail.strBill15, + pickTicketDetail.strBill9, + pickTicketDetail.locType, pickTicketDetail.description FROM PickTicketDetail as pickTicketDetail left join pickTicketDetail.item as item @@ -130,6 +132,8 @@ + + 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 f29605d..c0af58d 100644 --- a/src/webapp/WEB-INF/classes/config/origen/shipping/maintainPickTicketPage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/shipping/maintainPickTicketPage.xml @@ -338,6 +338,9 @@ enableType="single" invisible="false" containId="true" pageId="viewOutExceptionLogPage" /> + +