Commit 2f4317f0 sunke

同一个工单有两个相同PN站位时出库通知只有一个站位的问题修正

转巴西出库
线边仓间入库
1 个父辈 c7cccdd3
......@@ -45,7 +45,7 @@ public class DataInitManager {
MainTimer mainTimer;
//@Value("${menu.show}")
private String[] menuShowList = new String[]{"productionLineReple","productionLineOut","interfaceException"};
private String[] menuShowList = new String[]{"mslOut"};
//@Value("${menu.hide}")
private String[] menuHideList = new String[]{};
......
......@@ -665,7 +665,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
if(ObjectUtil.isNotEmpty( task.getSourceId())&&ObjectUtil.isNotEmpty(task.getSourceName())&&task.isOrderTask()){
LiteOrder liteOrder=liteOrderCache.findOrderByNo(task.getSourceName());
LiteOrderItem item=liteOrder.getItemByPn(task.getPartNumber());
LiteOrderItem item=liteOrder.getItemById(task.getSubSourceId());
int interceptFlag=task.isNeedSplitting()?1:0;
int interceptQty=task.getNeedQty();
//工单出库出库完成,7.3排程发料过账接口
......
......@@ -53,7 +53,7 @@ public class IN_OUT_TYPE {
*/
public static int OUT_BETWEEN = 3;
/**
* 4,预留单出库(5转外协出库,6发运单出库,7成本中心领料)
* 4,预留单出库(5转外协出库,6发运单出库,7成本中心领料,8转巴西出库)
*/
public static int OUT_LIST = 4;
/**
......@@ -69,6 +69,10 @@ public class IN_OUT_TYPE {
*/
public static int OUT_CENTRAL = 7;
/**
* 8转巴西出库
*/
public static int OUT_BRAZIL = 8;
/**
* 10=工单出库
*/
public static int OUT_ORDER = 10;
......@@ -108,6 +112,8 @@ public class IN_OUT_TYPE {
detailTypeStr = "发运单出库";
}else if(detailType == 107){
detailTypeStr = "成本中心领料";
}else if(detailType == 108){
detailTypeStr = "转巴西出库";
}else if(detailType == 110){
detailTypeStr = "工单出库";
}else if(detailType == 111){
......
......@@ -218,8 +218,7 @@ public class SingleInController {
}
}
//判断料架是否有空位
for (UsageItem item :
storage.getUsageMap().values()) {
for (UsageItem item : storage.getUsageMap().values()) {
if (item.getH() == barcode.getHeight() && item.getW() == barcode.getPlateSize()) {
int emptyCount = item.getTotalCount() - item.getUsedCount();
if(emptyCount<=0){
......@@ -229,6 +228,12 @@ public class SingleInController {
}
}
//线边间转储入库和退料入库需要获取数量
boolean needGetQty = false;
//01 退料 02 线边仓间入库
String businessType = "";
String businessNo = "";
//存储入库需要先验证入库单
if(inType.equals(5)) {
if(ObjectUtil.isEmpty(docName)){
......@@ -239,17 +244,29 @@ public class SingleInController {
if (!resultBean.isOkResult()) {
return resultBean;
}
InList inList = inListCache.getInList(docName);
if(inList != null){
if(inList.getDocType() == 4){
//线边仓间入库
businessType = "01";
businessNo = docName;
}
}
}
if(inType.equals(4)){
businessType = "01";
}
//判断如果是退料入库,需要获取数量
if (inType.equals(4)) {
int num = HikApi.returnMaterialApi(SecurityUtils.getCurrentUsername(), barcode.getBarcode());
if (!businessType.isEmpty()) {
int num = HikApi.returnMaterialApi(SecurityUtils.getCurrentUsername(), barcode.getBarcode(),businessType,businessNo);
if (num > 0) {
barcode.setAmount(num);
barcodeManager.saveBarcode(barcode);
log.info("退料入库,二维码 " + barcode.getBarcode() + " 从接口获得新数量:" + num + ",并更新");
log.info("入库二维码 " + barcode.getBarcode() + " 从接口获得新数量:" + num + ",并更新");
} else {
throw new ValidateException("smfcore.returnMaterialApi.error", "退料入库:[" + barcode.getBarcode() + "]获取数量失败");
throw new ValidateException("smfcore.returnMaterialApi.error", "入库:[" + barcode.getBarcode() + "]获取数量失败");
}
} else {
//唯一码校验接口
......
......@@ -30,7 +30,7 @@ public class InList extends BasePo implements Serializable {
private int status= INLIST_STATUS.WAIT;
/**
* 单据类型(0物料凭证,1交货单,2预留单、3AGV任务单)
* 单据类型(0物料凭证,1交货单,2预留单、3AGV任务单 4线边仓间入库)
*/
private Integer docType=-1;
......
......@@ -127,9 +127,6 @@ public class InListCache {
}
InList inList = getInList(inListName);
if (inList == null) {
inList = listManager.findByName(inListName);
}
if (inList == null) {
return ResultBean.newOkResult("");
}
......
......@@ -221,14 +221,8 @@ public class LiteOrderCache implements ITaskListener {
order.setOrderItems(items);
if (!order.isClosed()) {
//工单未关闭的话,检查状态,全部都出完进行关闭
boolean closed = true;
for (LiteOrderItem liteOrderItem : order.getOrderItems()) {
if (!liteOrderItem.isOutFinished()) {
closed = false;
break;
}
}
if (closed) {
boolean allTaskFinished = order.isTaskReelOutEnd();
if (allTaskFinished) {
order.finishedTasks();
//工单出库完成,调用7.11订单发料完成通知接口
boolean result = HikApi.orderEndApi(order.getOperateUser(), order.getJobNo());
......@@ -505,6 +499,7 @@ public class LiteOrderCache implements ITaskListener {
if(component.getMinStoreNum()>0&& posList.size() <=component.getMinStoreNum()){
needJieliao=true;
}
log.info("物料["+pn+"]贵重["+isGuizhong+"]可用库存数量:" + posList.size() + " 截料设置数量:" + component.getMinStoreNum() + " 是否需要截图:" + needJieliao);
}
if(isGuizhong || needJieliao){
......@@ -521,7 +516,7 @@ public class LiteOrderCache implements ITaskListener {
//如果需要截料,找最小的一盘
if(minAmountReelPos != null){
int reelNeedNum = minAmountReelPos.getBarcode().getAmount() - excessNum;
log.info("需要对料盘["+minAmountReelPos.getBarcode().getBarcode()+"]进行截料,需求数量");
log.info("需要对料盘["+minAmountReelPos.getBarcode().getBarcode()+"]进行截料,需求数量:" + reelNeedNum);
jieliaoPosMap.put(minAmountReelPos.getPosName(),reelNeedNum);
}
}
......@@ -629,7 +624,8 @@ public class LiteOrderCache implements ITaskListener {
}
cacheOrder.setTaskReelCount(taskReelCount);
cacheOrder.setTotalFinishedReelCount(0);
cacheOrder.setFinishedReelCount(0);
//cacheOrder.setTotalFinishedReelCount(0);
cacheOrder.setTotalTaskReelCount(cacheOrder.getTotalTaskReelCount()+taskReelCount);
if(shortage) {
cacheOrder.setShortageOut(true);
......
......@@ -339,8 +339,7 @@ public class OrderController {
boolean findOrder = false;
//只返回当前有任务的工单
for (LiteOrder order :
orderList) {
for (LiteOrder order : orderList) {
List<DataLog> tasks = getOrderTaskByUser(user, order, true);
if (tasks.size() > 0) {
OrderDto dto = orderMapper.toDto(order);
......
......@@ -225,8 +225,6 @@ public class LiteOrder extends BasePo implements Serializable {
* 结束当前的任务
*/
public void finishedTasks() {
//TODO 判断是否处于缺料状态,是的话修改状态
if (shortageOut!=null&& getShortageOut()) {
boolean allOk = true;
......@@ -298,6 +296,13 @@ public class LiteOrder extends BasePo implements Serializable {
this.taskReelCount = taskReelCount;
}
public boolean isTaskReelOutEnd(){
if(taskReelCount > 0){
return finishedReelCount >= taskReelCount;
}
return false;
}
public void setTotalTaskReelCount(int totalReelCount){
if(totalReelCount<0){
totalReelCount=0;
......@@ -353,10 +358,9 @@ public class LiteOrder extends BasePo implements Serializable {
}
public LiteOrderItem getItemByPn(String partNumber) {
for (LiteOrderItem item :
orderItems) {
if(item.getMaterialNo().equals(partNumber)){
public LiteOrderItem getItemById(String itemId) {
for (LiteOrderItem item : orderItems) {
if(item.getId().equals(itemId)){
return item;
}
}
......
......@@ -72,6 +72,7 @@ public class OutList extends BasePo implements Serializable {
* 1.转外协出库
* 2.发运单出库
* 3.成本中心领料
* 4.转巴西出库
*/
private Integer docType = 0;
/**
......
......@@ -334,6 +334,9 @@ public class OutListCache implements ITaskListener {
}else if(docType == 3){
//转外协出库,发运单出库,成本中心领料:对应4,预留单出库
task.setOutType(IN_OUT_TYPE.OUT_CENTRAL);//成本中心领料
}else if(docType == 4){
//转外协出库,发运单出库,成本中心领料:对应4,预留单出库
task.setOutType(IN_OUT_TYPE.OUT_BRAZIL);//转巴西出库
}
task.setLightColor(ORDER_COLOR.FIREBRICK.getRgb());//普通转储出库单 颜色:FIREBRICK
......
......@@ -101,7 +101,7 @@ public class TaskController {
Query query = QueryHelp.getQuery(criteria);
if (unEnd) {
query.addCriteria(Criteria.where("status").nin(OP_STATUS.END.name(), OP_STATUS.FINISHED.name()));
query.addCriteria(Criteria.where("status").nin(OP_STATUS.CANCEL.name(), OP_STATUS.END.name(), OP_STATUS.FINISHED.name()));
}else if(finished){
query.addCriteria(Criteria.where("status").in(OP_STATUS.END.name(), OP_STATUS.FINISHED.name()));
}
......
......@@ -74,6 +74,8 @@ public class TaskDto implements Serializable {
@ApiModelProperty("详细出入库类型")
private int detailType;
@ApiModelProperty("详细出入库类型")
private String detailTypeStr;
/**
* 状态:OP_STATUS
*/
......
......@@ -348,7 +348,7 @@ public class DataLog extends BasePo implements Serializable {
public boolean isOutListTask(){
if(OP.CHECKOUT==type){
if(outType == IN_OUT_TYPE.OUT_BETWEEN || outType == IN_OUT_TYPE.OUT_LIST || outType == IN_OUT_TYPE.OUT_TRANSFER || outType == IN_OUT_TYPE.OUT_SENDER || outType == IN_OUT_TYPE.OUT_CENTRAL){
if(outType == IN_OUT_TYPE.OUT_BETWEEN || outType == IN_OUT_TYPE.OUT_LIST || outType == IN_OUT_TYPE.OUT_TRANSFER || outType == IN_OUT_TYPE.OUT_SENDER || outType == IN_OUT_TYPE.OUT_CENTRAL || outType == IN_OUT_TYPE.OUT_BRAZIL){
return true;
}
}
......
......@@ -73,7 +73,7 @@ public class HikApi {
* reqCode String 32 是 唯一请求号
* userCode String 32 是 操作人
* data docNo String 16 是 单据号
* docType Integer 是 单据类型(0物料凭证,1交货单,2预留单、3AGV任务单)
* docType Integer 是 单据类型(0物料凭证,1交货单,2预留单、3AGV任务单,4 线边仓间入库)
* 返回结果 code Integer 结果码
* message String 64 结果描述
* reqCode String 32 唯一请求号
......@@ -92,7 +92,7 @@ public class HikApi {
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("docNo", docNo);//单据号
dataMap.put("docType", docType);//单据类型(0物料凭证,1交货单,2预留单、3AGV任务单)
dataMap.put("docType", docType);//单据类型(0物料凭证,1交货单,2预留单、3AGV任务单,4 线边仓间入库)
// String data = JsonUtil.toJsonStr(dataMap);
......@@ -240,16 +240,21 @@ public class HikApi {
* @param trayId 料盘ID
* @return 根据退料唯一码获取退料数量
*/
public static int returnMaterialApi(String userName, String trayId){
public static int returnMaterialApi(String userName, String trayId, String businessType, String businessNo){
String apiName="Hik 退料唯一码数量获取接口 (returnMaterialApi): ";
String url = getUrl(config.addr_4_returnMaterialApi, "returnMaterialApi");
// data trayId String 41 是 料盘ID
// flag String 4 是 SMF 亮灯货架
// businessType String 4 是 01 退料 02 线边仓间入库
// businessNo String 41 否 业务单号 businessType 02时,为物料凭证
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("trayId", trayId);//料盘ID
dataMap.put("flag", "2");//SMF 亮灯货架
dataMap.put("businessType",businessType);
dataMap.put("businessNo",businessNo);
// String data = JsonUtil.toJsonStr(dataMap);
// data String 41 是 料盘ID
......
#配置数据源
spring:
data:
mongodb:
host: localhost # 主机地址
port: 27017 # 端口
database: hikvision # 数据库
# 登录相关配置
login:
# 登录缓存
......
......@@ -93,7 +93,7 @@ spring:
mongodb:
host: localhost # 主机地址
port: 27017 # 端口
database: hikvision # 数据库
database: hikvision20220801 # 数据库
messages:
encoding: utf-8
main:
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!