Commit 91b62603 sunke

工单出库重复挑料问题修复

增加一些搜索条件
1 个父辈 c9839427
...@@ -202,21 +202,6 @@ public class LiteOrderCache implements ITaskListener { ...@@ -202,21 +202,6 @@ public class LiteOrderCache implements ITaskListener {
liteOrderItem.setTotalOutNum(liteOrderItem.getTotalOutNum() + task.getNum()); liteOrderItem.setTotalOutNum(liteOrderItem.getTotalOutNum() + task.getNum());
liteOrderItem.setTotalOutReelCount(liteOrderItem.getTotalOutReelCount() + 1); liteOrderItem.setTotalOutReelCount(liteOrderItem.getTotalOutReelCount() + 1);
liteOrderItem = liteOrderItemManager.save(liteOrderItem); liteOrderItem = liteOrderItemManager.save(liteOrderItem);
// Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
// if (barcode != null) {
// Float totalNeedNum = liteOrderItem.getNeedNum() * order.getOrderTimes();
// int barcodeRemainNum = liteOrderItem.getOutNum() - totalNeedNum.intValue();
// if (barcodeRemainNum < 0) {
// barcodeRemainNum = 0;
// }
// barcode.setAmount(barcodeRemainNum);
// log.info("条码[" + task.getBarcode() + "]从工单出库,更改数量为:" + barcodeRemainNum);
// try {
// barcodeManager.save(barcode);
// } catch (ValidateException e) {
// e.printStackTrace();
// }
// }
} }
items.add(liteOrderItem); items.add(liteOrderItem);
} }
...@@ -434,6 +419,9 @@ public class LiteOrderCache implements ITaskListener { ...@@ -434,6 +419,9 @@ public class LiteOrderCache implements ITaskListener {
Map<String ,List<StoragePos>> needOutPosMap=new HashMap<>();//挑出的需要出库的料列表,key=pn,value=库位 Map<String ,List<StoragePos>> needOutPosMap=new HashMap<>();//挑出的需要出库的料列表,key=pn,value=库位
Map<String,Integer> jieliaoPosMap=new HashMap<>();//需要截料的物料列表,key=PosName,value=此工单使用数量 Map<String,Integer> jieliaoPosMap=new HashMap<>();//需要截料的物料列表,key=PosName,value=此工单使用数量
List<String> excludePosIds = Lists.newArrayList();
excludePosIds.addAll(taskService.excludePosIds());
//获取此工单出库的所有物料 //获取此工单出库的所有物料
for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) { for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) {
...@@ -452,7 +440,7 @@ public class LiteOrderCache implements ITaskListener { ...@@ -452,7 +440,7 @@ public class LiteOrderCache implements ITaskListener {
//查找PN的所有库存,PN=pn,未锁定,qty 从大到小,入库时间正序 //查找PN的所有库存,PN=pn,未锁定,qty 从大到小,入库时间正序
List<StoragePos> posList = storagePosManager.findOrderItemInStorage(availableStorageIds, pn, taskService.excludePosIds()); List<StoragePos> posList = storagePosManager.findOrderItemInStorage(availableStorageIds, pn, excludePosIds);
int storageNum=0; int storageNum=0;
int reelNum=posList.size(); int reelNum=posList.size();
...@@ -609,6 +597,10 @@ public class LiteOrderCache implements ITaskListener { ...@@ -609,6 +597,10 @@ public class LiteOrderCache implements ITaskListener {
} }
//可以出库 //可以出库
needOutPosMap.put(pn, itemPosList); needOutPosMap.put(pn, itemPosList);
//排除掉这些库位,以免重复挑取同一盘料
for (StoragePos storagePos : itemPosList) {
excludePosIds.add(storagePos.getId());
}
} }
log.info("开始执行工单[" + orderNo + "] "); log.info("开始执行工单[" + orderNo + "] ");
...@@ -629,8 +621,7 @@ public class LiteOrderCache implements ITaskListener { ...@@ -629,8 +621,7 @@ public class LiteOrderCache implements ITaskListener {
int itemReelCount=0; int itemReelCount=0;
int itemOutCount=0; int itemOutCount=0;
List<StoragePos> posList=needOutPosMap.get(orderItem.getMaterialNo()); List<StoragePos> posList=needOutPosMap.get(orderItem.getMaterialNo());
for (StoragePos pos : for (StoragePos pos : posList) {
posList) {
DataLog task = taskService.newTask(pos) ; DataLog task = taskService.newTask(pos) ;
task.setSourceId(cacheOrder.getId()); task.setSourceId(cacheOrder.getId());
...@@ -661,7 +652,11 @@ public class LiteOrderCache implements ITaskListener { ...@@ -661,7 +652,11 @@ public class LiteOrderCache implements ITaskListener {
task.setAddOutbound(true); task.setAddOutbound(true);
task.setLightColor(ORDER_COLOR.PINK.getRgb());//补料出库 颜色:PINK task.setLightColor(ORDER_COLOR.PINK.getRgb());//补料出库 颜色:PINK
} }
try{
taskService.addTaskToExecute(task); taskService.addTaskToExecute(task);
}catch (Exception e){
log.info("添加入库列表出错:"+e.getMessage());
}
log.info("工单[" + orderNo + "],任务数[" + taskReelCount + "]仓位【" + pos.getPosName() + "】RI=[" + pos.getBarcode().getBarcode() + "] PN=[" + orderItem.getMaterialNo() + "] Amount[" + pos.getBarcode().getAmount()+ log.info("工单[" + orderNo + "],任务数[" + taskReelCount + "]仓位【" + pos.getPosName() + "】RI=[" + pos.getBarcode().getBarcode() + "] PN=[" + orderItem.getMaterialNo() + "] Amount[" + pos.getBarcode().getAmount()+
"] 首盘["+task.isFirstReel()+"] 截料["+task.isNeedSplitting()+"]["+task.getNeedQty()+"] 补料出库["+task.isAddOutbound()+"]"); "] 首盘["+task.isFirstReel()+"] 截料["+task.isNeedSplitting()+"]["+task.getNeedQty()+"] 补料出库["+task.isAddOutbound()+"]");
......
...@@ -40,7 +40,7 @@ public class OrderDto implements Serializable { ...@@ -40,7 +40,7 @@ public class OrderDto implements Serializable {
@ApiModelProperty("排程数量") @ApiModelProperty("排程数量")
private Integer wemng; private Integer wemng;
@ApiModelProperty("开工时间") @ApiModelProperty("计划开始时间")
private Date startDate; private Date startDate;
@ApiModelProperty("完工时间") @ApiModelProperty("完工时间")
......
...@@ -4,6 +4,7 @@ package com.neotel.smfcore.core.order.rest.bean.query; ...@@ -4,6 +4,7 @@ package com.neotel.smfcore.core.order.rest.bean.query;
import com.neotel.smfcore.common.annotation.QueryCondition; import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.bean.BetweenData; import com.neotel.smfcore.common.bean.BetweenData;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -17,6 +18,13 @@ public class OrderQueryCondition { ...@@ -17,6 +18,13 @@ public class OrderQueryCondition {
@QueryCondition(type = QueryCondition.Type.BETWEEN) @QueryCondition(type = QueryCondition.Type.BETWEEN)
private BetweenData<Date> createDate; private BetweenData<Date> createDate;
@QueryCondition(type = QueryCondition.Type.BETWEEN)
@DateTimeFormat(pattern = "yyyy-MM-dd")
private BetweenData<Date> startDate;
@QueryCondition(type = QueryCondition.Type.IN, propName = "orderNo")
private List<String> orderNoList;
@QueryCondition(type = QueryCondition.Type.IN, propName = "source") @QueryCondition(type = QueryCondition.Type.IN, propName = "source")
private List<String> sourceList; private List<String> sourceList;
@QueryCondition(type = QueryCondition.Type.NIN, propName = "source") @QueryCondition(type = QueryCondition.Type.NIN, propName = "source")
......
...@@ -118,17 +118,19 @@ public class MaterialStockController { ...@@ -118,17 +118,19 @@ public class MaterialStockController {
String partNumberStr= MessageUtils.getText("smfcore.safetyInventory.partNumber",locale,"物料编号"); String partNumberStr= MessageUtils.getText("smfcore.safetyInventory.partNumber",locale,"物料编号");
String countStr= MessageUtils.getText("smfcore.safetyInventory.count",locale,"库存数量"); String countStr= MessageUtils.getText("smfcore.safetyInventory.count",locale,"库存数量");
String stockReelStr= MessageUtils.getText("smfcore.safetyInventory.stockReel",locale,"库存盘数"); String stockReelStr= MessageUtils.getText("smfcore.safetyInventory.stockReel",locale,"库存盘数");
String lockReelStr= MessageUtils.getText("smfcore.safetyInventory.supplementReel",locale,"补充盘数"); String supplementReelStr= MessageUtils.getText("smfcore.safetyInventory.supplementReel",locale,"补充盘数");
String storageNameStr= MessageUtils.getText("smfcore.safetyInventory.amount",locale,"最小包装"); String minPackageStr= MessageUtils.getText("smfcore.safetyInventory.amount",locale,"最小包装");
String totalAddStr= MessageUtils.getText("smfcore.safetyInventory.amount",locale,"补充总量");
List<Map<String, Object>> maps = new ArrayList<>(); List<Map<String, Object>> maps = new ArrayList<>();
for (SafetyInventoryDto item : results) { for (SafetyInventoryDto item : results) {
Map<String, Object> map = new LinkedHashMap<>(); Map<String, Object> map = new LinkedHashMap<>();
map.put(partNumberStr, item.getPartNumber()); map.put(partNumberStr, item.getPartNumber());
map.put(countStr, item.getStockCount()); map.put(countStr, item.getStockCount());
map.put(lockReelStr, item.getLockReel()); map.put(stockReelStr, item.getStockReel());
map.put(stockReelStr, item.getSupplementReel()); map.put(supplementReelStr, item.getSupplementReel());
map.put(storageNameStr, item.getAmount()); map.put(minPackageStr, item.getAmount());
map.put(totalAddStr, item.getSupplementReel() * item.getAmount());
maps.add(map); maps.add(map);
} }
FileUtil.downloadExcel(maps, response); FileUtil.downloadExcel(maps, response);
...@@ -184,6 +186,7 @@ public class MaterialStockController { ...@@ -184,6 +186,7 @@ public class MaterialStockController {
suppleReel=com.getMaxStoreNum(); suppleReel=com.getMaxStoreNum();
} }
dto.setSupplementReel(suppleReel); dto.setSupplementReel(suppleReel);
dto.setSupplementCount(suppleReel * dto.getAmount());
} }
if (needSupplement) { if (needSupplement) {
if (dto.getSupplementReel() > 0) { if (dto.getSupplementReel() > 0) {
......
...@@ -303,12 +303,8 @@ public class StoragePosController { ...@@ -303,12 +303,8 @@ public class StoragePosController {
} else if (criteria.getMaxAmount() != null) { } else if (criteria.getMaxAmount() != null) {
baseCriteria.and("barcode.amount").lte(criteria.getMaxAmount()); baseCriteria.and("barcode.amount").lte(criteria.getMaxAmount());
} }
if (criteria.getMinDistance() != null && criteria.getMaxDistance() != null) { if (criteria.getDistance() != null) {
baseCriteria.and("barcode.distance").gte(criteria.getMinDistance()).lte(criteria.getMaxDistance()); baseCriteria.and("barcode.distance").is(criteria.getDistance());
} else if (criteria.getMinDistance() != null) {
baseCriteria.and("barcode.distance").gte(criteria.getMinDistance());
} else if (criteria.getMaxDistance() != null) {
baseCriteria.and("barcode.distance").lte(criteria.getMaxDistance());
} }
// baseCriteria.and("barcode.lockMsl").ne(true);//湿敏超期物料所在仓位锁定, 不允许备料 // baseCriteria.and("barcode.lockMsl").ne(true);//湿敏超期物料所在仓位锁定, 不允许备料
......
...@@ -48,4 +48,7 @@ public class SafetyInventoryDto implements Serializable { ...@@ -48,4 +48,7 @@ public class SafetyInventoryDto implements Serializable {
@ApiModelProperty("安全库存") @ApiModelProperty("安全库存")
private int safetyStoreNum=0; private int safetyStoreNum=0;
@ApiModelProperty("补充总量")
private int supplementCount=0;
} }
...@@ -14,7 +14,7 @@ import java.util.List; ...@@ -14,7 +14,7 @@ import java.util.List;
@Data @Data
public class StoragePosFindCriteria { public class StoragePosFindCriteria {
@QueryCondition(blurry = "barcode.partNumber,barcode,posName,barcode.provider,barcode.batch") @QueryCondition(blurry = "barcode.partNumber,barcode.barcode,posName,barcode.provider,barcode.batch")
private String blurry; private String blurry;
@QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "barcode.putInDate") @QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "barcode.putInDate")
...@@ -91,11 +91,9 @@ public class StoragePosFindCriteria { ...@@ -91,11 +91,9 @@ public class StoragePosFindCriteria {
@ApiModelProperty("最大数量") @ApiModelProperty("最大数量")
private Integer maxAmount; private Integer maxAmount;
@ApiModelProperty("最小间距") @ApiModelProperty("间距")
private Integer minDistance; private Integer distance;
@ApiModelProperty("最大间距")
private Integer maxDistance;
public int getComponentType(){ public int getComponentType(){
int componentType = getType(); int componentType = getType();
if (componentType != -1) { if (componentType != -1) {
......
...@@ -105,7 +105,8 @@ public class HikApi { ...@@ -105,7 +105,8 @@ public class HikApi {
if (responseInfo == null || responseInfo.getCode().equals(-1)) { if (responseInfo == null || responseInfo.getCode().equals(-1)) {
log.info(apiName+"未收到反馈"); log.info(apiName+"未收到反馈");
// needResend=true; // needResend=true;
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT) || (responseInfo.getCode()!=0)) { }
else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT) || (responseInfo.getCode()!=0)) {
// needResend=true; // needResend=true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",message="+responseInfo.getMessage()+"," + JsonUtil.toJsonStr(responseInfo)); log.info(apiName+"返回code=" + responseInfo.getCode() + ",message="+responseInfo.getMessage()+"," + JsonUtil.toJsonStr(responseInfo));
ApiResult apiResult=new ApiResult(responseInfo.getCode(),responseInfo.getMessage(),new ArrayList<>()); ApiResult apiResult=new ApiResult(responseInfo.getCode(),responseInfo.getMessage(),new ArrayList<>());
...@@ -248,7 +249,7 @@ public class HikApi { ...@@ -248,7 +249,7 @@ public class HikApi {
Map<String, Object> dataMap = new HashMap<String, Object>(); Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("trayId", trayId);//料盘ID dataMap.put("trayId", trayId);//料盘ID
dataMap.put("flag", "SMF");//SMF 亮灯货架 dataMap.put("flag", "2");//SMF 亮灯货架
// String data = JsonUtil.toJsonStr(dataMap); // String data = JsonUtil.toJsonStr(dataMap);
// data String 41 是 料盘ID // data String 41 是 料盘ID
...@@ -437,7 +438,7 @@ public class HikApi { ...@@ -437,7 +438,7 @@ public class HikApi {
// code Integer 结果码(33关闭) // code Integer 结果码(33关闭)
//工单已关闭 //工单已关闭
log.info(apiName+"返回code=" + responseInfo.getCode() + ",工单已关闭,无法出库" ); log.info(apiName+"返回code=" + responseInfo.getCode() + ",工单已关闭,无法出库" );
return new ApiResult(33,"工单已关闭,无法出库",new ArrayList<>()); return new ApiResult(33,"MES返回:工单已关闭,无法出库",new ArrayList<>());
} }
else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) { else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) {
log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo)); log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo));
...@@ -447,7 +448,7 @@ public class HikApi { ...@@ -447,7 +448,7 @@ public class HikApi {
log.info(apiName + "返回" + JsonUtil.toJsonStr(responseInfo)); log.info(apiName + "返回" + JsonUtil.toJsonStr(responseInfo));
String dataStr = responseInfo.getDataStr(); String dataStr = responseInfo.getDataStr();
List<HikOrderInfo> list = JsonUtil.toList(dataStr, HikOrderInfo .class); List<HikOrderInfo> list = JsonUtil.toList(dataStr, HikOrderInfo .class);
return new ApiResult(responseInfo.getCode(),responseInfo.getMessage(),new ArrayList<>()); return new ApiResult(responseInfo.getCode(),responseInfo.getMessage(),list);
} }
} catch (Exception e) { } catch (Exception e) {
...@@ -585,7 +586,7 @@ public class HikApi { ...@@ -585,7 +586,7 @@ public class HikApi {
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) { } else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) {
needResend = true; needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + "," + JsonUtil.toJsonStr(responseInfo)); log.info(apiName+"返回code=" + responseInfo.getCode() + "," + JsonUtil.toJsonStr(responseInfo));
return new ApiResult(responseInfo.getCode(), responseInfo.getMessage(), new ArrayList<>()); return new ApiResult(responseInfo.getCode(), responseInfo.getMessage(), "");
} else { } else {
log.info(apiName + "返回" + JsonUtil.toJsonStr(responseInfo)); log.info(apiName + "返回" + JsonUtil.toJsonStr(responseInfo));
String dataStr = responseInfo.getDataStr(); String dataStr = responseInfo.getDataStr();
......
package com.neotel.smfcore.hikvision.bean.result; package com.neotel.smfcore.hikvision.bean.result;
import com.neotel.smfcore.hikvision.util.HttpHelper;
import com.neotel.smfcore.hikvision.util.JsonUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -16,4 +18,9 @@ public class ApiResult { ...@@ -16,4 +18,9 @@ public class ApiResult {
private String msg=""; private String msg="";
private Object data=""; private Object data="";
public String getDataStr(){
return JsonUtil.toJsonStr(data);
}
} }
...@@ -3,6 +3,8 @@ package com.neotel.smfcore.hikvision.util; ...@@ -3,6 +3,8 @@ package com.neotel.smfcore.hikvision.util;
import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.neotel.smfcore.hikvision.bean.HikOrderInfo;
import com.neotel.smfcore.hikvision.bean.api.ResponseParam;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -86,58 +88,24 @@ public class JsonUtil { ...@@ -86,58 +88,24 @@ public class JsonUtil {
} }
public static void main(String args[]) throws Exception{ public static void main(String args[]) throws Exception{
String jsonStr = "[{\n" + String jsonStr = "{\"code\":\"000000\",\"data\":{\"reqCode\":\"2022062018550110000347\",\"code\":0,\"message\":\"success\",\"data\":[{\"jobNo\":\"1526710801_1\",\"station\":\"1_50004_L_NPM-3\",\"baseCode\":\"8001\",\"lgort\":\"M9142\",\"workLine\":\"S111\",\"startDate\":\"2022-06-21 17:57:24\",\"endDate\":\"2022-06-21 19:21:00\",\"materialNo\":\"100300266\",\"qty\":76,\"stationCount\":1,\"overFlag\":0,\"prepareIncrement\":0,\"wemng\":50,\"docType\":1,\"replenishmentNo\":null},{\"jobNo\":\"1526710801_1\",\"station\":\"1_30009_R_NPM-2\",\"baseCode\":\"8001\",\"lgort\":\"M9142\",\"workLine\":\"S111\",\"startDate\":\"2022-06-21 17:57:24\",\"endDate\":\"2022-06-21 19:21:00\",\"materialNo\":\"100300266\",\"qty\":76,\"stationCount\":1,\"overFlag\":0,\"prepareIncrement\":0,\"wemng\":50,\"docType\":1,\"replenishmentNo\":null}]},\"message\":null}";
" \"action\": \"补料\",\n" +
" \"hSerial\": \"82\",\n" + String dataStr = "";
" \"so\": \"879235\",\n" + //转成map,只取里面的data
"\"refno\": \"F001_879235N_1\",\n" + ResponseParam responseInfo = null;
"\"partNum\": \"7H.47134.1F1\",\n" + Map<String, Object> resultMap = JsonUtil.toMap(jsonStr);
" \"slot\": \"1-11\",\n" + if (resultMap != null && resultMap.containsKey("data")) {
"\"qty\": \"2006\",\n" + dataStr = JsonUtil.toJsonStr(resultMap.get("data"));
"\"facility\": \"SU\",\n" + responseInfo = JsonUtil.toObj(dataStr, ResponseParam.class);
"\"sdte\": \"20191118\",\n" + }else{
"\"stme\": \"85957\",\n" + responseInfo = JsonUtil.toObj(jsonStr,ResponseParam.class);
"\"reelcut\": \"N\",\n" +
"\"mdte\": \"20191115\",\n" +
"\"mtme\": \"172238\"\n" +
"},\n{\n" +
" \"action\": \"补料\",\n" +
" \"hSerial\": \"82\",\n" +
" \"so\": \"879235\",\n" +
"\"refno\": \"F001_879235N_1\",\n" +
"\"partNum\": \"7H.47134.1F1\",\n" +
" \"slot\": \"1-11\",\n" +
"\"qty\": \"2006\",\n" +
"\"facility\": \"SU\",\n" +
"\"sdte\": \"20191118\",\n" +
"\"stme\": \"85957\",\n" +
"\"reelcut\": \"N\",\n" +
"\"mdte\": \"20191115\",\n" +
"\"mtme\": \"172238\"\n" +
"}\n]";
// List<RequestOutItemBean> items = JsonUtil.toList(jsonStr, RequestOutItemBean.class);
// for (RequestOutItemBean item : items) {
// System.out.println(item);
// }
// System.out.println(DateUtil.toDateString(new Date(),"yyyyMMddHHmmssS"));
// System.out.println(DateUtil.toDateString(new Date(),"yyyyMMddHHmmssS"));
// System.out.println(DateUtil.toDateString(new Date(),"yyyyMMddHHmmssS"));
// System.out.println(DateUtil.toDateString(new Date(),"yyyyMMddHHmmssS"));
//
// System.out.println(System.nanoTime());
// System.out.println(System.nanoTime());
// System.out.println(System.currentTimeMillis());
// System.out.println(System.currentTimeMillis());
jsonStr = "{\"state\":\"0\",\"msg\":\"鏂欏嵎浣嶆暟涓嶅尮閰??\",\"info\":{\"so\":\"\",\"facility\":\"12334\",\"company\":\"\",\"qty\":\"\",\"soseq\":\"\"}}";
jsonStr = "{\"data\":[{\"Serial\":\"58890\",\"VehicleID\":\"D15\",\"Status\":\"\"},{\"Serial\":\"58890\",\"VehicleID\":\"D44\",\"Status\":\"\"},{\"Serial\":\"58890\",\"VehicleID\":\"D83\",\"Status\":\"\"},{\"Serial\":\"58890\",\"VehicleID\":\"D90\",\"Status\":\"\"},{\"Serial\":\"58890\",\"VehicleID\":\"D98\",\"Status\":\"\"}]}";
Map<String, Object> map = JsonUtil.toMap(jsonStr);
Object data = map.get("data");
if(data != null){
List<Object> dataList = (List)data;
for (Object info : dataList) {
Map<String,String> infoMap = (Map)info;
System.out.println(infoMap.get("Serial"));
} }
//responseInfo.getData()
List<HikOrderInfo> list = JsonUtil.toList(responseInfo.getDataStr(), HikOrderInfo .class);
for (HikOrderInfo info : list) {
System.out.println(info.getMaterialNo());
} }
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!