no message

main
暴炳林 2025-01-13 10:38:24 +08:00
parent 311cc6d9c6
commit 53a2f432bb
4 changed files with 762 additions and 2 deletions

View File

@ -20,4 +20,10 @@ public interface NewWaveDocManager extends BaseManager {
@Transactional
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);
//自动创波,ddq1=3#不良品区,ddq2=3#焊接件区,ddq3=3#货架区,ddq4=3#料箱区,ddq5=7#3楼普通库,
//ddq6=7#4楼普通库,ddq7=7#地堆区,ddq8=#堆垛库,ddq9=8#化学品区
@Transactional
void cssjHotWaveDoc(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);
}

View File

@ -14,11 +14,15 @@ import org.springframework.transaction.annotation.Transactional;
import com.dev.energy.server.exception.BusinessException;
import com.dev.energy.server.model.EntityFactory;
import com.dev.energy.server.service.pojo.DefaultBaseManager;
import com.dev.energy.server.web.security.UserHolder;
import com.dev.swms.server.model.base.BillTypeConfig;
import com.dev.swms.server.model.base.Item;
import com.dev.swms.server.model.base.ShiXiao;
import com.dev.swms.server.model.inventory.Configuration;
import com.dev.swms.server.model.inventory.Inventory;
import com.dev.swms.server.model.inventory.Task;
import com.dev.swms.server.model.inventory.TaskType;
import com.dev.swms.server.model.shipping.PickTicket;
import com.dev.swms.server.model.shipping.PickTicketDetail;
import com.dev.swms.server.model.shipping.WaveDoc;
import com.dev.swms.server.model.shipping.WaveDocSort;
@ -30,6 +34,7 @@ import com.dev.swms.server.service.picking.allocate.NewAutoAllocator;
import com.dev.swms.server.service.sequence.BussinessCodeManager;
import com.dev.swms.server.service.shipping.NewWaveDocManager;
import com.dev.swms.server.service.shipping.PickTicketManager;
import com.dev.swms.server.utils.DateUtil;
import com.dev.swms.server.utils.TimeNumberUtils;
@ -361,6 +366,415 @@ public class DefaultNewWaveDocManager extends DefaultBaseManager implements
hotWave=true;
}
}
public List<Long> cssjBeUrgentTaks(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,String noLoc) {
List<Long> taskids=new ArrayList<Long>();
List<Long> lxtaskids=new ArrayList<Long>();//料箱区任务
List<Long> hjtaskids=new ArrayList<Long>();//货架区任务
List<Long> lktaskids=new ArrayList<Long>();//立库区任务
//料箱区
long lxqsx=0;
List<Task> lxqTasks=new ArrayList<Task>();
if(lxqQty!=null&&lxqQty>0){
ShiXiao loc=this.load(ShiXiao.class, 2L);//料箱区
lxqsx=(long)loc.getNumber()*lxqQty*longtiem;
}
//货架区
long hjqsx=0;
List<Task> hjqTasks=new ArrayList<Task>();
if(hjqQty>0){
ShiXiao loc=this.load(ShiXiao.class, 3L);//货架区
hjqsx=(long)loc.getNumber()*hjqQty*longtiem;//货架区总数
}
//立库区
long lkqsx=0;
List<Task> lkqTasks=new ArrayList<Task>();
if(lkqQty>0){
ShiXiao loc=this.load(ShiXiao.class, 4L);//立库区
lkqsx=(long)loc.getNumber()*lkqQty*longtiem;
}
long number=lxqsx+hjqsx+lkqsx;//总行数
String hql2="select ptd.id from PickTicketDetail ptd where ptd.pickTicket.equatedQuantity in('U','X','H') ";
hql2+= " and ptd.orderQuantity>=ptd.allocatedQuantity "
+ " and ptd.pickTicket.billType.name='工单出库' "
+ " and ptd.pickedQuantity=0 and ptd.shippedQuantity=0 "
+ " and (ptd.strBill6 is null or ptd.strBill6='' ) "
+ " and ptd.newLotInfo.propC2 not in('SL55') "
+ " and (ptd.waveDoc.id is null ) "
+ " and ptd.pickTicket.status ='OPEN' "
+ " order by ptd.SOI desc,ptd.pickTicket.orderDate, ptd.pickTicket.code,ptd.item.code ";
List<Long> pdisd= commonDao.findByQuery(hql2);
boolean bd=true;//是否满足波次行数
Long ptsid=null;//最后一个明细id
for(Long pid:pdisd) {
List<Long> pids=new ArrayList<Long>();
ptsid=pid;
pids.add(pid);
cssjAllocatePickticketDetail(pids,taskQty,ddq, ddq1, ddq2, ddq3, ddq4, ddq5, ddq6, ddq7, ddq8, ddq9,noLoc);//明细分配
List<Object> objs=commonDao.findByQuery("select t.id,t.srcLoc.zone.id from Task t where t.movedQuantityMU=0 and t.pickTicketDetail.id="+pid);
//查询统计总任务数、料箱区任务数、货架区任务、堆垛库任务
if(objs.size()>0) {
for(Object obj:objs) {
Object [] str=(Object [])obj;
String tid=str[0].toString();
String zoneName=str[1].toString();
if(zoneName.equals("1763")) {
lxtaskids.add(Long.parseLong(tid));
}else if(zoneName.equals("1765")){
hjtaskids.add(Long.parseLong(tid));
}else if(zoneName.equals("1766")){
lktaskids.add(Long.parseLong(tid));
}
taskids.add(Long.parseLong(tid));
}
}
if(lxqsx>0&&lxqsx<=lxtaskids.size()) {
bd=false;
break;
}else if(hjqsx>0&&hjqsx<=hjtaskids.size()){
bd=false;
break;
}else if(lkqsx>0&&lkqsx<=lktaskids.size()){
bd=false;
break;
}
}
//将最后一个工单明细全部分配完成
if(ptsid!=null) {
PickTicketDetail ptdd= commonDao.load(PickTicketDetail.class, ptsid);
if(ptdd!=null) {
List<Long> picklists= commonDao.findByQuery("select p.id from PickTicketDetail p where p.pickTicket.id="+ptdd.getPickTicket().getId()
+" and p.orderQuantity>0 and p.allocatedQuantity=0 order by p.item.code ");
if(picklists.size()>0) {
autoAllocator.allocatePickticketDetail(picklists,taskQty,ddq, ddq1, ddq2, ddq3, ddq4, ddq5, ddq6, ddq7, ddq8, ddq9,noLoc);//明细分配
List<Long> objs1=commonDao.findByQuery("select t.id from Task t where t.movedQuantityMU=0 "
+ " and t.planQuantity>0 and t.pickTicketDetail.pickTicket.id="+ptdd.getPickTicket().getId()+" ");
//
if(objs1.size()>0) {
for(Long tids:objs1) {
if(!taskids.contains(tids)) {
taskids.add(tids);
}
}
}
}
}
}
return taskids;
}
@Override
public void cssjHotWaveDoc(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) {
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
Date date=new Date();
logger.info(date);
// 1000*60*20,小于20分钟。
/*if(!hotWave&&date.getTime()-hotWaveDate.getTime()<1200000) {
throw new BusinessException("其它人正在创建波次,请稍后");
}*/
List<WaveDocSort> waveDocSortList = commonDao.findByQuery("select wds from WaveDocSort wds where wds.disabled=0 order by wds.sort asc");
/*波次排序规则*/
String sqlSort="";
for (WaveDocSort waveDocSort : waveDocSortList) {
if (sqlSort.length()>1) {
sqlSort=sqlSort+",";
}else {
sqlSort=" order by";
// + " order by ptd.SOI desc,ptd.pickTicket.orderDate, ptd.pickTicket.code ,ptd.item.code "
}
sqlSort=sqlSort+" ptd."+waveDocSort.getColume()+" ";
}
hotWave=false;
List<Long> PickTicketDetailIds=null;
List<Long> taskids=new ArrayList<Long>();
List<Long> lxtaskids=new ArrayList<Long>();//料区任务
List<Long> hjtaskids=new ArrayList<Long>();//货架区任务
List<Long> lktaskids=new ArrayList<Long>();//立箱库区任务
//库存料号id
String hqlinv1="select i.itemKey.item.id from Inventory i where i.location.type='存货' "
+ " and i.status='已入库' and i.quantity-i.queuedQuantity>0 and i.counPlan is null "
+ " ";
String hqlmave=" ";//不入波的LOC
List<String> hqllist=commonDao.findByQuery("select pl.code from PlantLocation pl where pl.disabled=0 and pl.beWave=0");
if(hqllist.size()>0) {
hqlmave="";
for(String sh:hqllist) {
hqlmave=hqlmave+"'"+sh+"',";
}
if(hqlmave.length()>4)
hqlmave=hqlmave.substring(0, hqlmave.length()-1);
}
// String hqlmaveloc=" ";//优先入波的LOC
// List<String> hqllist1=commonDao.findByQuery("select pl.code from PlantLocation pl where pl.disabled=0 and pl.bePriorityWave=1");
// if(hqllist1.size()>0) {
// hqlmaveloc="";
// for(String sh:hqllist1) {
// hqlmaveloc=hqlmaveloc+"'"+sh+"',";
// }
// if(hqlmaveloc.length()>4)
// hqlmaveloc=hqlmaveloc.substring(0, hqlmaveloc.length()-1);
// }
if(beUrgent) {
//加急单
taskids=cssjBeUrgentTaks(date1, date2, longtiem, lxqQty, hjqQty, lkqQty, ddq, pickCode, ddq1, ddq2, ddq3, ddq4, ddq5, ddq6, ddq7, ddq8, ddq9, taskQty, beUrgent,hqlmave);
}else {
//根据工单号生成任务
if(pickCode!=null&&pickCode.length()>0){
String[] strings=pickCode.split("\n");
String code="";
for(int i=0;i<strings.length;i++) {
String str=strings[i].trim();
if(str!=null&&!str.equals("")) {
code+="'"+str+"',";
}
}
if(code.length()>1) {
code=code.substring(0, code.length()-1);
}
String hql="select ptd.id from PickTicketDetail ptd where 1=1 and ptd.pickTicket.billType.name='工单出库' and "
+ " ptd.orderQuantity>=ptd.allocatedQuantity and ptd.pickedQuantity=0 and ptd.shippedQuantity=0 "
+ " and ptd.pickTicket.status ='OPEN' and ptd.newLotInfo.propC2 not in("+hqlmave+") "
+ " and (ptd.strBill6 is null or ptd.strBill6='' ) "; //and pt.allocatedQuantity=pt.pickedQuantity
if(code.length()>0) {
hql+=" and ptd.pickTicket.code in("+code+")";
}
hql+=" order by ptd.pickTicket.orderDate, ptd.pickTicket.code,ptd.item.code ";
PickTicketDetailIds = commonDao.findByQuery(hql);
}else{
//未分配完成的订单明细
String sql2=" select ptd.id from PickTicketDetail ptd "
+ " where 1=1 and ptd.newLotInfo.propC2 not in("+hqlmave+") "
+ " and ptd.pickTicket.billType.name='工单出库' ";
if(date1==null){
sql2+=" and CONVERT(varchar(100),ptd.pickTicket.orderDate, 23)<='"+sdf.format(date2)+"' ";
}else{
sql2+= " and CONVERT(varchar(100),ptd.pickTicket.orderDate, 23)>='"+sdf.format(date1)+"' ";
sql2+= " and CONVERT(varchar(100),ptd.pickTicket.orderDate, 23)<='"+sdf.format(date2)+"' ";
}
sql2+= " and ptd.orderQuantity>=ptd.allocatedQuantity "
+ " and ptd.pickedQuantity=0 and ptd.shippedQuantity=0 "
+ " and (ptd.strBill6 is null or ptd.strBill6='' ) "
+ " and (ptd.waveDoc.id is null ) "
+ " and ptd.pickTicket.status ='OPEN' " //,'PICKUP','CHECK'
+ " and ptd.item.id in("+hqlinv1+") "
+ sqlSort
// + " order by ptd.SOI desc,ptd.pickTicket.orderDate, ptd.pickTicket.code ,ptd.item.code "
;
PickTicketDetailIds = commonDao.findByQuery(sql2);
}
if(PickTicketDetailIds.size()>0){
//根据条件查询任务行数
//料箱区
long lxqsx=0;
List<Task> lxqTasks=new ArrayList<Task>();
if(lxqQty!=null&&lxqQty>0){
ShiXiao loc=this.load(ShiXiao.class, 2L);//料箱区
lxqsx=(long)loc.getNumber()*lxqQty*longtiem;
}
//货架区
long hjqsx=0;
List<Task> hjqTasks=new ArrayList<Task>();
if(hjqQty>0){
ShiXiao loc=this.load(ShiXiao.class, 3L);//货架区
hjqsx=(long)loc.getNumber()*hjqQty*longtiem;//货架区总数
}
//立库区
long lkqsx=0;
List<Task> lkqTasks=new ArrayList<Task>();
if(lkqQty>0){
ShiXiao loc=this.load(ShiXiao.class, 4L);//立库区
lkqsx=(long)loc.getNumber()*lkqQty*longtiem;
}
long number=lxqsx+hjqsx+lkqsx;
int jyq=0;//平均数
if(lxqsx>0&&lxqQty>0) {
jyq=(int)lxqsx/lxqQty;
}
if(jyq==0&&hjqQty>0) {
jyq=(int)hjqsx/hjqQty;
}
jyq=taskQty;
// logger.info("3---"+new Date());
if(number>0){
//查询加急单号,需要优先分配
String hql2="select ptd.id from PickTicketDetail ptd where ptd.SOI is not null and ptd.SOI <>'' ";
hql2+= " and ptd.orderQuantity>=ptd.allocatedQuantity "
+ " and ptd.pickTicket.billType.name='工单出库' "
+ " and ptd.pickedQuantity=0 and ptd.shippedQuantity=0 "
+ " and (ptd.strBill6 is null or ptd.strBill6='' ) "
+ " and (ptd.waveDoc.id is null ) "
+ " and ptd.newLotInfo.propC2 not in("+hqlmave+")"
+ " and ptd.pickTicket.status ='OPEN' "
+ " and ptd.item.id in("+hqlinv1+") "
+ sqlSort
// + " order by ptd.SOI desc,ptd.pickTicket.orderDate, ptd.pickTicket.code,ptd.item.code "
;
List<Long> pdisd= commonDao.findByQuery(hql2);
boolean bd=true;//是否满足波次行数
// logger.info("4---"+new Date());
for(Long pid:pdisd) {
List<Long> pids=new ArrayList<Long>();
pids.add(pid);
autoAllocator.allocatePickticketDetail(pids,jyq,ddq, ddq1, ddq2, ddq3, ddq4, ddq5, ddq6, ddq7, ddq8, ddq9,hqlmave);//明细分配
// logger.info("5---"+new Date());
List<Object> objs=commonDao.findByQuery("select t.id,t.srcLoc.zone.id from Task t where t.movedQuantityMU=0 and t.pickTicketDetail.id="+pid);
//查询统计总任务数、料箱区任务数、货架区任务、堆垛库任务
// logger.info("6---"+new Date());
if(objs.size()>0) {
for(Object obj:objs) {
Object [] str=(Object [])obj;
String tid=str[0].toString();
String zoneName=str[1].toString();
if(zoneName.equals("1763")) {
lxtaskids.add(Long.parseLong(tid));
}else if(zoneName.equals("1765")){
hjtaskids.add(Long.parseLong(tid));
}else if(zoneName.equals("1766")){
lktaskids.add(Long.parseLong(tid));
}
taskids.add(Long.parseLong(tid));
}
}
// logger.info("7---"+new Date());
if(lxqsx>0&&lxqsx<=lxtaskids.size()) {
bd=false;
break;
}else if(hjqsx>0&&hjqsx<=hjtaskids.size()){
bd=false;
break;
}else if(lkqsx>0&&lkqsx<=lktaskids.size()){
bd=false;
break;
}
}
if(bd) {
Long ptsid=null;//最后一个明细id
for(Long pid:PickTicketDetailIds) {
// logger.info("8---"+new Date());
List<Long> pids=new ArrayList<Long>();
ptsid=pid;
pids.add(pid);
autoAllocator.allocatePickticketDetail(pids,jyq,ddq, ddq1, ddq2, ddq3, ddq4, ddq5, ddq6, ddq7, ddq8, ddq9,hqlmave);//明细分配
List<Object> objs=commonDao.findByQuery("select t.id,t.srcLoc.zone.id from Task t where t.movedQuantityMU=0 and t.pickTicketDetail.id="+pid);
//查询统计总任务数、料箱区任务数、货架区任务、堆垛库任务
// logger.info("9---"+new Date());
if(objs.size()>0) {
for(Object obj:objs) {
Object [] str=(Object [])obj;
String tid=str[0].toString();
String zoneName=str[1].toString();
if(zoneName.equals("1763")) {
lxtaskids.add(Long.parseLong(tid));
}else if(zoneName.equals("1765")){
hjtaskids.add(Long.parseLong(tid));
}else if(zoneName.equals("1766")){
lktaskids.add(Long.parseLong(tid));
}
taskids.add(Long.parseLong(tid));
}
}
// logger.info("10---"+new Date());
if(lxqsx>0&&lxqsx<=lxtaskids.size()) {
bd=false;
break;
}else if(hjqsx>0&&hjqsx<=hjtaskids.size()){
bd=false;
break;
}else if(lkqsx>0&&lkqsx<=lktaskids.size()){
bd=false;
break;
}
}
//将最后一个工单明细全部分配完成
if(ptsid!=null) {
PickTicketDetail ptdd= commonDao.load(PickTicketDetail.class, ptsid);
if(ptdd!=null) {
List<Long> picklists= commonDao.findByQuery("select p.id from PickTicketDetail p where p.pickTicket.id="+ptdd.getPickTicket().getId()
+" and p.orderQuantity>0 and p.allocatedQuantity=0 and p.newLotInfo.propC2 not in("+hqlmave+") order by p.item.code ");
if(picklists.size()>0) {
autoAllocator.allocatePickticketDetail(picklists,jyq,ddq, ddq1, ddq2, ddq3, ddq4, ddq5, ddq6, ddq7, ddq8, ddq9,hqlmave);//明细分配
List<Long> objs=commonDao.findByQuery("select t.id from Task t where t.movedQuantityMU=0 "
+ " and t.planQuantity>0 and t.pickTicketDetail.pickTicket.id="+ptdd.getPickTicket().getId()+" ");
// taskids.addAll(ts);
if(objs.size()>0) {
for(Long tids:objs) {
if(!taskids.contains(tids)) {
taskids.add(tids);
}
}
}
}
}
}
}
}else {
cssjAllocatePickticketDetail(PickTicketDetailIds,jyq,ddq, ddq1, ddq2, ddq3, ddq4, ddq5, ddq6, ddq7, ddq8, ddq9,hqlmave);//明细分配
if(PickTicketDetailIds.size()>0) {
String robotJobId=StringUtils.strip(PickTicketDetailIds.toString(),"[]");
String sql1=" select "
+ " t.id from Task t "
+ " where 1=1 ";
sql1+= " and t.planQuantity>t.movedQuantityMU "
+ " and t.pickTicketDetail.id in ("+robotJobId+") "
+ " and t.waveDoc.id is null "
+ " order by t.id ";
taskids= commonDao.findByQuery(sql1);
}
}
}
}
List<Long> ids =new ArrayList<Long>();
List<Long> Tasks =null;
// logger.info("18---"+new Date());
//指定出库单创建波次
if(pickCode!=null&&pickCode.length()>0){
String sql="";
if(PickTicketDetailIds.size()==0) {
throw new BusinessException(pickCode+"无可以拣货明细!");
}
String robotJobId=StringUtils.strip(PickTicketDetailIds.toString(),"[]");
sql+="select t.id from Task t "
+ " where 1=1 "
+ " and t.pickTicketDetail.id in ("+robotJobId+") "
+ " and t.planQuantity>t.movedQuantityMU "
+ " and t.waveDoc.id is null "
+ " order by t.id ";
Tasks = commonDao.findByQuery(sql);
}else{
Tasks=taskids;
}
if(Tasks.size()>0){
pickTicketManager.addTaskToWaveDocDetail(Tasks, date1, date2, longtiem, lxqQty, hjqQty, lkqQty, ddq9, pickCode, taskQty,1);
}
try {
hotWave=true;
hotWaveDate=sdf.parse("2023-02-02");
} catch (ParseException e) {
hotWave=true;
}
}
public List<Long> beUrgentTaks(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,String noLoc) {
@ -460,7 +874,313 @@ public class DefaultNewWaveDocManager extends DefaultBaseManager implements
}
}
return taskids;
return taskids;
}
/** 当前输送线库存*/
private List<Long> invIds=new ArrayList<Long>();
public List<Task> cssjAllocatePickticketDetail(List<Long> ids,int qty,boolean ddq,boolean ddq1,boolean ddq2,boolean ddq3,
boolean ddq4,boolean ddq5,boolean ddq6,boolean ddq7,boolean ddq8,boolean ddq9,String noLoc) {
if (invIds.size()==0) {
invIds=inventoryManager.selectSSXInventory();
}
String msg="";
List<Task> tasks=new ArrayList<Task>();
for (int i = 0; i < ids.size(); i++) {
Long id=Long.valueOf(ids.get(i)+"");
PickTicketDetail ptd= commonDao.load(PickTicketDetail.class, id);
if(ptd.getOrderQuantity()- ptd.getAllocatedQuantity()<=0) {
continue;
}
Date date=new Date();
if(ptd.getStrBill6()==null||ptd.getStrBill6().length()<=0){
PickTicket pt=ptd.getPickTicket();
//分配库存
String hql1=" from Inventory i where i.itemKey.item.id=:id and i.location.type='存货'"
+ "and i.status='已入库' and i.quantity-i.queuedQuantity>0 and i.counPlan is null "
+ " ";
//不能入波的LOC
if(noLoc!=null&&!noLoc.equals("")) {
hql1+=" and i.itemKey.lotInfo.propC2 not in("+noLoc+")";
}
//自动创波,ddq1=3#不良品区,ddq2=3#焊接件区,ddq3=3#货架区,ddq4=3#料箱区,ddq5=7#3楼普通库,
//ddq6=7#4楼普通库,ddq7=7#地堆区,ddq8=7#堆垛库,ddq9=8#化学品区
String kqno="";
if(!ddq1) {
kqno+="1798,";
}
if(!ddq2) {
kqno+="1773,";
}
if(!ddq3) {
kqno+="1765,";
}
if(!ddq4) {
kqno+="1763,";
}
if(!ddq5) {
kqno+="1768,";
}
if(!ddq6) {
kqno+="1783,";
}
if(!ddq7) {
kqno+="1808,";
}
if(!ddq8) {
kqno+="1766,";
}
if(!ddq9) {
kqno+="1799,";
}
if(kqno.length()>0) {
kqno=kqno.substring(0, kqno.length()-1);
hql1+=" and i.location.zone.id not in("+kqno+") ";
}
if(ddq&&ptd.getPickTicket().getOrderDate().getTime()>=date.getTime()) {
hql1+=" and i.location.zone.id not in(1808) ";
}
if(ptd.getNewLotInfo()!=null) {
if(ptd.getNewLotInfo().getPropC1()!=null&&!ptd.getNewLotInfo().getPropC1().equals("")) {
hql1+=" and i.itemKey.lotInfo.propC1='"+ptd.getNewLotInfo().getPropC1()+"'";
}
// if(ptd.getNewLotInfo().getPropC2()!=null&&!ptd.getNewLotInfo().getPropC2().equals("")) {
// hql1+=" and i.itemKey.lotInfo.propC2='"+ptd.getNewLotInfo().getPropC2()+"'";
// }else {
//
// }
if(ptd.getNewLotInfo().getPropC3()!=null&&!ptd.getNewLotInfo().getPropC3().equals("")) {
hql1+=" and i.itemKey.lotInfo.propC3='"+ptd.getNewLotInfo().getPropC3()+"'";
}else {
if(ptd.getStrExtend2()!=null&&(ptd.getStrExtend2().equals("TRUE")||ptd.getStrExtend2().equals("true"))) {
hql1+=" and i.itemKey.lotInfo.propC3='K' ";
}
}
if(ptd.getNewLotInfo().getPropC4()!=null&&!ptd.getNewLotInfo().getPropC4().equals("")) {
hql1+=" and i.itemKey.lotInfo.propC4='"+ptd.getNewLotInfo().getPropC4()+"'";
}
if(ptd.getNewLotInfo().getPropC4()!=null&&!ptd.getNewLotInfo().getPropC4().equals("")) {
hql1+=" and i.itemKey.lotInfo.propC4='"+ptd.getNewLotInfo().getPropC4()+"'";
}
if(ptd.getNewLotInfo().getPropC5()!=null&&!ptd.getNewLotInfo().getPropC5().equals("")) {
hql1+=" and i.itemKey.lotInfo.propC5='"+ptd.getNewLotInfo().getPropC5()+"'";
}
if(ptd.getNewLotInfo().getPropC6()!=null&&!ptd.getNewLotInfo().getPropC6().equals("")) {
hql1+=" and i.itemKey.lotInfo.propC6='"+ptd.getNewLotInfo().getPropC6()+"'";
}
if(ptd.getNewLotInfo().getPropC7()!=null&&!ptd.getNewLotInfo().getPropC7().equals("")) {
hql1+=" and i.itemKey.lotInfo.propC7='"+ptd.getNewLotInfo().getPropC7()+"'";
}
if(ptd.getNewLotInfo().getPropC8()!=null&&!ptd.getNewLotInfo().getPropC8().equals("")) {
hql1+=" and i.itemKey.lotInfo.propC8='"+ptd.getNewLotInfo().getPropC8()+"'";
}
if(ptd.getNewLotInfo().getPropC9()!=null&&!ptd.getNewLotInfo().getPropC9().equals("")) {
hql1+=" and i.itemKey.lotInfo.propC9='"+ptd.getNewLotInfo().getPropC9()+"'";
}
}else {
}
StringBuffer sqlBuffer=new StringBuffer();
sqlBuffer.append(" order by ");
if (invIds.size()>0) {
StringBuilder sb = new StringBuilder();
for (int k = 0; k < invIds.size(); k++) {
sb.append(invIds.get(k));
if (k < invIds.size() - 1) {
sb.append(",");
}
}
if (sb.length()>0) {
sqlBuffer.append(" CASE "
+" WHEN i.id IN ("
+ sb.toString()
+") THEN 1 "
+" ELSE 0 "
+" END, ");
}
}
sqlBuffer.append(" i.itemKey.lotInfo.propD2,i.itemKey.lotInfo.propC3,i.itemKey.lotInfo.propC1,i.statuss desc,i.storageDate,i.quantity,i.id");
String hql2=sqlBuffer.toString();
//排序
String lcs = new String();
if(pt.getBillType()!=null&&pt.getBillType().getName().indexOf("工单")>=0
&&ptd.getStrBill12()!=null&&(!ptd.getStrBill12().equals("881")&&
!ptd.getStrBill12().equals("981"))) {
String hqlmaveloc=" ";//优先入波的LOC
List<String> hqllist1=commonDao.findByQuery("select pl.code from PlantLocation pl where pl.disabled=0 and pl.bePriorityWave=1");
if(hqllist1.size()>0) {
hqlmaveloc=" CASE i.itemKey.lotInfo.propC2 ";
for(String sh:hqllist1) {
hqlmaveloc=hqlmaveloc+" WHEN '"+sh+"' THEN 1 ";
lcs=lcs+"'"+sh + "',";
}
hqlmaveloc=hqlmaveloc+" ELSE 99 " +
" END ASC " ;
lcs=lcs.substring(0, lcs.length()-1);
hql2=" order by i.itemKey.lotInfo.propD2,i.itemKey.lotInfo.propC3,i.itemKey.lotInfo.propC1,"+hqlmaveloc+",i.statuss desc,i.storageDate,i.quantity";
}
}
if(pt.getBillType()!=null&&pt.getBillType().getName().indexOf("其它")>=0) {
List<Configuration> cs=commonDao.findByQuery(" from Configuration c where c.configuration1='"+
ptd.getNewLotInfo().getPropC2()+"' or c.configuration2='"+ptd.getNewLotInfo().getPropC2()+"' " );
if(cs.size()>0) {
Configuration c=cs.get(0);
StringBuffer sb = new StringBuffer();
if(c.getConfiguration1().length()>0) {
sb.append("'"+c.getConfiguration1() + "', ");
sb.append("'"+c.getConfiguration2() + "' ");
hql1+=" and i.itemKey.lotInfo.propC2 in("+sb.toString()+")";
}
}else {
hql1+=" and i.itemKey.lotInfo.propC2='"+ptd.getNewLotInfo().getPropC2()+"'";
}
}else if(pt.getBillType()!=null&&pt.getBillType().getName().indexOf("工单")>=0) {
if(ptd.getNewLotInfo()!=null&&ptd.getNewLotInfo().getPropC2()!=null
&&(!ptd.getNewLotInfo().getPropC2().equals("SL12")&&!ptd.getNewLotInfo().getPropC2().equals("")&&
!ptd.getNewLotInfo().getPropC2().equals("SL02")
&&!ptd.getNewLotInfo().getPropC2().equals("SL34"))) {
hql1+=" and i.itemKey.lotInfo.propC2='"+ptd.getNewLotInfo().getPropC2()+"'";
}else {
String bsql=" from BillTypeConfig b where b.billType.id="+pt.getBillType().getId();
if(ptd.getNewLotInfo().getPropC9()!=null&&!ptd.getNewLotInfo().getPropC9().equals("")) {
bsql+=" and b.plantCode='"+ptd.getNewLotInfo().getPropC9()+"'";
}
List<BillTypeConfig> bts=commonDao.findByQuery(bsql);
if(bts.size()>0) {
StringBuffer sb = new StringBuffer();
for(int y1=0;y1<=bts.size()-1;y1++){
BillTypeConfig bt=bts.get(y1);
if(y1<bts.size()-1){
sb.append("'"+bt.getCode() + "', ");
}else {
sb.append("'"+bt.getCode()+"' ");
}
}
if(lcs!=null&&lcs.length()>0) {
sb.append(","+lcs);
}
hql1+=" and i.itemKey.lotInfo.propC2 in("+sb.toString()+") ";
}else {
if(ptd.getNewLotInfo()!=null&&ptd.getNewLotInfo().getPropC2()!=null&&ptd.getNewLotInfo().getPropC2().length()>0) {
hql1+=" and i.itemKey.lotInfo.propC2='"+ptd.getNewLotInfo().getPropC2()+"'";
}
}
}
}else {
if(ptd.getNewLotInfo()!=null&&ptd.getNewLotInfo().getPropC2()!=null&&ptd.getNewLotInfo().getPropC2().length()>0) {
hql1+=" and i.itemKey.lotInfo.propC2='"+ptd.getNewLotInfo().getPropC2()+"'";
}
}
//指定序列号
// if(ptd.getApplyDoc()!=null&&!ptd.getApplyDoc().equals("")) {
// hql1+=" and i.barCode='"+ptd.getApplyDoc()+"'";
// }
//有限期
if(ptd.getItem().getIsBOM()) {
hql1+=" and CONVERT(varchar(100), i.itemKey.lotInfo.propD2, 23)>='"+DateUtil.formatDateYMDToStr(new Date())+"'";
}
List<Inventory> Inventorys = commonDao.findByQuery("select inv from Inventory inv where inv.id = 78789" );
if (Inventorys.size() > 0) {
double allocatedQuantity = 0;
double unQty = ptd.getOrderQuantity()- ptd.getAllocatedQuantity();//未分配数量
double allocateQty=0;
for (Inventory inventory : Inventorys) {
inventory.setQuantity(ptd.getOrderQuantity());
inventory.setQueuedQuantity(0);
int j = 0;
if (unQty == 0) {
break;
}
allocateQty = inventory.getQuantity()- inventory.getQueuedQuantity();//可分配数量
if (allocateQty == 0) {
continue;
}
if (unQty < allocateQty) {
allocateQty = unQty;
}
j++;
inventory.setQueuedQuantity(inventory.getQueuedQuantity()+ allocateQty);
inventory.setVersion(inventory.getVersion());
commonDao.store(inventory);
allocatedQuantity += allocateQty;
unQty -= allocateQty;
ptd.setAllocatedQuantity(ptd.getAllocatedQuantity()+ allocateQty);
commonDao.store(ptd);
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));
//单个子任务数量
if(qty>0) {
List<Integer> tas=commonDao.findByQuery("select t.hs from PickTicketTaskView t where t.pickTicket.id="+ptd.getPickTicket().getId()
+" and t.billcode='"+task.getBillCode()+"' ");
if(tas.size()>0) {
//单个子任务数量
if(tas.get(0)>=qty) {
task.setBillCode(bussinessCodeManager.getCodeForYmd(ptd.getPickTicket().getCode()+"-", 2));
}
}
}*/
if (inventory.getLocation().getStock()!=null) {
task.setStrBill7(inventory.getLocation().getStock().getLP());
}
task.setBillCode(pt.getRelatedBill2());
String tItemCode=item.getCode().substring(0, 9);
String ptCode = ptd.getPickTicket().getCode();
char lastChar = ptCode.charAt(ptCode.length() - 1);
if (Character.isUpperCase(lastChar)) {
//System.out.println("最后一位是大写字母");
task.setStrBill8(tItemCode+lastChar);
}
task.setCode(TimeNumberUtils.getTaskCode());
task.setType(TaskType.MV_PICKTICKET);
task.setItemKey(inventory.getItemKey());
task.setStorageDate(inventory.getStorageDate());
task.setSrcLoc(inventory.getLocation());
task.setSOI(inventory.getSOI());
task.setPlanQuantity(allocateQty);
task.setPlanQuantityMU(allocateQty);
task.setInventoryStatus(inventory.getStatus());
task.setCreateTime(new Date());
task.setWarehouseArea(inventory.getWarehouseArea());
task.setBarCode(inventory.getBarCode());
task.setSrcLP(inventory.getLocation().getStock());
if(UserHolder.getUser()!=null) {
task.setOperator(UserHolder.getUser().getName());
task.setStrBill3(UserHolder.getUser().getName());
}
commonDao.store(task);
tasks.add(task);
}
if(unQty>0) {
msg=msg+ptd.getItem().getCode()+",库存不足! ";
}
//修改为下发的回传状态
// List<Long> pdids=new ArrayList<Long>();
// pdids.add(ptd.getId());
// interfaceReqManager.wmsSapZhuantaihuichuang(pdids, 0,"",1);//状态回传
}else {
msg=msg+ptd.getItem().getCode()+",无匹配库存! ";
}
// shuaxinPick(pt);//刷新订单
}else{
throw new BusinessException("任务状态错误!");
}
}
invIds =new ArrayList<Long>();
return tasks;
}
}

View File

@ -57,6 +57,40 @@
editEnabled="true" />
</forwards>
</commit>
<commit id="cssj" title="测试数据"
enableType="none" invisible="false">
<mappings>
<mapping id="date1" className="date" />
<mapping id="date2" className="date" />
<mapping id="longtiem" className="int" />
<mapping id="lxqQty" className="int" />
<mapping id="hjqQty" className="int" />
<mapping id="lkqQty" className="int" />
<mapping id="ddq" className="boolean" />
<mapping id="pickCode" className="string" />
<mapping id="ddq1" className="boolean" />
<mapping id="ddq2" className="boolean" />
<mapping id="ddq3" className="boolean" />
<mapping id="ddq4" className="boolean" />
<mapping id="ddq5" className="boolean" />
<mapping id="ddq6" className="boolean" />
<mapping id="ddq7" className="boolean" />
<mapping id="ddq8" className="boolean" />
<mapping id="ddq9" className="boolean" />
<mapping id="taskQty" className="int" />
<mapping id="beUrgent" className="boolean" />
</mappings>
<actions>
<action managerName="newWaveDocManager" methodName="cssjHotWaveDoc"
parameter="date1,date2,longtiem,lxqQty,hjqQty,lkqQty,ddq,pickCode,ddq1,ddq2,ddq3,ddq4,ddq5,ddq6,ddq7,ddq8,ddq9,taskQty,beUrgent" />
</actions>
<forwards>
<forward name="closeWindow" newEnabled="true" editEnabled="true" />
<forward name="refreshParent" newEnabled="true"
editEnabled="true" />
</forwards>
</commit>
</buttons>
</editPage>
</pages>

View File

@ -78,7 +78,7 @@
<popup id="bkcb" title="创建波次" enableType="none" invisible="false" containId="false" pageId="editNewbkcbPage" />
<popup id="issuedAgvTask" title="下发工作站任务" enableType="single" invisible="false"
containId="true" pageId="modifyIssuedAgvTaskPage1" />
<commit id="allocate21" title="下发AGV"
<commit id="allocate21" title="下发AGV"
enableType="multi" invisible="false" confirmMessage="确认是否下发?">
<enableExpression><![CDATA[(${waveDoc.status} =='ACTIVE')]]></enableExpression>
<mappings>