diff --git a/log4j.properties b/log4j.properties index 4018d51..34a6e55 100644 --- a/log4j.properties +++ b/log4j.properties @@ -16,8 +16,8 @@ # $Id: log4j.properties,v 1.3 2010/06/01 09:25:32 peng.lei Exp $ log4j.rootCategory=INFO,stdout,R -log4j.logger.org.hibernate.SQL=DEBUG -log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE +#log4j.logger.org.hibernate.SQL=DEBUG +#log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout diff --git a/src/main/java/PostTest.java b/src/main/java/PostTest.java index 0e41779..9e2ff46 100644 --- a/src/main/java/PostTest.java +++ b/src/main/java/PostTest.java @@ -11,7 +11,9 @@ import java.nio.file.Paths; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; +import java.time.DayOfWeek; import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -48,14 +50,42 @@ public class PostTest { // }fe80::2db:5cff:feea:c24f%wlan0 // String str= getMacByIP("192.168.2.88"); // "10-12-04".substring(2, 3); - Date date=new Date(); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - int month = calendar.get(Calendar.MONTH)+1; - int year=calendar.get(Calendar.YEAR); - logger.info("date---"+date); - logger.info("month---"+month); - logger.info("year---"+year); +// Date date=new Date(); +// +// SimpleDateFormat hms = new SimpleDateFormat("HH:mm"); +// +// String s=hms.format(date); +// logger.info("date--11-"+s); +// +// +// Calendar calendar = Calendar.getInstance(); +// calendar.setTime(date); +// int month = calendar.get(Calendar.MONTH)+1; +// int year=calendar.get(Calendar.YEAR); +// logger.info("date---"+date); +// logger.info("month---"+month); +// logger.info("year---"+year); + + // 获取当前日期 + LocalDate today = LocalDate.now(); + + // 获取当前是周几 + DayOfWeek dayOfWeek = today.getDayOfWeek(); + + System.out.println("今天是: " + today); + System.out.println("今天是周: " + dayOfWeek); + + // 检查是否为工作日(周一到周五) + if (dayOfWeek != DayOfWeek.SATURDAY && dayOfWeek != DayOfWeek.SUNDAY) { + System.out.println("今天是工作日,执行任务..."); + // 这里放置需要在工作日执行的代码 + + } else { + System.out.println("今天是周末,不执行任务。"); + } + + + // String ts="10-11-02"; // logger.info(ts.substring(6, 2)); // String input = "hello123456"; diff --git a/src/main/java/adapterContext.xml b/src/main/java/adapterContext.xml index 555d556..b1b0c98 100644 --- a/src/main/java/adapterContext.xml +++ b/src/main/java/adapterContext.xml @@ -36,7 +36,7 @@ - + @@ -45,10 +45,24 @@ - + + + + + + + + + + + + 0 0/01 * * * ? + + + diff --git a/src/main/java/com/dev/energy/server/action/QueryAction.java b/src/main/java/com/dev/energy/server/action/QueryAction.java index 0526e38..94173b6 100644 --- a/src/main/java/com/dev/energy/server/action/QueryAction.java +++ b/src/main/java/com/dev/energy/server/action/QueryAction.java @@ -266,7 +266,7 @@ public class QueryAction extends AbstractAction implements ApplicationContextAwa } public TableConfig buildGrid(TableConfig tableConfig) { - log.info("------------------------------------------------------------------------------------------------开始查询------------------------------------------------------------------------------------------------: "); +// log.info("------------------------------------------------------------------------------------------------开始查询------------------------------------------------------------------------------------------------: "); Object controlResult = actionControlTurnExcute(tableConfig.getPageId(), new Object[]{tableConfig}); if (controlResult != null) { return (TableConfig) controlResult; diff --git a/src/main/java/com/dev/swms/server/model/TaskRemind/TaskRemind.java b/src/main/java/com/dev/swms/server/model/TaskRemind/TaskRemind.java new file mode 100644 index 0000000..9deae73 --- /dev/null +++ b/src/main/java/com/dev/swms/server/model/TaskRemind/TaskRemind.java @@ -0,0 +1,66 @@ +package com.dev.swms.server.model.TaskRemind; + +import java.util.Date; + +import com.dev.energy.server.model.Entity; + +public class TaskRemind extends Entity{ + + /** + * + */ + private static final long serialVersionUID = -189880164514947907L; + private Long userId;//用户id + private String title;//标题 + private String content;//推送内容 + private String status;//状态 + private String createName; + private Date createTime; + private Date remindTime;//推送时间 + + public Long getUserId() { + return userId; + } + public void setUserId(Long userId) { + this.userId = userId; + } + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public String getContent() { + return content; + } + public void setContent(String content) { + this.content = content; + } + public String getStatus() { + return status; + } + public void setStatus(String status) { + this.status = status; + } + public String getCreateName() { + return createName; + } + public void setCreateName(String createName) { + this.createName = createName; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public Date getRemindTime() { + return remindTime; + } + public void setRemindTime(Date remindTime) { + this.remindTime = remindTime; + } + + + +} diff --git a/src/main/java/com/dev/swms/server/model/TaskRemind/taskRemind.hbm.xml b/src/main/java/com/dev/swms/server/model/TaskRemind/taskRemind.hbm.xml new file mode 100644 index 0000000..9e13700 --- /dev/null +++ b/src/main/java/com/dev/swms/server/model/TaskRemind/taskRemind.hbm.xml @@ -0,0 +1,33 @@ + + + + + + + + wms_Task_Remind + START WITH 1000 + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/dev/swms/server/model/count/CountPlan.java b/src/main/java/com/dev/swms/server/model/count/CountPlan.java index 7c029be..8d10b30 100644 --- a/src/main/java/com/dev/swms/server/model/count/CountPlan.java +++ b/src/main/java/com/dev/swms/server/model/count/CountPlan.java @@ -76,6 +76,7 @@ public class CountPlan extends Entity { private int finishNo;//完成行数 private boolean beWarehous;//是否入库 private boolean beOutbound;//是否出库 +// private boolean bebarCode;//是否序列号 public boolean isBeWarehous() { diff --git a/src/main/java/com/dev/swms/server/model/delivery/PlantLocation.java b/src/main/java/com/dev/swms/server/model/delivery/PlantLocation.java index b345524..cf7b17c 100644 --- a/src/main/java/com/dev/swms/server/model/delivery/PlantLocation.java +++ b/src/main/java/com/dev/swms/server/model/delivery/PlantLocation.java @@ -17,7 +17,7 @@ public class PlantLocation extends Entity{ private String description; /**位置大楼*/ private String locFloor; - /**是否入库登记*/ + /**是否不良品入库登记*/ private boolean beRegister=false; /**是否优先入波*/ private boolean bePriorityWave=false; diff --git a/src/main/java/com/dev/swms/server/model/shipping/AutomaticWaveDoc.java b/src/main/java/com/dev/swms/server/model/shipping/AutomaticWaveDoc.java new file mode 100644 index 0000000..325ec6e --- /dev/null +++ b/src/main/java/com/dev/swms/server/model/shipping/AutomaticWaveDoc.java @@ -0,0 +1,224 @@ +package com.dev.swms.server.model.shipping; + +import com.dev.energy.server.model.Entity; + +public class AutomaticWaveDoc extends Entity{ + + + /** + * + */ + private static final long serialVersionUID = 6557962882061079762L; + private int hour1=0;//小时 + private int minute1=0;//分钟 + private Boolean beEnabled1=false;//是否启用 + private int hour2=0;//小时 + private int minute2=0;//分钟 + private Boolean beEnabled2=false;//是否下发CRS + private int hour3=0;//小时 + private int minute3=0;//分钟 + private Boolean beEnabled3=false;//是否启用 + private int hour4=0;//小时 + private int minute4=0;//分钟 + private Boolean beEnabled4=false;//是否启用 + private int hour5=0;//小时 + private int minute5=0;//分钟 + private Boolean beEnabled5=false;//是否启用 + private int hour6=0;//小时 + private int minute6=0;//分钟 + private Boolean beEnabled6=false;//是否启用 + private int hour7=0;//小时 + private int minute7=0;//分钟 + private Boolean beEnabled7=false;//是否启用 + private int hour8=0;//小时 + private int minute8=0;//分钟 + private Boolean beEnabled8=false;//是否启用 + private int hour9=0;//小时 + private int minute9=0;//分钟 + private Boolean beEnabled9=false;//是否启用 + private int hour10=0;//小时 + private int minute10=0;//分钟 + private Boolean beEnabled10=false;//是否启用 + public int getHour1() { + return hour1; + } + public void setHour1(int hour1) { + this.hour1 = hour1; + } + public int getMinute1() { + return minute1; + } + public void setMinute1(int minute1) { + this.minute1 = minute1; + } + public Boolean getBeEnabled1() { + return beEnabled1; + } + public void setBeEnabled1(Boolean beEnabled1) { + this.beEnabled1 = beEnabled1; + } + public int getHour2() { + return hour2; + } + public void setHour2(int hour2) { + this.hour2 = hour2; + } + public int getMinute2() { + return minute2; + } + public void setMinute2(int minute2) { + this.minute2 = minute2; + } + public Boolean getBeEnabled2() { + return beEnabled2; + } + public void setBeEnabled2(Boolean beEnabled2) { + this.beEnabled2 = beEnabled2; + } + public int getHour3() { + return hour3; + } + public void setHour3(int hour3) { + this.hour3 = hour3; + } + public int getMinute3() { + return minute3; + } + public void setMinute3(int minute3) { + this.minute3 = minute3; + } + public Boolean getBeEnabled3() { + return beEnabled3; + } + public void setBeEnabled3(Boolean beEnabled3) { + this.beEnabled3 = beEnabled3; + } + public int getHour4() { + return hour4; + } + public void setHour4(int hour4) { + this.hour4 = hour4; + } + public int getMinute4() { + return minute4; + } + public void setMinute4(int minute4) { + this.minute4 = minute4; + } + public Boolean getBeEnabled4() { + return beEnabled4; + } + public void setBeEnabled4(Boolean beEnabled4) { + this.beEnabled4 = beEnabled4; + } + public int getHour5() { + return hour5; + } + public void setHour5(int hour5) { + this.hour5 = hour5; + } + public int getMinute5() { + return minute5; + } + public void setMinute5(int minute5) { + this.minute5 = minute5; + } + public Boolean getBeEnabled5() { + return beEnabled5; + } + public void setBeEnabled5(Boolean beEnabled5) { + this.beEnabled5 = beEnabled5; + } + public int getHour6() { + return hour6; + } + public void setHour6(int hour6) { + this.hour6 = hour6; + } + public int getMinute6() { + return minute6; + } + public void setMinute6(int minute6) { + this.minute6 = minute6; + } + public Boolean getBeEnabled6() { + return beEnabled6; + } + public void setBeEnabled6(Boolean beEnabled6) { + this.beEnabled6 = beEnabled6; + } + public int getHour7() { + return hour7; + } + public void setHour7(int hour7) { + this.hour7 = hour7; + } + public int getMinute7() { + return minute7; + } + public void setMinute7(int minute7) { + this.minute7 = minute7; + } + public Boolean getBeEnabled7() { + return beEnabled7; + } + public void setBeEnabled7(Boolean beEnabled7) { + this.beEnabled7 = beEnabled7; + } + public int getHour8() { + return hour8; + } + public void setHour8(int hour8) { + this.hour8 = hour8; + } + public int getMinute8() { + return minute8; + } + public void setMinute8(int minute8) { + this.minute8 = minute8; + } + public Boolean getBeEnabled8() { + return beEnabled8; + } + public void setBeEnabled8(Boolean beEnabled8) { + this.beEnabled8 = beEnabled8; + } + public int getHour9() { + return hour9; + } + public void setHour9(int hour9) { + this.hour9 = hour9; + } + public int getMinute9() { + return minute9; + } + public void setMinute9(int minute9) { + this.minute9 = minute9; + } + public Boolean getBeEnabled9() { + return beEnabled9; + } + public void setBeEnabled9(Boolean beEnabled9) { + this.beEnabled9 = beEnabled9; + } + public int getHour10() { + return hour10; + } + public void setHour10(int hour10) { + this.hour10 = hour10; + } + public int getMinute10() { + return minute10; + } + public void setMinute10(int minute10) { + this.minute10 = minute10; + } + public Boolean getBeEnabled10() { + return beEnabled10; + } + public void setBeEnabled10(Boolean beEnabled10) { + this.beEnabled10 = beEnabled10; + } + + +} diff --git a/src/main/java/com/dev/swms/server/model/shipping/PickTicketDetail.java b/src/main/java/com/dev/swms/server/model/shipping/PickTicketDetail.java index 8ca470b..73143f1 100644 --- a/src/main/java/com/dev/swms/server/model/shipping/PickTicketDetail.java +++ b/src/main/java/com/dev/swms/server/model/shipping/PickTicketDetail.java @@ -93,7 +93,7 @@ public class PickTicketDetail extends AbstractMoveDocDetail { private String strBill12;//机台号 private String strBill13; //receiver private String strBill14; //SAP指定序列号值 - private String strBill15; //加急入库标记(1) + private String strBill15; //加急入库标记(1)是否指定 private String strBill16; //交接位置 private String strBill17; //备注 private String strBill18; //申请人 diff --git a/src/main/java/com/dev/swms/server/model/shipping/automaticWaveDoc.hbm.xml b/src/main/java/com/dev/swms/server/model/shipping/automaticWaveDoc.hbm.xml new file mode 100644 index 0000000..be9b4f7 --- /dev/null +++ b/src/main/java/com/dev/swms/server/model/shipping/automaticWaveDoc.hbm.xml @@ -0,0 +1,45 @@ + + + + + + + wms_Automatic_Wave_Doc + START WITH 1000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/dev/swms/server/service/base/ShiXiaoManager.java b/src/main/java/com/dev/swms/server/service/base/ShiXiaoManager.java index 869945f..813ad66 100644 --- a/src/main/java/com/dev/swms/server/service/base/ShiXiaoManager.java +++ b/src/main/java/com/dev/swms/server/service/base/ShiXiaoManager.java @@ -7,6 +7,7 @@ import org.springframework.transaction.annotation.Transactional; import com.dev.energy.server.service.BaseManager; import com.dev.swms.server.model.base.Location; import com.dev.swms.server.model.base.ShiXiao; +import com.dev.swms.server.model.shipping.AutomaticWaveDoc; @Transactional(readOnly = true) public interface ShiXiaoManager extends BaseManager{ @@ -27,4 +28,9 @@ public interface ShiXiaoManager extends BaseManager{ @Transactional void deleteStock(List ids); + + //新增 + @Transactional + void addAutomaticWaveDoc(AutomaticWaveDoc aw); + } diff --git a/src/main/java/com/dev/swms/server/service/base/pojo/DefaultShiXiaoManager.java b/src/main/java/com/dev/swms/server/service/base/pojo/DefaultShiXiaoManager.java index ad7844e..4b10d28 100644 --- a/src/main/java/com/dev/swms/server/service/base/pojo/DefaultShiXiaoManager.java +++ b/src/main/java/com/dev/swms/server/service/base/pojo/DefaultShiXiaoManager.java @@ -2,11 +2,13 @@ package com.dev.swms.server.service.base.pojo; import java.util.List; +import com.dev.energy.server.exception.BusinessException; import com.dev.energy.server.service.pojo.DefaultBaseManager; import com.dev.energy.server.service.security.UserManager; import com.dev.energy.server.util.LocalizedMessage; import com.dev.swms.server.model.base.ShiXiao; import com.dev.swms.server.model.inventory.Stock; +import com.dev.swms.server.model.shipping.AutomaticWaveDoc; import com.dev.swms.server.model.shipping.SeedWall; import com.dev.swms.server.service.base.ShiXiaoManager; import com.dev.swms.server.service.interfaceLog.WmsOperationHisManager; @@ -70,4 +72,20 @@ public class DefaultShiXiaoManager extends DefaultBaseManager implements ShiXiao } + public void addAutomaticWaveDoc(AutomaticWaveDoc shixiao) { + String acttiveName="修改"; + if(shixiao.isNew()) { + acttiveName="新建"; + } + if(shixiao.getHour1()<0||shixiao.getHour1()>=24) { + throw new BusinessException("小时值输入错误,"+shixiao.getHour1()); + } + if(shixiao.getMinute1()<0||shixiao.getMinute1()>=60) { + throw new BusinessException("分钟值输入错误,"+shixiao.getMinute1()); + } + commonDao.store(shixiao); + wmsOperationHisManager.storeOperationHis(shixiao.getId(),shixiao.getHour1()+"", null,"", "波次执行时间", acttiveName,null, + null,0, 0,0, 0, "", "WMS"); + } + } 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 bb80d80..ca3adb2 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 @@ -186,7 +186,8 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA + "(case when item.default_Warehouse_Area_ID is not NULL then item.default_Warehouse_Area_ID ELSE z.id END) as z_id," + "item.volume,ad.BE_MARK_WEIGHT as beMarkWeight,item.FEE_TYPE," + " item.be_Extend1,item.be_Extend2,asn.BILL_TYPE_ID,ad.strBill11,ad.bf_qty ,z.name as z_name," - + "z1.name as z1_name, item.be_Image_File as be_Image_File,bt.NAME as bt_name " + + "z1.name as z1_name, item.be_Image_File as be_Image_File,bt.NAME as bt_name," + + "asn.sourceType as sourceType " + " from ASN_DETAIL ad " + " left join ASN asn on asn.id=ad.ASN_ID " + " left join ITEM item on item.id=ad.ITEM_ID " @@ -323,9 +324,12 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA obj.put("z_id", arrier[i++]==null?"":arrier[i-1]); String zxmx=""; String billCode= arrier[26]==null?"":arrier[26].toString();//单据类型 - logger.info("单据类型:"+billCode); + String sourceType=arrier[27]==null?"":arrier[27].toString();//SAP移位类型 double volume=Double.parseDouble(arrier[15].toString()); - if(volume<=0&&!billCode.equals("移位单")&&!billCode.equals("转库单")){ + if(volume<=0&&!billCode.equals("移位单")&&!billCode.equals("转库单") + &&!sourceType.equals("531")&&!sourceType.equals("Z66") + &&!sourceType.equals("301")&&!sourceType.equals("311") + &&!sourceType.equals("542")&&!sourceType.equals("315")){ zxmx="是"; }else{ zxmx="否"; @@ -3810,6 +3814,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA if(taskId>0){ Task task=this.load(Task.class, taskId); ItemKey ik=this.load(ItemKey.class, task.getItemKey().getId()); + Item item=this.load(Item.class, ik.getItem().getId()); Location srcLoc =this.load(Location.class, task.getSrcLoc().getId()); WarehouseArea zone=this.load(WarehouseArea.class, srcLoc.getZone().getId()); @@ -3842,6 +3847,13 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA } data=array.toString(); status = "1"; + List socode= commonDao.findByQuery("select p.code from PlantLocation p where p.beRegister=1 "); + if(ik.getLotInfo().getPropC2()!=null&&socode.size()>0 + &&socode.contains(ik.getLotInfo().getPropC2())) { + status="0"; + msg=ik.getLotInfo().getPropC2()+"不能换库位拣货"; + data="[]"; + } }else{ status = "2"; msg = "找不到相应记录!"; diff --git a/src/main/java/com/dev/swms/server/service/inventory/InventoryManager.java b/src/main/java/com/dev/swms/server/service/inventory/InventoryManager.java index e47d83f..d6caf02 100644 --- a/src/main/java/com/dev/swms/server/service/inventory/InventoryManager.java +++ b/src/main/java/com/dev/swms/server/service/inventory/InventoryManager.java @@ -178,7 +178,7 @@ public interface InventoryManager extends BaseManager{ @Transactional void manualMove(Long srcInventoryId, Long destLocationId, - double quantity, Long workerId); + double quantity, Long workerId,String ncr); /** 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 6314abb..c986e2e 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 @@ -791,12 +791,48 @@ public class DefaultInventoryManager extends DefaultBaseManager implements Inven // locationManager.kuwei(list); } public void manualMove(Long srcInventoryId, Long destLocationId, - double quantity, Long workerId) { + double quantity, Long workerId,String ncr) { Inventory srcInv=commonDao.load(Inventory.class, srcInventoryId); Location deslocation=commonDao.load(Location.class, destLocationId); Location strlocation=commonDao.load(Location.class, srcInv.getLocation().getId()); ItemKey itemKey=commonDao.load(ItemKey.class, srcInv.getItemKey().getId()); Item item=commonDao.load(Item.class, itemKey.getItem().getId()); + boolean beNcr=false;//是否不良品 + double NCRqty=quantity; + + //验证不良品库存 + if(itemKey.getLotInfo()!=null&&itemKey.getLotInfo().getPropC2()!=null + &&itemKey.getLotInfo().getPropC2().length()>0) { + String hqls="select p.id from PlantLocation p where p.code='"+itemKey.getLotInfo().getPropC2()+"'" + + " and p.beRegister=1 "; + List listplan= commonDao.findByQuery(hqls); + if(listplan.size()>0) { + if(ncr==null||ncr.equals("")) { + throw new BusinessException("不良品LOC需要输入NCR"); + } + String wsql="select sum(r.receivedQuantity-r.shippedQuantity) from ReceivingInventory r where r.itemKey.item.id= " + + item.getId()+" and r.location.id="+strlocation.getId() + +" and r.strBill1='"+ncr+"' and r.receivedQuantity>r.shippedQuantity "; + if(srcInv.getBarCode()!=null&&srcInv.getBarCode().length()>0) { + wsql+=" and r.barCode='"+srcInv.getBarCode()+"'"; + } + List rdsqty=commonDao.findByQuery(wsql); + if(rdsqty.size()>0) { + double qys=0; + if(rdsqty.get(0)!=null) { + qys=rdsqty.get(0); + } + if(quantity>qys) { + throw new BusinessException(ncr+",NCR库存数"+qys); + } + }else { + throw new BusinessException(ncr+",NCR号输入错误"); + } + } + beNcr=true; + } + + if(srcInv.getStatus().equals("待上架")) { throw new BusinessException("待上架库存不能移位!"); } @@ -986,9 +1022,53 @@ public class DefaultInventoryManager extends DefaultBaseManager implements Inven itemKey, srcInv.getStorageDate(), srcInv.getSOI(), quantity, null, srcInv.getStatus(), srcInv.getId(), "移位", null,workerId,srcInv.getBarCode(),srcInv.getLocation(),null,null); - + //不良品LOC移位 + if(beNcr) { + if(ncr!=null&&!ncr.equals("")) { + String wsql=" from ReceivingInventory r where r.itemKey.item.id= " + +item.getId()+" and r.location.id="+strlocation.getId() + +" and r.strBill1='"+ncr+"' and r.receivedQuantity>r.shippedQuantity" + + " "; + if(srcInv.getBarCode()!=null&&srcInv.getBarCode().length()>0) { + wsql+=" and r.barCode='"+srcInv.getBarCode()+"'"; + } + List rdsqty=commonDao.findByQuery(wsql); + if(rdsqty.size()>0) { + for(ReceivingInventory rd:rdsqty) { + double ncrql=rd.getReceivedQuantity()-rd.getShippedQuantity(); + if(ncrql<=NCRqty) { + rd.setLocation(deslocation); + NCRqty=NCRqty-ncrql; + }else { + rd.setReceivedQuantity(rd.getReceivedQuantity()-NCRqty); + ReceivingInventory r = EntityFactory.getEntity(ReceivingInventory.class); + r.setLocation(deslocation); + r.setItemKey(rd.getItemKey()); + r.setReceivedQuantity(NCRqty); + r.setReceiveDate(rd.getReceiveDate()); + r.setOperator(rd.getOperator()); + r.setReceivedQuantityMU(r.getReceivedQuantity()); + r.setStrBill1(rd.getStrBill1()); + r.setStrBill2(rd.getStrBill2()); + r.setStrBill3(rd.getStrBill3()); + r.setBarCode(rd.getBarCode()); + commonDao.store(r); + } + commonDao.store(rd); + if(NCRqty<=0) { + break; + } + } + } + } + } } + + + + + private Stock getStockWithNew(Location location, String lp, PackageUnit unit, double quantity) { Stock stock = null; if (!StringUtils.isEmpty(lp)) { 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 9df62af..5501ab9 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 @@ -1582,7 +1582,7 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo Task task = EntityFactory.getEntity(Task.class); task.setPickTicketDetail(ptd); Item item=commonDao.load(Item.class, ptd.getItem().getId()); - task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); + task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getId(),ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); task.setCode(TimeNumberUtils.getTaskCode()); task.setType(TaskType.MV_PICKTICKET); task.setItemKey(inventory.getItemKey()); @@ -1653,7 +1653,7 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo task.setPickTicketDetail(ptd); Item item=commonDao.load(Item.class, ptd.getItem().getId()); - task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); + task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getId(),ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); task.setCode(TimeNumberUtils.getTaskCode()); task.setType(TaskType.MV_PICKTICKET); @@ -1678,11 +1678,13 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo } - public String getSubWorkOrer(String picktickCode,WarehouseArea warehouseArea,Item item){ + public String getSubWorkOrer(Long pid,String picktickCode,WarehouseArea warehouseArea,Item item){ String code=""; if(warehouseArea.getId()==1765) { if(item.getGoodType()!=null&&item.getGoodType().equals("大件")) { - Long count= (Long) commonDao.findByQuery(" select max(t.id) from Task t where t.billCode like '"+picktickCode+"-%' and t.srcLoc.zone.id="+warehouseArea.getId()+ + Long count= (Long) commonDao.findByQuery(" select max(t.id) from Task t where " + + "t.pickTicketDetail.pickTicket.id="+pid+" and t.billCode like '"+picktickCode+"-%' " + + " and t.srcLoc.zone.id="+warehouseArea.getId()+ " and t.planQuantity>t.movedQuantityMU and t.itemKey.item.goodType='大件' ").get(0); if(count!=null&&count.longValue()>0){ Task t=this.load(Task.class,count); @@ -1691,24 +1693,27 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo code=bussinessCodeManager.getCodeForYmd(picktickCode+"-", 2); } }else { - Long count= (Long) commonDao.findByQuery(" select max(t.id) from Task t where t.billCode like '"+picktickCode+"-%' and t.srcLoc.zone.id="+warehouseArea.getId()+ + Long count= (Long) commonDao.findByQuery(" select max(t.id) from Task t where " + + " t.pickTicketDetail.pickTicket.id="+pid+" and t.billCode like '"+picktickCode+"-%' " + + "and t.srcLoc.zone.id="+warehouseArea.getId()+ " and t.planQuantity>t.movedQuantityMU and t.itemKey.item.goodType<>'大件' ").get(0); if(count!=null&&count.longValue()>0){ Task t=this.load(Task.class,count); code=t.getBillCode(); }else{ - code=bussinessCodeManager.getCodeForYmd(picktickCode+"-", 2); } } }else { - Long count= (Long) commonDao.findByQuery(" select max(t.id) from Task t where t.billCode like '"+picktickCode+"-%' and t.srcLoc.zone.id="+warehouseArea.getId()+ + Long count= (Long) commonDao.findByQuery(" select max(t.id) from Task t " + + "where t.pickTicketDetail.pickTicket.id="+pid + + " and t.billCode like '"+picktickCode+"-%' " + + "and t.srcLoc.zone.id="+warehouseArea.getId()+ " and t.planQuantity>t.movedQuantityMU ").get(0); if(count!=null&&count.longValue()>0){ Task t=this.load(Task.class,count); code=t.getBillCode(); }else{ - code=bussinessCodeManager.getCodeForYmd(picktickCode+"-", 2); } } @@ -2394,7 +2399,8 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo }else { //工单发料,可发LOC配置信息 String bsql=" from BillTypeConfig b where b.billType.id="+pt.getBillType().getId(); - if(ptd.getNewLotInfo().getPropC9()!=null&&!ptd.getNewLotInfo().getPropC9().equals("")) { + if(ptd.getNewLotInfo()!=null&&ptd.getNewLotInfo().getPropC9()!=null + &&!ptd.getNewLotInfo().getPropC9().equals("")) { bsql+=" and b.plantCode='"+ptd.getNewLotInfo().getPropC9()+"'"; } List bts=commonDao.findByQuery(bsql); @@ -2506,7 +2512,7 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo task.setPickTicketDetail(ptd); Item item=commonDao.load(Item.class, ptd.getItem().getId()); - task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); + task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getId(),ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); task.setCode(TimeNumberUtils.getTaskCode()); task.setType(TaskType.MV_PICKTICKET); @@ -3132,7 +3138,7 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo Task task = EntityFactory.getEntity(Task.class); task.setPickTicketDetail(ptd); Item item=commonDao.load(Item.class, ptd.getItem().getId()); - task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); + task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getId(),ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); //单个子任务数量 if(qty>0) { List tas=commonDao.findByQuery("select t.hs from PickTicketTaskView t where t.pickTicket.id="+ptd.getPickTicket().getId() @@ -3427,7 +3433,7 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo task.setPickTicketDetail(ptd); Item item=commonDao.load(Item.class, ptd.getItem().getId()); - task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); + task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getId(),ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); //单个子任务数量 if(qty>0) { List tas=commonDao.findByQuery("select t.hs from PickTicketTaskView t where t.pickTicket.id="+ptd.getPickTicket().getId() @@ -3560,7 +3566,11 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo pt.setStatus(PickTicketStatus.CHECK); commonDao.store(pt); } + if(UserHolder.getUser()!=null) { t.setStrBill1(UserHolder.getUser().getName()); + }else { + t.setStrBill1("系统自动"); + } t.setDateBill1(new Date()); t.setAgvStatus(1);//1=可以分配分拨墙并下发AGV t.setYc_qty(t.getPlanQuantityMU()); @@ -4111,8 +4121,7 @@ public class DefaultAutoAllocator extends DefaultBaseManager implements AutoAllo Task task = EntityFactory.getEntity(Task.class); task.setPickTicketDetail(ptd); Item item=commonDao.load(Item.class, ptd.getItem().getId()); - task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); - + task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getId(),ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); task.setCode(TimeNumberUtils.getTaskCode()); task.setType(TaskType.MV_PICKTICKET); task.setItemKey(inventory.getItemKey()); diff --git a/src/main/java/com/dev/swms/server/service/shipping/WaveDocManager.java b/src/main/java/com/dev/swms/server/service/shipping/WaveDocManager.java index 9328e39..57a67f8 100644 --- a/src/main/java/com/dev/swms/server/service/shipping/WaveDocManager.java +++ b/src/main/java/com/dev/swms/server/service/shipping/WaveDocManager.java @@ -336,7 +336,7 @@ public interface WaveDocManager extends BaseManager { void hotWaveDoc(Date date1,Date date2 ,Integer lxqQty,Integer longtiem,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); - void newHotWaveDoc(Date date1,Date date2 ,Integer lxqQty,Integer longtiem,Integer hjqQty,Integer lkqQty,boolean ddq,String pickCode + WaveDoc newHotWaveDoc(Date date1,Date date2 ,Integer lxqQty,Integer longtiem,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); @Transactional @@ -349,8 +349,8 @@ public interface WaveDocManager extends BaseManager { void alloteWaveDoc(long waveDocId,boolean lx1,boolean lx2,boolean lx3,boolean lx4,boolean lx5,boolean lx6,boolean lx7,boolean lx8,boolean lx9,boolean lx10,boolean lx11,boolean lx12,boolean lx13,boolean lx14,boolean lx15,boolean hj1,boolean hj2,boolean hj3,boolean hj4,boolean hj5,boolean hj6,boolean hj7,boolean lk1,boolean lk2,boolean lk3,boolean lk4,boolean lk5); - - + //定时任务自动创建 + void newAutomaticWaveDoc(); } 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 f9f3231..1533b14 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 @@ -2887,7 +2887,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick Task task = EntityFactory.getEntity(Task.class); task.setPickTicketDetail(ptd); Item item=commonDao.load(Item.class, ptd.getItem().getId()); - task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); + task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getId(),ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); task.setCode(TimeNumberUtils.getTaskCode()); task.setType(TaskType.MV_PICKTICKET); @@ -2910,11 +2910,14 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick } - public String getSubWorkOrer(String picktickCode,WarehouseArea warehouseArea,Item item){ + public String getSubWorkOrer(Long pid,String picktickCode,WarehouseArea warehouseArea,Item item){ String code=""; if(warehouseArea.getId()==1765) { if(item.getGoodType()!=null&&item.getGoodType().equals("大件")) { - Long count= (Long) commonDao.findByQuery(" select max(t.id) from Task t where t.billCode like '"+picktickCode+"-%' and t.srcLoc.zone.id="+warehouseArea.getId()+ + Long count= (Long) commonDao.findByQuery(" select max(t.id) from Task t " + + "where t.pickTicketDetail.pickTicket.id="+pid + + " and t.billCode like '"+picktickCode+"-%' " + + "and t.srcLoc.zone.id="+warehouseArea.getId()+ " and t.planQuantity>t.movedQuantityMU and t.itemKey.item.goodType='大件' ").get(0); if(count!=null&&count.longValue()>0){ Task t=this.load(Task.class,count); @@ -2924,7 +2927,10 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick code=bussinessCodeManager.getCodeForYmd(picktickCode+"-", 2); } }else { - Long count= (Long) commonDao.findByQuery(" select max(t.id) from Task t where t.billCode like '"+picktickCode+"-%' and t.srcLoc.zone.id="+warehouseArea.getId()+ + Long count= (Long) commonDao.findByQuery(" select max(t.id) from Task t " + + "where t.pickTicketDetail.pickTicket.id="+pid + + " and t.billCode like '"+picktickCode+"-%' " + + "and t.srcLoc.zone.id="+warehouseArea.getId()+ " and t.planQuantity>t.movedQuantityMU and t.itemKey.item.goodType<>'大件' ").get(0); if(count!=null&&count.longValue()>0){ Task t=this.load(Task.class,count); @@ -2935,7 +2941,10 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick } } }else { - Long count= (Long) commonDao.findByQuery(" select max(t.id) from Task t where t.billCode like '"+picktickCode+"-%' and t.srcLoc.zone.id="+warehouseArea.getId()+ + Long count= (Long) commonDao.findByQuery(" select max(t.id) from Task t " + + "where t.pickTicketDetail.pickTicket.id="+pid + + " and t.billCode like '"+picktickCode+"-%' " + + " and t.srcLoc.zone.id="+warehouseArea.getId()+ " and t.planQuantity>t.movedQuantityMU ").get(0); if(count!=null&&count.longValue()>0){ Task t=this.load(Task.class,count); @@ -4429,6 +4438,10 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick if(list1.size()>0) { PlantLocation p=list1.get(0); if(p.isBeRegister()) { + if(sqr==null||sqr.equals("")) { + throw new BusinessException(sqr+"不良品需要输入NCR"); + } + String sql=" from ReceivingInventory r where r.itemKey.item.id="+ik.getItem().getId() +" and r.itemKey.lotInfo.propC2='"+ik.getLotInfo().getPropC2()+"' " +" and r.location.id="+task.getSrcLoc().getId()+" and r.strBill1='"+sqr+"'" @@ -4451,6 +4464,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick if(qty>=pickQty) { r.setShippedQuantity(r.getShippedQuantity()+pickQty); r.setPickDate(new Date()); + commonDao.store(r); pickQty=0; }else { @@ -7085,11 +7099,17 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick @Override public void updateWorker(long taskId, long workerId,String targetArea) { Task task = commonDao.load(Task.class, taskId); + if(workerId>0) { Worker w = commonDao.load(Worker.class, workerId); task.setWorker1(w); if(task.getAgvStatus()==0) { - task.setAgvStatus(1); + List tids=new ArrayList(); + tids.add(task); + boolean SAPstatus= interfaceReqManager.wmsSapZhuantaihuichuang(tids, 0,"",1);//状态回传 + if(!SAPstatus) { + task.setAgvStatus(1); + } } } if(targetArea!=null&&targetArea.length()>0) { @@ -7705,7 +7725,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick Task task = EntityFactory.getEntity(Task.class); task.setPickTicketDetail(ptd); Item item=commonDao.load(Item.class, ptd.getItem().getId()); - task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); + task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getId(),ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); task.setCode(TimeNumberUtils.getTaskCode()); task.setType(TaskType.MV_PICKTICKET); task.setItemKey(inventory.getItemKey()); @@ -7799,10 +7819,9 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick unQty -= allocateQty; ptd.setAllocatedQuantity(ptd.getAllocatedQuantity()+ allocateQty); commonDao.store(ptd); - Task task = EntityFactory.getEntity(Task.class); task.setPickTicketDetail(ptd); - task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); + task.setBillCode(getSubWorkOrer(ptd.getPickTicket().getId(),ptd.getPickTicket().getCode(),inventory.getLocation().getZone(),item)); task.setCode(TimeNumberUtils.getTaskCode()); task.setType(TaskType.MV_PICKTICKET); @@ -8702,11 +8721,21 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick Integer lxqQty,Integer hjqQty,Integer lkqQty,boolean ddq,String pickCode,Integer taskqty,Integer logic) { WaveDoc waveDoc=EntityFactory.getEntity(WaveDoc.class); waveDoc.setCode(TimeNumberUtils.getwaveDocCode()); - waveDoc.setWarehouse(WarehouseHolder.getWarehouse()); + if(WarehouseHolder.getWarehouse()!=null) { + waveDoc.setWarehouse(WarehouseHolder.getWarehouse()); + }else { + waveDoc.setWarehouse(commonDao.load(Warehouse.class, 1L)); + } + waveDoc.setStatus(WaveDocStatus.OPEN); waveDoc.setCreateDate(new Date()); waveDoc.setQuantity(waveDoc.getQuantity()); - waveDoc.setUserName(UserHolder.getUser().getName()); + if(UserHolder.getUser()!=null) { + waveDoc.setUserName(UserHolder.getUser().getName()); + }else { + waveDoc.setUserName("自动"); + } + waveDoc.setUpdateTime(new Date()); waveDoc.setBePopular(ddq); waveDoc.setLkqQty(lkqQty); @@ -8754,11 +8783,20 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick Integer hjqQty,Integer lkqQty,boolean ddq,String pickCode,Integer taskqty,Integer logic) { WaveDoc waveDoc=EntityFactory.getEntity(WaveDoc.class); waveDoc.setCode(TimeNumberUtils.getwaveDocCode()); - waveDoc.setWarehouse(WarehouseHolder.getWarehouse()); + if(WarehouseHolder.getWarehouse()!=null) { + waveDoc.setWarehouse(WarehouseHolder.getWarehouse()); + }else { + waveDoc.setWarehouse(commonDao.load(Warehouse.class, 1L)); + } + waveDoc.setStatus(WaveDocStatus.OPEN); waveDoc.setCreateDate(new Date()); waveDoc.setQuantity(waveDoc.getQuantity()); - waveDoc.setUserName(UserHolder.getUser().getName()); + if(UserHolder.getUser()!=null) { + waveDoc.setUserName(UserHolder.getUser().getName()); + }else { + waveDoc.setUserName("系统自动"); + } waveDoc.setUpdateTime(new Date()); waveDoc.setBePopular(ddq); waveDoc.setLkqQty(lkqQty); 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 7789ffa..aedbd66 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 @@ -5,6 +5,9 @@ import org.apache.log4j.Logger; import java.math.BigInteger; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -54,6 +57,7 @@ import com.dev.swms.server.model.rules.CompanyWorkRule; import com.dev.swms.server.model.rules.SortRule; import com.dev.swms.server.model.rules.WaveRule; import com.dev.swms.server.model.rules.WorkModel; +import com.dev.swms.server.model.shipping.AutomaticWaveDoc; import com.dev.swms.server.model.shipping.CageInfo; import com.dev.swms.server.model.shipping.PickTicket; import com.dev.swms.server.model.shipping.PickTicketDetail; @@ -68,6 +72,7 @@ import com.dev.swms.server.service.interfaceLog.JdbcManager; import com.dev.swms.server.service.inventory.InventoryManager; import com.dev.swms.server.service.picking.allocate.AutoAllocator; import com.dev.swms.server.service.sequence.BussinessCodeManager; +import com.dev.swms.server.service.shipping.NewWaveManager; import com.dev.swms.server.service.shipping.PickTicketManager; import com.dev.swms.server.service.shipping.WaveDocManager; import com.dev.swms.server.utils.DateUtil; @@ -94,16 +99,19 @@ public class DefaultWaveDocManager extends DefaultBaseManager implements protected final ItemManager itemManager; protected final BussinessCodeManager bussinessCodeManager; protected final JdbcManager jdbcManager; + protected final NewWaveManager newWaveManager; protected static Date hotWaveDate=new Date();//波次创建,判断不能同时新建 protected static boolean hotWave=true;//波次创建,判断不能同时新建 public DefaultWaveDocManager(PickTicketManager pickTicketManager, AutoAllocator autoAllocator, - InventoryManager inventoryManager, ItemManager itemManager,BussinessCodeManager bussinessCodeManager,JdbcManager jdbcManager) { + InventoryManager inventoryManager, ItemManager itemManager, + BussinessCodeManager bussinessCodeManager,JdbcManager jdbcManager,NewWaveManager newWaveManager) { this.pickTicketManager = pickTicketManager; this.autoAllocator = autoAllocator; this.inventoryManager = inventoryManager; this.itemManager=itemManager; this.bussinessCodeManager = bussinessCodeManager; this.jdbcManager = jdbcManager; + this.newWaveManager = newWaveManager; } @SuppressWarnings("unchecked") public void createWaveDoc() { @@ -2712,7 +2720,7 @@ public class DefaultWaveDocManager extends DefaultBaseManager implements } - public void newHotWaveDoc(Date date1,Date date2 ,Integer longtiem,Integer lxqQty,Integer hjqQty,Integer lkqQty,boolean ddq,String pickCode + public WaveDoc newHotWaveDoc(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) { Date date=new Date(); @@ -2947,6 +2955,8 @@ public class DefaultWaveDocManager extends DefaultBaseManager implements } hotWave=true; hotWaveDate=DateUtil.formatStrToDateYMD("2023-02-02"); + return waveDoc; + } @@ -4208,4 +4218,110 @@ public class DefaultWaveDocManager extends DefaultBaseManager implements autoAllocator.initiandcallAGV(waveDocId, lxq, hjq, lkq);//任务分配工作站 } } + + public void newAutomaticWaveDoc() { + // 获取当前日期 + LocalDate today = LocalDate.now(); + // 获取当前是周几 + DayOfWeek dayOfWeek = today.getDayOfWeek(); + if (dayOfWeek != DayOfWeek.SATURDAY && dayOfWeek != DayOfWeek.SUNDAY) { + System.out.println("今天是工作日,执行任务..."); + Date date=new Date(); + // 格式化时间 + SimpleDateFormat hms = new SimpleDateFormat("HH:mm"); + String s=hms.format(date); + logger.info("------自动创建波次------"+s); + String hql=" from AutomaticWaveDoc aw where aw.beEnabled1=true order by aw.hour1 "; + List list=commonDao.findByQuery(hql); + if(list.size()>0) { + for(AutomaticWaveDoc aw:list) { + String htiem=""; + if(aw.getHour1()<10) { + htiem="0"+aw.getHour1(); + }else { + htiem=""+aw.getHour1(); + } + if(aw.getMinute1()<10) { + htiem=htiem+":0"+aw.getMinute1(); + }else { + htiem=htiem+":"+aw.getMinute1(); + } + logger.info("------自动创建波次2----------------------"+htiem); + if(s.equals(htiem)) { + //查询料箱区还有多少任务未执行,超过300就不创建波次 + String hqlhs=" select t.id from Task t where t.srcLoc.zone.id=1763 " + + " and t.planQuantity>0 and t.movedQuantityMU=0" + + " and t.agvStatus='1' "; + List tasklist= commonDao.findByQuery(hqlhs); + logger.info("------自动创建波次2----------------------"+tasklist.size()); + if(tasklist.size()<=300) { + // 格式化时间 + SimpleDateFormat yms = new SimpleDateFormat("yyyy-MM-dd"); + Date date1=new Date(); + Date date2= new Date(); + try { + date1 = yms.parse("2025-01-01"); + date2=yms.parse("2025-12-31"); + } catch (ParseException e) { + // TODO 自动生成的 catch 块 + e.printStackTrace(); + } + + Integer lxqQty=10; + Integer longtiem=2; + Integer hjqQty=2; + Integer lkqQty=1; + Integer taskqty=30; + //创建波次 + hotWaveDoc( date1, date2 , lxqQty, longtiem, hjqQty, lkqQty,true,null + ,true,true,true,true,true,true,true,true,true, taskqty,false); + String wahql="select id from WaveDoc w where w.status='OPEN' " + + " and w.userName='自动' order by id desc "; + logger.info("------自动创建波次3----------------------"); + + List wids= commonDao.findByQuery(wahql); + if(wids.size()>0) { + long waveDocId=wids.get(0); + boolean lx1=false;boolean lx2=true; + boolean lx3=true;boolean lx4=true; + boolean lx5=true;boolean lx6=true; + boolean lx7=true;boolean lx8=true; + boolean lx9=true;boolean lx10=true; + boolean lx11=true; + boolean lx12=true;boolean lx13=false; + boolean lx14=false;boolean lx15=false; + boolean hj1=false;boolean hj2=false; + boolean hj3=true; boolean hj4=true; + boolean hj5=false;boolean hj6=false;boolean hj7=false; + boolean lk1=false;boolean lk2=true;boolean lk3=false; + boolean lk4=false;boolean lk5=false; + logger.info("------自动创建波次4---------------------"); + //是否下发CRS + if(aw.getBeEnabled2()) { + //分配工作站 + newWaveManager.alloteWaveDoc( waveDocId, lx1, lx2, lx3, + lx4, lx5, lx6, lx7, lx8, + lx9, lx10, lx11, lx12, lx13, + lx14, lx15, hj1, hj2, hj3, + hj4, hj5, hj6, hj7, lk1, + lk2, lk3, lk4, lk5); + List swids=new ArrayList(); + swids.add(waveDocId); + logger.info("------自动创建波次5---------------------"); + autoAllocator.taskIssuedAgv(swids);//下发 + } + logger.info("------自动创建波次6----------------------"); + } + + } + } + } + } + } else { + System.out.println("今天是周末,不执行任务。"); + } + + } + + } 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 cc3b962..0df5fe6 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 @@ -1058,9 +1058,14 @@ public class ASNReceiveServlet extends HttpServlet { if(ASNDetails.size()>0){ ASNDetail ad=ASNDetails.get(0); ASN asn=commonDao.load(ASN.class, ad.getAsn().getId()); - BillType bt=commonDao.load(BillType.class, asn.getBillType().getId()); +// BillType bt=commonDao.load(BillType.class, asn.getBillType().getId()); Item item=commonDao.load(Item.class, ad.getItem().getId()); - if(!bt.getName().equals("移位单")&&!bt.getName().equals("转库单")) { + if(asn.getSourceType()!=null&&!asn.getSourceType().equals("531") + &&!asn.getSourceType().equals("Z66") + &&!asn.getSourceType().equals("301") + &&!asn.getSourceType().equals("311") + &&!asn.getSourceType().equals("542") + &&!asn.getSourceType().equals("315")) { if(item.getVolume()<=0) { status = "2"; msg = "料号没测量,请先测量! "; @@ -1138,7 +1143,6 @@ public class ASNReceiveServlet extends HttpServlet { } }else{ -// logger.info(asnDetailId+"--整理1--+"+new Date()); Worker w= commonDao.load(Worker.class, userId); List result = Arrays.asList(asnDetailId.split(",")); double quantity=0; @@ -1152,8 +1156,12 @@ public class ASNReceiveServlet extends HttpServlet { sqt=ad.getLotInfo().getPropC2(); } ASN asn=commonDao.load(ASN.class, ad.getAsn().getId()); - BillType bt=commonDao.load(BillType.class, asn.getBillType().getId()); - if(!bt.getName().equals("移位单")&&!bt.getName().equals("转库单")) { + if(asn.getSourceType()!=null&&!asn.getSourceType().equals("531") + &&!asn.getSourceType().equals("Z66") + &&!asn.getSourceType().equals("301") + &&!asn.getSourceType().equals("311") + &&!asn.getSourceType().equals("542") + &&!asn.getSourceType().equals("315")) { if(item.getVolume()<=0) { status = "2"; msg = item.getCode()+"料号没测量,请先测量! "; @@ -1678,6 +1686,9 @@ public class ASNReceiveServlet extends HttpServlet { } } } + + //不良品LOC查询判断 + /**2025-09-23注释 if(ncrCode!=null&&!ncrCode.equals("")) { List Inventorys=commonDao.findByQuery(" from Inventory inv where inv.id in ("+invIds.toString()+") "); ItemKey ik=null; @@ -1719,8 +1730,6 @@ public class ASNReceiveServlet extends HttpServlet { String wsql="select sum(r.receivedQuantity-r.shippedQuantity) from ReceivingInventory r where r.itemKey.item.id= " + ik.getItem().getId()+" and r.location.id="+lc.getId() +" and r.strBill1='"+ncrCode+"' and r.receivedQuantity>r.shippedQuantity "; - - List rdsqty=commonDao.findByQuery(wsql); if(rdsqty.size()>0) { double qys=rdsqty.get(0); @@ -1736,6 +1745,7 @@ public class ASNReceiveServlet extends HttpServlet { } } + */ } if (flag==1) { if(serials!=null&&serials.length()>0){ @@ -1777,7 +1787,7 @@ public class ASNReceiveServlet extends HttpServlet { } InventoryManager inventoryManager = (InventoryManager) ac.getBean("inventoryManager"); - inventoryManager.manualMove(inv.getId(), locId, inv.getQuantity()-inv.getQueuedQuantity(), userId); + inventoryManager.manualMove(inv.getId(), locId, inv.getQuantity()-inv.getQueuedQuantity(), userId,ncrCode); if(inv.getStatus()!=null&&inv.getStatus().equals("整理中")) { try { @@ -1812,6 +1822,8 @@ public class ASNReceiveServlet extends HttpServlet { msg=serial+"不在这个库位上"; } } + /**2025-09-23注释 + //不良品移位 if(status.equals("1")&&ncrCode!=null&&!ncrCode.equals("")) { for(String serial:result){ String wsql=" from ReceivingInventory r where r.itemKey.item.id= " @@ -1827,7 +1839,7 @@ public class ASNReceiveServlet extends HttpServlet { } } - + */ }else{ double Qty=0; @@ -1839,7 +1851,7 @@ public class ASNReceiveServlet extends HttpServlet { List Inventorys2=commonDao.findByQuery(" from Inventory inv where inv.location.id = "+invs.getLocation().getId()+" and inv.quantity>0 "); for(Inventory insdt:Inventorys2) { InventoryManager inventoryManager = (InventoryManager) ac.getBean("inventoryManager"); - inventoryManager.manualMove(insdt.getId(), locId, insdt.getQuantity()-insdt.getQueuedQuantity(), userId); + inventoryManager.manualMove(insdt.getId(), locId, insdt.getQuantity()-insdt.getQueuedQuantity(), userId,ncrCode); status="1"; msg="操作成功!"; } @@ -1888,7 +1900,7 @@ public class ASNReceiveServlet extends HttpServlet { } } InventoryManager inventoryManager = (InventoryManager) ac.getBean("inventoryManager"); - inventoryManager.manualMove(inv.getId(), locId, inv.getQuantity()-inv.getQueuedQuantity(), userId); + inventoryManager.manualMove(inv.getId(), locId, inv.getQuantity()-inv.getQueuedQuantity(), userId,ncrCode); if(inv.getStatus()!=null&&inv.getStatus().equals("整理中")) { try { //刷新新的容器库位 @@ -1945,7 +1957,7 @@ public class ASNReceiveServlet extends HttpServlet { } InventoryManager inventoryManager = (InventoryManager) ac.getBean("inventoryManager"); - inventoryManager.manualMove(inv.getId(), locId,qty1, userId); + inventoryManager.manualMove(inv.getId(), locId,qty1, userId,ncrCode); if(inv.getStatus()!=null&&inv.getStatus().equals("整理中")) { try { @@ -1981,6 +1993,9 @@ public class ASNReceiveServlet extends HttpServlet { } } + + //不良品移位 + /**2025-09-23注释 if(status.equals("1")&&ncrCode!=null&&!ncrCode.equals("")) { String wsql=" from ReceivingInventory r where r.itemKey.item.id= " + ik1.getItem().getId()+" and r.location.id="+lc1.getId() @@ -2011,12 +2026,9 @@ public class ASNReceiveServlet extends HttpServlet { break; } } - - } - } - + */ }else{ msg="未找到相应记录!"; @@ -2333,7 +2345,13 @@ public class ASNReceiveServlet extends HttpServlet { WarehouseArea zone=commonDao.load(WarehouseArea.class, srcLoc.getZone().getId()); ItemKey ik=commonDao.load(ItemKey.class, task.getItemKey().getId()); Item item=commonDao.load(Item.class, ik.getItem().getId()); - + List socode=commonDao.findByQuery("select p.code from PlantLocation p where p.beRegister=1 "); + if(ik.getLotInfo().getPropC2()!=null + &&socode.contains(ik.getLotInfo().getPropC2())) { + status="0"; + msg=ik.getLotInfo().getPropC2()+"不能换库位拣货"; + break; + } Inventory inv=commonDao.load(Inventory.class, invId); Location invLoc=commonDao.load(Location.class, inv.getLocation().getId()); WarehouseArea invzone=commonDao.load(WarehouseArea.class, invLoc.getZone().getId()); diff --git a/src/main/java/com/dev/swms/server/web/servlet/PickingServlet.java b/src/main/java/com/dev/swms/server/web/servlet/PickingServlet.java index 6f4f777..646fe4f 100644 --- a/src/main/java/com/dev/swms/server/web/servlet/PickingServlet.java +++ b/src/main/java/com/dev/swms/server/web/servlet/PickingServlet.java @@ -414,13 +414,14 @@ public class PickingServlet extends HttpServlet { JSONArray array=new JSONArray(); String status = "0"; String msg = ""; - String data = ""; + String data = "[]"; try { if (userId > 0) { if (warehouseId > 0) { // List result = Arrays.asList(taskIds.split(",")); - String sql="select t.pickTicketDetail.strBill14 from Task t where t.id in("+taskIds+")" + String sql="select t.barCode from " + + " Task t where t.id in("+taskIds+") and t.pickTicketDetail.strBill15='1' " + " "; List ts=commonDao.findByQuery(sql); if(ts.size()>0) { @@ -438,7 +439,7 @@ public class PickingServlet extends HttpServlet { }else { msg=""; - status="0"; + status="1"; } } else { msg = "无仓库信息!"; diff --git a/src/main/java/daoContext.xml b/src/main/java/daoContext.xml index 26ed32e..e9faac8 100644 --- a/src/main/java/daoContext.xml +++ b/src/main/java/daoContext.xml @@ -1232,4 +1232,9 @@ com/dev/swms/server/model/base/materialFactory.hbm.xml + + + com/dev/swms/server/model/shipping/automaticWaveDoc.hbm.xml + + \ No newline at end of file diff --git a/src/main/java/serviceContext.xml b/src/main/java/serviceContext.xml index dcb93b1..5f2f925 100644 --- a/src/main/java/serviceContext.xml +++ b/src/main/java/serviceContext.xml @@ -578,6 +578,9 @@ + + + diff --git a/src/test/yao/2025.sql b/src/test/yao/2025.sql index 7ddd50f..f2f7c8b 100644 --- a/src/test/yao/2025.sql +++ b/src/test/yao/2025.sql @@ -230,14 +230,14 @@ t.CREATE_TIME<'2025-04-01' AND t.MOVED_QUANTITY_MU>0 GROUP BY i.id) - -update ITEM set SALE_TIME =(select count(DISTINCT t.BILLCODE+lc.CODE+i.CODE) +//刷新热度值 +update ITEM set heat_Six_Months =(select count(DISTINCT t.BILLCODE+lc.CODE+i.CODE) from task t left join ITEM_KEY ik on ik.id=t.ITEM_KEY_ID left join item i on i.id=ik.ITEM_ID left join LOCATION lc on lc.id=t.SRC_LOC_ID -where t.CREATE_TIME>='2025-06-01' AND -t.CREATE_TIME<'2025-07-01' AND ITEM.id=i.id and +where t.operate_TIME>='2025-03-01' AND +t.operate_TIME<'2025-09-01' AND ITEM.id=i.id and t.MOVED_QUANTITY_MU>0 and t.TYPE='MV_PICKTICKET' GROUP BY i.id) @@ -245,12 +245,19 @@ where ITEM.id in(select i1.id from task t1 left join ITEM_KEY ik1 on ik1.id=t1.ITEM_KEY_ID left join item i1 on i1.id=ik1.ITEM_ID -where t1.CREATE_TIME>='2025-06-01' AND -t1.CREATE_TIME<'2025-07-01' AND +where t1.operate_TIME>='2025-03-01' AND +t1.operate_TIME<'2025-09-01' AND t1.MOVED_QUANTITY_MU>0 and t1.TYPE='MV_PICKTICKET' GROUP BY i1.id); -update ITEM set SALE_TIME=1 where SALE_TIME is null; + +UPDATE ITEM SET SALE_TIME=1 WHERE heat_Six_Months IS NULL; +GO +UPDATE ITEM SET heat_Three_Months=1 WHERE heat_Three_Months IS NULL; +GO +UPDATE ITEM SET heat_Six_Months=1 WHERE heat_Six_Months IS NULL; + + ------20250709更新工厂序列号表 @@ -555,7 +562,7 @@ item.volume as 体积 , left join position p on p.id=item.POSITION_ID ---------------2025-08-30 - ALTER TABLE Receiving_Inventory add pick_Date DATE NULL; + ALTER TABLE Receiving_Inventory add pick_Date datetime NULL; GO @@ -565,4 +572,53 @@ update item set largeWeight=volume where volume>0 and be_Image_File=0; update item set volume=0 where volume>0 and be_Image_File=0; + + + + +----------2025-09-10 +CREATE TABLE [dbo].[Automatic_Wave_Doc] ( + [ID] numeric(19) IDENTITY(1,1) NOT NULL, + [hour1] int NULL, + [minute1] int NULL, + [be_Enabled1] tinyint NULL, + [hour2] int NULL, + [minute2] int NULL, + [be_Enabled2] tinyint NULL, + [hour3] int NULL, + [minute3] int NULL, + [be_Enabled3] tinyint NULL, + [hour4] int NULL, + [minute4] int NULL, + [be_Enabled4] tinyint NULL, + [hour5] int NULL, + [minute5] int NULL, + [be_Enabled5] tinyint NULL, + [hour6] int NULL, + [minute6] int NULL, + [be_Enabled6] tinyint NULL, + [hour7] int NULL, + [minute7] int NULL, + [be_Enabled7] tinyint NULL, + [hour8] int NULL, + [minute8] int NULL, + [be_Enabled8] tinyint NULL, + [hour9] int NULL, + [minute9] int NULL, + [be_Enabled9] tinyint NULL, + [hour10] int NULL, + [minute10] int NULL, + [be_Enabled10] tinyint NULL, + CONSTRAINT [PK__Automati__3214EC27832C79F0] PRIMARY KEY CLUSTERED ([ID]) +WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) +ON [PRIMARY] +) +ON [PRIMARY] +GO + +ALTER TABLE [dbo].[Automatic_Wave_Doc] SET (LOCK_ESCALATION = TABLE) + + + + \ No newline at end of file diff --git a/src/webapp/WEB-INF/classes/config/origen/base/editAutomaticWaveDocPage.xml b/src/webapp/WEB-INF/classes/config/origen/base/editAutomaticWaveDocPage.xml new file mode 100644 index 0000000..a83c81a --- /dev/null +++ b/src/webapp/WEB-INF/classes/config/origen/base/editAutomaticWaveDocPage.xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webapp/WEB-INF/classes/config/origen/base/maintainAutomaticWaveDocPage.xml b/src/webapp/WEB-INF/classes/config/origen/base/maintainAutomaticWaveDocPage.xml new file mode 100644 index 0000000..97c1a03 --- /dev/null +++ b/src/webapp/WEB-INF/classes/config/origen/base/maintainAutomaticWaveDocPage.xml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webapp/WEB-INF/classes/config/origen/base/maintainItemPicturePage.xml b/src/webapp/WEB-INF/classes/config/origen/base/maintainItemPicturePage.xml index 3220530..feb59d6 100644 --- a/src/webapp/WEB-INF/classes/config/origen/base/maintainItemPicturePage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/base/maintainItemPicturePage.xml @@ -30,7 +30,7 @@ round(signFile.width,2), round(signFile.height,2), round(signFile.weight,2), - round(signFile.volume,6), + cast(signFile.volume as string), signFile.packNumber, signFile.remark, 'look', diff --git a/src/webapp/WEB-INF/classes/config/origen/base/maintainShiXiaoPage.xml b/src/webapp/WEB-INF/classes/config/origen/base/maintainShiXiaoPage.xml index ea5ff64..99369bd 100644 --- a/src/webapp/WEB-INF/classes/config/origen/base/maintainShiXiaoPage.xml +++ b/src/webapp/WEB-INF/classes/config/origen/base/maintainShiXiaoPage.xml @@ -4,7 +4,6 @@ - - + jdbc:sqlserver://47.103.100.52:1433;DatabaseName=lgtest + - - jdbc:sqlserver://192.168.56.133:1433;DatabaseName=LD_WMSDB + + - + WMSDB - liu + - - - 123456 + + WmsYc@5688 + 500