diff --git a/src/main/java/adapterContext.xml b/src/main/java/adapterContext.xml index a00e840..9777c1e 100644 --- a/src/main/java/adapterContext.xml +++ b/src/main/java/adapterContext.xml @@ -200,7 +200,7 @@ - 0 18 17 * * ? + 0 25 17 * * ? diff --git a/src/main/java/com/dev/swms/server/model/base/WorkOrderAllocationInfo.java b/src/main/java/com/dev/swms/server/model/base/WorkOrderAllocationInfo.java index f1f953c..778dc6c 100644 --- a/src/main/java/com/dev/swms/server/model/base/WorkOrderAllocationInfo.java +++ b/src/main/java/com/dev/swms/server/model/base/WorkOrderAllocationInfo.java @@ -54,6 +54,17 @@ public class WorkOrderAllocationInfo extends Entity{ * 工单分配的日期 */ private Date allocationDate; + + private Date storageDate;//库存日期 + + + public Date getStorageDate() { + return storageDate; + } + + public void setStorageDate(Date storageDate) { + this.storageDate = storageDate; + } public String getWorkOrderNumber() { return workOrderNumber; diff --git a/src/main/java/com/dev/swms/server/model/base/workOrderAllocationInfo.hbm.xml b/src/main/java/com/dev/swms/server/model/base/workOrderAllocationInfo.hbm.xml index 6214362..3c38fce 100644 --- a/src/main/java/com/dev/swms/server/model/base/workOrderAllocationInfo.hbm.xml +++ b/src/main/java/com/dev/swms/server/model/base/workOrderAllocationInfo.hbm.xml @@ -32,6 +32,7 @@ + \ No newline at end of file diff --git a/src/main/java/com/dev/swms/server/service/count/CountPlanManager.java b/src/main/java/com/dev/swms/server/service/count/CountPlanManager.java index 3b56ab3..39149ed 100644 --- a/src/main/java/com/dev/swms/server/service/count/CountPlanManager.java +++ b/src/main/java/com/dev/swms/server/service/count/CountPlanManager.java @@ -179,7 +179,7 @@ public interface CountPlanManager extends BaseManager { void AGVworke(Long countPlanId,boolean w1,boolean w2,boolean w3,boolean w4,boolean w5,boolean w6,boolean w7,boolean w8,boolean w9,boolean w10, boolean w11,boolean w12,boolean w13,boolean w14,boolean w15,boolean w16,boolean w17,boolean w18,boolean w19,boolean w20,boolean w21,boolean w22, boolean w601,boolean w602,boolean w603,boolean w604,boolean w605,double w31,double w32,double w33,double w34,double w35,double w36,double w37 - ,double w38,double w39,double w40,double w41,double w42,double w43); + ,double w38,double w39,double w40,double w41,double w42,double w43,double w44); @Transactional void AGVworke(Long countPlanId,boolean w1,boolean w2,boolean w3,boolean w4,boolean w5,boolean w6,boolean w7,boolean w8,boolean w9,boolean w10, boolean w11,boolean w12,boolean w13,boolean w14,boolean w15,boolean w16,boolean w17,boolean w18,boolean w19,boolean w20,boolean w21,boolean w22); @@ -194,6 +194,8 @@ public interface CountPlanManager extends BaseManager { @Transactional JSONObject checkCountRecordItem(String crIds ,String propD2,String barCodes,String propC1,String countQuantity,long userId,long warehouseId,CommonDao commonDao); + @Transactional + void cleanCountRecordVIEW(List ids); } \ No newline at end of file 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 c9d47d7..4d31ff1 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 @@ -58,6 +58,7 @@ import com.dev.swms.server.model.receiving.MoveDocDetail; import com.dev.swms.server.model.receiving.STATUS; import com.dev.swms.server.model.receiving.SlotType; import com.dev.swms.server.model.rules.ItemStorageRule; +import com.dev.swms.server.model.view.CountRecordVIEW; import com.dev.swms.server.service.base.AgvTaskManager; import com.dev.swms.server.service.base.ItemManager; import com.dev.swms.server.service.count.CountPlanManager; @@ -1599,7 +1600,7 @@ public class DefaultCountPlanManager extends DefaultBaseManager implements boolean w18,boolean w19,boolean w20,boolean w21,boolean w22) { AGVworke( countPlanId, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, - w18, w19, w20, w21,w22,false,false,false,false,false,0,0,0,0,0,0,0,0,0,0,0,0,0); + w18, w19, w20, w21,w22,false,false,false,false,false,0,0,0,0,0,0,0,0,0,0,0,0,0,0); } public List quserCountPlanTask(long zone_id,long countPlanId) { List ddq=commonDao.findByQuery(" from CountRecord c where c.location.zone.id="+zone_id @@ -1611,7 +1612,7 @@ public class DefaultCountPlanManager extends DefaultBaseManager implements boolean w11,boolean w12,boolean w13,boolean w14,boolean w15,boolean w16,boolean w17, boolean w18,boolean w19,boolean w20,boolean w21,boolean w22,boolean w601,boolean w602,boolean w603,boolean w604,boolean w605, double w31,double w32,double w33,double w34,double w35,double w36,double w37,double w38, - double w39,double w40,double w41,double w42,double w43) { + double w39,double w40,double w41,double w42,double w43,double w44) { CountPlan countPlan=commonDao.load(CountPlan.class, countPlanId); if(countPlan!=null) { //料箱区 @@ -1816,6 +1817,10 @@ public class DefaultCountPlanManager extends DefaultBaseManager implements if(qd4.size()>0&&w43==0) { throw new BusinessException("7#4楼地堆区有盘点任务,必须勾选"); } + List dd4=quserCountPlanTask(1813L, countPlanId);//4#地堆区 + if(dd4.size()>0&&w44==0) { + throw new BusinessException("4#地堆区有盘点任务,必须勾选"); + } int l=0;//料箱区 for(Stock stock:sts) { //工作个数 @@ -1988,6 +1993,11 @@ public class DefaultCountPlanManager extends DefaultBaseManager implements //1号万纬外仓 distributeCountPlan(w43, qd4); } + if(w44>0) { + //1号万纬外仓 + distributeCountPlan(w44, dd4); + } + List countRecords=commonDao.findByQuery(" from CountRecord c where c.countCode is null " +" and c.countPlan.id="+countPlanId+" order by c.location.zone.code,c.location.code"); if(countRecords.size()==0) { @@ -2364,5 +2374,16 @@ public class DefaultCountPlanManager extends DefaultBaseManager implements return cr; } - + public void cleanCountRecordVIEW(List ids) { + for(Long id:ids) { + CountRecordVIEW cv=commonDao.load(CountRecordVIEW.class, id); + List ddq=commonDao.findByQuery(" from CountRecord c where c.countCode='"+cv.getCount_Code() + +"' and c.countPlan.id="+cv.getCountPlan().getId()+" order by c.location.code"); + for(CountRecord rd:ddq) { + rd.setWorker1(null); + commonDao.store(rd); + } + } + + } } diff --git a/src/main/java/com/dev/swms/server/service/interfaceLog/ApiURL.java b/src/main/java/com/dev/swms/server/service/interfaceLog/ApiURL.java index 4fbb3b8..6692cdd 100644 --- a/src/main/java/com/dev/swms/server/service/interfaceLog/ApiURL.java +++ b/src/main/java/com/dev/swms/server/service/interfaceLog/ApiURL.java @@ -8,7 +8,19 @@ import java.util.Properties; public class ApiURL { - + private static boolean isProcessing = false; + + public static synchronized boolean tryStartProcessing() { + if (isProcessing) { + return false; + } + isProcessing = true; + return true; + } + + public static synchronized void endProcessing() { + isProcessing = false; + } // public static byte[] readFileContents(String filePath) throws IOException { // return Files.readAllBytes(Paths.get(filePath)); // } 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 75bc5aa..e56ae33 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 @@ -1195,12 +1195,13 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA String sql = " select mdd.ID as inventoryId,s.LP as locCode,item.code as itemCode,item.BAR_CODE as barCode,item.name as itemName,ik.PROP_C1 as propC1," + " mdd.move_Quantity,mdd.plan_Quantity-mdd.move_Quantity as invQuantity,ik.PROP_C2 as propC2,ik.PROP_C3 as propC3,md.RELATEBILLCODE,ik.PROP_C3 as propC5,z.name," - + " item.id,mdd.strBill11,CONVERT(varchar(100),ik.PROP_D2, 23) as propD2 " + + " item.id,mdd.strBill11 as strBill11,CONVERT(varchar(100),ik.PROP_D2, 23) as propD2 ,p.name as p_name" + " from Move_Doc_Detail mdd " + " left join move_Doc md on md.id= mdd.move_Doc_ID " + " left join Stock s on s.id= mdd.SRC_LP " + " left join ITEM_KEY ik on ik.id=mdd.ITEM_KEY_ID " + " left join ITEM item on item.id=mdd.ITEM_ID " + + " left join POSITION p on p.id=item.POSITION_ID " + " left join zone z on z.id=mdd.warehouse_Area_ID_SRC " + " where 1=1 and mdd.PLAN_QUANTITY_MU-mdd.MOVE_QUANTITY>0"; if(itemCode!=null && itemCode.length()>0){ @@ -1211,7 +1212,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA sql+=" and (upper(md.RELATEBILLCODE) like upper('"+ asn_code + "%') )"; } if(barCode!=null&&barCode.length()>0){ - sql+=" and (upper(s.LP) like upper('"+ barCode + "%') )"; + sql+=" and (s.LP like '"+ barCode + "%' )"; }else { msg="请扫描容器!"; resultJson.put("status", status); @@ -1246,7 +1247,9 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA data1.put("propC5", arrier[i++]==null?"":arrier[i-1]); data1.put("zname", arrier[i++]==null?"":arrier[i-1]); i++; + i++; data1.put("propD2", arrier[i++]==null?"":arrier[i-1]); + data1.put("pname", arrier[i++]==null?"":arrier[i-1]); Item item=this.load(Item.class, Long.parseLong(arrier[13].toString())); int beMarkWeight=0; MoveDocDetail moveDocDetail=this.load(MoveDocDetail.class, Long.parseLong(arrier[0].toString())); @@ -7144,13 +7147,21 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA // } SimpleDateFormat ymd = new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat ymd1 = new SimpleDateFormat("yyyy-MM-dd"); + String lp=""; + Stock s =commonDao.load(Stock.class, dstLP); + if(s==null) { + if(t.getDstLP()!=null) { + s=commonDao.load(Stock.class, t.getDstLP().getId()); + lp=s.getLP(); + } + }else { + lp=s.getLP(); + } String barcode="QAR/"+t.getBillCode()+"/"+ ptd.getLineNumber()+"/"+item.getCode()+"/"+item.getUnit()+"/"; -// if(t.getBarCode()==null) { -// barcode+="/"+ymd.format(new Date()); -// }else { - barcode+="/"+ymd.format(new Date()); -// } -// System.out.println(barcode); + barcode += "/" + ymd.format(new Date()); +// if(lp!=null&&lp.length()>0) { +// barcode+="///"+lp; +// } String emergent=""; if(pt!=null&&bt.getName().indexOf("工单")>=0&&pt.getEquatedQuantity()!=null &&(pt.getEquatedQuantity().equals("H")||pt.getEquatedQuantity().equals("U") @@ -7171,16 +7182,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA } } } - String lp=""; - Stock s =commonDao.load(Stock.class, dstLP); - if(s==null) { - if(t.getDstLP()!=null) { - s=commonDao.load(Stock.class, t.getDstLP().getId()); - lp=s.getLP(); - } - }else { - lp=s.getLP(); - } + SimpleDateFormat hms = new SimpleDateFormat("HH:mm:ss"); Location lc=commonDao.load(Location.class, t.getSrcLoc().getId()); WarehouseArea zone=commonDao.load(WarehouseArea.class, lc.getZone().getId()); @@ -7503,7 +7505,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA String sql="select cr.count_Code ,i.CODE as icode ,max(z.NAME) z_name,sum(cr.QUANTITY) QUANTITY," +"sum(cr.COUNT_QUANTITY) COUNT_QUANTITY,sum(cr.DELTA_QUANTITY) DELTA_QUANTITY ,ik.PROP_C1," - +"max(ik.PROP_C2),CONVERT(varchar(100), ik.PROP_D2, 23) as PROP_D2,max(ik.PROP_C3) PROP_C3," + +"max(ik.PROP_C2) as PROP_C2,CONVERT(varchar(100), ik.PROP_D2, 23) as PROP_D2,max(ik.PROP_C3) PROP_C3," + "max(cr.barCode) barCode,(i.SINGLE_ITEM) SINGLE_ITEM, (i.BE_MARK_WEIGHT) BE_MARK_WEIGHT,(i.isBOM) isBOM," +" STUFF((select ','+CONVERT(nvarchar(10),b.id) " +" from COUNT_RECORD b " @@ -7511,15 +7513,15 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA +" left join ITEM_KEY ik2 on ik2.id=b.ITEM_KEY_ID " +" left join ITEM item2 on item2.id=ik2.ITEM_ID " +" where 1=1 and b.COUNT_PLAN_ID=max(cr.COUNT_PLAN_ID)" - +" and b.count_Code=cr.count_Code " + +" and b.count_Code=cr.count_Code and ik.PROP_C2=ik2.PROP_C2" +" and loc2.id=l.ID and cr.NEED_COUNT=b.NEED_COUNT" - +" and item2.id=i.id and " + +" and item2.id=i.id and " + "( CONVERT(varchar(100), ik.PROP_D2, 23)=CONVERT(varchar(100), ik2.PROP_D2, 23) " + " or (ik.PROP_D2 is null and ik2.PROP_D2 is null )) " +" for xml Path('')),1,1,'') as tId," - +" cr.NEED_COUNT,max(i.NAME) ,max(i.UNIT) UNIT," + +" cr.NEED_COUNT,max(i.NAME) as i_name,max(i.UNIT) UNIT," + "l.CODE as lcode,max(l.id) as lid," - + "sum(c.countQty-c.finishNo) as countNo ,max(c.count_Type) count_Type" + + "sum(c.countQty-c.finishNo) as countNo ,max(c.count_Type) count_Type " +" from COUNT_RECORD cr " +" left join COUNT_PLAN c on c.ID=cr.COUNT_PLAN_ID " +" left join ITEM_KEY ik on ik.ID =cr.ITEM_KEY_ID " @@ -7540,7 +7542,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA System.out.println("请选择盘点单号"); } sql+=" group by c.id,cr.count_Code,l.code,l.ID ,cr.NEED_COUNT,i.id,i.code,ik.PROP_C1,ik.PROP_D2,\r\n" + - " i.SINGLE_ITEM,i.BE_MARK_WEIGHT,i.isBOM "; + " i.SINGLE_ITEM,i.BE_MARK_WEIGHT,i.isBOM,ik.PROP_C2 "; sql+=" order by cr.count_Code,l.CODE,cr.NEED_COUNT "; Query query = session.createSQLQuery(sql); List objs = query.list(); @@ -10369,9 +10371,9 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA if (userId > 0) { if (warehouseId > 0) { Worker worker1=commonDao.load(Worker.class, userId); - String sql ="select max(pt.UPDATE_TIME),lc.code as lc_code," + String sql ="select max(t.dateBill3),lc.code as lc_code," + "t.BILLCODE,s.LP as s_lp,z.name as z_name, " - + " max(DATEDIFF(MINUTE,pt.UPDATE_TIME, GETDATE())) as orderDate " + + " max(DATEDIFF(MINUTE,t.dateBill3, GETDATE())) as orderDate " + " , pt.equated_Quantity as soi " + " from task t " + " left join STOCK s on s.ID=t.DST_LP " + @@ -10391,7 +10393,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA sql+=" and z.name = '"+zone_code.trim()+"' "; } sql+=" group by t.BILLCODE,s.LP,lc.code,z.name,pt.equated_Quantity " + - " order by pt.equated_Quantity desc,max(pt.UPDATE_TIME),t.BILLCODE,z.name,lc.code,s.LP "; + " order by pt.equated_Quantity desc,max(t.dateBill3),t.BILLCODE,z.name,lc.code,s.LP "; Query query = session.createSQLQuery(sql); List list= (List)query.list(); if(list.size()>0) { @@ -10415,9 +10417,9 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA if(soi!=null&&soi.length()>0) { data1.put("bgColour", "1");//1=红色加急, }else { - if(Long.parseLong(ordeDate)>210) { + if(Long.parseLong(ordeDate)>30) { data1.put("bgColour", "3");//3=浅蓝色,剩30分钟 - }else if(Long.parseLong(ordeDate)>180) { + }else if(Long.parseLong(ordeDate)>60) { data1.put("bgColour", "2");//2=黄色,剩余60分钟 }else { data1.put("bgColour", "0");//0=无颜色, 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 b7685d0..686d059 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 @@ -2003,12 +2003,19 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo if (t.getPlanQuantity()>t.getMovedQuantityMU()) { //根据小task找到库存,并把占用数量退回。 Inventory inventory=null; - List Inventorys = commonDao.findByQuery(" from Inventory i where i.quantity>0 and i.queuedQuantity>0 and i.location.id=:locationId and i.itemKey.id=:itemKeyId ", + String hql=" from Inventory i where i.quantity>0 and i.queuedQuantity>0 " + + " and i.location.id=:locationId and i.itemKey.id=:itemKeyId "; + if(t.getBarCode()!=null&&t.getBarCode().length()>0) { + hql+=" and i.barCode='"+t.getBarCode()+"'"; + } + if(t.getStrBill10()!=null&&t.getStrBill10().length()>0) { + hql+=" and i.statuss='"+t.getStrBill10()+"'"; + } + List Inventorys = commonDao.findByQuery(hql, new String[] { "locationId","itemKeyId"},new Object[] {t.getSrcLoc().getId(),t.getItemKey().getId()}); if(Inventorys.size()>0){ inventory=Inventorys.get(0); inventory.setQueuedQuantity(inventory.getQueuedQuantity()-t.getPlanQuantity()); - inventory.setVersion(inventory.getVersion()); commonDao.store(inventory); } @@ -2039,17 +2046,7 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo } } } - -// shauxinInvQty(item.getId());//刷新item的库存数量 - - -// SeedWall sw=pt.getSeedWall(); -// if(sw!=null){ -// pt.setSeedWall(null); -// commonDao.store(pt); -// sw.setStatus(WarehouseAreaStatus.FREE); -// commonDao.store(sw); -// } + shuaxinPick(pt);//刷新出库单 long etime = System.currentTimeMillis(); System.out.printf("取消分配执行时长:"+(etime - stime)+"\n"); @@ -2462,7 +2459,9 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo continue; } //判断料号是不是整行库存发料 - if(ptd.getItem().isBeWholeLine()&&unQty>allocateQty) { + if(ptd.getItem().isBeWholeLine()&&unQty>allocateQty + &&pt.getSourceType()!=null + &&(pt.getSourceType().equals("261")||pt.getSourceType().equals("Z65"))) { //保存跳过记录 saveWorkOrderAllocationInfo(inventory, ptd, unQty, allocateQty); continue; @@ -3085,7 +3084,8 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo continue; } //判断料号是不是整行库存发料 - if(ptd.getItem().isBeWholeLine()&&unQty>allocateQty) { + if(ptd.getItem().isBeWholeLine()&&unQty>allocateQty&&pt.getSourceType()!=null + &&(pt.getSourceType().equals("261")||pt.getSourceType().equals("Z65"))) { //保存跳过记录 saveWorkOrderAllocationInfo(inventory, ptd, unQty, allocateQty); continue; @@ -3850,6 +3850,7 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo woa.setLoc(inventory.getItemKey().getLotInfo().getPropC2()); woa.setAllocationDate(new Date()); woa.setRemarks("库存数量:"+allocateQty); + woa.setStorageDate(inventory.getStorageDate()); commonDao.store(woa); } diff --git a/src/main/java/com/dev/swms/server/service/receiving/pojo/DefaultASNManager.java b/src/main/java/com/dev/swms/server/service/receiving/pojo/DefaultASNManager.java index 0e35d60..a47441a 100644 --- a/src/main/java/com/dev/swms/server/service/receiving/pojo/DefaultASNManager.java +++ b/src/main/java/com/dev/swms/server/service/receiving/pojo/DefaultASNManager.java @@ -7,6 +7,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.math.BigDecimal; import java.net.URL; import java.net.URLConnection; import java.net.URLDecoder; @@ -2333,7 +2334,11 @@ public void addASNDetail(Long id,ASNDetail asnDetail) { for(Long id:asnDetailIds){//循环整理(收货) ASNDetail asnDetail=this.load(ASNDetail.class, id);//根据整理的这条数据获取它所有的明细 ASN asn=commonDao.load(ASN.class, asnDetail.getAsn().getId()); - if(receivedQuantity>asnDetail.getUnReceivedQuantity()){ + BigDecimal bg1 = new BigDecimal(receivedQuantity);// + receivedQuantity = bg1.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue(); + BigDecimal bg2 = new BigDecimal(asnDetail.getUnReceivedQuantity());// + double f1 = bg2.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue(); + if(receivedQuantity>f1){ throw new BusinessException("总数量不能大于订单数量"+asnDetail.getUnReceivedQuantity()); } BillType bt=commonDao.load(BillType.class, asn.getBillType().getId()); @@ -2517,15 +2522,14 @@ public void addASNDetail(Long id,ASNDetail asnDetail) { asnDetail.setStatusDes(statusDes); asnDetail.setWarehouseArea(warehouseArea); asnDetail.getshaxin(); - commonDao.store(asnDetail); + if(asn.getReceivedQuantity()==0){ asn.setStatus(ASNStatus.OPEN); }else if(asn.getReceivedQuantity() pickTicketIds) { + synchronized (DefaultWaveDocManager.class) { String errMsg = ""; - /* - * for (Long id : pickTicketIds) { PickTicket pickTicket = - * commonDao.load(PickTicket.class, id); for(PickTicketDetail - * d:pickTicket.getPickTicketDetails()){ - * errMsg+=autoAllocator.allocateDetail(d); } - * if(pickTicket.getAllocatedQuantity()>0){ - * pickTicket.setStatus(PickTicketStatus.ALLOCATE); - * this.commonDao.store(pickTicket); } } - */ + for (Long id : pickTicketIds) { PickTicket pt = commonDao.load(PickTicket.class, id); errMsg += autoAllocator.allocatePickticket(pt); @@ -1307,6 +1300,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick } LocalizedMessage.addLocalizedMessage(errMsg); + } } public List activePickTicketDetail( @@ -2809,6 +2803,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick @SuppressWarnings("unchecked") public void manualAllocate(Map params, List id) { + synchronized (DefaultWaveDocManager.class) { PickTicketDetail ptd = commonDao.load(PickTicketDetail.class, id.get(0)); PickTicket pt = null; if (ptd != null) { @@ -2877,6 +2872,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick if(pt!=null) { refreshOrderQuantity(pt); } + } } public Task createTask(Inventory inventory, PickTicketDetail ptd, double allocateQty) { @@ -4340,8 +4336,6 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick if(srcInv.getQueuedQuantity()<=0) { srcInv.setQueuedQuantity(0); } -// srcInv.setVersion(srcInv.getVersion()); - // srcInv.setSOI(task.getBillCode()); commonDao.store(srcInv); if (task != null) { task.pickConfirm(itemKey, srcInv.getLocation(), newInventory.getLP(), task.getDstLoc(), @@ -4370,9 +4364,13 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick } if (wa!=null&&(wa.getLevels()==0||!wa.isBeBill())) { task.setInventoryStatus("合单完成"); + task.setOperatorDate(new Date());//合单日期 + task.setDateBill3(new Date());//合单任务完成日期 + task.setDateBill5(new Date());//合单任务生成时间 } if(!bt.isBePresentation()&&wa.getCarrierType().getId()==3) { task.setInventoryStatus("交单完成"); + task.setDateline(new Date()); } if(beUnpacking!=null&&beUnpacking.length()>0) { task.setBeUnpacking(true); @@ -5667,6 +5665,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick JSONArray array = new JSONArray(); List listtask=new ArrayList(); PickTicket pt = null; + String shalp=""; // TODO 自动生成的方法存根 for (Long id : ids) { Task task = load(Task.class, id); @@ -5688,6 +5687,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick jsonobj2.put("TKNUM", task.getMovedQuantityMU()); jsonobj2.put("POSI2", toLoc == null ? "" : toLoc); jsonobj2.put("CONT1", stock == null ? "BGHU" : stock.getLP()); + shalp=jsonobj2.getString("CONT1"); jsonobj2.put("TKFIQ", task.getMovedQuantityMU()); jsonobj2.put("POSI1", srcLoc);//起始点 jsonobj2.put("MEINS", i.getUnit()); @@ -5704,9 +5704,6 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick listtask.add(task); } jsonobj.put("INPUT", array); -// if(pt != null && pt.getSourceType()!=null -// &&pt.getSourceType().equals("261")) { -// } if (pt != null && pt.getSourceType()!=null &&pt.getSourceType().equals("261")) { @@ -5716,16 +5713,14 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick t.setContent(jsonobj.toString()); t.setBillCodde("位置"+pt.getCode()); t.setBereturn(true); - String str=interfaceReqManager.doWmsReqSap(getPropertiesParm("ldxt.SAP")+ApiURL.doWmsReqSap, jsonobj.toString(),"位置"+pt.getCode()); + String str=interfaceReqManager.doWmsReqSap(getPropertiesParm("ldxt.SAP")+ApiURL.doWmsReqSap, + jsonobj.toString(),srcLoc+"位置"+pt.getCode()+","+shalp); if(str!=null&&OUTPUT(str)) { t.setReturnMSG(returnOutPut(str)); jsonob2.put("ZCODE", "true") ; jsonob2.put("MSG", t.getReturnMSG()); commonDao.store(t); -// for(Task task1:listtask) { -// task1.setPositionStatus("1");//位置回传成功 -// commonDao.store(task1); -// } + return jsonob2; }else { try { @@ -7259,7 +7254,8 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick ItemKey ik = commonDao.load(ItemKey.class, t.getItemKey().getId()); Item item = commonDao.load(Item.class, ik.getItem().getId()); Location srcLoc = commonDao.load(Location.class, t.getSrcLoc().getId()); - WarehouseArea zone = this.load(WarehouseArea.class, srcLoc.getZone().getId()); + WarehouseArea zone = commonDao.load(WarehouseArea.class, srcLoc.getZone().getId()); + Stock dstLP=commonDao.load(Stock.class, t.getDstLP().getId()); Worker w = null; if(t.getWorker4()!=null) { w = this.load(Worker.class, t.getWorker4().getId()); @@ -7274,11 +7270,10 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick String printName = ""; String barcode = "QAR/" + t.getBillCode() + "/" + ptd.getLineNumber() + "/" + item.getCode() + "/" + item.getUnit() + "/"; -// if (t.getBarCode() == null) { -// barcode += "/" + ymd.format(new Date()); -// } else { barcode += "/" + ymd.format(new Date()); -// } +// if(dstLP!=null) { +// barcode+="///"+dstLP.getLP(); +// } logger.info(barcode); macs = printEquipment == null ? "" : printEquipment.getMac(); printName = printEquipment == null ? "" : printEquipment.getPrintName(); @@ -8748,8 +8743,9 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick } //其它出库的单子不能合单到工单交单的货架上 if(bt.getId()!=1094&&loc.getLocations().getId()==8 - &&loc.getCode().substring(0, 1).equals("2")) { - throw new BusinessException(loc.getCode()+"不能放生产交接货架上"); + &&(loc.getCode().substring(0, 1).equals("2") + ||loc.getCode().substring(0, 1).equals("1"))) { + throw new BusinessException(pt.getCode()+"不能放生产交接货架上"); } } soi=t.getBillCode(); @@ -9500,7 +9496,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick } } //重新的合单完成按钮 - public String stockMakeTwo(String invIds,long locId,long userId,long warehouseId) { + public synchronized String stockMakeTwo(String invIds,long locId,long userId,long warehouseId) { String taskStatus="已合单"; String msg=""; boolean b=true; @@ -9516,14 +9512,13 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick + " where inv.id in("+invIds+") and inv.quantity>0) "; //当前需要合单的任务 List tasks= commonDao.findByQuery(tsql); - + String taskStatus1="";//合单完成 //判定子任务是否完成 if(result.size()>0) { String invid=result.get(0); Inventory inv=commonDao.load(Inventory.class, Long.parseLong(invid)); Task t=commonDao.load(Task.class, inv.getTaskid()); - if(levels==0) { Location sloc=commonDao.load(Location.class, t.getSrcLoc().getId()); WarehouseArea zone=commonDao.load(WarehouseArea.class, sloc.getZone().getId()); @@ -9566,7 +9561,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick for (Task obj : tasksAll) { map.put(obj, Boolean.TRUE); } - + //删除当前子任务数据 for (Task obj : tasks) { if (map.containsKey(obj)) { tasksAll.remove(obj); @@ -9639,6 +9634,9 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick t.setInventoryStatus(taskStatus); }else { t.setInventoryStatus("交单完成"); + t.setDateBill5(new Date()); + t.setDateBill3(new Date()); + t.setDateline(new Date()); } if(taskStatus.equals("合单完成")) { t.setDateBill5(new Date()); @@ -9745,7 +9743,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick if(ptd.getSOI()!=null&& (ptd.getSOI().equals("U") ||ptd.getSOI().equals("X")) - &&(!dstLoc.isBeUrgent())) { + &&!dstLoc.isBeUrgent()) { throw new BusinessException("该地位不是加急交接点"); } } @@ -9757,7 +9755,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick Worker worker=commonDao.load(Worker.class, userId); List taskids=commonDao.findByQuery(hql2); if(taskids.size() stoskids=commonDao.findByQuery(stolps); String stoskid=StringUtils.strip(stoskids.toString(),"[]"); //按容器查询任务,拣货任务, - String tys="select t.dstLP.LP from Task t where t.dstLP.id in("+stoskid+") and t.id not in("+invIds+")" + String tys=" select t.dstLP.LP from Task t where t.dstLP.id in("+stoskid+") and t.id not in("+invIds+")" + " and t.inventoryStatus in('已出库','已合单','合单完成') and t.planQuantity>0 " + " and t.dstLoc.zone.id<>1787 "; List tysids=commonDao.findByQuery(tys); @@ -9787,23 +9785,33 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick for(Long tashid:tids1) { countTasks.remove(tashid); } -// logger.info("1"+countTasks.toString()); -// logger.info("2"+tids1.toString()); if(countTasks.size()==0) { - jdwz="X"; + jdwz="X";//完成标记 } List tLocds2=commonDao.findByQuery(taskloc2); fromaddress=tLocds2.get(0); - logger.info(jdwz); + //有报错信息,任务不会回传完成标记 + if(msg!=null&&msg.length()>0) { + jdwz=""; + } //位置回传 JSONObject bh= wmsSapWeizhihuichuang(tids1,fromaddress,dstLoc.getCode(),jdwz); //更新task任务的信息 - String mes2= WmsSapposition(bh, tids1, dstLoc, worker); + String mes2=""; + try { + mes2= WmsSapposition(bh, tids1, dstLoc, worker); + }catch (Exception e) { + try { + mes2= WmsSapposition(bh, tids1, dstLoc, worker); + }catch(Exception e1){ + + } + } if(bh.get("ZCODE").equals("true")) { - msg1=msg1+mes2; + msg1=msg1+mes2;//成功 }else { - msg=msg+mes2; + msg=msg+mes2;//失败 } } } @@ -9820,7 +9828,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick if(bh.get("ZCODE").equals("true")) { msg1=msg1+mes2; }else { - msg=msg+mes2; + msg=msg+mes2;//失败 } } } diff --git a/src/main/java/com/dev/swms/server/service/shipping/pojo/DefaultWaveDocManager.java b/src/main/java/com/dev/swms/server/service/shipping/pojo/DefaultWaveDocManager.java index 60518dd..7b5f4ed 100644 --- a/src/main/java/com/dev/swms/server/service/shipping/pojo/DefaultWaveDocManager.java +++ b/src/main/java/com/dev/swms/server/service/shipping/pojo/DefaultWaveDocManager.java @@ -2422,6 +2422,8 @@ public class DefaultWaveDocManager extends DefaultBaseManager implements @Override public void hotWaveDoc(Date date1,Date date2 ,Integer longtiem,Integer lxqQty,Integer hjqQty,Integer lkqQty,boolean ddq,String pickCode ,boolean ddq1,boolean ddq2,boolean ddq3,boolean ddq4,boolean ddq5,boolean ddq6,boolean ddq7,boolean ddq8,boolean ddq9,Integer taskQty,boolean beUrgent) { + synchronized (DefaultWaveDocManager.class) { + SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd"); Date date=new Date(); logger.info(date); @@ -2710,7 +2712,7 @@ public class DefaultWaveDocManager extends DefaultBaseManager implements // autoAllocator.initiandcallAGV(waveDoc.getId(), lxq, hjq, lkq);//下发任务 // } - + } } 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 13f93fe..e4887d4 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 @@ -223,7 +223,7 @@ public class ASNReceiveServlet extends HttpServlet { String mac =json.has("mac")?json.getString("mac"):""; resultJson=this.receiving(mac,pqty,asnDetailIds,serials,date, locId, z_id,s_id, receivedQuantity, workerId, wId, commonDao,propLC2,propLC3); }else if("scanPutOrder".equals(methodType)){ - //查询上架任务 + //PDA查询上架任务 String itemCode =json.has("itemCode")?json.getString("itemCode"):""; String barCode =json.has("barCode")?json.getString("barCode"):""; resultJson=app.scanPutOrder(itemCode,barCode, workerId, wId); @@ -1653,6 +1653,9 @@ public class ASNReceiveServlet extends HttpServlet { flag=0; msg=msg+ncrCode+"库存数"+qys; } + }else { + flag=0; + msg=msg+ncrCode+"号输入错误"; } } } @@ -1940,18 +1943,6 @@ public class ASNReceiveServlet extends HttpServlet { } } } -// if(status.equals("1")) { -// if(ncrCode!=null&&ncrCode.length()>0){ -// List Inventorys1=commonDao.findByQuery(" from Inventory inv where inv.id in ("+invIds.toString()+") "); -// ItemKey ik=null; -// Location lc=null; -// if(Inventorys1.size()>0) { -// Inventory iv=Inventorys1.get(0); -// lc=commonDao.load(Location.class, iv.getLocation().getId()); -// ik=commonDao.load(ItemKey.class, iv.getItemKey().getId()); -// } -// } -// } }else { status = "2"; diff --git a/src/test/yao/2025.sql b/src/test/yao/2025.sql index d721998..f76e0d4 100644 --- a/src/test/yao/2025.sql +++ b/src/test/yao/2025.sql @@ -57,3 +57,15 @@ ALTER TABLE LOCATION add be_Urgent tinyint NULL; GO update LOCATION set be_Urgent=0 where be_Urgent is null; GO + +------------2025-04-14 +ALTER TABLE WorkOrderAllocationInfo add STORAGE_DATE DATE ; + +----创建非聚合索引 +CREATE NONCLUSTERED INDEX [idx_task_item_key_id] +ON [dbo].[TASK] ( + [ITEM_KEY_ID] ASC +) + + +CREATE CLUSTERED INDEX idx_clust_EmployeeID ON Employees(EmployeeID); diff --git a/src/webapp/WEB-INF/classes/config/origen/base/maintainWorkOrderAllocationPage.xml b/src/webapp/WEB-INF/classes/config/origen/base/maintainWorkOrderAllocationPage.xml index 955d9b9..e12fad2 100644 --- a/src/webapp/WEB-INF/classes/config/origen/base/maintainWorkOrderAllocationPage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/base/maintainWorkOrderAllocationPage.xml @@ -10,7 +10,7 @@ + defaultCurrentDate="true" /> + diff --git a/src/webapp/WEB-INF/classes/config/origen/count/countRecordVIEWPage.xml b/src/webapp/WEB-INF/classes/config/origen/count/countRecordVIEWPage.xml index 8c0577d..02b6184 100644 --- a/src/webapp/WEB-INF/classes/config/origen/count/countRecordVIEWPage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/count/countRecordVIEWPage.xml @@ -42,8 +42,17 @@ title="工作站效率" visible="true" horizonAlign="left" /> - - + + + + + + + + + + + diff --git a/src/webapp/WEB-INF/classes/config/origen/count/editAGVWorkTASKPage.xml b/src/webapp/WEB-INF/classes/config/origen/count/editAGVWorkTASKPage.xml index dd5a6f9..265caed 100644 --- a/src/webapp/WEB-INF/classes/config/origen/count/editAGVWorkTASKPage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/count/editAGVWorkTASKPage.xml @@ -128,7 +128,11 @@ + isPrecision="true" /> + @@ -174,12 +178,13 @@ + + w601,w602,w603,w604,w605,w31,w32,w33,w34,w35,w36,w37,w38,w39,w40,w41,w42,w43,w44" /> diff --git a/src/webapp/WEB-INF/classes/config/origen/receiving/editASNsPage.xml b/src/webapp/WEB-INF/classes/config/origen/receiving/editASNsPage.xml index b334641..689d65a 100644 --- a/src/webapp/WEB-INF/classes/config/origen/receiving/editASNsPage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/receiving/editASNsPage.xml @@ -88,6 +88,7 @@ asnDetail.lotInfo.propC3, asnDetail.lotInfo.propC6, asnDetail.lotInfo.propC7, + ad.lotInfo.propLC5, asnDetail.description FROM ASNDetail asnDetail left join asnDetail.item item @@ -120,6 +121,7 @@ + diff --git a/src/webapp/WEB-INF/classes/dataSourceContext.xml b/src/webapp/WEB-INF/classes/dataSourceContext.xml index ddce4d1..319963b 100644 --- a/src/webapp/WEB-INF/classes/dataSourceContext.xml +++ b/src/webapp/WEB-INF/classes/dataSourceContext.xml @@ -27,7 +27,7 @@ jdbc:sqlserver://192.168.2.88:1433;DatabaseName=zwlgtest - +