Commit 595d9c52 hc

fix:备品仓出入库修改

1 个父辈 37d6678e
......@@ -105,31 +105,73 @@ public class TaskService {
* 条码入库,加入要执行的任务
*/
public synchronized DataLog addPutInTaskToExecute(Storage storage, Barcode barcode, StoragePos storagePos, String boxLoc) throws ValidateException {
log.info("Entering addPutInTaskToExecute method");
DataLog task = new DataLog(storage, barcode, storagePos);
log.info("DataLog task created");
task.setType(OP.PUT_IN);
log.info("Task type set to PUT_IN");
task.setStatus(OP_STATUS.WAIT.name());
log.info("Task status set to WAIT");
task.setLoc(boxLoc);
log.info("Task location set to: " + boxLoc);
if (barcode != null) {
task.setWarehouseCode(barcode.getWarehouseCode());
log.info("Warehouse code set to: " + barcode.getWarehouseCode());
task.setDescribe(barcode.getDescribe());
log.info("Description set to: " + barcode.getDescribe());
task.setBatchInfo(barcode.getBatch());
log.info("Batch info set to: " + barcode.getBatch());
task.setDateCode(barcode.getDateCode());
log.info("Date code set to: " + barcode.getDateCode());
task.setProvider(barcode.getProvider());
log.info("Provider set to: " + barcode.getProvider());
task.setProviderNumber(barcode.getProviderNumber());
log.info("Provider number set to: " + barcode.getProviderNumber());
task.setKeeperCode(barcode.getKeeperCode());
log.info("Keeper code set to: " + barcode.getKeeperCode());
task.setNum(barcode.getAmount());
log.info("Amount set to: " + barcode.getAmount());
barcode.setPutInTime(System.currentTimeMillis());
log.info("Put in time set");
barcode.updateSluggishTime(dataCache.getPNsluggishDay(barcode.getPartNumber()));
log.info("Sluggish time updated");
log.info("任务生成准备完成");
barcodeManager.saveBarcode(barcode);
log.info("Barcode saved");
}
String loginUser = DevicesStatusUtil.getLastOpUsername(storage.getCid());
if (Strings.isNullOrEmpty(loginUser)) {
loginUser = SecurityUtils.getLoginUsername();
}
log.info("Login user set to: " + loginUser);
task.setOperator(loginUser);
log.info("Operator set to: " + loginUser);
task = updateQueueTask(task);
log.info("Queue task updated");
log.info("cid:[" + storage.getCid() + "] barcode:[" + barcode.getBarcode() + "] partNumber:[" + task.getPartNumber() + "]位置[" + storagePos.getPosName() + "]的入库操作成功加入队列");
log.info("Exiting addPutInTaskToExecute method");
return task;
}
......
......@@ -126,7 +126,7 @@ public class LuxsanSpApi extends DefaultSmfApiListener {
public static List<GetSpareNoResult> getSpareNo(GetSpareNoRequest request) {
try {
String url = GetSpareNoUrl + getQueryStr(request);
log.info("获取入库单号请求为:" + url);
log.info("获取入库单号请求为:" + request);
String resJsonStr = HttpHelper.sendGet(url);
log.info("获取入库单号返回:" + resJsonStr);
LuxsanSpApiResult lizhenApiResult = JSONObject.parseObject(resJsonStr, LuxsanSpApiResult.class);
......
package com.neotel.smfcore.custom.luxsan_sp.controller;
import com.alibaba.fastjson.JSON;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.ReelLockPosUtil;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.enums.BARCODE_STATUS;
......@@ -196,43 +198,56 @@ public class SpAgvDeviceClientController {
@ResponseBody
@AnonymousAccess
public ResultBean getTarget(HttpServletRequest request) {
Map<String, String> taskData = null;
try {
log.info("getTarget"+ request.getParameter("barcode"));
taskData = new HashMap<>();
taskData.put("barcode", "");
taskData.put("slotCode", "");
String rfid = request.getParameter("barcode");
Barcode barcode = codeResolve.resolveOneValideBarcode("=2x2=" + rfid);
log.info("getTarget"+ JSON.toJSONString(barcode));
if (barcode != null){
barcode.setAmount(1);
barcodeManager.save(barcode);
List<Storage> storageList = new ArrayList<>();
Collection<Storage> storages = dataCache.getAllStorage().values();
for (Storage storage : storages) {
storageList.add(storage);
}
Map<String, String> taskData = new HashMap<>();
taskData.put("barcode", "");
taskData.put("slotCode", "");
String rfid = request.getParameter("barcode");
Barcode barcode = codeResolve.resolveOneValideBarcode("=2x2=" + rfid);
if (barcode != null){
barcode.setAmount(1);
barcodeManager.save(barcode);
List<Storage> storageList = new ArrayList<>();
Collection<Storage> storages = dataCache.getAllStorage().values();
for (Storage storage : storages) {
storageList.add(storage);
}
List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog task : allTasks) {
if (!task.isFinished() && !task.isCancel()) {
if (task.getBarcode().equals(barcode.getBarcode())) {
taskData.put("barcode", barcode.getBarcode());
taskData.put("slotCode", task.getPosName());
return ResultBean.newOkResult(taskData);
List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog task : allTasks) {
if (!task.isFinished() && !task.isCancel()) {
if (task.getBarcode().equals(barcode.getBarcode())) {
taskData.put("barcode", barcode.getBarcode());
taskData.put("slotCode", task.getPosName());
log.info(barcode+"已有任务");
return ResultBean.newOkResult(taskData);
}
}
}
log.info("getTarget"+ request.getParameter("barcode")+"没有正在执行的任务");
StoragePos pos = SpBoxUtil.locOnePos(barcode);
log.info("getTarget"+ request.getParameter("barcode定位后的信息")+JSON.toJSONString(pos));
if (pos != null){
log.info("开始生成新任务");
Storage storage = dataCache.getStorageById(pos.getStorageId());
log.info("库位信息"+JSON.toJSONString(storage));
taskService.addPutInTaskToExecute(storage,barcode,pos,"");
log.info("生成完成");
taskData.put("barcode", barcode.getBarcode());
taskData.put("slotCode",pos.getPosName());
}
}
StoragePos pos = SpBoxUtil.locOnePos(barcode);
if (pos != null){
Storage storage = dataCache.getStorageById(pos.getStorageId());
taskService.addPutInTaskToExecute(storage,barcode,pos,"");
taskData.put("barcode", barcode.getBarcode());
taskData.put("slotCode",pos.getPosName());
}
}
log.info(barcode.getBarcode()+"生成ctu的任务信息"+JSON.toJSONString(taskData));
} catch (Throwable e) {
e.printStackTrace();
}
return ResultBean.newOkResult(taskData);
}
......
......@@ -29,6 +29,7 @@ import com.neotel.smfcore.custom.luxsan_sp.util.SpBoxUtil;
import com.neotel.smfcore.custom.luxsan_sp.util.SpareNoCache;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -36,6 +37,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.*;
@Slf4j
@ApiOperation("备件仓 料箱出库")
@RestController
@RequestMapping("/spBoxCheckOut")
......@@ -137,15 +139,19 @@ public class SpBoxCheckOutController {
//数量加1
// 出库单已出库数量加
unclaimedDetail.setAlrInQty(unclaimedDetail.getAlrInQty()+ codeBarcode.getQty());
orderNo.updateDetailList(unclaimedDetail);
log.info("开始判断是否完成出库单");
for (UnclaimedDetail noDetail : orderNo.getDetailList()) {
if (noDetail.getApplyQty() < noDetail.getAlrInQty()){
if (noDetail.getApplyQty() > noDetail.getAlrInQty()) {
log.info("出库未完成");
finish = false;
break;
}
log.info("出料noDetail.getApplyQty()"+noDetail.getApplyQty()+"noDetail.getAlrInQty()"+noDetail.getAlrInQty());
}
if (finish){
......@@ -171,11 +177,12 @@ public class SpBoxCheckOutController {
//6.生成出库任务
DataLog dataLog = new DataLog();
dataLog.setBarcode(codeStr);
dataLog.setPartNumber(codeBarcode.getPartNumber());
dataLog.setOperator(SecurityUtils.getLoginUsername());
dataLog.setStatus(OP_STATUS.FINISHED.name());
dataLog.setPosName(binBarcode.getBarcode());
dataLog.setType(OP.PUT_IN);
dataLog.setType(OP.CHECKOUT);
taskService.updateFinishedTask(dataLog);
pos.setBarcode(boxBarcode);
......
......@@ -24,7 +24,6 @@ import com.neotel.smfcore.custom.luxsan_sp.bean.*;
import com.neotel.smfcore.custom.luxsan_sp.enums.SpareNostatus;
import com.neotel.smfcore.custom.luxsan_sp.service.manager.IReturnNoManager;
import com.neotel.smfcore.custom.luxsan_sp.service.manager.ISpareNoManager;
import com.neotel.smfcore.custom.luxsan_sp.service.manager.impl.ReturnManagerImpl;
import com.neotel.smfcore.custom.luxsan_sp.util.*;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.Api;
......@@ -32,16 +31,11 @@ import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
@Api(tags = "备件仓 料箱入库")
@RestController
......@@ -213,27 +207,37 @@ public class SpBoxPutInController {
return ResultBean.newErrorResult(-1,"",codePartNumber+"没有入退库需求,请检查是否存在或者不符合入退库数量");
}
// 先调用入库接口
if (baseNo.getClass().equals(SpareNo.class)) {
SpareInHourseDetail detail = new SpareInHourseDetail();
detail.setInQty(codeBarcode.getQty());
detail.setPartno(codeBarcode.getPartNumber());
detail.setLocationCode(binBarcode.getBarcode());
LuxsanSpApi.spareInHourse(new SpareInHourseRequest(baseNo.getDeptId(),baseNo.getNo(),baseNo.getWhCode(), Arrays.asList(detail)));
}
//数量加1
spareNoDetail.setAlrInQty(spareNoDetail.getAlrInQty()+ codeBarcode.getQty());
baseNo.updateDetailList(spareNoDetail);
log.info("开始判断是否完成入库单");
for (SpareNoDetail noDetail : baseNo.getDetailList()) {
if (noDetail.getInQty() < noDetail.getAlrInQty()){
if (noDetail.getInQty() > noDetail.getAlrInQty()){
log.info("入库未完成");
finish = false;
break;
}
log.info("入料noDetail.getInQty()"+noDetail.getInQty()+"noDetail.getAlrInQty()"+noDetail.getAlrInQty());
}
if (finish){
// 调用入库接口
if (baseNo.getClass().equals(SpareNo.class)) {
List<SpareInHourseDetail> details = new ArrayList<>();
for (SpareNoDetail detail : baseNo.getDetailList()) {
SpareInHourseDetail spareInHourseDetail = new SpareInHourseDetail();
spareInHourseDetail.setInQty(detail.getInQty());
spareInHourseDetail.setPartno(detail.getPartno());
String location = SpareNostatus.LOCATION_CODE.get(baseNo.getWhCode());
spareInHourseDetail.setLocationCode(location);
// spareInHourseDetail.setLocationCode(binBarcode.getBarcode());
details.add(spareInHourseDetail);
}
LuxsanSpApi.spareInHourse(new SpareInHourseRequest(baseNo.getDeptId(),baseNo.getNo(),baseNo.getWhCode(), details));
}
baseNo.setSpareStatus(SpareNostatus.CLOSE_STATUS);
}
......@@ -264,6 +268,7 @@ public class SpBoxPutInController {
//6.生成入库任务
DataLog dataLog = new DataLog();
dataLog.setBarcode(codeStr);
dataLog.setPartNumber(codeBarcode.getPartNumber());
dataLog.setOperator(SecurityUtils.getLoginUsername());
dataLog.setStatus(OP_STATUS.FINISHED.name());
......
......@@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@RestController
......@@ -48,8 +49,8 @@ public class SpReturnInventoryController {
@ApiOperation("获取退库单")
@RequestMapping("/getAllReturnNo")
@AnonymousAccess
public ResultBean getAllReturnNo(String deptId, String functionDept) {
List<GetReturnInventoryResult> resultList = LuxsanSpApi.getReturnInventory(new GetReturnInventoryRequest(deptId, functionDept));
public ResultBean getAllReturnNo(String no) {
List<GetReturnInventoryResult> resultList = LuxsanSpApi.getReturnInventory(new GetReturnInventoryRequest(SpareNostatus.FUNCTION_DEPT, SpareNostatus.DEPT_ID));
List<ReturnInventoryNo> returnInventoryNos = new ArrayList<>();
for (GetReturnInventoryResult result : resultList) {
ReturnInventoryNo returnInventoryNo = returnNoCache.getByOrderNo(result.getOrderNo());
......@@ -60,6 +61,9 @@ public class SpReturnInventoryController {
}
returnInventoryNos.add(returnInventoryNo);
}
if (StringUtils.isNotBlank(no)) {
returnInventoryNos = returnInventoryNos.stream().filter(spareNo -> spareNo.getOrderNo().equals(no)).collect(Collectors.toList());
}
return ResultBean.newOkResult(returnInventoryNos);
}
......
......@@ -27,6 +27,8 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@Slf4j
@RestController
......@@ -64,8 +66,8 @@ public class SpSpareNoController {
@ApiOperation("获取入库单")
@RequestMapping("/getAllSpareNo")
@AnonymousAccess
public ResultBean getAllSpareNo(String deptId, String functionDept) {
List<GetSpareNoResult> resultList = LuxsanSpApi.getSpareNo(new GetSpareNoRequest(deptId, functionDept));
public ResultBean getAllSpareNo(String no) {
List<GetSpareNoResult> resultList = LuxsanSpApi.getSpareNo(new GetSpareNoRequest(SpareNostatus.DEPT_ID, SpareNostatus.FUNCTION_DEPT));
List<SpareNo> spareNoList = new ArrayList<>();
for (GetSpareNoResult result : resultList) {
SpareNo spareNo = spareNoCache.getBySpareNo(result.getSpareNo());
......@@ -76,6 +78,9 @@ public class SpSpareNoController {
}
spareNoList.add(spareNo);
}
if (StringUtils.isNotBlank(no)) {
spareNoList = spareNoList.stream().filter(spareNo -> spareNo.getSpareNo().equals(no)).collect(Collectors.toList());
}
return ResultBean.newOkResult(spareNoList);
}
......
......@@ -30,6 +30,7 @@ import sun.util.calendar.BaseCalendar;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@RestController
......@@ -68,8 +69,8 @@ public class SpUnclaimedController {
@ApiOperation("获取出库单")
@RequestMapping("/getAllUnclaimed")
@AnonymousAccess
public ResultBean getAllUnclaimed(String deptId, String functionDept) {
List<GetUnclaimedResult> resultList = LuxsanSpApi.getUnclaimedDetails(new GetUnclaimedRequest(deptId, functionDept));
public ResultBean getAllUnclaimed(String no) {
List<GetUnclaimedResult> resultList = LuxsanSpApi.getUnclaimedDetails(new GetUnclaimedRequest(SpareNostatus.DEPT_ID, SpareNostatus.FUNCTION_DEPT));
List<Unclaimed> unclaimedList = new ArrayList<>();
for (GetUnclaimedResult result : resultList) {
Unclaimed unclaimed = orderNoCache.getByOrderNo(result.getOrderNo());
......@@ -98,6 +99,9 @@ public class SpUnclaimedController {
liteOrder.setLine("s1");
liteOrderManager.createWithItems(liteOrder);
}
if (StringUtils.isNotBlank(no)) {
unclaimedList = unclaimedList.stream().filter(spareNo -> spareNo.getOrderNo().equals(no)).collect(Collectors.toList());
}
return ResultBean.newOkResult(unclaimedList);
}
......
package com.neotel.smfcore.custom.luxsan_sp.enums;
import java.util.HashMap;
import java.util.Map;
public class SpareNostatus {
public static final int NEW_STATUS = 0;
......@@ -17,4 +20,11 @@ public class SpareNostatus {
// 出库
public static final Integer TYPE_CHECKOUT = 3;
public static final String DEPT_ID = "102";
public static final String FUNCTION_DEPT = "MLB%20MFG";
public static final Map<String, String> LOCATION_CODE = new HashMap<String, String>(){{
put("MLB-A003", "MLB-A003-01");
put("MLB-A004", "C01");
}};
}
......@@ -210,6 +210,7 @@ public class SpBoxUtil {
//判断信息是否在已经在库位中(出入库只改变料箱位置状态,不从StoragePos表中清除)
StoragePos pos = storagePosManager.getByBarcode(boxBarcode.getBarcode());
if (pos != null) {
log.info(boxBarcode.getBarcode()+"已经在"+pos.getPosName());
return pos;
}
......
......@@ -292,6 +292,9 @@ public class SpareNoCache {
Barcode barcode = pos.getBarcode();
log.info("入库单" + orderNo + ", 为库位=" + pos.getPosName() + ",料箱=" + barcode.getBarcode() + "生成出库任务:" + index);
// 库位置空
barcode.setPosName(null);
pos.setBarcode(null);
barcodeManager.save(barcode);
// barcodeManager.saveBarcode(barcode);
storagePosManager.save(pos);
......
api:
name: Luxsan_sp
getSpareNo: https://iamsapi.luxsan-ict.com/iams-api/getSpareNo
\ No newline at end of file
getSpareNo: https://iamsapi.luxsan-ict.com/iams-api/getSpareNo
spareInhourse: https://iamsapi.luxsan-ict.com/iams-api/spareInhourse
getUnclaimed: https://iamsapi.luxsan-ict.com/iams-api/getUnclaimed
getReturnInventory: https://iamsapi.luxsan-ict.com/iams-api/getReturnInventory
api:
name: Luxsan_sp
getSpareNo: http://10.42.220.118:8108/iams-api/getSpareNo
\ No newline at end of file
getSpareNo: http://10.42.220.118:8108/iams-api/getSpareNo
spareInhourse: http://10.42.220.118:8108/iams-api/spareInhourse
getUnclaimed: http://10.42.220.118:8108/iams-api/getUnclaimed
getReturnInventory: http://10.42.220.118:8108/iams-api/getReturnInventory
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!