界面调整,加机台号、限制LOC、整理库区推荐、料号加默认库区、lik
parent
b6700586fd
commit
1c34877593
|
|
@ -1,6 +1,7 @@
|
|||
package com.dev.swms.server.model.inventory;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import net.sf.json.JSONArray;
|
||||
|
||||
|
|
@ -661,4 +662,6 @@ public class AgvTask extends VersionalEntity {
|
|||
public String getTargetAreaCode(){
|
||||
return this.targetArea.split(",")[0];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ public class PickTicket extends AbstractMoveDoc {
|
|||
private String logisticsCompany;//工作中心
|
||||
private String type;//是否生成入库
|
||||
private String collectNo;//预留号
|
||||
private String executePlanNo;//
|
||||
private String executePlanNo;//工作站中心
|
||||
private String lineName;//是否出WMS仓库
|
||||
|
||||
private Date dispatchDate;//回传日期
|
||||
|
|
|
|||
|
|
@ -38,6 +38,9 @@ public interface AgvTaskManager extends BaseManager{
|
|||
*/
|
||||
@Transactional
|
||||
void activateAgvTask(List<Long> ids);
|
||||
//呼叫料箱、货架,按组下发任务
|
||||
@Transactional
|
||||
void CallGroup(String stocks,Long id,boolean jsa,String remarks );
|
||||
//呼叫料箱、货架
|
||||
@Transactional
|
||||
void CallHJS(String stocks,Long id,boolean jsa,String remarks );
|
||||
|
|
@ -197,6 +200,17 @@ public interface AgvTaskManager extends BaseManager{
|
|||
@Transactional
|
||||
AgvTask callLoc(String stockLP,Long id,Integer identification,Long jobPriorityType
|
||||
,String classification,String founderName,String remarks);
|
||||
/**
|
||||
* AGV取料
|
||||
* @param stockLP
|
||||
* @param id
|
||||
* @param identification 1 =直接下发任务
|
||||
* @param jobPriorityType 1=优先执行
|
||||
* @param classification 呼叫/拣货/盘点
|
||||
*/
|
||||
@Transactional
|
||||
List<AgvTask> callLocGroup(List<String> stockLP,Long id,Integer identification,Long jobPriorityType
|
||||
,String classification,String founderName,String remarks);
|
||||
/**
|
||||
* AGV盘点
|
||||
* @param stockLP 容器码
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import com.dev.swms.server.model.inventory.AgvTask;
|
|||
import com.dev.swms.server.model.inventory.Stock;
|
||||
import com.dev.energy.server.service.BaseManager;
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
@Transactional(readOnly = false)
|
||||
public interface LocationManager extends BaseManager {
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -836,7 +836,121 @@ public class DefaultAgvTaskManager extends DefaultBaseManager implements AgvTask
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<AgvTask> callLocGroup(List<String> stockLPs, Long id,Integer identification,Long jobPriorityType,
|
||||
String classification,String founderName,String remarks) {
|
||||
boolean flag = true;
|
||||
List<AgvTask> agvList=new ArrayList<AgvTask>();
|
||||
LocationStorage ls = this.load(LocationStorage.class, id);
|
||||
if (flag) {
|
||||
for(String stockLP:stockLPs) {
|
||||
AgvTask agvTask = EntityFactory.getEntity(AgvTask.class);
|
||||
//是否有stockLP 到 ls的任务
|
||||
List<AgvTask> agvTasks = commonDao.findByQuery(" from AgvTask agvTask " + "where agvTask.containerCode='"
|
||||
+ stockLP + "' and agvTask.status='" + STATUS.ATCALL + "' " + " and agvTask.type='AGV取料'"
|
||||
+ " and agvTask.targetArea like '%"+ls.getCode()+"%' and agvTask.classification='"+classification+"' "
|
||||
);
|
||||
|
||||
if (agvTasks.size()>0) {
|
||||
agvTask = agvTasks.get(0);
|
||||
}else {
|
||||
StringBuffer sbSql=new StringBuffer();
|
||||
sbSql.append(" from AgvTask agvTask " + "where agvTask.containerCode='"
|
||||
+ stockLP + "' and agvTask.status='" + STATUS.ATCALL + "' " +
|
||||
" and agvTask.type='AGV取料' and agvTask.classification='"+classification+"' ");
|
||||
if (ls.getCode().equals("214")||ls.getCode().equals("215")) {
|
||||
sbSql.append(" and agvTask.targetArea = '%"+ls.getCode()+"%'");
|
||||
}else {
|
||||
sbSql.append(" and agvTask.targetArea not like '%"+"214"+"%'");
|
||||
sbSql.append(" and agvTask.targetArea not like '%"+"215"+"%'");
|
||||
}
|
||||
List<AgvTask> agvTaskss = commonDao.findByQuery(sbSql.toString());
|
||||
if (agvTaskss.size() > 0) {
|
||||
agvTask = agvTaskss.get(0);
|
||||
if (agvTask.getTargetAreaCode().equals("214")||agvTask.getTargetAreaCode().equals("215")) {
|
||||
sbSql.append(" and agvTask.targetArea = '%"+ls.getCode()+"%'");
|
||||
}
|
||||
if (agvTask.getTargetArea() != null) {
|
||||
if(agvTask.getTargetArea().indexOf(ls.getCode())==-1) {
|
||||
agvTask.setTargetArea(agvTask.getTargetArea()+","+ls.getCode());
|
||||
}
|
||||
} else {
|
||||
agvTask.setTargetArea(ls.getCode().trim());
|
||||
}
|
||||
} else {
|
||||
agvTask.setRobotJobId(TimeNumberUtils.getBigTaskCode());
|
||||
agvTask.setSlotCode(ls.getOutLocation());
|
||||
agvTask.setWorkMode("WORKBIN_OUTBOUND");
|
||||
setContainerCode(stockLP, agvTask,ls);//指定接驳口,点位指定接驳口
|
||||
agvTask.setJobType("WORKBIN_MOVE");
|
||||
agvTask.setBeforePutConfirm(true);
|
||||
// agvTask.setClassification("AGV取料");
|
||||
agvTask.setType("AGV取料");
|
||||
agvTask.setIdentification(identification);//1=下发,0=不下发
|
||||
agvTask.setClassification(classification);//业务类型
|
||||
agvTask.setTargetArea(ls.getCode());
|
||||
agvTask.setFounderName(founderName);
|
||||
agvTask.setRemarks(remarks);
|
||||
}
|
||||
agvTask.setJobPriorityType(jobPriorityType);
|
||||
if(jobPriorityType!=null&&jobPriorityType==1) {
|
||||
agvTask.setJobPriority(999L);
|
||||
}
|
||||
agvTask.setTargetAreahistory(agvTask.getTargetArea());
|
||||
commonDao.store(agvTask);
|
||||
if(agvTask.isBeIssue()==false) {
|
||||
agvList.add(agvTask);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(agvList.size()>0) {
|
||||
String result="";
|
||||
if (identification==1) {//直接下发
|
||||
// 取料AGV 任务下发
|
||||
result = interfaceReqManager.doWmsReqAgv(ApiURL.issueAGV, getStockAsnList(agvList)+ "",
|
||||
agvList.get(0).getRobotJobId()+"任务组");
|
||||
}
|
||||
String code="";
|
||||
JSONObject json=new JSONObject();
|
||||
String message="";
|
||||
try{
|
||||
json = JSONObject.fromObject(result);
|
||||
code = json.has("code") ? json.getString("code") : "";
|
||||
message=json.has("message") ? json.getString("message") : "";
|
||||
}catch (Exception e) {
|
||||
logger.info("AGV任务下发失败");
|
||||
}
|
||||
//标记任务下发状态
|
||||
for(AgvTask agvTask:agvList) {
|
||||
if (!code.equals("SUCCESS")) {
|
||||
agvTask.setErrorMessage(message);
|
||||
}else {
|
||||
agvTask.setErrorMessage(null);
|
||||
agvTask.setBeIssue(true);
|
||||
agvTask.setDateTime1(new Date());
|
||||
}
|
||||
commonDao.store(agvTask);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// sendAgvTask(agvTask);// 下发RCS
|
||||
// flag=interfaceReqManager.sendAgvTask(agvTask);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
private void setContainerCode(String stockLP, AgvTask agvTask,LocationStorage ls) {
|
||||
agvTask.setContainerCode(stockLP);
|
||||
List<Stock> stocks = commonDao.findByQuery(" from Stock where LP='"+stockLP+"'");
|
||||
|
|
@ -1322,7 +1436,7 @@ public class DefaultAgvTaskManager extends DefaultBaseManager implements AgvTask
|
|||
String classification,String founderName,String remarks) {
|
||||
synchronized ("callLocAndCallHJ") {
|
||||
AgvTask agv = null;
|
||||
LocationStorage locationStorage = this.load(LocationStorage.class, id);
|
||||
LocationStorage locationStorage = this.load(LocationStorage.class, id);//工作站
|
||||
List<Long> agvTasktypes = commonDao.findByQuery("select agvTask.id from AgvTask agvTask "
|
||||
+ " where agvTask.beIssue=true "
|
||||
+ " and agvTask.classification not in ('"+classification+"') "
|
||||
|
|
@ -1642,7 +1756,37 @@ public class DefaultAgvTaskManager extends DefaultBaseManager implements AgvTask
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
//按组下发任务
|
||||
public void CallGroup(String stocks,Long id,boolean jsa,String remarks) {
|
||||
stocks=stocks.toUpperCase();
|
||||
String[] strings=stocks.split("\n");
|
||||
List<String> stockList=new ArrayList<String>();
|
||||
for (String string : strings) {
|
||||
List<Stock> stockss = commonDao.findByQuery(" from Stock s where s.LP='"+StringUtil.replace(string)+"'");
|
||||
|
||||
if (stockss.size()>0) {
|
||||
List<Long> AGVTASK=commonDao.findByQuery("select id from AgvTask "
|
||||
+ " where containerCode='"+stockss.get(0).getLP()+"' "
|
||||
+ " and status in('ATCALL','ATWAIT','ATWORK','ATPICK','WAIT')");
|
||||
if(AGVTASK.size()>0) {
|
||||
continue;
|
||||
}
|
||||
stockList.add(string);//容器
|
||||
|
||||
}
|
||||
}
|
||||
if(stockList.size()>0) {
|
||||
if(jsa) {
|
||||
//加急任务
|
||||
List<AgvTask> agv=callLocGroup(stockList, id,1,1L,SlotType.callTaks,UserHolder.getUser().getName(),remarks);
|
||||
}else {
|
||||
//料箱 ,工作站 ,面 , 1=下发, 优先级 , 业务类型
|
||||
List<AgvTask> agv=callLocGroup(stockList, id,1,0L,SlotType.callTaks,UserHolder.getUser().getName(),remarks);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
public void agvStockJobPriorityType(List<Long> agvTaskIds) {
|
||||
// TODO 自动生成的方法存根
|
||||
|
|
@ -2202,4 +2346,61 @@ public class DefaultAgvTaskManager extends DefaultBaseManager implements AgvTask
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* agv上料
|
||||
* @param agvTask
|
||||
* @return
|
||||
*/
|
||||
public JSONArray getStockAsnList(List<AgvTask> agvTasks) {
|
||||
JSONArray jsonArray=new JSONArray();
|
||||
for(AgvTask agvTask:agvTasks) {
|
||||
JSONObject jsonObject=new JSONObject();
|
||||
// jsonObject.put("agvCode", agvTask.getAgvCode());
|
||||
jsonObject.put("agvEndPoint", agvTask.getAgvEndPoint());
|
||||
jsonObject.put("agvType", agvTask.getAgvType());
|
||||
if(agvTask.getJobPriorityType().equals("1")) {
|
||||
jsonObject.put("jobPriority", 999);
|
||||
}else {
|
||||
jsonObject.put("jobPriority", agvTask.getJobPriority());
|
||||
}
|
||||
jsonObject.put("jobPriorityType", agvTask.getJobPriorityType());
|
||||
jsonObject.put("letDownFlag", agvTask.getLetDownFlag());
|
||||
jsonObject.put("needOperation", agvTask.getNeedOperation());
|
||||
jsonObject.put("robotJobId", agvTask.getRobotJobId());
|
||||
jsonObject.put("robotJobGroupId", agvTask.getRobotJobGroupId());
|
||||
jsonObject.put("jobType", agvTask.getJobType());
|
||||
jsonObject.put("warehouseId", agvTask.getWarehouseId());
|
||||
jsonObject.put("jobId", agvTask.getJobId());
|
||||
jsonObject.put("msgId", agvTask.getMsgId());
|
||||
// jsonObject.put("complete", agvTask.getMsgId());
|
||||
jsonObject.put("complete", agvTask.isComplete());
|
||||
JSONObject jsonObject2=new JSONObject();
|
||||
jsonObject2.put("workMode", agvTask.getWorkMode());
|
||||
|
||||
jsonObject2.put("stationCode", agvTask.getStationCode());
|
||||
jsonObject2.put("startSlotCode", agvTask.getStartSlotCode());
|
||||
jsonObject2.put("containerCode", agvTask.getContainerCode());
|
||||
if(agvTask.getType()!=null&&agvTask.getType().equals("AGV上料")) {
|
||||
jsonObject2.put("endSlotType", agvTask.getEndSlotType());
|
||||
//WORKBIN_INBOUND=入库
|
||||
if (!agvTask.getWorkMode().equals("WORKBIN_INBOUND")) {
|
||||
jsonObject2.put("endSlotCode", agvTask.getEndSlotCode());
|
||||
}
|
||||
}
|
||||
jsonObject2.put("needReset", agvTask.isNeedReset());
|
||||
jsonObject2.put("autoOutbound", agvTask.isAutoOutbound());
|
||||
jsonObject2.put("beforePutConfirm", agvTask.isBeforePutConfirm());
|
||||
if (agvTask.getLayer().equals("")) {
|
||||
// jsonObject2.put("layer", 2);
|
||||
}else {
|
||||
jsonObject2.put("layer", Integer.valueOf(agvTask.getLayer()));
|
||||
}
|
||||
jsonObject.put("jobData", jsonObject2);
|
||||
jsonArray.add(jsonObject);
|
||||
}
|
||||
return jsonArray;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1062,8 +1062,8 @@ public class DefaultImportFileManager extends DefaultBaseManager implements Impo
|
|||
//料号 描述 包装数量 长(m) 宽(m) 高(m) 重量(KG) 包装类型 单位 中大物料标记
|
||||
int j=0;
|
||||
String itemCode=sheet.getCell(j++,i).getContents().trim();//料号
|
||||
// String itemName=sheet.getCell(j++,i).getContents().trim();//描述
|
||||
// String unit=sheet.getCell(j++,i).getContents().trim();//单位
|
||||
String itemName=sheet.getCell(j++,i).getContents().trim();//描述
|
||||
//
|
||||
// String xlh=sheet.getCell(j++,i).getContents().trim();//是否许列号
|
||||
// String bz=sheet.getCell(j++,i).getContents().trim();//保质期
|
||||
// String dj=sheet.getCell(j++,i).getContents().trim();//单价
|
||||
|
|
@ -1071,8 +1071,10 @@ public class DefaultImportFileManager extends DefaultBaseManager implements Impo
|
|||
double l=Double.parseDouble(sheet.getCell(j++,i).getContents().trim());//长
|
||||
double w=Double.parseDouble(sheet.getCell(j++,i).getContents().trim());//宽
|
||||
double h=Double.parseDouble(sheet.getCell(j++,i).getContents().trim());//高
|
||||
double wv=Double.parseDouble(sheet.getCell(j++,i).getContents().trim());//重量
|
||||
double wv=Double.parseDouble(sheet.getCell(j++,i).getContents().trim());//规格重量
|
||||
String s=sheet.getCell(j++,i).getContents().trim();//包装类型
|
||||
String unit=sheet.getCell(j++,i).getContents().trim();//单位
|
||||
String zoneName=sheet.getCell(j++,i).getContents().trim();//默认库区
|
||||
// String bs=sheet.getCell(j++,i).getContents().trim();//中大件标识
|
||||
List<Item> items=commonDao.findByQuery("from Item t where t.code=:code ",
|
||||
new String[]{"code"},new Object[]{itemCode});
|
||||
|
|
@ -1088,8 +1090,10 @@ public class DefaultImportFileManager extends DefaultBaseManager implements Impo
|
|||
// item.setCreatePeople(UserHolder.getUser().getName());
|
||||
// item.setCreateDate(new Date());
|
||||
}
|
||||
/*item.setUnit(unit);
|
||||
if(xlh!=null&&xlh.length()>0) {
|
||||
if(unit!=null&&unit.length()>0) {
|
||||
item.setUnit(unit);
|
||||
}
|
||||
/*if(xlh!=null&&xlh.length()>0) {
|
||||
item.setBeMarkWeight(true);
|
||||
}
|
||||
if(bz!=null&&bz.length()>0) {
|
||||
|
|
@ -1106,48 +1110,65 @@ public class DefaultImportFileManager extends DefaultBaseManager implements Impo
|
|||
item.setUnit(unit);
|
||||
item.setGoodType(bs);
|
||||
*/
|
||||
item.setCAcoefficient(bqty);
|
||||
item.setPackNumber((int)bqty);
|
||||
if(zoneName!=null&&zoneName.length()>0) {
|
||||
List<WarehouseArea> zoneList= commonDao.findByQuery(" from WarehouseArea w where w.name='"+zoneName+"' and w.disabled=false ");
|
||||
if(zoneList.size()>0) {
|
||||
item.setDefaultWarehouseArea(zoneList.get(0));
|
||||
}
|
||||
}
|
||||
if(bqty>0) {
|
||||
item.setCAcoefficient(bqty);
|
||||
item.setPackNumber((int)bqty);
|
||||
}
|
||||
if(wv>0&&bqty>0) {
|
||||
BigDecimal bg1 = new BigDecimal(wv);
|
||||
double f2 = bg1.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
// item.setWeight(f2);//规格重量
|
||||
double f2 = bg1.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(f2<0.001) {
|
||||
f2=0.001;
|
||||
}
|
||||
item.setWeight(f2);//规格重量
|
||||
BigDecimal bg5 = new BigDecimal(wv/bqty);
|
||||
double f5 = bg5.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
// item.setSuggest(f5);//毛重
|
||||
|
||||
double f5 = bg5.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(f5<0.001) {
|
||||
f5=0.001;
|
||||
}
|
||||
item.setSuggest(f5);//毛重
|
||||
}
|
||||
if(w>0&&l>0&&h>0) {
|
||||
BigDecimal bg3 = new BigDecimal(w);
|
||||
item.setWidth(w/1000);
|
||||
double width = bg3.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(width<item.getWidth()) {
|
||||
width=width+0.01;
|
||||
if(width<0.01) {
|
||||
width=0.01;
|
||||
}
|
||||
item.setWidth(width);//宽
|
||||
|
||||
BigDecimal bg2 = new BigDecimal(l);
|
||||
item.setLength(l/1000);
|
||||
double length = bg2.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(length<item.getLength()) {
|
||||
length=length+0.01;
|
||||
if(length<0.01) {
|
||||
length=0.01;
|
||||
}
|
||||
item.setLength(length);//长
|
||||
|
||||
BigDecimal bg4 = new BigDecimal(h);
|
||||
item.setHeight(h/1000);
|
||||
double height = bg4.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(height<item.getHeight()) {
|
||||
height=height+0.01;
|
||||
if(height<0.01) {
|
||||
height=0.01;
|
||||
}
|
||||
item.setHeight(height);//高
|
||||
BigDecimal bg6 = new BigDecimal(height*length*width);
|
||||
item.setVolume(height*length*width);
|
||||
double volume = bg6.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(volume<item.getVolume()) {
|
||||
volume=volume+0.000001;
|
||||
if(volume<0.000001) {
|
||||
volume=0.000001;
|
||||
}
|
||||
BigDecimal bg7 = new BigDecimal(volume);
|
||||
volume = bg7.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
item.setVolume(volume);
|
||||
|
||||
if(item.getLength()>0.6||item.getWidth()>0.4) {
|
||||
item.setGoodType("大件");
|
||||
}else {
|
||||
item.setGoodType("小件");
|
||||
}
|
||||
}
|
||||
commonDao.store(item);
|
||||
// wmsOperationHisManager.storeOperationHis(item.getId(),item.getName(), null,"", "物料信息", "导入货品信息",null,
|
||||
// null,0, 0,0, 0, "", "WMS");
|
||||
|
|
|
|||
|
|
@ -77,13 +77,14 @@ public class DefaultItemManager extends DefaultBaseManager implements
|
|||
if(!item.isNew()) {
|
||||
i=commonDao.load(Item.class, item.getId());
|
||||
}
|
||||
if(item.getWeight()<0.001) {
|
||||
item.setWeight(0.001);
|
||||
}
|
||||
if(item.getWeight()>0&&item.getPackNumber()>0) {
|
||||
i.setSuggest(item.getWeight()/item.getPackNumber());
|
||||
}else {
|
||||
i.setSuggest(item.getWeight());
|
||||
}
|
||||
BigDecimal bg31 = new BigDecimal(i.getSuggest());
|
||||
i.setSuggest(bg31.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue());
|
||||
|
||||
List<Inventory> invs=commonDao.findByQuery(" from Inventory i where i.itemKey.item.code='"+item.getCode()+"'");
|
||||
if(invs.size()>0&&i!=null) {
|
||||
|
|
@ -99,7 +100,7 @@ public class DefaultItemManager extends DefaultBaseManager implements
|
|||
}else {
|
||||
|
||||
}
|
||||
BigDecimal bg1 = new BigDecimal(item.getSuggest());
|
||||
BigDecimal bg1 = new BigDecimal(item.getSuggest());//毛重
|
||||
double f2 = bg1.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(f2<0.001){
|
||||
i.setSuggest(0.001);
|
||||
|
|
@ -108,18 +109,18 @@ public class DefaultItemManager extends DefaultBaseManager implements
|
|||
}
|
||||
BigDecimal bg2 = new BigDecimal(item.getLength());
|
||||
double length = bg2.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(length<item.getLength()) {
|
||||
length=length+0.01;
|
||||
if(length<0.01) {
|
||||
length=0.01;
|
||||
}
|
||||
BigDecimal bg3 = new BigDecimal(item.getWidth());
|
||||
double width = bg3.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(width<item.getWidth()) {
|
||||
width=width+0.01;
|
||||
if(width<0.01) {
|
||||
width=0.01;
|
||||
}
|
||||
BigDecimal bg4 = new BigDecimal(item.getHeight());
|
||||
double height = bg4.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(height<item.getHeight()) {
|
||||
height=height+0.01;
|
||||
if(height<0.01) {
|
||||
height=0.01;
|
||||
}
|
||||
if(item.getIsBOM()&&item.getValidPeriod()<=0) {
|
||||
throw new BusinessException("有效期料号必须输入保质期");
|
||||
|
|
@ -146,15 +147,15 @@ public class DefaultItemManager extends DefaultBaseManager implements
|
|||
i.setDefaultWarehouseArea(item.getDefaultWarehouseArea());
|
||||
i.setSmallUnit(item.getSmallUnit());
|
||||
double a=length*width*height;
|
||||
if(i.getPackNumber()>0) {
|
||||
i.setVolume(a/i.getPackNumber());
|
||||
}else {
|
||||
i.setVolume(a);
|
||||
}
|
||||
// if(i.getPackNumber()>0) {
|
||||
// i.setVolume(a/i.getPackNumber());
|
||||
// }else {
|
||||
// i.setVolume(a);
|
||||
// }
|
||||
BigDecimal bg = new BigDecimal(i.getVolume());
|
||||
double f1 = bg.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(f1<i.getVolume()) {
|
||||
f1=f1+0.000001;
|
||||
if(f1<0.000001) {
|
||||
f1=0.000001;
|
||||
}
|
||||
i.setVolume(f1);
|
||||
i.setBeMarkWeight(item.isBeMarkWeight());
|
||||
|
|
|
|||
|
|
@ -1318,26 +1318,20 @@ public class DefaultLocationManager extends DefaultBaseManager implements
|
|||
@Override
|
||||
public void locationInventory() {
|
||||
List<Long> list=new ArrayList<Long>();
|
||||
try{
|
||||
String hql=" select inv.location.id from Inventory inv where inv.quantity>0 "
|
||||
|
||||
String hql=" select inv.location.id from Inventory inv where inv.quantity>0 "
|
||||
+ " and inv.location.type in('存货','不良品') and inv.location.status='FREE' "
|
||||
+ " GROUP BY inv.location.id ";
|
||||
list=commonDao.findByQuery(hql);
|
||||
String hql1=" select lc.id from Location lc where lc.status='OCCUPY' "
|
||||
+ " and lc.id not in(select inv.location.id from Inventory inv where inv.quantity>0)"
|
||||
+ " GROUP BY lc.id ";
|
||||
list.addAll(commonDao.findByQuery(hql1));
|
||||
if(list.size()>0) {
|
||||
// kuwei(list);
|
||||
for(Long id:list) {
|
||||
kuwei(id);
|
||||
}
|
||||
}
|
||||
}catch (Exception e) {
|
||||
|
||||
}
|
||||
|
||||
// List<Long> list=new ArrayList<Long>();
|
||||
// String hql=" select l.id from Location l where l.status='OCCUPY' ";
|
||||
// list=commonDao.findByQuery(hql);
|
||||
// if(list.size()>0) {
|
||||
// kuwei(list);
|
||||
// }
|
||||
|
||||
logger.info("刷新库满度完成");
|
||||
}
|
||||
|
|
@ -1438,10 +1432,12 @@ public class DefaultLocationManager extends DefaultBaseManager implements
|
|||
quant=quant+inventory2.getQuantity();
|
||||
ItemKey itemKey=commonDao.load(ItemKey.class, inventory2.getItemKey().getId());
|
||||
Item item=commonDao.load(Item.class, itemKey.getItem().getId());
|
||||
if(loc.getDimension()>0&&item.getPackNumber()>0) {
|
||||
b+=((item.getLength()*item.getWidth())/item.getPackNumber()*inventory2.getQuantity())*1.2;//物料的长×宽÷规格数×库存数×1.2=物料库存的面积
|
||||
sum2+=((item.getLength()*item.getWidth())/item.getPackNumber()*inventory2.getQuantity())*1.2/loc.getDimension()*100;//物料的长×宽÷规格数×库存数×1.2÷库位的体积=库满度
|
||||
BigDecimal bg3 = new BigDecimal(sum2);
|
||||
mianji = bg3.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
}
|
||||
}
|
||||
String bbb=String.valueOf(mianji);//库满度
|
||||
if(b>loc.getDimension()){//如果物料库存的面积大于这个库位的面积
|
||||
|
|
@ -1543,8 +1539,9 @@ public class DefaultLocationManager extends DefaultBaseManager implements
|
|||
null,0, 0,0, 0, "", "WMS");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
wmsOperationHisManager.storeOperationHis(loc.getId(),loc.getCode(), null,"", "库位信息", "库满度刷新",null,
|
||||
null,0, 0,0, 0, e.getMessage().substring(0,255), "WMS");
|
||||
logger.info(e.getMessage());
|
||||
// wmsOperationHisManager.storeOperationHis(loc.getId(),loc.getCode(), null,"", "库位信息", "库满度刷新",null,
|
||||
// null,0, 0,0, 0, e.getMessage().substring(0,255), "WMS");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1800,9 +1800,9 @@ public class DefaultCountPlanManager extends DefaultBaseManager implements
|
|||
|
||||
// List<CountRecord> yfrg=commonDao.findByQuery(" from CountRecord c where c.location.zone.id=1815 "
|
||||
// +" and c.countPlan.id="+countPlanId+" order by c.location.code");
|
||||
List<CountRecord> yfrg=quserCountPlanTask(1815L, countPlanId);//2#3研发人工区
|
||||
List<CountRecord> yfrg=quserCountPlanTask(1815L, countPlanId);//2#2研发人工区
|
||||
if(yfrg.size()>0&&w38==0) {
|
||||
throw new BusinessException("2#3研发人工区有盘点任务,必须勾选");
|
||||
throw new BusinessException("2#2研发人工区有盘点任务,必须勾选");
|
||||
}
|
||||
List<CountRecord> yfgk=quserCountPlanTask(1816L, countPlanId);//2#3研发人工库
|
||||
if(yfgk.size()>0&&w39==0) {
|
||||
|
|
|
|||
|
|
@ -572,7 +572,7 @@ public class DefaultInterfaceRespManager extends DefaultBaseManager implements I
|
|||
pTicket.setSourceId(strBill1);
|
||||
pTicket.setWorkerName1(WERKS);//工厂
|
||||
pTicket.setDeliveryMode(ZREV);//receiver
|
||||
|
||||
pTicket.setExecutePlanNo(CY_SEQNR);//机台号
|
||||
commonDao.store(pTicket);
|
||||
ptid=pTicket.getId();
|
||||
PickTicketDetail ptd =null;
|
||||
|
|
@ -2782,9 +2782,10 @@ public class DefaultInterfaceRespManager extends DefaultBaseManager implements I
|
|||
+" left join ITEM_KEY ik on inv.ITEM_KEY_ID=ik.ID "
|
||||
+" left join ITEM i on ik.ITEM_ID=i.ID "
|
||||
+" left join LOCATION loc on inv.LOCATION_ID=loc.ID "
|
||||
+" left join ZONE z on z.id=loc.ZONE_ID "
|
||||
+" where 1=1 and loc.id not in(88242) and i.Be_SAP_Item=1 "
|
||||
+ " and inv.status in('待上架','已入库','冻结','整理中') "
|
||||
+ " and inv.quantity<>0 ");
|
||||
+ " and inv.quantity<>0 and z.CARRIER_TYPE_ID in(3,5) ");
|
||||
if (MATNR!=null&&MATNR.length()>0) {
|
||||
sb.append(" and i.code='"+MATNR+"'");
|
||||
}
|
||||
|
|
@ -3022,7 +3023,9 @@ public class DefaultInterfaceRespManager extends DefaultBaseManager implements I
|
|||
+" left join ITEM_KEY ik on inv.ITEM_KEY_ID=ik.ID "
|
||||
+" left join ITEM i on ik.ITEM_ID=i.ID "
|
||||
+" left join LOCATION loc on inv.LOCATION_ID=loc.ID "
|
||||
+" where 1=1 and loc.id not in(88242,88241) and inv.MASTER_PACK_QUANTITY>0 and inv.status='已入库' ");
|
||||
+" left join ZONE z on z.id=loc.ZONE_ID "
|
||||
+" where 1=1 and loc.id not in(88242,88241) and z.CARRIER_TYPE_ID in(3,5) and "
|
||||
+ " inv.MASTER_PACK_QUANTITY>0 and inv.status='已入库' ");
|
||||
sb.append(" and i.FEE_TYPE='OA' and i.Be_SAP_Item=0");
|
||||
if (company!=null&&company.length()>0) {
|
||||
sb.append(" and ik.PROP_C9='"+company+"'");
|
||||
|
|
|
|||
|
|
@ -142,6 +142,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
|
|||
String data = "";
|
||||
String h = "";
|
||||
String locFloor="";
|
||||
String zoneCode="";//推荐库区
|
||||
String str1=asn_code;//扫描的凭证号
|
||||
Session session = ((HibernateDaoSupport) this.commonDao).getSessionFactory().openSession();
|
||||
try {
|
||||
|
|
@ -177,8 +178,10 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
|
|||
+ " case when ad.ftl_qty>0 then ad.ftl_qty-ad.RECEIVED_QUANTITY else ad.EXPECTED_QUANTITY-ad.RECEIVED_QUANTITY end as orderQuantity,"
|
||||
+ "ad.RECEIVED_QUANTITY as expectedQuantity, ad.strBill8,ad.PROP_C5 as propC5,"
|
||||
+" ad.PROP_C2 as propC2,ad.PROP_C1 as propC1,PROP_C3 as propC3,ad.strBill2,item.UNIT as unit,"
|
||||
+ "item.ISBOM,z.id as z_id,item.volume,item.BE_MARK_WEIGHT as beMarkWeight,item.FEE_TYPE,"
|
||||
+ " item.be_Extend1,item.be_Extend2,asn.BILL_TYPE_ID,ad.strBill11,ad.bf_qty "
|
||||
+ "item.ISBOM,"
|
||||
+ "(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,item.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 "
|
||||
+ " from ASN_DETAIL ad "
|
||||
+ " left join ASN asn on asn.id=ad.ASN_ID "
|
||||
+ " left join ITEM item on item.id=ad.ITEM_ID "
|
||||
|
|
@ -321,6 +324,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
|
|||
return resultJson;
|
||||
}
|
||||
}
|
||||
zoneCode= arrier[23]==null?"":arrier[23].toString();//库区
|
||||
array.add(obj);
|
||||
}
|
||||
data = array.toString();
|
||||
|
|
@ -365,6 +369,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
|
|||
resultJson.put("data", data);
|
||||
resultJson.put("msg", msg);
|
||||
resultJson.put("h", h);
|
||||
resultJson.put("zoneCode", zoneCode);
|
||||
resultJson.put("locFloor", locFloor);
|
||||
return resultJson;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ import com.dev.swms.server.model.base.Warehouse;
|
|||
import com.dev.swms.server.model.base.WarehouseArea;
|
||||
import com.dev.swms.server.model.base.WarehouseAreaStatus;
|
||||
import com.dev.swms.server.model.base.Worker;
|
||||
import com.dev.swms.server.model.delivery.ZonePlant;
|
||||
import com.dev.swms.server.model.interfaceLog.InterfaceLog;
|
||||
import com.dev.swms.server.model.interfaces.InterfaceWmsDownload;
|
||||
import com.dev.swms.server.model.inventory.AgvTask;
|
||||
|
|
@ -2327,7 +2328,7 @@ public void addASNDetail(Long id,ASNDetail asnDetail) {
|
|||
|
||||
@Override
|
||||
public void receiveGoods(List<Long> asnDetailIds, Date receiveDate1,
|
||||
Long workerId,long dock_id,Long ls_id,double receivedQuantity,long stockId,
|
||||
Long workerId,long dock_id,Long zone_id,double receivedQuantity,long stockId,
|
||||
Long pqty,String mac,String statusDes,boolean agv) throws Exception{
|
||||
for(Long id:asnDetailIds){//循环整理(收货)
|
||||
ASNDetail asnDetail=this.load(ASNDetail.class, id);//根据整理的这条数据获取它所有的明细
|
||||
|
|
@ -2337,14 +2338,27 @@ public void addASNDetail(Long id,ASNDetail asnDetail) {
|
|||
}
|
||||
BillType bt=commonDao.load(BillType.class, asn.getBillType().getId());
|
||||
Item item=this.load(Item.class, asnDetail.getItem().getId());//货品
|
||||
WarehouseArea warehouseArea =commonDao.load(WarehouseArea.class, ls_id);//库区
|
||||
WarehouseArea warehouseArea =commonDao.load(WarehouseArea.class, zone_id);//库区
|
||||
if(warehouseArea!=null) {
|
||||
//库区限制LOC,
|
||||
if(asnDetail.getLotInfo()!=null&&asnDetail.getLotInfo().getPropC2()!=null) {
|
||||
String pr2=asnDetail.getLotInfo().getPropC2();
|
||||
String wahql=" from ZonePlant z where z.area.id="+zone_id ;
|
||||
List<ZonePlant> zplist=commonDao.findByQuery(wahql);
|
||||
for(ZonePlant zp:zplist) {
|
||||
if(zp.getpLocation().getCode().equals(pr2)) {
|
||||
throw new BusinessException(pr2+"不能整理到"+warehouseArea.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Stock stock=commonDao.load(Stock.class, stockId);
|
||||
Location location=null;
|
||||
location=this.load(Location.class, dock_id);//库位
|
||||
if(warehouseArea==null&&location==null) {
|
||||
throw new BusinessException("库区和库位不能都为空");
|
||||
}
|
||||
if(ls_id.intValue()==1763&&dock_id==0) {
|
||||
if(zone_id.intValue()==1763&&dock_id==0) {
|
||||
throw new BusinessException("料箱区,必须扫描料箱格口码");
|
||||
}
|
||||
if(stock==null&&location!=null) {
|
||||
|
|
@ -2405,7 +2419,7 @@ public void addASNDetail(Long id,ASNDetail asnDetail) {
|
|||
}
|
||||
}
|
||||
//判断该容器已有其它库区物料
|
||||
int count=queryConWare(stockId, ls_id);
|
||||
int count=queryConWare(stockId, zone_id);
|
||||
if(count==1){
|
||||
throw new BusinessException("该容器已有其它库区物料!");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ import com.dev.swms.server.model.base.WarehouseArea;
|
|||
import com.dev.swms.server.model.base.WarehouseAreaStatus;
|
||||
import com.dev.swms.server.model.base.Worker;
|
||||
import com.dev.swms.server.model.delivery.PlantLocation;
|
||||
import com.dev.swms.server.model.delivery.ZonePlant;
|
||||
import com.dev.swms.server.model.interfaceLog.InterfaceLog;
|
||||
import com.dev.swms.server.model.inventory.Configuration;
|
||||
import com.dev.swms.server.model.inventory.Inventory;
|
||||
|
|
@ -1107,7 +1108,7 @@ public class DefaultMoveDocManager extends DefaultBaseManager implements MoveDoc
|
|||
public void manualMoveDetail(MoveDocDetail detail, Long userId, Double caseQty, Double puQty, Stock srcLp) {
|
||||
Location deslocation = this.commonDao.load(Location.class, detail.getDstLoc().getId());
|
||||
Location srclocation = this.commonDao.load(Location.class, detail.getSrcLoc().getId());
|
||||
|
||||
WarehouseArea wa=commonDao.load(WarehouseArea.class, deslocation.getZone().getId());
|
||||
if (deslocation.getCountLock() != null && !deslocation.getCountLock().equals("")) {
|
||||
throw new BusinessException("该库位正在盘点,不能上架");
|
||||
}
|
||||
|
|
@ -1116,6 +1117,19 @@ public class DefaultMoveDocManager extends DefaultBaseManager implements MoveDoc
|
|||
Item item = this.commonDao.load(Item.class, detail.getItem().getId());
|
||||
ItemKey itemKey = this.commonDao.load(ItemKey.class, detail.getItemKey().getId());
|
||||
Worker worker = commonDao.load(Worker.class, userId);
|
||||
if(wa!=null) {
|
||||
//库区限制LOC,
|
||||
if(itemKey.getLotInfo()!=null&&itemKey.getLotInfo().getPropC2()!=null) {
|
||||
String pr2=itemKey.getLotInfo().getPropC2();
|
||||
String wahql=" from ZonePlant z where z.area.id="+wa.getId() ;
|
||||
List<ZonePlant> zplist=commonDao.findByQuery(wahql);
|
||||
for(ZonePlant zp:zplist) {
|
||||
if(zp.getpLocation().getCode().equals(pr2)) {
|
||||
throw new BusinessException(pr2+"不能上架到"+wa.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!(MoveDocStatus.CANCEL.equals(detail.getMoveDoc().getStatus()) || MoveDocStatus.CLOSE.equals(detail
|
||||
.getMoveDoc().getStatus()))) {
|
||||
Double moveQuantity = 0d;
|
||||
|
|
@ -2288,6 +2302,8 @@ public class DefaultMoveDocManager extends DefaultBaseManager implements MoveDoc
|
|||
srcInv.setStatuss("T");
|
||||
}
|
||||
commonDao.store(srcInv);
|
||||
locst.setStatus(WarehouseAreaStatus.OCCUPY);
|
||||
commonDao.store(locst);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2526,11 +2542,11 @@ public class DefaultMoveDocManager extends DefaultBaseManager implements MoveDoc
|
|||
String px_sql = " order by l.gdType asc ";
|
||||
//库位高度
|
||||
if (st.getGdType().equals(TranType.gd_d)) {
|
||||
sql += " and 1=1 and l.gdType=1 ";
|
||||
sql += " and 1=1 and l.gdType in('1','2') ";
|
||||
} else if (st.getGdType().equals(TranType.gd_z)) {
|
||||
sql += " and l.gdType =2 ";
|
||||
sql += " and l.gdType !='1' ";
|
||||
} else if (st.getGdType().equals(TranType.gd_g)) {
|
||||
sql += " and l.gdType =3 ";
|
||||
sql += " and l.gdType ='3' ";
|
||||
}
|
||||
// sql += " and l.name in ('01-02-01','02-02-01','03-02-01','04-02-01') ";
|
||||
if (st.getLocationStorage()!=null) {
|
||||
|
|
@ -2580,7 +2596,7 @@ public class DefaultMoveDocManager extends DefaultBaseManager implements MoveDoc
|
|||
// ls = this.commonDao.findByQuery(hql1 + px_sql);
|
||||
// }
|
||||
|
||||
if (ls.size() <= 8) {
|
||||
if (ls.size() <= 10) {
|
||||
throw new BusinessException("无合适的存放位");
|
||||
} else {
|
||||
return ls.get(0);
|
||||
|
|
@ -2665,6 +2681,9 @@ public class DefaultMoveDocManager extends DefaultBaseManager implements MoveDoc
|
|||
List<Inventory> inventories = commonDao.findByQuery(" from Inventory inv where inv.location.code='"+t.getBarcode()+"'");
|
||||
if (inventories.size()>0) {
|
||||
Inventory inventory=inventories.get(0);
|
||||
Location lc=commonDao.load(Location.class, inventory.getLocation().getId());
|
||||
lc.setStatus(WarehouseAreaStatus.FREE);
|
||||
commonDao.store(lc);
|
||||
this.commonDao.delete(inventory);
|
||||
}
|
||||
flag=false;
|
||||
|
|
@ -3575,8 +3594,6 @@ public class DefaultMoveDocManager extends DefaultBaseManager implements MoveDoc
|
|||
inv = new Inventory();// EntityFactory.getEntity(Inventory.class);
|
||||
inv.setLocation(location);
|
||||
inv.setItemKey(itemKey);
|
||||
location.setCurrentItem(item.getId());
|
||||
location.setCurrentLot(itemKey.getId());
|
||||
inv.setCaCoefficient(1D);
|
||||
inv.setLP(st);
|
||||
// inv.setStatus("待上架");
|
||||
|
|
@ -4187,7 +4204,7 @@ public class DefaultMoveDocManager extends DefaultBaseManager implements MoveDoc
|
|||
// ls = this.commonDao.findByQuery(hql1 + px_sql);
|
||||
// }
|
||||
|
||||
if (ls.size() <= 4) {
|
||||
if (ls.size() <= 5) {
|
||||
throw new BusinessException("不存在合适的库位");
|
||||
} else {
|
||||
return ls.get(0);
|
||||
|
|
|
|||
|
|
@ -473,7 +473,9 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick
|
|||
if ((pickTicket.getAllocatedQuantity() > 0 || pickTicket.getAllocatedQuantity() == pickTicket.getOrderQuantity()
|
||||
&& pickTicket.getPickedQuantity() == 0 && pickTicket.getShippedQuantity() == 0)
|
||||
|| pickTicket.getOrderQuantity() == pickTicket.getAllocatedQuantity()) {
|
||||
pickTicket.setStatus(PickTicketStatus.ALLOCATE);
|
||||
if(!pickTicket.getStatus().equals(PickTicketStatus.CHECK)) {
|
||||
pickTicket.setStatus(PickTicketStatus.ALLOCATE);
|
||||
}
|
||||
}
|
||||
if (pickTicket.getPickedQuantity() < pickTicket.getAllocatedQuantity() && pickTicket.getPickedQuantity() > 0) {
|
||||
pickTicket.setStatus(PickTicketStatus.PICKUP);
|
||||
|
|
@ -2818,6 +2820,20 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick
|
|||
|
||||
for (Map.Entry<Long, List> me : itor) {
|
||||
Inventory inventory = this.load(Inventory.class, Long.parseLong(me.getKey().toString()));
|
||||
String ptd_loc=ptd.getNewLotInfo().getPropC2();
|
||||
String inv_loc=inventory.getItemKey().getLotInfo().getPropC2();
|
||||
String ptd_plan=ptd.getNewLotInfo().getPropC9();
|
||||
String inv_plan=inventory.getItemKey().getLotInfo().getPropC9();
|
||||
if(ptd_loc!=null&&ptd_loc.length()>0) {
|
||||
if(inv_loc!=null&&!inv_loc.equals(ptd_loc)) {
|
||||
throw new BusinessException("需要分配库存地"+ptd_loc+"的库存");
|
||||
}
|
||||
}
|
||||
if(ptd_plan!=null&&ptd_plan.length()>0) {
|
||||
if(inv_plan!=null&&!inv_plan.equals(ptd_plan)) {
|
||||
throw new BusinessException("需要分配工厂"+ptd_plan+"的库存");
|
||||
}
|
||||
}
|
||||
double quantity = Double.parseDouble(me.getValue().get(0).toString());
|
||||
double unallocateQty = ptd.getOrderQuantity() - ptd.getAllocatedQuantity();
|
||||
if (unallocateQty == 0) {
|
||||
|
|
@ -4344,7 +4360,7 @@ public class DefaultPickTicketManager extends DefaultBaseManager implements Pick
|
|||
if (wa!=null&&(wa.getLevels()==0||!wa.isBeBill())) {
|
||||
task.setInventoryStatus("合单完成");
|
||||
}
|
||||
if(!bt.isBePresentation()) {
|
||||
if(!bt.isBePresentation()&&wa.getCarrierType().getId()==3) {
|
||||
task.setInventoryStatus("交单完成");
|
||||
}
|
||||
if(beUnpacking!=null&&beUnpacking.length()>0) {
|
||||
|
|
|
|||
|
|
@ -849,7 +849,7 @@ public class ASNReceiveServlet extends HttpServlet {
|
|||
try {
|
||||
if (userId > 0) {
|
||||
if (warehouseId > 0) {
|
||||
if(specs<=0||weight<=0||length<=0||width<=0||weight<=0||height<=0) {
|
||||
if(specs<=0||weight<=0||length<=0||width<=0||height<=0) {
|
||||
status = "2";
|
||||
msg = "规格、长宽高、重量需大于0!";
|
||||
}else {
|
||||
|
|
@ -866,18 +866,18 @@ public class ASNReceiveServlet extends HttpServlet {
|
|||
}
|
||||
BigDecimal bg2 = new BigDecimal(length/100);
|
||||
double length1 = bg2.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(length<item.getLength()) {
|
||||
length1=length+0.01;
|
||||
if(length1<0.01) {
|
||||
length1=0.01;
|
||||
}
|
||||
BigDecimal bg3 = new BigDecimal(width/100);
|
||||
double width1 = bg3.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(width<item.getWidth()) {
|
||||
width1=width1+0.01;
|
||||
if(width1<0.01) {
|
||||
width1=0.01;
|
||||
}
|
||||
BigDecimal bg4 = new BigDecimal(height/100);
|
||||
double height1 = bg4.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(height<item.getHeight()) {
|
||||
height1=height1+0.01;
|
||||
if(height1<0.01) {
|
||||
height1=0.01;
|
||||
}
|
||||
item.setLength(length1);
|
||||
item.setWidth(width1);
|
||||
|
|
@ -886,6 +886,12 @@ public class ASNReceiveServlet extends HttpServlet {
|
|||
item.setCAcoefficient(specs);
|
||||
item.setPackNumber((int)Math.abs(specs));
|
||||
item.setVolume(width1*height1*length1);
|
||||
BigDecimal bg = new BigDecimal(item.getVolume());
|
||||
double f1 = bg.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if(f1<0.000001) {
|
||||
f1=0.000001;
|
||||
}
|
||||
item.setVolume(f1);
|
||||
item.setBalanceNumber(1);
|
||||
item.setWarehouseArea(commonDao.load(WarehouseArea.class, z_id));
|
||||
List<ASNDetail> ads=commonDao.findByQuery(" from ASNDetail ad where ad.asn.id="+ad.getAsn().getId()+" and ad.item.id="+ad.getItem().getId());
|
||||
|
|
|
|||
|
|
@ -139,12 +139,11 @@ public class XLSExportGenerator implements ExportExcelGenerator, ApplicationCont
|
|||
if(data.indexOf(",")>-1){
|
||||
data="\""+data.replace("\"", "\"\"")+"\"";
|
||||
}
|
||||
data=data.replaceAll("\r\n", "")+"\t";
|
||||
data=data.replaceAll("\r\n", "")+"";
|
||||
}
|
||||
} else {
|
||||
data="";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return data;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
---------------2025-03-14
|
||||
CREATE TABLE [dbo].[ZONE_PLANT] (
|
||||
[ID] numeric(19) IDENTITY(1,1) NOT NULL,
|
||||
[ZONE_ID] int NULL,
|
||||
[PLANE_LOCATION_ID] int NULL,
|
||||
CONSTRAINT [PK__zone_pla__3213E83FEFD8CD6E] 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].[ZONE_PLANT] SET (LOCK_ESCALATION = TABLE)
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- 呼叫货架 -->
|
||||
<pages>
|
||||
<editPage id="editCallLOCGroupPage" title="AGV取料"
|
||||
entityClass="com.dev.swms.server.model.inventory.Inventory" onClose="refreshParent"
|
||||
width="300" height="200">
|
||||
<inputUIs>
|
||||
<hidden id="asn.id" reserve="false" />
|
||||
<textArea id="stocks" title="呼叫料箱"
|
||||
row="1" col="1" span="1" readOnly="false" required="false"
|
||||
reserve="false" forceOverride="true" inVisible="false" rows="5"
|
||||
height="80"/>
|
||||
<!-- <text id="stockLP" title="料箱码"
|
||||
row="1" col="1" readOnly="false" required="true" reserve="false"
|
||||
forceOverride="false" inVisible="false" trimSpace="true" /> -->
|
||||
<remote id="LocationStorageId" title="工作站" row="2" span="1"
|
||||
readOnly="false" required="true" reserve="false" forceOverride="true"
|
||||
inVisible="false" manualEditable="true" percentSignPosition="both"
|
||||
displayColumn="2" displayedTableHead="序号,工作站编码,工作站名称">
|
||||
<hql><![CDATA[select loc.id, loc.code, loc.name from LocationStorage loc
|
||||
where loc.code like :param
|
||||
and loc.disabled = false and loc.name in ('201','202','203','204','205','206','207','208','209','210','211','212',
|
||||
'213','214','215','101','102','103','104','105','106','107')
|
||||
]]></hql>
|
||||
</remote>
|
||||
<textArea id="desreak" title="备注"
|
||||
row="6" col="1" span="1" readOnly="false" required="true"
|
||||
reserve="false" forceOverride="true" inVisible="false" rows="2"
|
||||
height="80"/>
|
||||
<checkbox id="ordersAll" title="是否加急" row="7" col="1" defaultValue="true"
|
||||
span="1" readOnly="false" required="false" reserve="false" forceOverride="true" inVisible="false" />
|
||||
</inputUIs>
|
||||
<buttons>
|
||||
<commit id="allLOCgroup" title="AGV取料"
|
||||
enableType="none" invisible="false">
|
||||
<mappings>
|
||||
<mapping id="stocks" className="string" />
|
||||
<mapping id="LocationStorageId" className="long" />
|
||||
<mapping id="ordersAll" className="boolean" />
|
||||
<mapping id="desreak" className="string" />
|
||||
</mappings>
|
||||
<actions>
|
||||
<action managerName="agvTaskManager" methodName="CallGroup"
|
||||
parameter="stocks,LocationStorageId,ordersAll,desreak" />
|
||||
</actions>
|
||||
<forwards>
|
||||
<forward name="refreshParent" newEnabled="true"
|
||||
editEnabled="true" />
|
||||
<forward name="closeWindow" newEnabled="true" editEnabled="true" />
|
||||
</forwards>
|
||||
</commit>
|
||||
</buttons>
|
||||
</editPage>
|
||||
</pages>
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
row="2" col="3" defaultValue="0" readOnly="false" required="false"
|
||||
reserve="false" forceOverride="false" inVisible="false" validator="positiveNumber"
|
||||
trimSpace="true" isPrecision="true"/>
|
||||
<text id="item.suggest" title="毛重*kg"
|
||||
<text id="item.suggest" title="单个毛重*kg"
|
||||
row="2" col="4" defaultValue="0" readOnly="false" required="false"
|
||||
reserve="false" forceOverride="false" inVisible="false" validator="positiveNumber"
|
||||
trimSpace="true" isPrecision="true"/>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
</inputUIs>
|
||||
</search>
|
||||
<datasource type="hql"><![CDATA[ select
|
||||
item.id,
|
||||
|
||||
item.code,
|
||||
item.name,
|
||||
|
|
@ -40,11 +39,9 @@
|
|||
where 1=1 and item.code='0'
|
||||
]]></datasource>
|
||||
<columns>
|
||||
<column id="item.id" title="序号" width="160" visible="true"
|
||||
horizonAlign="center" />
|
||||
<column id="item.code" title="料号" width="160" visible="true"
|
||||
horizonAlign="center" />
|
||||
<column id="item.code" title="描述" width="160" visible="true"
|
||||
<column id="item.name" title="描述" width="160" visible="true"
|
||||
horizonAlign="center" />
|
||||
<column id="item.CAname" title="包装数量" visible="true"
|
||||
horizonAlign="center" />
|
||||
|
|
@ -60,7 +57,8 @@
|
|||
horizonAlign="center" />
|
||||
<column id="item.unit" title="单位" visible="true" width="40"
|
||||
horizonAlign="center" />
|
||||
|
||||
<column id="item.zonce" title="默认库区名称" visible="true" width="40"
|
||||
horizonAlign="center" />
|
||||
</columns>
|
||||
<buttons>
|
||||
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ order by wa.name asc,wa.id asc
|
|||
editEnabled="false" />
|
||||
</forwards>
|
||||
</commit>
|
||||
<popup id="modifyset" title="配置LOC" enableType="multi"
|
||||
<popup id="modifyset" title="限制的LOC" enableType="multi"
|
||||
invisible="false" containId="true" pageId="modifyWarehouseAreaPage">
|
||||
</popup>
|
||||
</buttons>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,55 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pages>
|
||||
<maintainPage id="maintainZonePlantLocationPage" title="添加LOC"
|
||||
onClose="refreshParent" width="450" height="500" autoQuery="true">
|
||||
<search>
|
||||
<inputUIs>
|
||||
<list id="btc.plantCode" title="工厂" row="1" col="1" span="1"
|
||||
width="120" readOnly="false" required="false" reserve="false"
|
||||
forceOverride="true">
|
||||
<hql><![CDATA[select
|
||||
plantInfo.code,
|
||||
plantInfo.code
|
||||
from PlantInfo plantInfo
|
||||
where 1=1 order by plantInfo.name asc ]]></hql>
|
||||
</list>
|
||||
<text id="pl.code" title="LOC" row="1" col="2"
|
||||
readOnly="false" required="false" reserve="false" forceOverride="false"
|
||||
inVisible="false" trimSpace="false" />
|
||||
|
||||
</inputUIs>
|
||||
</search>
|
||||
<datasource><![CDATA[ SELECT
|
||||
pl.id,
|
||||
pl.plantInfo.code,
|
||||
pl.code
|
||||
FROM PlantLocation pl
|
||||
WHERE 1=1 and pl.id not in(select zp.pLocation.id from ZonePlant zp where zp.area.id={wa.id})
|
||||
/~pl.code: and pl.code like {pl.code} ~/
|
||||
/~btc.plantCode: and pl.plantInfo.code = {btc.plantCode} ~/
|
||||
|
||||
]]></datasource>
|
||||
<columns>
|
||||
<column id="pl.id" title="pl.id" visible="false" />
|
||||
<column id="pl.plantInfo.code" title="工厂" visible="true" horizonAlign="center" />
|
||||
<column id="pl.code" title="LOC" visible="true" horizonAlign="center" />
|
||||
</columns>
|
||||
<buttons>
|
||||
<commit id="save" title="save" enableType="none" invisible="false">
|
||||
<mappings>
|
||||
<mapping id="ids" className="list" />
|
||||
<mapping id="wa.id" className="long" />
|
||||
</mappings>
|
||||
<actions>
|
||||
<action managerName="warehouseAreaManager" methodName="storeZonePlant"
|
||||
parameter="wa.id,ids" />
|
||||
</actions>
|
||||
<forwards>
|
||||
<forward name="refreshParent" newEnabled="true"
|
||||
editEnabled="true" />
|
||||
<forward name="resetWindow" newEnabled="true" editEnabled="false" />
|
||||
</forwards>
|
||||
</commit>
|
||||
</buttons>
|
||||
</maintainPage>
|
||||
</pages>
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
</inputUIs>
|
||||
|
||||
</modify>
|
||||
<detail autoQuery="false">
|
||||
<detail autoQuery="true">
|
||||
<datasource><![CDATA[ SELECT
|
||||
zp.id,
|
||||
zp.pLocation.plantInfo.code,
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
invisible="false" containId="false" pageId="modifyZonePlantPage">
|
||||
</popup> -->
|
||||
<popup id="newDetail1" title="添加" enableType="none"
|
||||
invisible="false" containId="false" pageId="modifyZonePlantPage">
|
||||
invisible="false" containId="false" pageId="maintainZonePlantLocationPage">
|
||||
</popup>
|
||||
<commit id="deleteDetail" title="移除" enableType="none"
|
||||
invisible="false" >
|
||||
|
|
|
|||
|
|
@ -9,13 +9,13 @@
|
|||
</inputUIs>
|
||||
|
||||
</modify>
|
||||
<detail autoQuery="false">
|
||||
<detail autoQuery="true">
|
||||
<datasource><![CDATA[ SELECT
|
||||
pl.id,
|
||||
pl.plantInfo.code,
|
||||
pl.code
|
||||
FROM PlantLocation pl
|
||||
WHERE 1=1
|
||||
WHERE 1=1 and pl.id not in(select zp.pLocation.id from ZonePlant zp where zp.area.id={wa.id})
|
||||
]]></datasource>
|
||||
<columns>
|
||||
<column id="pl.id" title="pl.id" visible="false" />
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@
|
|||
width="100" readOnly="false" required="false" reserve="false"
|
||||
forceOverride="true" inVisible="false" trimSpace="true"
|
||||
isPrecision="true" />
|
||||
<text id="w38" title="2#3研发人工区" defaultValue="0" row="21" span="2" col="1"
|
||||
<text id="w38" title="2#2研发人工区" defaultValue="0" row="21" span="2" col="1"
|
||||
width="100" readOnly="false" required="false" reserve="false"
|
||||
forceOverride="true" inVisible="false" trimSpace="true"
|
||||
isPrecision="true" />
|
||||
|
|
|
|||
|
|
@ -348,6 +348,9 @@
|
|||
<forward name="refreshWindow" newEnabled="true" editEnabled="true" />
|
||||
</forwards>
|
||||
</commit>
|
||||
<popup id="callLOCPageGroup" title="呼叫组任务" enableType="none" invisible="false"
|
||||
containId="false" pageId="editCallLOCGroupPage">
|
||||
</popup>
|
||||
<!-- <commit id="editAgvTaskSaleTime" title="生成热度移位任务"
|
||||
enableType="multi" invisible="false" >
|
||||
<mappings>
|
||||
|
|
|
|||
|
|
@ -139,11 +139,9 @@
|
|||
parameter="map,parentIds" />
|
||||
</actions>
|
||||
<forwards>
|
||||
<forward name="refreshWindow" newEnabled="true"
|
||||
editEnabled="true" />
|
||||
<forward name="refreshWindow" newEnabled="true" editEnabled="true" />
|
||||
<forward name="closeWindow" newEnabled="true" editEnabled="true" />
|
||||
<forward name="refreshParent" newEnabled="true"
|
||||
editEnabled="true" />
|
||||
<forward name="refreshParent" newEnabled="true" editEnabled="true" />
|
||||
</forwards>
|
||||
</commit>
|
||||
</buttons>
|
||||
|
|
|
|||
|
|
@ -51,10 +51,17 @@
|
|||
<hql><![CDATA[ select pl.code,
|
||||
pl.code
|
||||
from PlantInfo pl where 1=1 and pl.disabled=false order by pl.code]]></hql>
|
||||
</list>
|
||||
</list>
|
||||
<text id="pickTicket.executePlanNo" title="机台号" row="6" col="2"
|
||||
readOnly="false" required="false" reserve="false" forceOverride="false"
|
||||
inVisible="false" trimSpace="false" />
|
||||
<text id="pickTicket.logisticsCompany" title="工作中心" row="7" col="1"
|
||||
readOnly="false" required="false" reserve="false" forceOverride="false"
|
||||
inVisible="false" trimSpace="false" />
|
||||
<text id="pickTicket.deliveryMode" title="receiver" row="7" col="1"
|
||||
readOnly="false" required="false" reserve="false" forceOverride="false"
|
||||
inVisible="false" trimSpace="false" />
|
||||
|
||||
<checkbox id="ordersAll" title="ordersAll" row="8" col="1" defaultValue="false"
|
||||
span="1" readOnly="false" required="false" reserve="false" forceOverride="true" inVisible="false" />
|
||||
</inputUIs>
|
||||
|
|
@ -74,14 +81,15 @@
|
|||
cast (pickTicket.pickedQuantity as string),
|
||||
pickTicket.shippedQuantity,
|
||||
pickTicket.relatedBill3,
|
||||
|
||||
pickTicket.workerName1,
|
||||
pickTicket.executePlanNo,
|
||||
pickTicket.deliveryMode,
|
||||
pickTicket.printCount,
|
||||
pickTicket.priority,
|
||||
pickTicket.updateTime,
|
||||
pickTicket.updateTime,
|
||||
pickTicket.relatedBill1,
|
||||
pickTicket.relatedBill2,
|
||||
pickTicket.relatedBill2,
|
||||
|
||||
pickTicket.shipDateStart,
|
||||
pickTicket.shipDateStart,
|
||||
|
|
@ -99,7 +107,9 @@
|
|||
/~pickTicket.logisticsCompany: AND (pickTicket.logisticsCompany) LIKE ({pickTicket.logisticsCompany}) ~/
|
||||
/~waveCode: AND (pickTicket.waveDoc.code) like ({waveCode}) ~/
|
||||
/~seedWall: AND (pickTicket.executePlanNo) like ({seedWall}) ~/
|
||||
/~pickTicket.deliveryMode: AND (pickTicket.deliveryMode) like ({pickTicket.deliveryMode}) ~/
|
||||
/~pickTicket.workerName1: AND (pickTicket.workerName1) like ({pickTicket.workerName1}) ~/
|
||||
/~pickTicket.executePlanNo: AND pickTicket.executePlanNo like {pickTicket.executePlanNo} ~/
|
||||
/~status: AND pickTicket.status = {status} ~/
|
||||
/~billType: AND pickTicket.billType.name = {billType} ~/
|
||||
and (1=1
|
||||
|
|
@ -116,11 +126,11 @@
|
|||
</datasource>
|
||||
<columns>
|
||||
<column id="pickTicket.id" title="pickTicket" visible="false" />
|
||||
<column id="pickTicket.sourceType" width="80" title="出库类型"
|
||||
<column id="pickTicket.sourceType" width="50" title="出库类型"
|
||||
visible="true" horizonAlign="center" />
|
||||
<column id="pickTicket.code" width="100" title="工单号"
|
||||
visible="true" horizonAlign="center" />
|
||||
<column id="pickTicket.orderDate1" width="120" title="需求日期"
|
||||
<column id="pickTicket.orderDate1" width="100" title="需求日期"
|
||||
visible="true" horizonAlign="center" format="dateFormatter" />
|
||||
<!-- <column id="pickTicket.sourceId" width="140" title="任务号" -->
|
||||
<!-- visible="true" horizonAlign="center" /> -->
|
||||
|
|
@ -129,19 +139,19 @@
|
|||
<column id="pickTicket.status" width="70" title="pickTicket.status"
|
||||
visible="true" horizonAlign="center" dataType="enum" format="enumFormat"
|
||||
formatParam="PickTicketStatus" />
|
||||
<column id="pickTicket.packageQuantity" width="70"
|
||||
<column id="pickTicket.packageQuantity" width="60"
|
||||
title="需求行数" visible="true" horizonAlign="center"
|
||||
dataType="double" />
|
||||
<column id="pickTicket.BOLQuantity" width="70"
|
||||
<column id="pickTicket.BOLQuantity" width="60"
|
||||
title="完成行数" visible="true" horizonAlign="center"
|
||||
dataType="double" />
|
||||
<column id="pickTicket.orderQuantity" width="70"
|
||||
<column id="pickTicket.orderQuantity" width="60"
|
||||
title="pickTicket.orderQuantity" visible="true" horizonAlign="center"
|
||||
dataType="double" />
|
||||
<column id="pickTicket.allocatedQuantity" width="120"
|
||||
<column id="pickTicket.allocatedQuantity" width="60"
|
||||
title="pickTicket.allocatedQuantity" visible="true" horizonAlign="center"
|
||||
dataType="double" />
|
||||
<column id="pickTicket.pickedQuantity" width="120"
|
||||
<column id="pickTicket.pickedQuantity" width="60"
|
||||
title="pickTicket.pickedQuantity" visible="true" horizonAlign="center"
|
||||
dataType="double" />
|
||||
<column id="pickTicket.shippedQuantity" width="60"
|
||||
|
|
@ -151,6 +161,11 @@
|
|||
horizonAlign="center" />
|
||||
<column id="pickTicket.workerName1" title="工厂" width="60" visible="true"
|
||||
horizonAlign="center" />
|
||||
<column id="pickTicket.executePlanNo" title="机台号" width="60" visible="true"
|
||||
horizonAlign="center" />
|
||||
|
||||
<column id="pickTicket.deliveryMode" title="receiver" visible="true"
|
||||
horizonAlign="center" />
|
||||
<column id="pickTicket.printCount" title="SAP状态" width="160" visible="true"
|
||||
horizonAlign="center" format="enumFormat" formatParam="TaskStatus"/>
|
||||
<column id="pickTicket.priority" title="SAP扣料" width="160" visible="true"
|
||||
|
|
@ -168,6 +183,7 @@
|
|||
horizonAlign="center" />
|
||||
<column id="pickTicket.relatedBill2" title="关联号" visible="true"
|
||||
horizonAlign="center" />
|
||||
|
||||
<column id="pickTicket.shipDateStart1" title="SAP调整日期" visible="true"
|
||||
horizonAlign="center" format="dateFormatter" />
|
||||
<column id="pickTicket.shipDateStart2" title="SAP调整时间" visible="true"
|
||||
|
|
|
|||
|
|
@ -133,6 +133,9 @@
|
|||
<text id="pickTicket.logisticsCompany" title="工作中心" row="18" col="1"
|
||||
readOnly="false" required="false" reserve="false" forceOverride="false"
|
||||
inVisible="false" trimSpace="false" />
|
||||
<text id="pickTicketDetail.strBill12" title="机台号" row="18" col="2"
|
||||
readOnly="false" required="false" reserve="false" forceOverride="false"
|
||||
inVisible="false" trimSpace="false" />
|
||||
</inputUIs>
|
||||
</search>
|
||||
<datasource type="hql"><![CDATA[ select
|
||||
|
|
@ -174,6 +177,7 @@
|
|||
itemKey.lotInfo.propC9,
|
||||
pickTicket.equatedQuantity,
|
||||
t.barCode,
|
||||
pickTicketDetail.strBill12,
|
||||
t.inventoryStatus,
|
||||
t.strBill10,
|
||||
pickTicketDetail.lineNumber,
|
||||
|
|
@ -263,7 +267,7 @@
|
|||
/~pickTicket.equatedQuantity: AND (({pickTicket.equatedQuantity}=true and pickTicket.equatedQuantity>'A' ) or ({pickTicket.equatedQuantity}=false and pickTicket.equatedQuantity<'A' )) ~/
|
||||
/~billType.name: AND billType.id = {billType.name}~/
|
||||
/~dLzone.name: AND dLzone.name = {dLzone.name}~/
|
||||
|
||||
/~pickTicketDetail.strBill12: AND (pickTicketDetail.strBill12) LIKE ({pickTicketDetail.strBill12})~/
|
||||
/~agv.status: AND agv.status ={agv.status} ~/
|
||||
|
||||
/~billCode: AND (t.billCode) LIKE ({billCode})~/
|
||||
|
|
@ -318,6 +322,7 @@
|
|||
<column id="itemKey.lotInfo.propC9" title="工厂" visible="true" horizonAlign="center" />
|
||||
<column id="pickTicket.equatedQuantity" title="加急标记" visible="true" horizonAlign="center" />
|
||||
<column id="t.barCode" title="序列号" visible="true" horizonAlign="center" />
|
||||
<column id="pickTicketDetail.strBill12" title="机台号" visible="true" horizonAlign="center" />
|
||||
<column id="t.inventoryStatus" title="库存状态" visible="true" horizonAlign="center" />
|
||||
<column id="t.strBill10" title="退料标记" visible="true" horizonAlign="center" />
|
||||
<column id="pickTicketDetail.lineNumber" title="项号" visible="true" horizonAlign="center" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue