Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 960715a3
由
LN
编写于
2023-01-04 13:15:00 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
20031锡膏料仓Order页面功能
1 个父辈
63434ac1
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
233 行增加
和
20 行删除
src/main/java/com/neotel/smfcore/common/utils/HttpHelper.java
src/main/java/com/neotel/smfcore/custom/micron20031/Micron20031Api.java
src/main/java/com/neotel/smfcore/custom/micron20031/MicronController.java → src/main/java/com/neotel/smfcore/custom/micron20031/MicronSpController.java
src/main/java/com/neotel/smfcore/custom/micron20031/MicronSpOrderController.java
src/main/java/com/neotel/smfcore/custom/micron20031/bean/MatOrderBean.java
src/main/java/com/neotel/smfcore/custom/micron20031/bean/OrderInfoDto.java
src/main/java/com/neotel/smfcore/common/utils/HttpHelper.java
查看文件 @
960715a
...
...
@@ -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
());
}
}
}
src/main/java/com/neotel/smfcore/custom/micron20031/Micron20031Api.java
查看文件 @
960715a
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
;
}
}
src/main/java/com/neotel/smfcore/custom/micron20031/MicronController.java
→
src/main/java/com/neotel/smfcore/custom/micron20031/Micron
Sp
Controller.java
查看文件 @
960715a
...
...
@@ -22,8 +22,8 @@ import java.util.*;
@Slf4j
@RestController
@RequestMapping
(
"/rest/micron"
)
public
class
MicronController
{
@RequestMapping
(
"/rest/micron
/sp
"
)
public
class
Micron
Sp
Controller
{
@Autowired
private
IStoragePosManager
storagePosManager
;
...
...
src/main/java/com/neotel/smfcore/custom/micron20031/MicronSpOrderController.java
0 → 100644
查看文件 @
960715a
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
;
}
}
src/main/java/com/neotel/smfcore/custom/micron20031/bean/MatOrderBean.java
查看文件 @
960715a
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
;
}
src/main/java/com/neotel/smfcore/custom/micron20031/bean/OrderInfoDto.java
0 → 100644
查看文件 @
960715a
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!
Cancel
请
注册
或
登录
后发表评论