Commit 960715a3 LN

20031锡膏料仓Order页面功能

1 个父辈 63434ac1
......@@ -131,5 +131,32 @@ public class HttpHelper {
return params;
}
public static String posJsonParams(String url, Object params) throws ApiException {
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Content-Type", "application/json;charset=utf-8");
// 设置请求参数
if (params != null ) {
ObjectMapper mapper = new ObjectMapper();
try {
String requestBody = mapper.writeValueAsString(params);
httpPost.setEntity(new StringEntity(requestBody,CONTENT_CHARSET));
} catch (JsonProcessingException e) {
throw new ApiException("Request params to [" + url + "] Json failed:" + e.getMessage());
} catch (Exception e) {
throw new ApiException("Request params to [" + url + "] json exception:" + e.getMessage());
}
}
try{
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
String responseContent = EntityUtils.toString(entity, CONTENT_CHARSET);
response.close();
httpClient.close();
return responseContent;
}catch (Exception e){
throw new ApiException("Request to [" + url + "] failed:" + e.getMessage());
}
}
}
package com.neotel.smfcore.custom.micron20031;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.exception.ApiException;
import com.neotel.smfcore.common.utils.HttpHelper;
import com.neotel.smfcore.common.utils.JsonUtil;
......@@ -85,22 +86,53 @@ public class Micron20031Api {
* //Input: Micron Part Number, MaterialType
* //Output: Micron Part Number, Quantity, UnitOfMeasures, MaterialType, Message, Status
*/
// public static List<MatOrderBean> checkStockAvailable(List<String> pnList){
// String checkStockAvailableUrl = "";
// try {
// List<Map<String,String>> paramList = new ArrayList<>();
// for (String pn : pnList) {
// Map<String,String> dataMap = new HashMap<>();
// dataMap.put("MicronPN",pn);
// dataMap.put("MaterialType","SOLDER_PASTE");
// paramList.add(dataMap);
// }
// String resultStr = HttpHelper.posJsonParams(checkStockAvailableUrl, paramList);
// List<MatOrderBean> orderBeanList = JsonUtil.toList(resultStr,MatOrderBean.class);
// return orderBeanList;
// } catch (ApiException e) {
// log.error("CheckStockAvailable Error", e);
// }
// return new ArrayList<>();
// }
public static List<MatOrderBean> checkStockAvailable(List<String> pnList){
String checkStockAvailableUrl = "";
if(ObjectUtil.isEmpty(checkStockAvailableUrl)){
List<MatOrderBean> orderBeans=new ArrayList<>();
for (String pn :pnList){
MatOrderBean matOrderBean=new MatOrderBean(pn,"TRUE",10,"SOLDER_PASTE","","");
orderBeans.add(matOrderBean);
}
return orderBeans;
}
try {
List<Map<String,String>> paramList = new ArrayList<>();
for (String pn : pnList) {
Map<String,String> dataMap = new HashMap<>();
dataMap.put("MicronPN",pn);
dataMap.put("MaterialType","SOLDER_PASTE");
paramList.add(dataMap);
}
String resultStr = HttpHelper.posJsonParams(checkStockAvailableUrl, paramList);
List<MatOrderBean> orderBeanList = JsonUtil.toList(resultStr,MatOrderBean.class);
return orderBeanList;
} catch (ApiException e) {
log.error("CheckStockAvailable Error", e);
}
return new ArrayList<>();
}
public static MatOrderBean triggerMatReqOrder (String partNumber,Integer qty){
MatOrderBean orderBean=new MatOrderBean(partNumber,"TUBE",qty,"SOLDER_PASTE","","");
String triggerMatReqOrderUrl = "";
try {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("MicronPN",orderBean.getMicronPN());
paramMap.put("UnitOfMeasures","TRUE");
paramMap.put("Quantity",orderBean.getQuantity());
paramMap.put("MaterialType","SOLDER_PASTE");
String resultStr = HttpHelper.postJson(triggerMatReqOrderUrl, paramMap);
MatOrderBean orderBean1 = JsonUtil.toObj(resultStr,MatOrderBean.class);
return orderBean1;
} catch (ApiException e) {
log.error("TriggerMatReqOrder Error", e);
}
return null;
}
}
......@@ -22,8 +22,8 @@ import java.util.*;
@Slf4j
@RestController
@RequestMapping("/rest/micron")
public class MicronController {
@RequestMapping("/rest/micron/sp")
public class MicronSpController {
@Autowired
private IStoragePosManager storagePosManager;
......
package com.neotel.smfcore.custom.micron20031;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.bean.InventoryItem;
import com.neotel.smfcore.core.storage.rest.dto.InventoryItemDto;
import com.neotel.smfcore.core.storage.rest.mapstruct.InventoryItemMapper;
import com.neotel.smfcore.custom.micron20031.bean.MatOrderBean;
import com.neotel.smfcore.custom.micron20031.bean.OrderInfoDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
@RestController
@Api(tags = "20031:Order")
@RequestMapping("/rest/micron/sp/order")
public class MicronSpOrderController {
@Autowired
private DataCache dataCache;
@Autowired
private InventoryItemMapper inventoryItemMapper;
@ApiOperation("获取库存列表")
@RequestMapping(value = "/inventory")
public List<InventoryItemDto> inventory(Pageable pageable) {
List<InventoryItemDto> inventoryItemDtos = getInventory(pageable);
return inventoryItemDtos;
}
@ApiOperation("勾选PN后点击>获取列表")
@RequestMapping(value = "/stockAvailable")
public List<OrderInfoDto> checkStockAvailable(@RequestBody List<String> pnList) {
List<MatOrderBean> stockResults = Micron20031Api.checkStockAvailable(pnList);
List<OrderInfoDto> resultList = new ArrayList<>();
Map<String, InventoryItem> inventoryItemDtoMap = dataCache.getAllInventory(null, "");
for (MatOrderBean bean :
stockResults) {
OrderInfoDto orderInfoDto = new OrderInfoDto(bean.getMicronPN(), 0, bean.getQuantity(), bean.getUnitOfMeasures());
if (inventoryItemDtoMap.containsKey(bean.getMicronPN())) {
InventoryItem item = inventoryItemDtoMap.get(bean.getMicronPN());
orderInfoDto.setStockCount(item.getStockCount());
}
resultList.add(orderInfoDto);
}
return resultList;
}
@ApiOperation("修改PN数量后提交")
@RequestMapping(value = "/submitPn")
public ResultBean submitPn(String partNumber, Integer qty) {
MatOrderBean orderBean1 = Micron20031Api.triggerMatReqOrder(partNumber, qty);
if (ObjectUtil.isNotEmpty(orderBean1.getMessage())) {
return ResultBean.newErrorResult(1, orderBean1.getMessage(), orderBean1.getMessage());
} else {
return ResultBean.newOkResult(partNumber);
}
}
private List<InventoryItemDto> getInventory(Pageable pageable) {
Map<String, InventoryItem> inventoryItemMap = dataCache.getAllInventory(null, "");
List<InventoryItem> list = Lists.newArrayList(inventoryItemMap.values());
List<InventoryItemDto> dtoList = inventoryItemMapper.toDto(list);
List<InventoryItemDto> resultList = new ArrayList<>();
//过滤掉没有库存的
for (InventoryItemDto inventoryItemDto : dtoList)
if (pageable != null) {
Comparator<InventoryItemDto> comparator = Comparator.comparing(InventoryItemDto::getPartNumber);
Sort.Order lockReelOrder = pageable.getSort().getOrderFor("lockReel");
if (lockReelOrder != null) {
comparator = Comparator.comparing(InventoryItemDto::getStockReel, Comparator.nullsFirst(Integer::compareTo));
if (lockReelOrder.isDescending()) {
comparator = comparator.reversed();
}
}
{
if (inventoryItemDto.getStockReel() > 0) {
resultList.add(inventoryItemDto);
}
}
Sort.Order stockCountOrder = pageable.getSort().getOrderFor("stockCount");
if (stockCountOrder != null) {
comparator = Comparator.comparing(InventoryItemDto::getStockCount, Comparator.nullsFirst(Integer::compareTo));
if (stockCountOrder.isDescending()) {
comparator = comparator.reversed();
}
}
Sort.Order partNumberOrder = pageable.getSort().getOrderFor("partNumber");
if (partNumberOrder != null) {
comparator = Comparator.comparing(InventoryItemDto::getPartNumber, Comparator.nullsFirst(String::compareTo));
if (partNumberOrder.isDescending()) {
comparator = comparator.reversed();
}
}
resultList = resultList.stream().sorted(comparator).collect(Collectors.toList());
}
// System.out.println("================");
// for (InventoryItemDto dto : resultList) {
// System.out.println(dto.getPartNumber() + "---" + dto.getStockCount() + " --- " + dto.getStockReel());
// }
return resultList;
}
}
package com.neotel.smfcore.custom.micron20031.bean;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author sunke
* @date 2022/12/21 9:33 AM
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MatOrderBean {
@JsonProperty("MicronPN")
......@@ -19,4 +23,10 @@ public class MatOrderBean {
@JsonProperty("MaterialType")
private String materialType;
@JsonProperty("Message")
private String Message;
@JsonProperty("Status")
private String Status;
}
package com.neotel.smfcore.custom.micron20031.bean;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class OrderInfoDto implements Serializable {
@ApiModelProperty("料件编号")
private String partNumber;
@ApiModelProperty("库存数量")
private int stockCount = 0;
@JsonProperty("Quantity")
private Integer quantity;
@JsonProperty("UnitOfMeasures")
private String unitOfMeasures;
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!