Commit 46b5f73a LN

转储出库缺料可确认后出库,任务结束关闭转储出库单。

1 个父辈 12a045b9
......@@ -7,6 +7,7 @@ import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.outList.service.po.OutList;
import com.neotel.smfcore.core.outList.service.po.OutListItem;
......@@ -31,8 +32,8 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import sun.java2d.pipe.OutlineTextRenderer;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
......@@ -197,10 +198,17 @@ public class OutListController {
@ApiOperation("出库操作")
@PostMapping(value = "/out")
@PreAuthorize("@el.check('outList')")
public ResultBean checkOut(@RequestBody String name) {
// String name = mapValues.get("name");
public ResultBean checkOut(@RequestBody Map<String,Object> mapValues, HttpServletRequest request) {
String name = mapValues.get("name").toString();
if (name == null) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"name"});
}
boolean isShortageOut=false;
if(mapValues.containsKey("shortageOut")) {
String shortageOut = mapValues.get("shortageOut").toString();
if (ObjectUtil.isNotEmpty(shortageOut) && shortageOut.toString().equals("true")) {
isShortageOut = true;
}
}
OutList outList = outListCache.getOutList(name);
if (outList == null) {
......@@ -209,11 +217,15 @@ public class OutListController {
if (outList == null) {
throw new ValidateException("smfcore.valueNotFind", "未找到{0}[{1}]", new String[]{"name", name});
}
String result = outListCache.checkOut(SecurityUtils.getCurrentUsername(), outList.getName());
String result = outListCache.checkOut(SecurityUtils.getCurrentUsername(), outList.getName(), isShortageOut);
if (ObjectUtil.isEmpty(result)) {
return ResultBean.newOkResult(result);
} else if (result.equals("smfcore.outList.out.short")) {
return ResultBean.newErrorResult(99, result, result, new String[]{name});
} else {
return ResultBean.newErrorResult(-1, result, result);
String msg= MessageUtils.getText(result,request.getLocale(),result );
return ResultBean.newErrorResult(-1, result, msg);
}
}
}
......@@ -85,7 +85,10 @@ public class OutList extends BasePo implements Serializable {
* 出库单详情
*/
private List<OutListItem> outListItems;
/**
* 出库单是否缺料发料
*/
private Boolean shortageOut;
/**
* 是否是未执行过的工单
*/
......@@ -114,6 +117,7 @@ public class OutList extends BasePo implements Serializable {
if (isExecuting()) {
setClosed(true);
setStatus(LITEORDER_STATUS.CLOSED);
}
}
}
......@@ -129,7 +129,6 @@ public class OutListCache implements ITaskListener {
outList.setStatus(LITEORDER_STATUS.CLOSED);
outList.setClosed(closed);
log.info("转储出库单[" + name + "]的任务已全部完成,改为关闭状态" );
}
}
} else {
......@@ -195,11 +194,11 @@ public class OutListCache implements ITaskListener {
outList.setClosed(false);
outListManager.save(outList);
outListMap.put(outList.getName(), outList);
throw new ValidateException("smfcore.outList.out.short", "出库单{0}缺料", new String[]{outList.getName()});
return "smfcore.outList.out.short";
// throw new ValidateException("smfcore.outList.out.short", "出库单{0}缺料", new String[]{outList.getName()});
}
public synchronized String checkOut(String userName, String name) {
public synchronized String checkOut(String userName, String name,boolean isShortageOut) {
OutList outList = getOutList(name);
if (outList == null) {
outListManager.findByName(name);
......@@ -225,6 +224,7 @@ public class OutListCache implements ITaskListener {
//出库规则:先进先出,只亮一种灯
log.info("开始为转储出库单[" + name + "]挑选出库物料 ");
boolean shortage=false;
List<String> availableStorageIds = dataCache.getAvailableStorageIds();
Map<String, List<StoragePos>> needOutPosMap = new HashMap<>();//挑出的需要出库的料列表,key=pn,value=库位
......@@ -251,15 +251,25 @@ public class OutListCache implements ITaskListener {
Component component = componentManager.findOneByPN(pn);
if (component == null) {
log.info("转储出库单[" + name + "] 物料号[" + pn + "] ,需求数量[" + needNum + "], 未找到元器件信息, 缺料 ");
return materialShortPro(userName, outList);
if(isShortageOut){
shortage=true;
log.info("转储出库单[" + name + "]缺料出库: 物料号[" + pn + "] ,需求数量[" + needNum + "], 未找到元器件信息 ");
}else {
log.info("转储出库单[" + name + "] 物料号[" + pn + "] ,需求数量[" + needNum + "], 未找到元器件信息, 缺料 ");
return materialShortPro(userName, outList);
}
}
//判断库存数量是否小于需求数量,小于直接返回缺料
if (storageNum < needNum) {
//不满足实际需求,不发,报缺料
log.info("转储出库单[" + name + "] 物料号[" + pn + "] ,需求数量[" + needNum + "], 库存总数量[" + storageNum + "], 不满足实际需求,缺料 ");
return materialShortPro(userName, outList);
if(isShortageOut){
shortage=true;
log.info("转储出库单[" + name + "]缺料出库: 物料号[" + pn + "] ,需求数量[" + needNum + "], 库存总数量[" + storageNum + "], 不满足实际需求 ");
}else {
//不满足实际需求,不发,报缺料
log.info("转储出库单[" + name + "] 物料号[" + pn + "] ,需求数量[" + needNum + "], 库存总数量[" + storageNum + "], 不满足实际需求,缺料 ");
return materialShortPro(userName, outList);
}
}
//此PN未完成
......@@ -283,10 +293,14 @@ public class OutListCache implements ITaskListener {
//判断数量是否满足
if (targetNum > 0) {
int outNum = needNum - targetNum;
//不满足实际需求,不发,报缺料
log.info("转储出库单[" + name + "] 物料号[" + pn + "] ,需求数量[" + needNum + "], 库存可发数量[" + outNum + "], 不满足实际需求,缺料 ");
return materialShortPro(userName, outList);
if(isShortageOut){
shortage=true;
log.info("转储出库单[" + name + "]缺料出库: 物料号[" + pn + "] ,需求数量[" + needNum + "], 库存可发数量[" + outNum + "], 不满足实际需求 ");
}else {
//不满足实际需求,不发,报缺料
log.info("转储出库单[" + name + "] 物料号[" + pn + "] ,需求数量[" + needNum + "], 库存可发数量[" + outNum + "], 不满足实际需求,缺料 ");
return materialShortPro(userName, outList);
}
}
//可以出库
needOutPosMap.put(pn, itemPosList);
......@@ -347,6 +361,9 @@ public class OutListCache implements ITaskListener {
outList.setTaskReelCount(taskReelCount);
outList.setTotalFinishedReelCount(0);
outList.setTotalTaskReelCount(outList.getTotalTaskReelCount() + taskReelCount);
if(shortage){
outList.setShortageOut(true);
}
log.info("转储出库单[" + name + "]任务分配结束,改为执行状态,任务数[" + taskReelCount + "]");
//有需要出库的
if (taskReelCount <= 0) {
......
......@@ -105,7 +105,7 @@ public class HikApi {
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
log.info(apiName+"未收到反馈");
// needResend=true;
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT) || (responseInfo.getCode()!=0)) {
// needResend=true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",message="+responseInfo.getMessage()+"," + JsonUtil.toJsonStr(responseInfo));
ApiResult apiResult=new ApiResult(responseInfo.getCode(),responseInfo.getMessage(),new ArrayList<>());
......@@ -114,7 +114,7 @@ public class HikApi {
log.info(apiName + "返回" + JsonUtil.toJsonStr(responseInfo));
String dataStr = responseInfo.getDataStr();
List<TransferOrderInfo> list = JsonUtil.toList(dataStr, TransferOrderInfo .class);
ApiResult apiResult=new ApiResult(0,"",list);
ApiResult apiResult=new ApiResult(responseInfo.getCode(),responseInfo.getMessage(),list);
return apiResult;
}
// if(needResend){
......@@ -157,7 +157,7 @@ public class HikApi {
needResend = true;
log.info(apiName+"未收到反馈,需要重发");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo));
} else {
......@@ -215,7 +215,7 @@ public class HikApi {
needResend = true;
log.info(apiName+"未收到反馈,需要重发");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo));
} else {
......@@ -261,7 +261,7 @@ public class HikApi {
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
log.info(apiName+"未收到反馈");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) {
log.info(apiName+"返回code=" + responseInfo.getCode() + "," + JsonUtil.toJsonStr(responseInfo));
} else {
log.info(apiName+" 返回" + JsonUtil.toJsonStr(responseInfo));
......@@ -333,7 +333,7 @@ public class HikApi {
needResend = true;
log.info(apiName+"未收到反馈,需要重发");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo));
} else {
......@@ -396,7 +396,7 @@ public class HikApi {
needResend = true;
log.info(apiName+"未收到反馈,需要重发");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo));
} else {
......@@ -433,15 +433,16 @@ public class HikApi {
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
log.info(apiName+"未收到反馈");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo));
}
else if(responseInfo.getCode().equals(33)){
} else if(responseInfo.getCode().equals(33)){
// code Integer 结果码(33关闭)
//工单已关闭
log.info(apiName+"返回code=" + responseInfo.getCode() + ",工单已关闭,无法出库" );
return new ApiResult(33,"工单已关闭,无法出库",new ArrayList<>());
}
else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) {
log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo));
}
else {
log.info(apiName + "返回" + JsonUtil.toJsonStr(responseInfo));
String dataStr = responseInfo.getDataStr();
......@@ -493,7 +494,7 @@ public class HikApi {
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
log.info(apiName + "未收到反馈");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) {
log.info(apiName + "返回code=" + responseInfo.getCode() + "," + JsonUtil.toJsonStr(responseInfo));
}
return responseInfo;
......@@ -525,16 +526,16 @@ public class HikApi {
// needResend = true;
log.info(apiName+"未收到反馈");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + "," + JsonUtil.toJsonStr(responseInfo));
} else if(responseInfo.getCode().equals(33)){
}else if(responseInfo.getCode().equals(33)){
// code Integer 结果码(33关闭)
//工单已关闭
log.info(apiName+"返回code=" + responseInfo.getCode() + ",工单已关闭,无法出库" );
ApiResult apiResult=new ApiResult(33,"工单已关闭,无法出库",new ArrayList<>());
return apiResult;
} else {
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + "," + JsonUtil.toJsonStr(responseInfo));
} else {
log.info(apiName + "返回" + JsonUtil.toJsonStr(responseInfo));
String dataStr = responseInfo.getDataStr();
List<HikOrderInfo> list = JsonUtil.toList(dataStr, HikOrderInfo .class);
......@@ -581,7 +582,7 @@ public class HikApi {
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
// needResend = true;
log.info(apiName+"未收到反馈");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + "," + JsonUtil.toJsonStr(responseInfo));
return new ApiResult(responseInfo.getCode(), responseInfo.getMessage(), new ArrayList<>());
......@@ -629,7 +630,7 @@ public class HikApi {
needResend = true;
log.info(apiName+"未收到反馈 ,需要重发");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)|| (responseInfo.getCode()!=0)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo));
} else {
......
......@@ -60,18 +60,21 @@ public class HttpHelper {
Map<String, Object> resultMap = JsonUtil.toMap(result);
if (resultMap != null && resultMap.containsKey("data")) {
dataStr = JsonUtil.toJsonStr(resultMap.get("data"));
}
ResponseParam responseInfo = JsonUtil.toObj(dataStr, ResponseParam.class);
if (responseInfo == null) {
// log.error("[" + url + "][" + key + "][" + secret + "]发送[" + param.getReqCode() + "][" + param.getUserCode() + "][" + param.getData() + "],返回值:" + result);
log.error("[" + url + "][" + key + "][" + secret + "]发送 " + jsonStr + ",返回值:" + result);
responseInfo = new ResponseParam(param.getReqCode(), -1, "", "");
} else {
// log.info("[" + url + "][" + key + "][" + secret + "]发送[" + param.getReqCode() + "][" + param.getUserCode() + "][" + param.getData() + "],返回值:" + result);
ResponseParam responseInfo = JsonUtil.toObj(dataStr, ResponseParam.class);
if (responseInfo == null) {
log.error("[" + url + "][" + key + "][" + secret + "]发送 " + jsonStr + ",返回值:" + result);
responseInfo = new ResponseParam(param.getReqCode(), -1, "", "");
} else {
log.info("[" + url + "][" + key + "][" + secret + "]发送 " + jsonStr + ",返回值:" + result);
}
return responseInfo;
}else{
ResponseParam responseInfo = JsonUtil.toObj(result,ResponseParam.class);
log.info("[" + url + "][" + key + "][" + secret + "]发送 " + jsonStr + ",返回值:" + result);
return responseInfo;
}
return responseInfo;
}
catch (ApiException ex){
......
......@@ -253,7 +253,9 @@ smfcore.safetyInventory.amount=\u6700\u5C0F\u5305\u88C5
smfcore.component.storeError=\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u5E93\u5B58\uFF0C\u6700\u5C0F\u5E93\u5B58<=\u5B89\u5168\u5E93\u5B58<=\u6700\u5927\u5E93\u5B58
smfcore.user.group.error=\u7EC4[{0}]\u5DF2\u7ECF\u5206\u914D\u7ED9\u64CD\u4F5C\u5458[{1}]
smfcore.noValidPos=\u672A\u627E\u5230\u5355\u636E\u53F7
smfcore.order.out.short=\u5DE5\u5355\u7F3A\u6599
smfcore.outList.out.short=\u5B58\u50A8\u51FA\u5E93\u5355{0}\u7F3A\u6599
smfcore.outList.out.noTask=\u8F6C\u50A8\u51FA\u5E93\u5355\u65E0\u53EF\u6267\u884C\u7684\u4EFB\u52A1
#smfcore.order.out.short=\u5DE5\u5355\u51FA\u5E93\u5931\u8D25\uFF0C\u5DE5\u5355\u7F3A\u6599
#smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!